]> SALOME platform Git repositories - modules/visu.git/commitdiff
Salome HOME
Join BR-D5-38-2003 T_After_Join_BR-D5-38-2003
authorapo <apo@opencascade.com>
Fri, 20 Jan 2006 06:55:16 +0000 (06:55 +0000)
committerapo <apo@opencascade.com>
Fri, 20 Jan 2006 06:55:16 +0000 (06:55 +0000)
532 files changed:
adm_local/unix/make_commence.in
doc/salome/VISU_index.html [new file with mode: 0644]
doc/salome/VISU_index_v3.1.0.html
doc/salome/gui/GAUSS/activation_of_commands_display_results.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/animation_function.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/blue_down.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/blue_left.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/blue_right.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/blue_up.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/cameras.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/command_activation.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/command_activation_in_display_meshes.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/command_activation_picking.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/command_activation_segmentation.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/command_activation_timestamps_animation.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/command_deactivation.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/command_description_in_display_meshes.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/command_description_segmentation.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/command_description_timestamps_animation.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/command_result.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/cshdat_robohelp.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/cshdat_webhelp.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/default.css [new file with mode: 0644]
doc/salome/gui/GAUSS/default_ns.css [new file with mode: 0644]
doc/salome/gui/GAUSS/description_of_commands_display_results.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/description_of_the_picking_functionality.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/display_meshes_general.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/display_results_at_gauss_points_general.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/ehelp.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/ehlpdhtm.js [new file with mode: 0644]
doc/salome/gui/GAUSS/ex_green.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/gauss points viewer.log [new file with mode: 0644]
doc/salome/gui/GAUSS/gauss_points_viewer.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/gauss_points_viewer_csh.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/gauss_points_viewer_rhc.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/general.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/general_navigation_within_the_scene.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/general_storage_of_produced_data.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/general_timestamps_animation.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/image1.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image10.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image100.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image101.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image102.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image103.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image104.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image105.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image106.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image107.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image108.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image109.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image11.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image110.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image111.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image112.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image113.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image114.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image115.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image116.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image117.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image12.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image13.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image28.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image29.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image3.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image30.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image31.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image32.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image33.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image34.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image35.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image36.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image37.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image38.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image39.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image4.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image40.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image41.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image42.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image45.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image46.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image47.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image48.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image49.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image5.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image50.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image51.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image52.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image53.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image54.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image55.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image56.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image57.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image58.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image59.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image6.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image60.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image61.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image62.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image63.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image64.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image65.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image66.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image67.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image68.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image69.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image7.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image70.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image71.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image72.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image73.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image74.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image75.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image76.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image77.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image78.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image79.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image8.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image80.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image81.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image82.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image83.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image84.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image85.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image86.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image87.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image88.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image89.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image9.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image90.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image91.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image92.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image93.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image94.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image95.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image96.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image97.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image98.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/image99.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/index.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/info_blue.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/loading_of_previously_saved_data.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/making_an_avi_clip.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/managing_configurations.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/navigation_using_the_keyboard.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/navigation_using_the_mouse.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/navigation_using_the_spacemouse.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/picking_general.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/purple_right_sm.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/robohhre.lng [new file with mode: 0644]
doc/salome/gui/GAUSS/salome-visu_preferences_display_results.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/salome_visu_preferences.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/salome_visu_preferences_navigation_within_the_scene.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/salome_visu_preferences_picking.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/segmentation_general.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/specific_additional_commands_for_fields_items.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/webhelp.cab [new file with mode: 0644]
doc/salome/gui/GAUSS/webhelp.jar [new file with mode: 0644]
doc/salome/gui/GAUSS/whcsh_home.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whcshdata.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whftdata.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whftdata0.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whfts.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whfts.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whfwdata.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whfwdata0.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whfwdata1.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whfwdata2.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whfwdata3.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whgdata.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whglo.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whglo.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whidata.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whidx.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whidx.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whtdata.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whtdata0.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whtoc.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whdata/whtoc.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whestart.ico [new file with mode: 0644]
doc/salome/gui/GAUSS/whfbody.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whfdhtml.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whfform.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whfhost.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whform.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whframes.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whgbody.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whexpbar.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstf0.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstf1.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstf2.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstf3.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstf4.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstf5.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstf6.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstf7.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstf8.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl0.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl1.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl10.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl11.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl12.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl13.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl14.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl15.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl16.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl17.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl18.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl19.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl2.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl20.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl21.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl22.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl23.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl3.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl4.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl5.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl6.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl7.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl8.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstfl9.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstg0.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlsti0.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt0.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt1.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt10.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt11.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt2.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt3.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt4.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt5.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt6.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt7.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt8.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whlstt9.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvf30.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvf31.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvf32.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvf33.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvl31.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvl32.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvl33.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvp30.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvp31.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvp32.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvp33.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvt30.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvt31.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvt32.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdata/whnvt33.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdef.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whgdhtml.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whghost.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whhost.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whibody.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whidhtml.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whiform.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whihost.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whlang.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whmozemu.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whmsg.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whnjs.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whphost.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whproj.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whproj.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whproj.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whproxy.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whres.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whrstart.ico [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_banner.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_blank.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_frmset01.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_frmset010.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_homepage.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_info.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_mbars.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_papplet.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_pdhtml.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_pickup.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_plist.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_tbars.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whskin_tw.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whst_topics.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whstart.ico [new file with mode: 0644]
doc/salome/gui/GAUSS/whstart.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whstub.js [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_abge.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_abgi.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_abgw.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_abte.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_abti.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_abtw.jpg [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_fts_h.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_fts_n.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_glo_h.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_glo_n.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_go.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_hide.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_idx_h.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_idx_n.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_logo1.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_logo2.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_next.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_next_g.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_prev.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_prev_g.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_spac.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_sync.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_tab0.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_tab1.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_tab2.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_tab3.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_tab4.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_tab5.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_tab6.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_tab7.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_tab8.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_toc1.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_toc2.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_toc3.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_toc4.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_toc_h.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_toc_n.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_ws.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/wht_ws_g.gif [new file with mode: 0644]
doc/salome/gui/GAUSS/whtbar.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whtdhtml.htm [new file with mode: 0644]
doc/salome/gui/GAUSS/whthost.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whtopic.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whutils.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whver.js [new file with mode: 0644]
doc/salome/gui/GAUSS/whxdata/whftdata0.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whxdata/whfts.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whxdata/whfwdata0.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whxdata/whfwdata1.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whxdata/whfwdata2.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whxdata/whfwdata3.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whxdata/whglo.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whxdata/whidx.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whxdata/whtdata0.xml [new file with mode: 0644]
doc/salome/gui/GAUSS/whxdata/whtoc.xml [new file with mode: 0644]
doc/salome/gui/Makefile.in
doc/salome/tui/VISU/doxyfile
idl/VISU_Gen.idl
resources/Vertex_Program_ARB.txt [new file with mode: 0755]
resources/Visu_PlaneSegmentation.png [new file with mode: 0644]
resources/Visu_SphereSegmentation.png [new file with mode: 0644]
resources/Visu_gauss_points.png [new file with mode: 0644]
resources/Visu_load_texture.png [new file with mode: 0755]
resources/Visu_recording_pause.png [new file with mode: 0644]
resources/Visu_recording_play.png [new file with mode: 0644]
resources/Visu_recording_start.png [new file with mode: 0644]
resources/Visu_recording_stop.png [new file with mode: 0644]
resources/Visu_vvtk_switch.png [new file with mode: 0644]
resources/sprite_alpha.bmp [new file with mode: 0644]
resources/sprite_texture.bmp [new file with mode: 0644]
src/CONVERTOR/Makefile.in
src/CONVERTOR/VISUConvertor.cxx
src/CONVERTOR/VISU_Convertor.cxx
src/CONVERTOR/VISU_Convertor.hxx
src/CONVERTOR/VISU_ConvertorDef.hxx [new file with mode: 0644]
src/CONVERTOR/VISU_ConvertorUtils.cxx
src/CONVERTOR/VISU_ConvertorUtils.hxx
src/CONVERTOR/VISU_Convertor_impl.cxx
src/CONVERTOR/VISU_Convertor_impl.hxx
src/CONVERTOR/VISU_IDMapper.cxx [new file with mode: 0644]
src/CONVERTOR/VISU_IDMapper.hxx [new file with mode: 0644]
src/CONVERTOR/VISU_MedConvertor.cxx
src/CONVERTOR/VISU_MedConvertor.hxx
src/CONVERTOR/VISU_MergeFilter.cxx [new file with mode: 0644]
src/CONVERTOR/VISU_MergeFilter.hxx [new file with mode: 0644]
src/ENGINE/VISU_Engine_i.cc
src/ENGINE/VISU_Engine_i.hh
src/Makefile.in
src/OBJECT/Makefile.in
src/OBJECT/VISU_Actor.cxx
src/OBJECT/VISU_Actor.h
src/OBJECT/VISU_ActorFactory.h [new file with mode: 0644]
src/OBJECT/VISU_Event.h [new file with mode: 0644]
src/OBJECT/VISU_GaussPtsAct.cxx [new file with mode: 0644]
src/OBJECT/VISU_GaussPtsAct.h [new file with mode: 0644]
src/OBJECT/VISU_GaussPtsActorFactory.h [new file with mode: 0644]
src/OBJECT/VISU_GaussPtsDeviceActor.cxx [new file with mode: 0644]
src/OBJECT/VISU_GaussPtsDeviceActor.h [new file with mode: 0644]
src/OBJECT/VISU_GaussPtsSettings.cxx [new file with mode: 0644]
src/OBJECT/VISU_GaussPtsSettings.h [new file with mode: 0644]
src/OBJECT/VISU_MeshAct.cxx
src/OBJECT/VISU_MeshAct.h
src/OBJECT/VISU_ScalarMapAct.cxx
src/OBJECT/VISU_VectorsAct.cxx
src/OBJECT/VISU_VectorsAct.h
src/PIPELINE/Makefile.in
src/PIPELINE/SALOME_ExtractGeometry.cxx
src/PIPELINE/SALOME_ExtractGeometry.h
src/PIPELINE/VISUPipeLine.cxx
src/PIPELINE/VISU_CutLinesPL.cxx
src/PIPELINE/VISU_CutPlanesPL.cxx
src/PIPELINE/VISU_DeformedShapePL.cxx
src/PIPELINE/VISU_Extractor.cxx
src/PIPELINE/VISU_FieldTransform.cxx
src/PIPELINE/VISU_GaussPointsPL.cxx [new file with mode: 0644]
src/PIPELINE/VISU_GaussPointsPL.hxx [new file with mode: 0644]
src/PIPELINE/VISU_ImplicitFunctionWidget.cxx [new file with mode: 0644]
src/PIPELINE/VISU_ImplicitFunctionWidget.hxx [new file with mode: 0644]
src/PIPELINE/VISU_IsoSurfacesPL.cxx
src/PIPELINE/VISU_LookupTable.cxx
src/PIPELINE/VISU_LookupTable.hxx
src/PIPELINE/VISU_OpenGLPointSpriteMapper.cxx [new file with mode: 0755]
src/PIPELINE/VISU_OpenGLPointSpriteMapper.hxx [new file with mode: 0755]
src/PIPELINE/VISU_PipeLine.cxx
src/PIPELINE/VISU_PipeLine.hxx
src/PIPELINE/VISU_PipeLineUtils.hxx
src/PIPELINE/VISU_PlanesWidget.cxx [new file with mode: 0644]
src/PIPELINE/VISU_PlanesWidget.hxx [new file with mode: 0644]
src/PIPELINE/VISU_Plot3DPL.cxx
src/PIPELINE/VISU_ScalarBarCtrl.cxx [new file with mode: 0644]
src/PIPELINE/VISU_ScalarBarCtrl.hxx [new file with mode: 0644]
src/PIPELINE/VISU_ScalarMapPL.cxx
src/PIPELINE/VISU_ScalarMapPL.hxx
src/PIPELINE/VISU_SphereWidget.cxx [new file with mode: 0755]
src/PIPELINE/VISU_SphereWidget.hxx [new file with mode: 0755]
src/PIPELINE/VISU_StreamLinesPL.cxx
src/PIPELINE/VISU_VectorsPL.cxx
src/PIPELINE/VISU_VectorsPL.hxx
src/PIPELINE/VISU_WidgetCtrl.cxx [new file with mode: 0644]
src/PIPELINE/VISU_WidgetCtrl.hxx [new file with mode: 0644]
src/PIPELINE/VISU_img2vti.cxx [new file with mode: 0644]
src/VISUGUI/Makefile.in
src/VISUGUI/VISUM_images.po [new file with mode: 0644]
src/VISUGUI/VISUM_msg_en.po [new file with mode: 0644]
src/VISUGUI/VisuGUI.cxx
src/VISUGUI/VisuGUI.h
src/VISUGUI/VisuGUI_BuildProgressDlg.cxx [new file with mode: 0644]
src/VISUGUI/VisuGUI_BuildProgressDlg.h [new file with mode: 0644]
src/VISUGUI/VisuGUI_CubeAxesDlg.cxx [deleted file]
src/VISUGUI/VisuGUI_CubeAxesDlg.h [deleted file]
src/VISUGUI/VisuGUI_Displayer.cxx
src/VISUGUI/VisuGUI_Factory.cxx
src/VISUGUI/VisuGUI_FontWg.cxx [deleted file]
src/VISUGUI/VisuGUI_FontWg.h [deleted file]
src/VISUGUI/VisuGUI_GaussPointsDlg.cxx [new file with mode: 0644]
src/VISUGUI/VisuGUI_GaussPointsDlg.h [new file with mode: 0644]
src/VISUGUI/VisuGUI_Module.cxx [new file with mode: 0644]
src/VISUGUI/VisuGUI_Module.h [new file with mode: 0644]
src/VISUGUI/VisuGUI_NonIsometricDlg.h [deleted file]
src/VISUGUI/VisuGUI_OffsetDlg.cxx
src/VISUGUI/VisuGUI_Plot3DDlg.cxx
src/VISUGUI/VisuGUI_PopupTools.cxx
src/VISUGUI/VisuGUI_PopupTools.h
src/VISUGUI/VisuGUI_Prs3dTools.h
src/VISUGUI/VisuGUI_ScalarBarDlg.cxx
src/VISUGUI/VisuGUI_ScalarBarDlg.h
src/VISUGUI/VisuGUI_Selection.cxx
src/VISUGUI/VisuGUI_Selection.h
src/VISUGUI/VisuGUI_TimeAnimation.cxx
src/VISUGUI/VisuGUI_TimeAnimation.h
src/VISUGUI/VisuGUI_Timer.cxx [new file with mode: 0644]
src/VISUGUI/VisuGUI_Timer.h [new file with mode: 0644]
src/VISUGUI/VisuGUI_Tools.cxx
src/VISUGUI/VisuGUI_Tools.h
src/VISUGUI/VisuGUI_TransparencyDlg.cxx [new file with mode: 0644]
src/VISUGUI/VisuGUI_TransparencyDlg.h [new file with mode: 0644]
src/VISUGUI/VisuGUI_ViewTools.cxx [new file with mode: 0644]
src/VISUGUI/VisuGUI_ViewTools.h [new file with mode: 0644]
src/VISU_I/Makefile.in
src/VISU_I/VISUConfig.hh
src/VISU_I/VISU_ColoredPrs3d_i.cc [new file with mode: 0644]
src/VISU_I/VISU_ColoredPrs3d_i.hh [new file with mode: 0644]
src/VISU_I/VISU_CorbaMedConvertor.cxx
src/VISU_I/VISU_CorbaMedConvertor.hxx
src/VISU_I/VISU_CutLines_i.cc
src/VISU_I/VISU_CutLines_i.hh
src/VISU_I/VISU_CutPlanes_i.cc
src/VISU_I/VISU_CutPlanes_i.hh
src/VISU_I/VISU_DeformedShape_i.cc
src/VISU_I/VISU_DeformedShape_i.hh
src/VISU_I/VISU_GaussPoints_i.cc [new file with mode: 0644]
src/VISU_I/VISU_GaussPoints_i.hh [new file with mode: 0644]
src/VISU_I/VISU_Gen_i.cc
src/VISU_I/VISU_Gen_i.hh
src/VISU_I/VISU_I.cxx [new file with mode: 0644]
src/VISU_I/VISU_IsoSurfaces_i.cc
src/VISU_I/VISU_IsoSurfaces_i.hh
src/VISU_I/VISU_Mesh_i.cc
src/VISU_I/VISU_Plot3D_i.cc
src/VISU_I/VISU_Plot3D_i.hh
src/VISU_I/VISU_Prs3d_i.cc
src/VISU_I/VISU_Prs3d_i.hh
src/VISU_I/VISU_Result_i.cc
src/VISU_I/VISU_Result_i.hh
src/VISU_I/VISU_ScalarMap_i.cc
src/VISU_I/VISU_ScalarMap_i.hh
src/VISU_I/VISU_StreamLines_i.cc
src/VISU_I/VISU_StreamLines_i.hh
src/VISU_I/VISU_TimeAnimation.cxx
src/VISU_I/VISU_TimeAnimation.h
src/VISU_I/VISU_Vectors_i.cc
src/VISU_I/VISU_Vectors_i.hh
src/VISU_I/VISU_ViewManager_i.cc
src/VISU_I/VISU_View_i.cc
src/VISU_SWIG/Makefile.in
src/VISU_SWIG/VISU_Gen_s.cc
src/VVTK/Makefile.in [new file with mode: 0755]
src/VVTK/VVTK.h [new file with mode: 0755]
src/VVTK/VVTK_ImageWriter.cxx [new file with mode: 0755]
src/VVTK/VVTK_ImageWriter.h [new file with mode: 0755]
src/VVTK/VVTK_ImageWriterMgr.cxx [new file with mode: 0755]
src/VVTK/VVTK_ImageWriterMgr.h [new file with mode: 0755]
src/VVTK/VVTK_InteractorStyle.cxx [new file with mode: 0644]
src/VVTK/VVTK_InteractorStyle.h [new file with mode: 0644]
src/VVTK/VVTK_MainWindow.cxx [new file with mode: 0644]
src/VVTK/VVTK_MainWindow.h [new file with mode: 0644]
src/VVTK/VVTK_PickingDlg.cxx [new file with mode: 0644]
src/VVTK/VVTK_PickingDlg.h [new file with mode: 0644]
src/VVTK/VVTK_PrimitiveBox.cxx [new file with mode: 0644]
src/VVTK/VVTK_PrimitiveBox.h [new file with mode: 0644]
src/VVTK/VVTK_Recorder.cxx [new file with mode: 0755]
src/VVTK/VVTK_Recorder.h [new file with mode: 0755]
src/VVTK/VVTK_RecorderDlg.cxx [new file with mode: 0644]
src/VVTK/VVTK_RecorderDlg.h [new file with mode: 0644]
src/VVTK/VVTK_Renderer.cxx [new file with mode: 0644]
src/VVTK/VVTK_Renderer.h [new file with mode: 0644]
src/VVTK/VVTK_SegmentationCursorDlg.cxx [new file with mode: 0644]
src/VVTK/VVTK_SegmentationCursorDlg.h [new file with mode: 0644]
src/VVTK/VVTK_SizeBox.cxx [new file with mode: 0644]
src/VVTK/VVTK_SizeBox.h [new file with mode: 0644]
src/VVTK/VVTK_ViewManager.cxx [new file with mode: 0644]
src/VVTK/VVTK_ViewManager.h [new file with mode: 0644]
src/VVTK/VVTK_ViewModel.cxx [new file with mode: 0644]
src/VVTK/VVTK_ViewModel.h [new file with mode: 0644]
src/VVTK/VVTK_ViewWindow.cxx [new file with mode: 0755]
src/VVTK/VVTK_ViewWindow.h [new file with mode: 0755]

index 549610f5fa86769c350b1e28148c5f5735ae104b..574db11c074eba24f9f9fcb8d039cf0bb4f3aee9 100644 (file)
@@ -37,6 +37,7 @@ CXX_DEPEND_FLAG = @CXX_DEPEND_FLAG@
 # BOOST Library
 
 BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LIBS = @BOOST_LIBS@
 
 # JAVA
 
diff --git a/doc/salome/VISU_index.html b/doc/salome/VISU_index.html
new file mode 100644 (file)
index 0000000..a69a840
--- /dev/null
@@ -0,0 +1,86 @@
+<!DOCTYPE doctype PUBLIC "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+                                            
+  <meta http-equiv="Content-Type"
+ content="text/html; charset=iso-8859-1">
+                                            
+  <meta name="GENERATOR"
+ content="Mozilla/4.73 [en] (WinNT; I) [Netscape]">
+  <title>Post-Pro Module Documentation</title>
+</head>
+  <body bgcolor="#cccccc" text="#000000" link="#0000ee" alink="#0000ee"
+ vlink="#551a8b">
+       
+<div align="center">    &nbsp;           
+<center>          
+<center>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
+ &nbsp;&nbsp;</center>
+       
+<table width="96%" align="center">
+           <tbody>
+              <tr>
+           <td><a href="http://www.opencascade.com"><img
+ src="tui/VISU/sources/logocorp.gif" border="0" height="46" width="122">
+                </a></td>
+             <td>                                                       
+               
+      <div align="right"><a href="http://www.opencascade.org/SALOME/"><img
+ src="tui/VISU/sources/application.gif" border="0" height="46" width="108">
+                </a></div>
+           </td>
+           </tr>
+                                                      
+  </tbody>    
+</table>
+       
+<div align="center">    
+<center>    
+<hr width="100%" size="2">   
+<h1>Post-Pro MODULE Documentation</h1>
+                                     </center>
+    </div>
+       
+<table width="96%">
+      <tbody>
+               
+  </tbody>    
+</table>
+    </center>
+       
+<div align="center">       
+<p> <img src="tui/VISU/sources/Application-About.png"
+ alt="Application-About.png" width="30%" height="20%">
+    &nbsp; &nbsp;&nbsp;          </p>
+             </div>
+       
+<center>    
+<table width="96%">
+      <tbody>
+                 
+  </tbody>    
+</table>
+   <br>
+   <br>
+   <br>
+   </center>
+     
+<center><big><a href="gui/VISU/visu.html">GUI Documentation</a></big></center>
+      
+<br>
+
+<center><big><a href="gui/GAUSS/gauss_points_viewer.htm">Gauss Viewer User Guide</a></big></center>
+      
+<br>
+   
+<center><big><a href="tui/VISU/index.html">TUI Documentation</a></big></center>
+         
+<center><br>
+   <br>
+    </center>
+    </div>
+     <br>
+  <br>
+ <br>
+</body>
+</html>
index d123d0aad23f8e0fcb6354d21fea52d877a86afc..a69a84033eef0a92162e974d824d169a78697f2f 100644 (file)
    <br>
    </center>
      
-<address> </address>
-   
-<center><big><a href="gui/VISU/visu.htm">GUI Documentation</a></big></center>
+<center><big><a href="gui/VISU/visu.html">GUI Documentation</a></big></center>
       
-<address> </address>
-   
-<center></center>
+<br>
+
+<center><big><a href="gui/GAUSS/gauss_points_viewer.htm">Gauss Viewer User Guide</a></big></center>
       
-<center><br>
-   </center>
-     
-<address> </address>
+<br>
    
 <center><big><a href="tui/VISU/index.html">TUI Documentation</a></big></center>
-      
-<address> </address>
-   
-<center></center>
-      
+         
 <center><br>
    <br>
     </center>
diff --git a/doc/salome/gui/GAUSS/activation_of_commands_display_results.htm b/doc/salome/gui/GAUSS/activation_of_commands_display_results.htm
new file mode 100644 (file)
index 0000000..97430cd
--- /dev/null
@@ -0,0 +1,191 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Activation of commands display results</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+table.whs2 { x-cell-content-align:top; width:100%; border-spacing:0px; }\r
+col.whs3 { width:50%; }\r
+tr.whs4 { x-cell-content-align:top; }\r
+td.whs5 { width:50%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; border-left-style:none; border-top-style:none; }\r
+p.whs6 { text-align:center; font-style:italic; }\r
+td.whs7 { width:50%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-top-style:none; border-right-style:none; }\r
+td.whs8 { width:50%; padding-right:10px; padding-left:10px; border-right-style:none; border-left-style:none; border-bottom-style:none; }\r
+p.whs9 { text-align:center; }\r
+img_whs10 { border:none; width:191px; height:158px; border-style:none; }\r
+td.whs11 { width:50%; padding-right:10px; padding-left:10px; border-bottom-style:none; border-right-style:none; }\r
+img_whs12 { border:none; width:190px; height:90px; border-style:none; }\r
+p.whs13 { text-align:center; font-size:8pt; }\r
+img_whs14 { border:none; width:192px; height:47px; border-style:none; }\r
+p.whs15 { font-weight:bold; }\r
+p.whs16 { font-style:italic; margin-left:40px; }\r
+img_whs17 { border:none; border-style:none; width:300px; height:106px; float:none; }\r
+img_whs18 { border:none; border-style:none; width:158px; height:28px; float:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Display results at Gauss points\nActivation of commands");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Activation of commands</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> The user has to select in the tree browser the <span \r
+ style="font-weight: bold;"><B>time stamp</B></span> value to display, by a right-mouse \r
+ button click. Items concerned by this command are all sub-items of \91<span \r
+ style="font-weight: bold;"><B>Fields</B></span>\92 entry.</p>\r
+\r
+<p>Then, a contextual popup menu displays possible display modes, depending \r
+ whether the time stamps contains scalar and/or vector values:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="100%" class="whs2">\r
+<col class="whs3">\r
+<col class="whs3">\r
+\r
+<tr valign="top" class="whs4">\r
+<td width="50%" class="whs5">\r
+<p align="center" class="whs6">Options for fields containing only Vector and/or Scalar \r
+ values:</td>\r
+<td width="50%" class="whs7">\r
+<p align="center" class="whs6">Options for fields containing only Scalar values:</td></tr>\r
+\r
+<tr valign="top" class="whs4">\r
+<td width="50%" class="whs8">\r
+<p align="center" class="whs9"><img src="image9.gif" width="191px" height="158px" border="0" class="img_whs10"></td>\r
+<td width="50%" class="whs11">\r
+<p align="center" class="whs9"><img src="image10.gif" width="190px" height="90px" border="0" class="img_whs12"></td></tr>\r
+</table>\r
+\r
+<p align="center" class="whs9">&nbsp;</p>\r
+\r
+<p align="center" class="whs13">Fig. 4 : Different display mode for results</p>\r
+\r
+<p align="center" class="whs9">&nbsp;</p>\r
+\r
+<p>These commands are also accessible from the <span style="font-weight: bold;"><B>Visualization</B></span> \r
+ menu and from the <span style="font-weight: bold;"><B>Visualization</B></span> \r
+ toolbar and are applied to the current selected field.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs9"><img src="image11.gif" width="192px" height="47px" border="0" class="img_whs14"></p>\r
+\r
+<p align="center" class="whs9">&nbsp;</p>\r
+\r
+<p align="center" class="whs13">Fig. 5 : Visualization toolbar</p>\r
+\r
+<p align="center" class="whs9">&nbsp;</p>\r
+\r
+<p class="whs15"><img src="ex_green.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Note:</p>\r
+\r
+<p class="whs16">In the case of data assigned \r
+ to Gauss Points, these existing modes of presentation may give incorrect \r
+ presentations because of the algorithms used for the translation of data \r
+ from Gauss points to the whole mesh element. Therefore, a message will \r
+ be displayed to inform the user about that and let him the possibility \r
+ to go on anyway or to cancel the operation:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs9"><img src="image12.gif" x-maintain-ratio="FALSE" width="300px" height="106px" border="0" class="img_whs17"></p>\r
+\r
+<p align="center" class="whs9">&nbsp;</p>\r
+\r
+<p align="center" class="whs13">Fig. 6 : Notification message for existing and not modified \r
+ VISU presentation</p>\r
+\r
+<p align="center" class="whs9">&nbsp;</p>\r
+\r
+<p>Two new options are added to the popup menus (scalar and scalar/vector), \r
+ the menu bar and the toolbar:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs9"><img src="image13.gif" x-maintain-ratio="FALSE" width="158px" height="28px" border="0" class="img_whs18"></p>\r
+\r
+<p align="center" class="whs9">&nbsp;</p>\r
+\r
+<p align="center" class="whs13">Fig. 7 : New command dedicated to Gauss points support</p>\r
+\r
+<p align="center" class="whs9">&nbsp;</p>\r
+\r
+<p>The first one displays <span style="font-weight: bold;"><B>results</B></span> \r
+ of a computation at Gauss points, the second one displays only the Gauss \r
+ <span style="font-weight: bold;"><B>point</B></span>s (geometry) in the 3D view \r
+ for checking purpose.</p>\r
+\r
+<p>This latest option should be understood as a debug mode to check if \r
+ coordinates of Gauss points are correctly computed by the system. Later \r
+ on, this option could be moved to the \91Families\92 entry of the tree browser \r
\96 like for Mesh entities \96 but this requires modifying the MED file data \r
+ model, and is out of the scope of this specification.</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/animation_function.htm b/doc/salome/gui/GAUSS/animation_function.htm
new file mode 100644 (file)
index 0000000..997b817
--- /dev/null
@@ -0,0 +1,94 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Animation function</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; }\r
+p.whs2 { font-style:italic; margin-left:40px; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Display results at Gauss points\nAnimation function");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Animation function</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> When a field defines several timestamps, a right-mouse \r
+ button click display an \91<span style="font-weight: bold;"><B>Animation</B></span>\92 \r
+ popup menu that allows user to define an animation of the results between \r
+ 2 date.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs2">This option will be extended \r
+ to results at Gauss point, later on, in the frame of lot 3 \96 Advanced \r
+ version of the viewer.</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/blue_down.jpg b/doc/salome/gui/GAUSS/blue_down.jpg
new file mode 100644 (file)
index 0000000..5376a15
Binary files /dev/null and b/doc/salome/gui/GAUSS/blue_down.jpg differ
diff --git a/doc/salome/gui/GAUSS/blue_left.jpg b/doc/salome/gui/GAUSS/blue_left.jpg
new file mode 100644 (file)
index 0000000..ceb91ef
Binary files /dev/null and b/doc/salome/gui/GAUSS/blue_left.jpg differ
diff --git a/doc/salome/gui/GAUSS/blue_right.jpg b/doc/salome/gui/GAUSS/blue_right.jpg
new file mode 100644 (file)
index 0000000..bf6f924
Binary files /dev/null and b/doc/salome/gui/GAUSS/blue_right.jpg differ
diff --git a/doc/salome/gui/GAUSS/blue_up.jpg b/doc/salome/gui/GAUSS/blue_up.jpg
new file mode 100644 (file)
index 0000000..383840f
Binary files /dev/null and b/doc/salome/gui/GAUSS/blue_up.jpg differ
diff --git a/doc/salome/gui/GAUSS/cameras.htm b/doc/salome/gui/GAUSS/cameras.htm
new file mode 100644 (file)
index 0000000..9f55bd5
--- /dev/null
@@ -0,0 +1,236 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Cameras</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+p.whs2 { text-align:center; }\r
+img_whs3 { border:none; width:250px; height:220px; float:none; border-style:none; }\r
+p.whs4 { text-align:center; font-size:8pt; }\r
+table.whs5 { x-cell-content-align:top; width:82.127%; margin-left:40px; border-spacing:0px; }\r
+col.whs6 { width:31.543%; }\r
+col.whs7 { width:68.457%; }\r
+tr.whs8 { x-cell-content-align:top; }\r
+td.whs9 { width:31.543%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+p.whs10 { font-weight:bold; }\r
+td.whs11 { width:68.457%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs12 { width:31.543%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+td.whs13 { width:68.457%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+ul.whs14 { list-style:disc; }\r
+img_whs15 { border:none; width:230px; height:154px; border-style:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Navigation within the scene\nCameras");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Cameras</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Salome provides a simple way to store and retrieve a \r
+ specific point of view corresponding to the scene really seen by user. \r
+ This behaviour will be kept without any change for the project.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>This command is activated by right clicking with the mouse on the 3D \r
+ view. Then a popup menu is opened, and user can select the \91<span style="font-weight: bold;"><B>Save \r
+ view parameters</B></span>\92.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The selection of this command creates a new child node in the Study \r
+ and is shown in the Study browser under the main entry \91Post-Pro\92 \96 i.e. \r
+ nodes are located at the same levels as MED files.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>From these nodes, 4 options are accessible through another contextual \r
+ popup menu, as described in the following figure:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image56.gif" x-maintain-ratio="FALSE" width="250px" height="220px" border="0" class="img_whs3"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 37 : Popup menu from a \91Camera\92 item of the tree</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="82.127%" class="whs5">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='82.127%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs6">\r
+<col class="whs7">\r
+\r
+<tr valign="top" class="whs8">\r
+<td bgcolor="#008080" width="31.543%" class="whs9">\r
+<p class="whs10">Command</td>\r
+<td bgcolor="#008080" width="68.457%" class="whs11">\r
+<p class="whs10">Purpose</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="31.543%" class="whs12">\r
+<p class="whs10">Restore view parameters</td>\r
+<td width="68.457%" class="whs13">\r
+<p>Apply the current settings of the view parameter to the current 3D view.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="31.543%" class="whs12">\r
+<p class="whs10">Save view parameters</td>\r
+<td width="68.457%" class="whs13">\r
+<p>Save current parameters of the 3D view to the current entry of the tree \r
+ (position, view point and focal distance).</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="31.543%" class="whs12">\r
+<p class="whs10">Rename</td>\r
+<td width="68.457%" class="whs13">\r
+<p>Allows user to redefine the name of the element. A dialog is opened \r
+ to realize the input.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="31.543%" class="whs12">\r
+<p class="whs10">Delete</td>\r
+<td width="68.457%" class="whs13">\r
+<p>Remove the element from the study browser.</td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Persistence of \91View parameters\92 is ensured as a standard Salome behavior \r
+ and consists in storing/retrieving the corresponding SALOMEDS Study attribute.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs10"><a name=Movement_of_the_camera_between_2_positions>Movement \r
+ of the camera between 2 positions</a></p>\r
+\r
+<p>In certain situation, the movement of camera is slow and smooth to allow \r
+ user to understand the displacement. Situation concerned are:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs14">\r
+       \r
+       <li class=kadov-p><p>Movement between two registered camera positions \r
+ as defined in the previous paragraph</p></li>\r
+       \r
+       <li class=kadov-p><p>Movement when picking a point (see <a href="description_of_the_picking_functionality.htm">Description \r
+ of the picking functionality</a>)</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The path between 2 positions will be interpolated by a number of steps \r
+ computed by the system according to an angular step defined in the preferences.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The interpolated movement takes care about initial and final positions \r
+ and orientations of the view point and the focal point.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image57.gif" width="230px" height="154px" border="0" class="img_whs15"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 38 : Transformation between 2 cameras</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p class="whs10">Changing the view point to a predefined state</p>\r
+\r
+<p>The user can also change the view point by any of the pre-defined icons \r
+ of the 3D view (top, down, front, back, left, right, axo):</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs14">\r
+       \r
+       <li class=kadov-p><p>The camera is <span style="font-weight: bold;"><B>smoothly</B></span> \r
+ modified to the <span style="font-weight: bold;"><B>standard pre-defined \r
+ state</B></span> of the corresponding pre-defined view (position, focus, focal \r
+ distance)</p></li>\r
+       \r
+       <li class=kadov-p><p>The center of dynamic rotation of the view is \r
+ modified to the one corresponding to the pre-defined view</p></li>\r
+       \r
+       <li class=kadov-p><p>In the case a point is selected, it remains selected</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/command_activation.htm b/doc/salome/gui/GAUSS/command_activation.htm
new file mode 100644 (file)
index 0000000..a080063
--- /dev/null
@@ -0,0 +1,112 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Command Activation</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+img_whs2 { border:none; float:none; width:8px; height:9px; border-style:none; }\r
+p.whs3 { text-align:center; }\r
+img_whs4 { border:none; border-style:none; width:500px; height:342px; float:none; }\r
+p.whs5 { text-align:center; font-size:8pt; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo(" Loading of data\nCommand Activation");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Command Activation</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> The command is defined in the \91<span style="font-weight: bold;"><B>File</B></span>\92 \r
+ menu of the VISU module:</p>\r
+\r
+<p>Click <span style="font-weight: bold;"><B>File</B></span> <span style="font-weight: bold;"><B>&#9658;</B></span> \r
+ &nbsp;<span style="font-weight: bold;"><B>Import \r
+ from file</B></span> &nbsp;<span style="font-style: italic;"><I><img src="purple_right_sm.jpg" x-save-file="TRUE" x-save-method="compute-relative" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs2"> &nbsp;Displays \r
+ a selection file dialog box.</I></span></p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs3"><img src="image1.gif" x-maintain-ratio="FALSE" width="500px" height="342px" border="0" class="img_whs4"></p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs5">Fig. 1 : Opening a MED file in Salome</p>\r
+\r
+<p align="center" class="whs3">&nbsp;</p>\r
+\r
+<p>The dialog allows the user to browse the files hierarchy accessible \r
+ from his PC. When user found the file, he validates its choice by pressing \r
+ the \91<span style="font-weight: bold;"><B>Open</B></span>\92 button.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/command_activation_in_display_meshes.htm b/doc/salome/gui/GAUSS/command_activation_in_display_meshes.htm
new file mode 100644 (file)
index 0000000..38d7269
--- /dev/null
@@ -0,0 +1,114 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Command Activation in Display Meshes</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; }\r
+ul.whs2 { list-style:disc; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Display of meshes and mesh groups \nActivation of commands");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Activation of commands</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> The user has to select in the tree browser the mesh element \r
+ to display by a right-mouse button click. Items concerned by this command \r
+ are all sub-items of \91<span style="font-weight: bold;"><B>Families</B></span>\92 \r
+ and \91<span style="font-weight: bold;"><B>Groups</B></span>\92 entries.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Then, a contextual popup menu displays possible actions:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>If the element has never been yet displayed, a \r
+ unique \91<span style="font-weight: bold;"><B>Create Presentation</B></span>\92 action \r
+ is proposed to load corresponding data from the MED file and to compute \r
+ the graphical presentation of the element. Element is then displayed in \r
+ the current default mode.</p></li>\r
+       \r
+       <li class=kadov-p><p>If the element has already been loaded, then several \r
+ options are proposed. They are defined in the next paragraph.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>These commands are also accessible from the menu bar and from the <span \r
+ style="font-weight: bold;"><B>Representation</B></span> toolbar and are applied \r
+ to the current selection of the tree.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/command_activation_picking.htm b/doc/salome/gui/GAUSS/command_activation_picking.htm
new file mode 100644 (file)
index 0000000..36c242a
--- /dev/null
@@ -0,0 +1,139 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Command Activation picking</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+ul.whs2 { list-style:circle; }\r
+img_whs3 { border:none; width:25px; height:23px; float:none; border-style:none; }\r
+p.whs4 { font-size:8pt; margin-left:120px; }\r
+img_whs5 { border:none; width:26px; height:50px; float:none; border-style:none; }\r
+p.whs6 { font-style:italic; margin-left:40px; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Picking\nCommand activation");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Command activation</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> The activation of the command is possible from:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs2">\r
+       \r
+       <li class=kadov-p><p>The menu bar: <span style="font-weight: bold;"><B>Picking \r
+ &#9658; Gauss Point Info</B></span></p></li>\r
+       \r
+       <li class=kadov-p><p><a name=Fig__46___New_Gauss_Point_toolbar></a>A \r
+ new icon <img src="image65.gif" x-maintain-ratio="FALSE" width="25px" height="23px" border="0" class="img_whs3"> from a new \91Gauss Point\92 toolbar\92</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs4"><img src="image66.gif" x-maintain-ratio="FALSE" width="26px" height="50px" border="0" class="img_whs5"></p>\r
+\r
+<p class="whs4">&nbsp;</p>\r
+\r
+<p class="whs4">Fig. 46 : New Gauss Point \r
+ toolbar</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>This new toolbar will be connected to the <span style="font-weight: bold;"><B>main \r
+ 3D view only</B></span>. The second icon will be explained in <a href="segmentation_general.htm">Segmentation</a>.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p><img src="ex_green.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> <span style="font-weight: bold;"><B>Note:</B></span></p>\r
+\r
+<p class="whs6">The timestamp popup menu \r
+ will not provide this functionality since the picking, as defined for \r
+ Gauss points behaviour, is implemented as a <span style="font-weight: bold;"><B>View \r
+ attribute</B></span>. Thus, picking will be enabled for all presentation displayed \r
+ in the 3D view.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The activation of the command is done by selection of the \91<span style="font-weight: bold;"><B>Gauss \r
+ Point Info</B></span>\92 item from either the menu bar or the toolbar icon. \r
+ A <span style="font-weight: bold;"><B>check</B></span> mark will be added on \r
+ the left side of the corresponding menu bar item to remind to user that \r
+ the option is active. In the case of the toolbar icon, the button remains \r
+ <span style="font-weight: bold;"><B>pressed</B></span> when command is activated.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Reversibly, the deactivation of the command is done by another selection \r
+ of the command, which acts as a toggle option. The check mark will then \r
+ be erased from the menu item, and button from the toolbar will be released.</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/command_activation_segmentation.htm b/doc/salome/gui/GAUSS/command_activation_segmentation.htm
new file mode 100644 (file)
index 0000000..444733a
--- /dev/null
@@ -0,0 +1,174 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Command Activation Segmentation</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+ul.whs2 { list-style:circle; }\r
+img_whs3 { border:none; width:23px; height:23px; border-style:none; }\r
+img_whs4 { border:none; width:29px; height:26px; border-style:none; }\r
+img_whs5 { border:none; width:84px; height:29px; border-style:none; }\r
+p.whs6 { font-weight:bold; }\r
+p.whs7 { font-style:italic; margin-left:40px; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Segmentation\nCommand Activation");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Command Activation</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> The activation of the command is possible from:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs2">\r
+       \r
+       <li style="list-style: square;"\r
+               type=square\r
+               class=kadov-p><p>The menu bar: <span style="font-weight: bold;"><B>Segmentation \r
+ &#9658; Box Segmentation</B></span></p></li>\r
+       \r
+       <ul type="circle" class="whs2">\r
+               \r
+               <li class=kadov-p><p>A new icon <img src="image71.gif" width="23px" height="23px" border="0" class="img_whs3"> from a new \91Gauss \r
+ Point\92 toolbar\92 (see <a href="command_activation_picking.htm#Fig__46___New_Gauss_Point_toolbar">Fig. \r
+ 46 : New Gauss Point toolbar</a>)</p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs2">\r
+       \r
+       <li style="list-style: square;"\r
+               type=square\r
+               class=kadov-p><p>The menu bar: <span style="font-weight: bold;"><B>Segmentation \r
+ &#9658; Sphere Segmentation</B></span></p></li>\r
+       \r
+       <ul type="circle" class="whs2">\r
+               \r
+               <li class=kadov-p><p>A new icon <img src="image114.gif" width="29px" height="26px" border="0" class="img_whs4"> from the updated \r
\91Gauss Point\92 toolbar <img src="image115.gif" width="84px" height="29px" border="0" class="img_whs5"></p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs6"><img src="ex_green.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Note:</p>\r
+\r
+<p class="whs7">As for picking command, \r
+ the timestamp popup menu will not provide this functionality since the \r
+ segmentation is also implemented as a View attribute. Thus, segmentation \r
+ will be enabled for all presentation displayed in the 3D view.</p>\r
+\r
+<p class="whs7">&nbsp;</p>\r
+\r
+<p class="whs7">As for plane segmentation \r
+ command, the timestamp popup menu will not provide this functionality \r
+ since the segmentation is also implemented as a View attribute. Thus, \r
+ segmentation will be enabled for all presentation displayed in the 3D \r
+ view.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The activation of the command is done by selection of the \91<span style="font-weight: bold;"><B>Box \r
+ Segmentation</B></span>\92 item from either the menu bar or the toolbar icon. \r
+ A <span style="font-weight: bold;"><B>check</B></span> mark will be added on \r
+ the left side of the corresponding menu bar item to remind to user that \r
+ the option is active. In the case of the toolbar icon, the button remains \r
+ <span style="font-weight: bold;"><B>pressed</B></span> when command is activated.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Reversibly, the deactivation of the command is done by another selection \r
+ of the command, which acts as a toggle option. The check mark will then \r
+ be erased from the menu item, and button from the toolbar will be released.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The activation of the command is done by selection of the \91<span style="font-weight: bold;"><B>Sphere \r
+ Segmentation</B></span>\92 item from either the menu bar or the toolbar icon. \r
+ A <span style="font-weight: bold;"><B>check</B></span> mark will be added on \r
+ the left side of the corresponding menu bar item to remind to user that \r
+ the option is active. In the case of the toolbar icon, the button remains \r
+ <span style="font-weight: bold;"><B>pressed</B></span> when command is activated.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Reversibly, the deactivation of the command is done by another selection \r
+ of the command, which acts as a toggle option. The check mark will then \r
+ be erased from the menu item, and button from the toolbar will be released.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/command_activation_timestamps_animation.htm b/doc/salome/gui/GAUSS/command_activation_timestamps_animation.htm
new file mode 100644 (file)
index 0000000..d415fd3
--- /dev/null
@@ -0,0 +1,108 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Command activation timestamps animation</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+ul.whs2 { list-style:disc; }\r
+p.whs3 { text-align:center; }\r
+img_whs4 { border:none; width:267px; height:160px; border-style:none; }\r
+p.whs5 { text-align:center; font-size:8pt; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Timestamps animation\nCommand activation");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Command activation</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> The command can be activated from the study browser only:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>Mouse right button click over a \91<span style="font-weight: bold;"><B>Field</B></span>\92 \r
+ of the study tree browser</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>This opens a popup menu with only one option: \91<span style="font-weight: bold;"><B>Animation</B></span>\92</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs3"><img src="image99.gif" width="267px" height="160px" border="0" class="img_whs4"></p>\r
+\r
+<p align="center" class="whs3">&nbsp;</p>\r
+\r
+<p align="center" class="whs5">Fig. 29 : \91Animation\92 popup menu</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/command_deactivation.htm b/doc/salome/gui/GAUSS/command_deactivation.htm
new file mode 100644 (file)
index 0000000..417b38b
--- /dev/null
@@ -0,0 +1,101 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Command deactivation</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+ul.whs2 { list-style:disc; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Picking\nCommand deactivation");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Command deactivation</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> When user exits the picking function (see <a href="command_activation_picking.htm">Picking \r
+ command activation</a>), the system performs the following tasks:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>Erase the parent mesh element if displayed</p></li>\r
+       \r
+       <li class=kadov-p><p>Erase the marker from the scalar bar (except the \r
+ case of Gauss point without result)</p></li>\r
+       \r
+       <li class=kadov-p><p>Remove the information window</p></li>\r
+       \r
+       <li class=kadov-p><p>Unselect the current selected Gauss point (if \r
+ any)</p></li>\r
+</ul>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/command_description_in_display_meshes.htm b/doc/salome/gui/GAUSS/command_description_in_display_meshes.htm
new file mode 100644 (file)
index 0000000..0aaa8d3
--- /dev/null
@@ -0,0 +1,283 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Command Description in Display Meshes</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+p.whs2 { text-align:center; }\r
+img_whs3 { border:none; width:147px; height:116px; border-style:none; }\r
+p.whs4 { text-align:center; font-size:8pt; }\r
+table.whs5 { border-spacing:0px; width:79.908%; margin-left:5px; margin-right:5px; margin-top:5px; margin-bottom:5px; x-cell-content-align:Center; }\r
+col.whs6 { width:25.289%; }\r
+col.whs7 { width:74.711%; }\r
+tr.whs8 { x-cell-content-align:top; }\r
+td.whs9 { width:25.289%; padding-right:10px; padding-left:10px; background-color:#008080; border-left-color:#000000; border-top-style:Solid; border-top-color:#000000; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; border-right-width:1px; border-left-width:1px; border-left-style:solid; border-top-width:1px; }\r
+p.whs10 { font-weight:bold; text-align:center; }\r
+td.whs11 { width:74.711%; padding-right:10px; padding-left:10px; background-color:#008080; border-top-style:Solid; border-top-color:#000000; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; border-top-width:1px; border-right-width:1px; }\r
+td.whs12 { width:100%; padding-right:10px; padding-left:10px; background-color:#c0c0c0; border-left-color:#000000; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; border-left-width:1px; border-left-style:solid; border-right-width:1px; }\r
+p.whs13 { background-color:#c0c0c0; }\r
+td.whs14 { width:25.289%; padding-right:10px; padding-left:10px; border-left-color:#000000; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; border-right-width:1px; border-left-width:1px; border-left-style:solid; }\r
+p.whs15 { font-weight:bold; }\r
+td.whs16 { width:74.711%; padding-right:10px; padding-left:10px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; border-right-width:1px; }\r
+td.whs17 { width:25.289%; padding-right:10px; padding-left:10px; x-cell-content-align:center; border-left-color:#000000; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; border-right-width:1px; border-left-width:1px; border-left-style:solid; }\r
+ul.whs18 { list-style:disc; }\r
+img_whs19 { border:none; width:318px; height:86px; float:none; border-style:none; }\r
+p.whs20 { font-style:italic; margin-left:40px; }\r
+img_whs21 { border:none; border-style:none; width:300px; height:240px; float:none; }\r
+td.whs22 { width:25.289%; padding-right:10px; padding-left:10px; border-left-color:#000000; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; border-right-width:1px; border-left-width:1px; border-left-style:solid; x-cell-content-align:center; }\r
+img_whs23 { border:none; border-style:none; width:250px; height:123px; float:none; }\r
+img_whs24 { border:none; border-style:none; width:150px; height:127px; float:none; }\r
+td.whs25 { width:25.289%; padding-right:10px; padding-left:10px; border-left-color:#000000; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-right-width:1px; border-left-width:1px; border-left-style:solid; border-bottom-width:1px; x-cell-content-align:center; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Display of meshes and mesh groups \nDescription of commands");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Description of commands</h1>\r
+\r
+<p><span style="font-style: italic;"><I><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"></I></span> The popup \r
+ menu proposes two main lists of commands related to the display of the \r
+ meshes elements, in addition to a few other standards actions:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image4.gif" width="147px" height="116px" border="0" class="img_whs3"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 3 : Families or Groups item Popup menu</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="79.908%" class="whs5">\r
+<col class="whs6">\r
+<col class="whs7">\r
+\r
+<tr valign="top" class="whs8">\r
+<td bgcolor="#008080" width="25.289%" class="whs9">\r
+<p align="center" class="whs10">Command</td>\r
+<td bgcolor="#008080" width="74.711%" class="whs11">\r
+<p align="center" class="whs10">Purpose</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td rowspan="1" colspan="2" bgcolor="#C0C0C0" width="100%" class="whs12">\r
+<p class="whs13">Sub-commands of <span style="font-weight: bold;"><B>Representation</B></span> \r
+ menu</td>\r
+</tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="25.289%" class="whs14">\r
+<p class="whs15">Points</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Display all nodes of the meshes elements</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="25.289%" class="whs17">\r
+<p class="whs15">Wireframe</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Display meshes elements (skin of the elements) by drawing lines on their \r
+ boundaries.</p>\r
+<ul type="disc" class="whs18">\r
+       \r
+       <li class=kadov-p><p>Quadrangular items are represented by 4 lines \r
+ (and not 2 triangles)</p></li>\r
+       \r
+       <li class=kadov-p><p>Quadratic elements are displayed like linear ones \r
+ (i.e.: boundaries) as a standard display.</p></li>\r
+</ul>\r
+<p align="center" class="whs2"><img src="image5.gif" x-maintain-ratio="TRUE" width="318px" height="86px" border="0" class="img_whs19"></p>\r
+<p class="whs20"><span style="x-text-underline: normal; /*begin!kadov{{*/ text-decoration: underline; /*}}end!kadov*/ "><U>Remark:</U></span> \r
+ in the frames of this project, only <span style="font-weight: bold;"><B>Standard \r
+ display</B></span> will be implemented.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="25.289%" class="whs14">\r
+<p class="whs15">Surface</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Shaded display of the skin of the elements</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="25.289%" class="whs14">\r
+<p class="whs15">Insideframe</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Same as <span style="font-family: Tahoma, sans-serif;">Wireframe</span>, \r
+ but extended to all elements (inside included)</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="25.289%" class="whs14">\r
+<p class="whs15">Surfaceframe</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Equivalent to Surface + <span style="font-family: Tahoma, sans-serif;">Wireframe</span> \r
+ display mode.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="25.289%" class="whs17">\r
+<p class="whs15">Shrink</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Explode elements to distinguish their boundaries from each other (homothetic \r
+ transformation). This mode can be activated either for Wireframe or Surface \r
+ display mode.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="25.289%" class="whs14">\r
+<p class="whs15">Unshrink</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Cancels Shrink toggle option</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td rowspan="1" colspan="2" bgcolor="#C0C0C0" width="100%" class="whs12">\r
+<p>Sub-commands of <span style="font-weight: bold;"><B>Properties</B></span> menu</td>\r
+</tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="25.289%" class="whs17">\r
+<p class="whs15">Color</p>\r
+<p>Or both:</p>\r
+<p>&nbsp;&nbsp;&nbsp;<span style="font-weight: bold;"><B>Cell \r
+ Color</B></span></p>\r
+<p class="whs15">&nbsp;&nbsp;&nbsp;Edge \r
+ Color</p>\r
+<p>in the case of \91Surfaceframe\92 presentation</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Allows user to define the color property of the elements through a standard \r
+ dialog:</p>\r
+<p align="center" class="whs2"><img src="image6.gif" x-maintain-ratio="FALSE" width="300px" height="240px" border="0" class="img_whs21"></p>\r
+<p>&nbsp;</p>\r
+<p>Color is applied once user has pressed the <span style="font-weight: bold;"><B>OK</B></span> \r
+ button.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="25.289%" class="whs22">\r
+<p class="whs15">Opacity</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Allows user to define the transparency property of the elements. The \r
+ existing functionality allows to define a new value from a dialog and \r
+ to apply it by pressing the <span style="font-weight: bold;"><B>OK</B></span> \r
+ button.</p>\r
+<p>This <span style="font-weight: bold;"><B>behaviour will be changed</B></span> \r
+ to a modeless dialog, as it is already implemented in the SMESH module, \r
+ so that the application of the transparency will be done in real time \r
+ (using a slider).</p>\r
+<p align="center" class="whs2"><img src="image7.gif" x-maintain-ratio="FALSE" width="250px" height="123px" border="0" class="img_whs23"></p>\r
+<p>&nbsp;</p>\r
+<p>To exit the dialog, user has to press the <span style="font-weight: bold;"><B>Close</B></span> \r
+ button (the current choice will be kept).</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="25.289%" class="whs22">\r
+<p class="whs15">Line width</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Allows user to define the line width property of the elements through \r
+ a standard dialog.</p>\r
+<p>Values can be set from 1 to 10 units.</p>\r
+<p>&nbsp;</p>\r
+<p align="center" class="whs2"><img src="image8.gif" x-maintain-ratio="FALSE" width="150px" height="127px" border="0" class="img_whs24"></p>\r
+<p>&nbsp;</p>\r
+<p>Property is applied once user has pressed the <span style="font-weight: bold;"><B>OK</B></span> \r
+ button.</p>\r
+<p>Note: this option affects only wireframe-based presentation.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td rowspan="1" colspan="2" bgcolor="#C0C0C0" width="100%" class="whs12">\r
+<p>Other commands</td>\r
+</tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="25.289%" class="whs22">\r
+<p class="whs15">Rename</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Allows user to redefine the name of the element. A dialog is opened \r
+ to realize the input.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="25.289%" class="whs22">\r
+<p class="whs15">Erase</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Erase the elements from the 3D view.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="25.289%" class="whs22">\r
+<p class="whs15">Display Only</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Clear the 3D view and display the element alone.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td valign="middle" width="25.289%" class="whs25">\r
+<p class="whs15">Delete</td>\r
+<td width="74.711%" class="whs16">\r
+<p>Erase the elements from the 3D view and remove it from the study browser.</td></tr>\r
+</table>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/command_description_segmentation.htm b/doc/salome/gui/GAUSS/command_description_segmentation.htm
new file mode 100644 (file)
index 0000000..5eb5028
--- /dev/null
@@ -0,0 +1,529 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Command description segmentation</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+p.whs2 { text-align:center; }\r
+img_whs3 { border:none; width:350px; height:487px; float:none; border-style:none; }\r
+p.whs4 { text-align:center; font-size:8pt; }\r
+p.whs5 { font-weight:bold; }\r
+p.whs6 { font-weight:normal; }\r
+ul.whs7 { list-style:disc; }\r
+p.whs8 { x-text-underline:normal; text-decoration:underline; }\r
+img_whs9 { border:none; width:350px; height:405px; float:none; border-style:none; }\r
+img_whs10 { border:none; width:283px; height:177px; border-style:none; }\r
+img_whs11 { border:none; width:350px; height:406px; float:none; border-style:none; }\r
+img_whs12 { border:none; width:154px; height:173px; border-style:none; }\r
+p.whs13 { x-text-underline:off; text-decoration:none; }\r
+p.whs14 { margin-left:40px; font-weight:bold; }\r
+p.whs15 { margin-left:40px; font-weight:bold; text-indent:-40px; }\r
+p.whs16 { margin-left:40px; font-style:italic; }\r
+p.whs17 { margin-left:40px; font-style:italic; text-indent:-40px; }\r
+p.whs18 { margin-left:40px; text-indent:-40px; font-style:normal; }\r
+img_whs19 { border:none; width:350px; height:515px; float:none; border-style:none; }\r
+img_whs20 { border:none; width:350px; height:460px; float:none; border-style:none; }\r
+img_whs21 { border:none; width:350px; height:496px; float:none; border-style:none; }\r
+img_whs22 { border:none; width:300px; height:240px; float:none; border-style:none; }\r
+img_whs23 { border:none; width:209px; height:29px; border-style:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript">\r
+<!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
+{\r
+  var strNSS = "<style type='text/css'>";\r
+  strNSS += "p.whs15 {text-indent:1pt; }";\r
+  strNSS += "p.whs17 {text-indent:1pt; }";\r
+  strNSS += "p.whs18 {text-indent:1pt; }";\r
+  strNSS +="</style>";\r
+  document.write(strNSS);\r
+}\r
+//-->\r
+</script>\r
+<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Segmentation\nCommand description");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Command description</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> <span style="font-weight: bold;"><B>Box Segmentation</B></span></p>\r
+\r
+<p>Once the command is activated, a new window, <span style="font-weight: bold;"><B>below \r
+ the main 3D view</B></span> and <span style="font-weight: bold;"><B>docked</B></span> \r
+ within the desktop is created to display the content of the segmentation \r
+ cursor.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>A <span style="font-weight: bold;"><B>dialog box</B></span> (see <a href="#Fig__52___Segmentation_configuration_dialog">Fig. \r
+ 52 : Segmentation configuration dialog</a>) is also displayed to manually \r
+ configure the segmentation cursor parameters.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>As an example of the expected results, the next picture shows the 2 \r
+ views of the PERFECT viewer:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image72.gif" x-maintain-ratio="FALSE" width="350px" height="487px" border="0" class="img_whs3"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 51 : PERFECT viewer segmentation</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs5">Sphere Segmentation</p>\r
+\r
+<p class="whs5">&nbsp;</p>\r
+\r
+<p class="whs6">As for plane segmentation, once the command \r
+ is activated, a new window, <span style="font-weight: bold;"><B>below the \r
+ main 3D view</B></span> and <span style="font-weight: bold;"><B>docked</B></span> \r
+ within the desktop is created to display the content of the segmentation \r
+ cursor.</p>\r
+\r
+<p class="whs6">&nbsp;</p>\r
+\r
+<p class="whs6">A <span style="font-weight: bold;"><B>dialog \r
+ box</B></span> (see <a href="#Fig__54___Sphere_Segmentation_configuration_dialog">Fig. \r
+ 54 : Sphere Segmentation configuration dialog</a>) is also displayed to \r
+ manually configure the segmentation cursor parameters.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p>The main view (top) shows the results at Gauss \r
+ points with its scalar bars as described in the previous chapter. In addition, \r
+ a <span style="font-weight: bold;"><B>semi-transparent segmentation cursor</B></span> \r
\96 in the form of a box with an axis to define its orientation \96 is added \r
+ to define the part of the variables to be inspected. <span style="font-weight: bold;"><B>Two \r
+ different presentations</B></span> for Gauss points are used, depending on \r
+ location of points: inside or outside the segmentation cursor. Inside \r
+ points uses the normal presentation for Gauss points as defined in <a href="description_of_commands_display_results.htm#Fig__10___Results_at_Gauss_points_primitive_configuration_dialog">Fig. \r
+ 10 : Results at Gauss points primitive configuration dialog</a>. Outside \r
+ points presentation is to be defined in the segmentation configuration \r
+ dialog.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p>The second view (bottom) \96 also called segmentation \r
+ viewer \96 shows, in real time, the results at Gauss points only (no meshes \r
+ elements) that are located<span style="font-weight: bold;"><B> inside</B></span> \r
+ the segmentation cursor. Gauss points are displayed with the <span style="font-weight: bold;"><B>same \r
+ presentation</B></span> as the one used for points<span style="font-weight: bold;"><B> \r
+ inside</B></span> the cursor of the first view. This view is automatically \r
+ updated when the cursor is changed in the first view.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs5">&nbsp;</p>\r
+\r
+<p class="whs5">Picking capabilities</p>\r
+\r
+<p>The picking functionality, as defined in <a href="picking_general.htm">Picking</a>, \r
+ is available in both views. The picked point is also highlighted by the \r
+ 3D cursor in both views simultaneously. The semi-transparent information \r
+ window is displayed in the view used for the picking.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>In the case a picked point (from the first view) is not visible in the \r
+ second view \96 i.e.: the point is not contained within the segmentation \r
+ cursor \96 only the picking cursor is displayed in the second view till \r
+ the selection is cancelled.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs5">&nbsp;</p>\r
+\r
+<p class="whs5">Edition of the box segmentation cursor</p>\r
+\r
+<p>A dialog with 2 tabs is opened when the function is activated. When \r
+ user exits this dialog, the function is ended and the second view (segmentation \r
+ cursor viewer) is erased.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs8"><a \r
+ name=Fig__52___Segmentation_configuration_dialog></a>The following dialog \r
+ describes configuration of the segmentation cursor:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image73.gif" x-maintain-ratio="FALSE" width="350px" height="405px" border="0" class="img_whs9"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 52 : Segmentation configuration dialog</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>This dialog defines the coordinates of the origin of the segmentation \r
+ cursor, in addition to its direction and depth.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Parameters are explained as follows:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image74.gif" width="283px" height="177px" border="0" class="img_whs10"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 53 : Understanding segmentation cursor parameters</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p>It is also possible to graphically <span style="font-weight: bold;"><B>edit \r
+ these parameters directly from the first 3D view</B></span> with the mouse:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p>Translation (dragging) of the lower plane along \r
+ the V axis changes the origin of the cursor</p></li>\r
+       \r
+       <li class=kadov-p><p>Rotating the V axis around its origin defines \r
+ a new direction for the cursor</p></li>\r
+       \r
+       <li class=kadov-p><p>Dragging the second plane (upper one) along its \r
+ axis changes the depth of the cursor. It is not possible to move this \r
+ second plane under the first one (minimum depth is set to 0).</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The dialog is automatically updated.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs5">Edition of the segmentation cursor</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>A dialog with 2 tabs is opened when the function is activated. When \r
+ user exits this dialog, the function is ended and the second view (segmentation \r
+ cursor viewer) is erased.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs8"><a \r
+ name=Fig__54___Sphere_Segmentation_configuration_dialog></a>The following \r
+ dialog describes configuration of the segmentation cursor:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image116.gif" x-maintain-ratio="FALSE" width="350px" height="406px" border="0" class="img_whs11"></p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 54 : Sphere Segmentation configuration dialog</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p class="whs6">This dialog defines the coordinates of \r
+ the origin of the segmentation cursor, in addition to its radius.</p>\r
+\r
+<p class="whs6">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Origin</B></span> \r
+ defines the coordinates of the origin of the segmentation cursor. <span \r
+ style="font-weight: bold;"><B>Default is set to the CAD origin.</B></span></p></li>\r
+</ul>\r
+\r
+<p class="whs6">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>Radius</B></span> \r
+ corresponds to the radius of the sphere. <span style="font-weight: bold;"><B>Default \r
+ is set to 5%</B></span> of the diagonal of the bounding box for the scene \r
+ (i.e.: diameter is then equal to 10% of the diagonal).</p></li>\r
+</ul>\r
+\r
+<p class="whs6">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p class="whs6"><span style="font-weight: bold;"><B>+/- \r
+ Ratio</B></span> corresponds to the number by which the radius will be respectively \r
+ multiplied or divided at edition. <span style="font-weight: bold;"><B>Default \r
+ is set to 2 mm</B></span>.</p></li>\r
+</ul>\r
+\r
+<p class="whs6">&nbsp;</p>\r
+\r
+<p class="whs6"><span style="font-weight: bold;"><B>Keyboard:</B></span> \r
+ During rendering the scene, it is possible to modify the <span style="font-weight: bold;"><B>radius</B></span> \r
+ (multiply/divide by the radius ratio) by using \91<span style="font-weight: bold;"><B>D</B></span>\92\r
\91<span style="font-weight: bold;"><B>d</B></span>\92 keys of the keyboard when \r
+ the 3D view is active. The effect is immediately applied. The value of \r
+ the ratio is only defined through the dialog box.</p>\r
+\r
+<p class="whs6">&nbsp;</p>\r
+\r
+<p class="whs6">Parameters are explained as follows:</p>\r
+\r
+<p class="whs6">&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image117.gif" width="154px" height="173px" border="0" class="img_whs12"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 55 : Understanding segmentation cursor parameters</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p>It is also possible to graphically edit these parameters directly from \r
+ the first 3D view with the mouse:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p>Translation (dragging) of the sphere by moving \r
+ the centre (glyph) of the sphere</p></li>\r
+       \r
+       <li class=kadov-p><p>Change the radius my moving the boundary glyph \r
+ on the top of the sphere (minimum radius is set to 0)</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The dialog is automatically updated accordingly.</p>\r
+\r
+<p class="whs5">&nbsp;</p>\r
+\r
+<p class="whs13">&nbsp;</p>\r
+\r
+<p class="whs13"><span \r
+ style="font-weight: bold;"><B>The second tab</B></span> provides the user with \r
+ the ability to change both presentations of Gauss points inside and outside \r
+ the segmentation cursor within the same dialog. This is applicable for \r
+ all segmentation cursors (plane &amp; sphere).</p>\r
+\r
+<p class="whs13">Therefore, \r
+ dialogs are made of two parts:</p>\r
+\r
+<p class="whs13">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p class="whs13">First \r
+ part defines primitives inside the cursor</p></li>\r
+       \r
+       <li class=kadov-p><p class="whs13">Second \r
+ part defines primitives outside the cursor</p></li>\r
+</ul>\r
+\r
+<p class="whs14">&nbsp;</p>\r
+\r
+<p class="whs15"><img src="ex_green.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Note: </p>\r
+\r
+<p class="whs16">the next dialogs only \r
+ described the content of primitive parameterisation inside the cursor, \r
+ intended that all the three primitives are also applicable outside the \r
+ cursor.</p>\r
+\r
+<p class="whs17">&nbsp;</p>\r
+\r
+<p class="whs18">Primitive presentation definition for \r
+ Gauss points and in the case of a segmentation are defined by the following \r
+ dialogs:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image93.gif" x-maintain-ratio="FALSE" width="350px" height="515px" border="0" class="img_whs19"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 56 : Segmentation Gauss points primitive \96 Point \r
+ sprite parameters</p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p align="center" class="whs4"><img src="image94.gif" x-maintain-ratio="FALSE" width="350px" height="460px" border="0" class="img_whs20"></p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 57 : Segmentation Gauss points primitive \96 OpenGL \r
+ parameters</p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p align="center" class="whs4"><img src="image95.gif" x-maintain-ratio="FALSE" width="350px" height="496px" border="0" class="img_whs21"></p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 58 : Segmentation Gauss points primitive \96 Geometrical \r
+ sphere parameters</p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p>The first part of the dialog is the same as for <a href="description_of_commands_display_results.htm#Fig__10___Results_at_Gauss_points_primitive_configuration_dialog">Fig. \r
+ 10 : Results at Gauss points primitive configuration dialog</a>.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p>Size: defines the size of Gauss points located \r
+ outside the segmentation cursor. It is a percentage of the normal size \r
+ of Gauss points defined in <a href="description_of_commands_display_results.htm#Fig__10___Results_at_Gauss_points_primitive_configuration_dialog">Fig. \r
+ 10 : Results at Gauss points primitive configuration dialog</a>.</p></li>\r
+       \r
+       <li class=kadov-p><p>Color: define the unique color used for Gauss \r
+ points located outside the segmentation cursor. It is a button control. \r
+ When user press it, he can choose a color from a standard color configuration \r
+ dialog:</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image76.gif" x-maintain-ratio="FALSE" width="300px" height="240px" border="0" class="img_whs22"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 59 : Standard color dialog</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p class="whs5">Predefined view for the segmentation 3D view</p>\r
+\r
+<p>A new toolbar is defined for the second view only (segmentation viewer) \r
+ to define certain pre-defined point of view:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image77.gif" width="209px" height="29px" border="0" class="img_whs23"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 60 : New toolbar for the segmentation viewer 3D view</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p>From left to right, the predefined points of view are:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p>Front</p></li>\r
+       \r
+       <li class=kadov-p><p>Back</p></li>\r
+       \r
+       <li class=kadov-p><p>Top</p></li>\r
+       \r
+       <li class=kadov-p><p>Bottom</p></li>\r
+       \r
+       <li class=kadov-p><p>Left</p></li>\r
+       \r
+       <li class=kadov-p><p>Right</p></li>\r
+       \r
+       <li class=kadov-p><p>Cursor (front)</p></li>\r
+       \r
+       <li class=kadov-p><p>Cursor (back)</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>This toolbar is docked to the frame of the second view.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs5"><img src="ex_green.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Note:</p>\r
+\r
+<p class="whs16">The possibility to adjust \r
+ in real time the segmentation viewer to the segmentation cursor can be \r
+ proposed as a future improvement of this functionality, but is out of \r
+ the scope of this project.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/command_description_timestamps_animation.htm b/doc/salome/gui/GAUSS/command_description_timestamps_animation.htm
new file mode 100644 (file)
index 0000000..215d21e
--- /dev/null
@@ -0,0 +1,172 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Command description timestamps animation</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+p.whs2 { text-align:center; }\r
+img_whs3 { border:none; width:250px; height:328px; float:none; border-style:none; }\r
+p.whs4 { text-align:center; font-size:8pt; }\r
+ul.whs5 { list-style:disc; }\r
+img_whs6 { border:none; width:250px; height:194px; float:none; border-style:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Timestamps animation\nCommand description");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Command description</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Selection of the \91<span style="font-weight: bold;"><B>Animation</B></span>\92 \r
+ popup menu opens the following modeless dialog:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image100.gif" x-maintain-ratio="FALSE" width="250px" height="328px" border="0" class="img_whs3"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 30 : \91Animation\92 dialog</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs5">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Setup Animation</B></span> \r
+ opens another dialog to define presentation to animate. It is described \r
+ later on in this chapter</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs5">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Generate frames</B></span> \r
+ button computes all presentation on selected timestamps (see Setup Animation). \r
+ Presentations are kept in memory.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs5">\r
+       \r
+       <li class=kadov-p><p>The other buttons acts as a record player (to \r
+ play, move forward, move backward, and so on), define speed for animation \r
+ and save a bitmap file for each timestamp on disk.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>\91<span style="font-weight: bold;"><B>Close</B></span>\92 button stops the on \r
+ going animation, clear memory and exits the animation mode.</p>\r
+\r
+<p>To go on the explanation, \91<span style="font-weight: bold;"><B>Setup Animation</B></span>\92 \r
+ button open the next dialog:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image101.gif" x-maintain-ratio="FALSE" width="250px" height="194px" border="0" class="img_whs6"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 31 : \91Setup Animation\92 dialog</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs5">\r
+       \r
+       <li class=kadov-p><p>Use range of timestamps allows user to define \r
+ a range for timestamps to consider. If not checked, all available timestamps \r
+ of the variable are considered</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs5">\r
+       \r
+       <li class=kadov-p><p>Field shows the list of fields available</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs5">\r
+       \r
+       <li class=kadov-p><p>Properties area is defined by two buttons. The \r
+ first one allows user to select the presentation mode he want to see during \r
+ the animation. The second one launches the configuration dialogs corresponding \r
+ to the selected presentation (already described in GUI specs of LOT 1 \r
+ and LOT 3).</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/command_result.htm b/doc/salome/gui/GAUSS/command_result.htm
new file mode 100644 (file)
index 0000000..93c7c89
--- /dev/null
@@ -0,0 +1,115 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Command Result</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+p.whs2 { text-align:center; }\r
+img_whs3 { border:none; width:500px; height:415px; float:none; border-style:none; }\r
+p.whs4 { font-size:8pt; text-align:center; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo(" Loading of data\nCommand Result");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Command Result</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> The validation of the command starts the process of loading \r
+ data (see '<a href="command_activation.htm">Loading MED files</a>\91).</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The browser, corresponding to the current study, is updated by the <span \r
+ style="font-weight: bold;"><B>logical structure</B></span> of the loaded MED \r
+ file in the form of a hierarchical tree.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The navigation within the tree is made possible by pressing either <span \r
+ style="font-weight: bold;"><B>[+]</B></span> to expand or <span style="font-weight: bold;"><B>[-]</B></span> \r
+ to collapse a node. Node names correspond to names associated to entities \r
+ from the MED file.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image3.gif" x-maintain-ratio="FALSE" width="500px" height="415px" border="0" class="img_whs3"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 2 : Study browser populated by data loaded from MED \r
+ file</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The 3D viewer is still not updated at this time (i.e.: nothing is yet \r
+ displayed in the 3D viewer).</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/cshdat_robohelp.htm b/doc/salome/gui/GAUSS/cshdat_robohelp.htm
new file mode 100644 (file)
index 0000000..0867a68
--- /dev/null
@@ -0,0 +1,258 @@
+<html>\r
+<head>\r
+<title>Gauss Points Viewer</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="JavaScript">\r
+<!--\r
+\r
+var gArrayCsh = new Array();\r
+\r
+var gstrWindowOption = "";\r
+var gstrURL = "";\r
+var gbWithNavPane = false;\r
+\r
+function CshEntityItem(strAliasId, nTopicNum, strUrl) \r
+{\r
+    this.strAliasId = strAliasId;\r
+    this.nTopicNum = nTopicNum;\r
+    this.strUrl = strUrl;\r
+}\r
+\r
+\r
+//Try to get to topic number from hash string\r
+function GetTopicNumberAuto(strMayBeNumber)\r
+{\r
+   var nNum = -1;\r
+   if (strMayBeNumber.length >= 1)\r
+   {\r
+               var strTmp = strMayBeNumber;\r
+               var iEnd = strTmp.length;\r
+               for (var i=0; i<iEnd; i++)\r
+               {\r
+                         var ch = strTmp.charAt(i);\r
+                         if (!((ch == "0") || (ch == "1") ||\r
+                               (ch == "2") || (ch == "3") ||\r
+                               (ch == "4") || (ch == "5") ||\r
+                               (ch == "6") || (ch == "7") ||\r
+                               (ch == "8") || (ch == "9")))\r
+                             return GetTopicNumberById(strTmp);\r
+               }\r
+               nNum = parseInt(strTmp);\r
+   }\r
+   return nNum;\r
+}\r
+\r
+function GetTopicNumber(strHashString)\r
+{\r
+       var nTopicEndPos = strHashString.indexOf(',')\r
+       if (nTopicEndPos == -1) { // no window option.\r
+               return GetTopicNumberOnly(strHashString);\r
+       }\r
+       else {\r
+               var strWindowOption = strHashString.substring(nTopicEndPos + 1, strHashString.length);\r
+               var strWithNavPane = 'withnavpane=true';\r
+               if (strWindowOption.toLowerCase().indexOf(strWithNavPane) == 0)\r
+               {\r
+                       if (strWindowOption.length > strWithNavPane.length)\r
+                               gstrWindowOption = strWindowOption.substring(strWithNavPane.length + 1);\r
+                       else\r
+                               gstrWindowOption = "";\r
+                       gbWithNavPane = true;\r
+               }\r
+               else\r
+                       gstrWindowOption = strWindowOption;\r
+               return GetTopicNumberOnly(strHashString.substring(0, nTopicEndPos));            \r
+       }\r
+}\r
+\r
+function GetTopicNumberOnly(strTopicString)\r
+{\r
+       var nEqualPos = strTopicString.indexOf('=');\r
+       if (nEqualPos == -1) {\r
+               return GetTopicNumberAuto(strTopicString);\r
+       }\r
+       else {\r
+               var strValue=strTopicString.substring(nEqualPos + 1, strTopicString.length);\r
+               if (strTopicString.toLowerCase().indexOf("topicnumber") == 0) {\r
+                       return parseInt(strValue);\r
+               } else if (strTopicString.toLowerCase().indexOf("context") == 0) {\r
+                       return GetTopicNumberById(strValue);\r
+               } else if (strTopicString.toLowerCase().indexOf("remoteurl") == 0) {\r
+                       gstrURL = strValue;\r
+                       return -1;\r
+               }\r
+\r
+       }\r
+}\r
+\r
+//Find HomePage of the WebHelp system\r
+// we try to get the topic from remote project if it exists.\r
+function RedirectToHomePage()\r
+{\r
+       if (parent && parent != this && parent.goNext)\r
+       {\r
+               var sHome = parent.goNext();\r
+               if (sHome != "")\r
+                       RedirectTo(sHome);\r
+       }\r
+}\r
+\r
+function getHomePage()\r
+{\r
+       if (parent && parent != this && parent.getRelHomePage)\r
+       {\r
+               return parent.getRelHomePage(document.location.href);\r
+       }\r
+       return "";\r
+}\r
+\r
+function addRemoteProject(strPath)\r
+{\r
+       if (parent && parent != this && parent.addProject)\r
+       {\r
+               parent.addProject(strPath);\r
+       }\r
+}\r
+\r
+//Redirect page to...\r
+function RedirectTo(strUrl)\r
+{\r
+   if (gstrWindowOption.length != 0) {\r
+               var wnd = window.open(strUrl, "HelpStub", gstrWindowOption);\r
+               // close current window and rename the stub window to current window.\r
+               if (wnd)\r
+                       wnd.focus();\r
+               if (parent)\r
+                       parent.close();\r
+   }\r
+   else {\r
+       parent.document.location.href = strUrl;\r
+       window.focus();\r
+  }\r
+}\r
+\r
+//Prompt the user that we can not find...\r
+function FailToFind(strMsg)\r
+{\r
+    RedirectToHomePage();\r
+}\r
+\r
+//Find topic by topic number (defined in h file)\r
+function FindTopicByTopicNum(nTopicNum)\r
+{\r
+       var i = 0;\r
+       var iEnd = gArrayCsh.length;\r
+       for (i=0; i<iEnd; i++)\r
+       {\r
+               if (gArrayCsh[i].nTopicNum == nTopicNum)\r
+               {\r
+                       var strURL = gArrayCsh[i].strUrl;\r
+                       if (gbWithNavPane)\r
+                       {\r
+                               var strHomePage = getHomePage();\r
+                               if (strHomePage.length != 0)\r
+                                       strURL = strHomePage + strURL;\r
+                       }       \r
+                       RedirectTo(strURL);\r
+                       return true;\r
+               }\r
+       }\r
+       FailToFind("Fail to find topic assocaite with topic number: " + nTopicNum);\r
+       return false;\r
+}\r
+\r
+var oldPrefix = "HelpIdFromHTMLHelp_"\r
+//Find topic by topic id (alias id defined in ali file)\r
+function GetTopicNumberById(strTopicId)\r
+{\r
+   if (strTopicId.indexOf(oldPrefix) == 0)\r
+   {\r
+               strTopicId = strTopicId.substring(oldPrefix.length);\r
+   }\r
+\r
+   var i = 0;\r
+   var iEnd = gArrayCsh.length;\r
+   for (i=0; i<iEnd; i++)\r
+   {\r
+       if (gArrayCsh[i].strAliasId.toLowerCase() == strTopicId.toLowerCase())\r
+       {\r
+           return gArrayCsh[i].nTopicNum;\r
+        }\r
+   }\r
+   gstrURL = "";\r
+   return -1;\r
+}\r
+\r
+//Set Context-sensitive help entity...\r
+function SetCsh(n, strAliasId, nTopicNum, strUrl)\r
+{\r
+   gArrayCsh[n] = new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
+}\r
+\r
+\r
+function getHash()\r
+{\r
+       if (parent && parent != this)\r
+               return parent.location.hash;\r
+       else\r
+               return "";\r
+}\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+\r
+\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+//Find CSH according to hash string after this page\r
+if (getHash().length > 0)\r
+{\r
+   // VH 05/16/00 now support \r
+   // TopicID=\r
+   // TopicNumber=\r
+   // RemoteURL=   \r
+   // and WindowsOptions\r
+   // with the format #a=xxx,b=xxx,c=xxx...\r
+   var strHashString = getHash().toString();\r
+   // change ? to : for remote URL. because java applet have some problem to pass a URL with two : inside the URL so we changed it. \r
+   // so here need to change it back.\r
+   strHashString = strHashString.substring(1,strHashString.length);\r
+   strHashString = strHashString.replace("%072%057%057", "://");\r
+   var nTopicNum = GetTopicNumber(strHashString);\r
+\r
+   if (nTopicNum != -1)\r
+   {\r
+      FindTopicByTopicNum(nTopicNum);\r
+   }\r
+   else\r
+   {\r
+      if (gstrURL.length > 0) \r
+       RedirectTo(gstrURL);\r
+      else\r
+       RedirectToHomePage();\r
+   }\r
+}\r
+else\r
+{\r
+   RedirectToHomePage();\r
+}\r
+//-->\r
+</script>\r
+<noscript>\r
+ <p> Your browser does not support JavaScript. WebHelp Context-Sensitive Help requires JavaScript support to run.</p>\r
+</noscript>\r
+</body>\r
+</html>\r
+\r
+\r
+\r
+\r
+\r
+\r
diff --git a/doc/salome/gui/GAUSS/cshdat_webhelp.htm b/doc/salome/gui/GAUSS/cshdat_webhelp.htm
new file mode 100644 (file)
index 0000000..ac72b5e
--- /dev/null
@@ -0,0 +1,251 @@
+<html>\r
+<head>\r
+<title>Gauss Points Viewer</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="JavaScript">\r
+<!--\r
+\r
+var gArrayCsh = new Array();\r
+\r
+var gstrWindowOption = "";\r
+var gstrURL = "";\r
+var gbWithNavPane = false;\r
+\r
+function CshEntityItem(strAliasId, nTopicNum, strUrl) \r
+{\r
+    this.strAliasId = strAliasId;\r
+    this.nTopicNum = nTopicNum;\r
+    this.strUrl = strUrl;\r
+}\r
+\r
+\r
+//Try to get to topic number from hash string\r
+function GetTopicNumberAuto(strMayBeNumber)\r
+{\r
+   var nNum = -1;\r
+   if (strMayBeNumber.length >= 1)\r
+   {\r
+               var strTmp = strMayBeNumber;\r
+               var iEnd = strTmp.length;\r
+               for (var i=0; i<iEnd; i++)\r
+               {\r
+                         var ch = strTmp.charAt(i);\r
+                         if (!((ch == "0") || (ch == "1") ||\r
+                               (ch == "2") || (ch == "3") ||\r
+                               (ch == "4") || (ch == "5") ||\r
+                               (ch == "6") || (ch == "7") ||\r
+                               (ch == "8") || (ch == "9")))\r
+                             return GetTopicNumberById(strTmp);\r
+               }\r
+               nNum = parseInt(strTmp);\r
+   }\r
+   return nNum;\r
+}\r
+\r
+function GetTopicNumber(strHashString)\r
+{\r
+       var nTopicEndPos = strHashString.indexOf(',')\r
+       if (nTopicEndPos == -1) { // no window option.\r
+               return GetTopicNumberOnly(strHashString);\r
+       }\r
+       else {\r
+               var strWindowOption = strHashString.substring(nTopicEndPos + 1, strHashString.length);\r
+               var strWithNavPane = 'withnavpane=true';\r
+               if (strWindowOption.toLowerCase().indexOf(strWithNavPane) == 0)\r
+               {\r
+                       if (strWindowOption.length > strWithNavPane.length)\r
+                               gstrWindowOption = strWindowOption.substring(strWithNavPane.length + 1);\r
+                       else\r
+                               gstrWindowOption = "";\r
+                       gbWithNavPane = true;\r
+               }\r
+               else\r
+                       gstrWindowOption = strWindowOption;\r
+               return GetTopicNumberOnly(strHashString.substring(0, nTopicEndPos));            \r
+       }\r
+}\r
+\r
+function GetTopicNumberOnly(strTopicString)\r
+{\r
+       var nEqualPos = strTopicString.indexOf('=');\r
+       if (nEqualPos == -1) {\r
+               return GetTopicNumberAuto(strTopicString);\r
+       }\r
+       else {\r
+               var strValue=strTopicString.substring(nEqualPos + 1, strTopicString.length);\r
+               if (strTopicString.toLowerCase().indexOf("topicnumber") == 0) {\r
+                       return parseInt(strValue);\r
+               } else if (strTopicString.toLowerCase().indexOf("topicid") == 0) {\r
+                       return GetTopicNumberById(strValue);\r
+               } else if (strTopicString.toLowerCase().indexOf("remoteurl") == 0) {\r
+                       gstrURL = strValue;\r
+                       return -1;\r
+               }\r
+\r
+       }\r
+}\r
+\r
+//Find HomePage of the WebHelp system\r
+// we try to get the topic from remote project if it exists.\r
+function RedirectToHomePage()\r
+{\r
+       if (parent && parent != this && parent.goNext)\r
+       {\r
+               var sHome = parent.goNext();\r
+               if (sHome != "")\r
+                       RedirectTo(sHome);\r
+       }\r
+}\r
+\r
+function getHomePage()\r
+{\r
+       if (parent && parent != this && parent.getRelHomePage)\r
+       {\r
+               return parent.getRelHomePage(document.location.href);\r
+       }\r
+       return "";\r
+}\r
+\r
+function addRemoteProject(strPath)\r
+{\r
+       if (parent && parent != this && parent.addProject)\r
+       {\r
+               parent.addProject(strPath);\r
+       }\r
+}\r
+\r
+//Redirect page to...\r
+function RedirectTo(strUrl)\r
+{\r
+   if (gstrWindowOption.length != 0) {\r
+               var wnd = window.open(strUrl, "HelpStub", gstrWindowOption);\r
+               // close current window and rename the stub window to current window.\r
+               wnd.focus();\r
+               if (parent)\r
+                       parent.close();\r
+   }\r
+   else {\r
+       parent.document.location.href = strUrl;\r
+       window.focus();\r
+  }\r
+}\r
+\r
+//Prompt the user that we can not find...\r
+function FailToFind(strMsg)\r
+{\r
+    RedirectToHomePage();\r
+}\r
+\r
+//Find topic by topic number (defined in h file)\r
+function FindTopicByTopicNum(nTopicNum)\r
+{\r
+       var i = 0;\r
+       var iEnd = gArrayCsh.length;\r
+       for (i=0; i<iEnd; i++)\r
+       {\r
+               if (gArrayCsh[i].nTopicNum == nTopicNum)\r
+               {\r
+                       var strURL = gArrayCsh[i].strUrl;\r
+                       if (gbWithNavPane)\r
+                       {\r
+                               var strHomePage = getHomePage();\r
+                               if (strHomePage.length != 0)\r
+                                       strURL = strHomePage + strURL;\r
+                       }       \r
+                       RedirectTo(strURL);\r
+                       return true;\r
+               }\r
+       }\r
+       FailToFind("Fail to find topic assocaite with topic number: " + nTopicNum);\r
+       return false;\r
+}\r
+\r
+//Find topic by topic id (alias id defined in ali file)\r
+function GetTopicNumberById(strTopicId)\r
+{\r
+   var i = 0;\r
+   var iEnd = gArrayCsh.length;\r
+   for (i=0; i<iEnd; i++)\r
+   {\r
+       if (gArrayCsh[i].strAliasId == strTopicId)\r
+       {\r
+           return gArrayCsh[i].nTopicNum;\r
+        }\r
+   }\r
+   gstrURL = "";\r
+   return -1;\r
+}\r
+\r
+//Set Context-sensitive help entity...\r
+function SetCsh(n, strAliasId, nTopicNum, strUrl)\r
+{\r
+   gArrayCsh[n] = new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
+}\r
+\r
+\r
+function getHash()\r
+{\r
+       if (parent && parent != this)\r
+               return parent.location.hash;\r
+       else\r
+               return "";\r
+}\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+\r
+\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+//Find CSH according to hash string after this page\r
+if (getHash().length > 0)\r
+{\r
+   // VH 05/16/00 now support \r
+   // TopicID=\r
+   // TopicNumber=\r
+   // RemoteURL=   \r
+   // and WindowsOptions\r
+   // with the format #a=xxx,b=xxx,c=xxx...\r
+   var strHashString = getHash().toString();\r
+   // change ? to : for remote URL. because java applet have some problem to pass a URL with two : inside the URL so we changed it. \r
+   // so here need to change it back.\r
+   strHashString = strHashString.substring(1,strHashString.length);\r
+   strHashString = strHashString.replace("%072%057%057", "://");\r
+   var nTopicNum = GetTopicNumber(strHashString);\r
+\r
+   if (nTopicNum != -1)\r
+   {\r
+      FindTopicByTopicNum(nTopicNum);\r
+   }\r
+   else\r
+   {\r
+      if (gstrURL.length > 0) \r
+       RedirectTo(gstrURL);\r
+      else\r
+       RedirectToHomePage();\r
+   }\r
+}\r
+else\r
+{\r
+   RedirectToHomePage();\r
+}\r
+//-->\r
+</script>\r
+<noscript>\r
+ <p> Your browser does not support JavaScript. WebHelp Context-Sensitive Help requires JavaScript support to run.</p>\r
+</noscript>\r
+</body>\r
+</html>\r
+\r
+\r
+\r
+\r
+\r
+\r
diff --git a/doc/salome/gui/GAUSS/default.css b/doc/salome/gui/GAUSS/default.css
new file mode 100644 (file)
index 0000000..321e4fc
--- /dev/null
@@ -0,0 +1,76 @@
+BODY { \r
+      font-family:Arial; \r
+      background-color:#ffffff;  }\r
+H1 { \r
+    font-weight:bold; \r
+    font-size:24.0pt;  }\r
+LI.kadov-H1 { \r
+             font-weight:bold; \r
+             font-size:24.0pt;  }\r
+H2 { \r
+    font-weight:bold; \r
+    font-size:18.0pt;  }\r
+LI.kadov-H2 { \r
+             font-weight:bold; \r
+             font-size:18.0pt;  }\r
+H3 { \r
+    font-weight:bold; \r
+    font-size:14.0pt;  }\r
+LI.kadov-H3 { \r
+             font-weight:bold; \r
+             font-size:14.0pt;  }\r
+H4 { \r
+    font-weight:bold; \r
+    font-size:12.0pt;  }\r
+LI.kadov-H4 { \r
+             font-weight:bold; \r
+             font-size:12.0pt;  }\r
+H5 { \r
+    font-weight:bold; \r
+    font-size:10.0pt;  }\r
+LI.kadov-H5 { \r
+             font-weight:bold; \r
+             font-size:10.0pt;  }\r
+H6 { \r
+    font-weight:bold; \r
+    font-size:8.0pt;  }\r
+LI.kadov-H6 { \r
+             font-weight:bold; \r
+             font-size:8.0pt;  }\r
+P { \r
+   font-size:12.0pt; \r
+   margin-top:0pt; \r
+   margin-bottom:0pt;  }\r
+LI.kadov-P { \r
+            font-size:12.0pt; \r
+            margin-top:0pt; \r
+            margin-bottom:0pt;  }\r
+A.expandspot { \r
+              color:#008000; \r
+              cursor:hand; \r
+              font-style:italic; \r
+              text-decoration:none;  }\r
+SPAN.expandtext { \r
+                 font-style:italic; \r
+                 font-weight:normal; \r
+                 color:#ff0000;  }\r
+A.dropspot { \r
+            cursor:hand; \r
+            color:#008000; \r
+            font-style:italic; \r
+            text-decoration:none;  }\r
+A.glossterm { \r
+             color:#800000; \r
+             cursor:hand; \r
+             font-style:italic; \r
+             text-decoration:none;  }\r
+SPAN.glosstext { \r
+                font-style:italic; \r
+                font-weight:normal; \r
+                color:#0000ff;  }\r
+OL { \r
+    margin-top:0px; \r
+    margin-bottom:0px;  }\r
+UL { \r
+    margin-top:0px; \r
+    margin-bottom:0px;  }\r
diff --git a/doc/salome/gui/GAUSS/default_ns.css b/doc/salome/gui/GAUSS/default_ns.css
new file mode 100644 (file)
index 0000000..dbda41e
--- /dev/null
@@ -0,0 +1,93 @@
+BODY { \r
+      font-family:Arial; \r
+      background-color:#ffffff;  }\r
+H1 { \r
+    font-weight:bold; \r
+    font-size:24.0pt; \r
+    font-family:Arial;  }\r
+LI.kadov-H1 { \r
+             font-weight:bold; \r
+             font-size:24.0pt;  }\r
+H2 { \r
+    font-weight:bold; \r
+    font-size:18.0pt; \r
+    font-family:Arial;  }\r
+LI.kadov-H2 { \r
+             font-weight:bold; \r
+             font-size:18.0pt;  }\r
+H3 { \r
+    font-weight:bold; \r
+    font-size:14.0pt; \r
+    font-family:Arial;  }\r
+LI.kadov-H3 { \r
+             font-weight:bold; \r
+             font-size:14.0pt;  }\r
+H4 { \r
+    font-weight:bold; \r
+    font-size:12.0pt; \r
+    font-family:Arial;  }\r
+LI.kadov-H4 { \r
+             font-weight:bold; \r
+             font-size:12.0pt;  }\r
+H5 { \r
+    font-weight:bold; \r
+    font-size:10.0pt; \r
+    font-family:Arial;  }\r
+LI.kadov-H5 { \r
+             font-weight:bold; \r
+             font-size:10.0pt;  }\r
+H6 { \r
+    font-weight:bold; \r
+    font-size:8.0pt; \r
+    font-family:Arial;  }\r
+LI.kadov-H6 { \r
+             font-weight:bold; \r
+             font-size:8.0pt;  }\r
+P { \r
+   font-size:12.0pt; \r
+   margin-top:1pt; \r
+   margin-bottom:1pt; \r
+   font-family:Arial;  }\r
+LI.kadov-P { \r
+            font-size:12.0pt; \r
+            margin-top:0pt; \r
+            margin-bottom:0pt;  }\r
+A.expandspot { \r
+              color:#008000; \r
+              cursor:hand; \r
+              font-style:italic; \r
+              text-decoration:none;  }\r
+SPAN.expandtext { \r
+                 font-style:italic; \r
+                 font-weight:normal; \r
+                 color:#ff0000;  }\r
+A.dropspot { \r
+            cursor:hand; \r
+            color:#008000; \r
+            font-style:italic; \r
+            text-decoration:none;  }\r
+A.glossterm { \r
+             color:#800000; \r
+             cursor:hand; \r
+             font-style:italic; \r
+             text-decoration:none;  }\r
+SPAN.glosstext { \r
+                font-style:italic; \r
+                font-weight:normal; \r
+                color:#0000ff;  }\r
+OL { \r
+    margin-top:0px; \r
+    margin-bottom:0px; \r
+    font-family:Arial;  }\r
+UL { \r
+    margin-top:0px; \r
+    margin-bottom:0px; \r
+    font-family:Arial;  }\r
+ol ol { \r
+       margin-top:1px;  }\r
+ol ul { \r
+       margin-top:1px;  }\r
+ul ul { \r
+       margin-top:1px;  }\r
+ul ol { \r
+       margin-top:1px;  }\r
diff --git a/doc/salome/gui/GAUSS/description_of_commands_display_results.htm b/doc/salome/gui/GAUSS/description_of_commands_display_results.htm
new file mode 100644 (file)
index 0000000..038a88f
--- /dev/null
@@ -0,0 +1,952 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Description of commands display results</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+p.whs1 { font-weight:bold; }\r
+ul.whs2 { list-style:disc; }\r
+p.whs3 { margin-left:40px; }\r
+table.whs4 { x-cell-content-align:top; width:43.303%; float:alignleft; margin-left:40px; border-spacing:0px; }\r
+col.whs5 { width:82.933%; }\r
+col.whs6 { width:17.067%; }\r
+tr.whs7 { x-cell-content-align:top; }\r
+td.whs8 { width:82.933%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+p.whs9 { margin-left:0px; }\r
+td.whs10 { width:17.067%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+p.whs11 { margin-left:0px; text-align:center; }\r
+img_whs12 { border:none; width:16px; height:16px; border-style:none; }\r
+td.whs13 { width:82.933%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+td.whs14 { width:17.067%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+p.whs15 { text-align:center; }\r
+img_whs16 { border:none; width:200px; height:150px; float:none; border-style:none; }\r
+p.whs17 { text-align:center; font-size:8pt; }\r
+ul.whs18 { list-style:square; }\r
+table.whs19 { x-cell-content-align:top; width:100%; border-spacing:0px; }\r
+col.whs20 { width:25%; }\r
+td.whs21 { width:25%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+p.whs22 { font-weight:bold; text-align:center; }\r
+td.whs23 { width:25%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs24 { width:25%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+td.whs25 { width:25%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+img_whs26 { border:none; width:51px; height:150px; float:none; border-style:none; }\r
+img_whs27 { border:none; width:50px; height:150px; float:none; border-style:none; }\r
+img_whs28 { border:none; width:20px; height:150px; float:none; border-style:none; }\r
+p.whs29 { color:#ff0000; text-align:center; }\r
+p.whs30 { color:#0000ff; text-align:center; }\r
+img_whs31 { border:none; border-style:none; width:350px; height:432px; float:none; }\r
+p.whs32 { margin-left:40px; text-align:center; }\r
+p.whs33 { margin-left:40px; text-align:center; font-size:8pt; }\r
+p.whs34 { margin-left:40px; text-indent:-40px; }\r
+p.whs35 { margin-left:40px; text-indent:-40px; text-align:center; }\r
+p.whs36 { margin-left:40px; text-indent:-40px; text-align:center; font-size:8pt; }\r
+img_whs37 { border:none; width:138px; height:123px; border-style:none; }\r
+img_whs38 { border:none; width:186px; height:175px; border-style:none; }\r
+img_whs39 { border:none; width:191px; height:175px; border-style:none; }\r
+p.whs40 { margin-left:0px; text-align:center; font-size:8pt; }\r
+p.whs41 { margin-left:40px; text-indent:-28px; font-weight:bold; }\r
+img_whs42 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+p.whs43 { margin-left:80px; font-style:italic; }\r
+p.whs44 { margin-left:80px; font-style:italic; text-align:center; }\r
+img_whs45 { border:none; width:300px; height:106px; float:none; border-style:none; }\r
+p.whs46 { margin-left:80px; text-align:center; font-style:normal; font-size:8pt; }\r
+p.whs47 { margin-left:80px; text-align:center; font-style:normal; }\r
+p.whs48 { margin-left:76px; }\r
+img_whs49 { border:none; width:400px; height:272px; float:none; border-style:none; }\r
+ol.whs50 { list-style:disc; }\r
+p.whs51 { font-style:italic; }\r
+ul.whs52 { list-style:circle; }\r
+p.whs53 { margin-left:80px; }\r
+img_whs54 { border:none; width:300px; height:217px; float:none; border-style:none; }\r
+img_whs55 { border:none; width:300px; height:240px; float:none; border-style:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript">\r
+<!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
+{\r
+  var strNSS = "<style type='text/css'>";\r
+  strNSS += "p.whs9 {margin-left:1pt; }";\r
+  strNSS += "p.whs11 {margin-left:1pt; }";\r
+  strNSS += "p.whs34 {text-indent:1pt; }";\r
+  strNSS += "p.whs35 {text-indent:1pt; }";\r
+  strNSS += "p.whs36 {text-indent:1pt; }";\r
+  strNSS += "p.whs40 {margin-left:1pt; }";\r
+  strNSS += "p.whs41 {text-indent:1pt; }";\r
+  strNSS +="</style>";\r
+  document.write(strNSS);\r
+}\r
+//-->\r
+</script>\r
+<script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Display results at Gauss points\nDescription of commands");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Description of commands</h1>\r
+\r
+<p class="whs1">Results at Gauss Points </p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>This mode corresponds to a new development that will be performed in \r
+ the frame of this project.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Values are displayed at Gauss points as point sprites in the 3D view.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>Point sprites are processed using 2 textures (16x16 \r
+ pixels):</p></li>\r
+</ul>\r
+\r
+<p class="whs3">&nbsp;</p>\r
+\r
+<div align=left>\r
+<table x-use-null-cells cellspacing="0" width="43.303%" class="whs4">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='43.303%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs5">\r
+<col class="whs6">\r
+\r
+<tr valign="top" class="whs7">\r
+<td width="82.933%" class="whs8">\r
+<p class="whs9">Texture for intensity (brightness) &nbsp;</td>\r
+<td width="17.067%" class="whs10">\r
+<p align="center" class="whs11"><img src="image28.gif" width="16px" height="16px" border="0" class="img_whs12"></td></tr>\r
+\r
+<tr valign="top" class="whs7">\r
+<td width="82.933%" class="whs13">\r
+<p class="whs9">Texture for alpha channel (transparency) &nbsp;</td>\r
+<td width="17.067%" class="whs14">\r
+<p align="center" class="whs11"><img src="image29.gif" width="16px" height="16px" border="0" class="img_whs12"></td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+</div>\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>Color and size of the points depend on the value \r
+ of the results (scalar, modulus of vectors or each component of a vector, \r
+ tensor or matrix)</p></li>\r
+       \r
+       <li class=kadov-p><p>The default sizes to use for point sprites presentation \r
+ will be computed by the system. (therefore, these parameters cannot be \r
+ defined in the preferences). Nevertheless, the minimum and maximum range \r
+ values for the rendering will be parameterized in the configuration dialog.</p></li>\r
+       \r
+       <li class=kadov-p><p>The maximum size of the point sprite is limited \r
+ (clamp) so that when user applies a high zoom factor, the whole scene \r
+ remains visible</p></li>\r
+       \r
+       <li class=kadov-p><p>A point sprite is displayed in a 3D environment \r
+ so that its size is depending on location within the 3D scene. At a given \r
+ computed size, a point sprite will be bigger when it is near from the \r
+ camera, than when it is far from the camera.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs15"><img src="image30.gif" x-maintain-ratio="FALSE" width="200px" height="150px" border="0" class="img_whs16"></p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p align="center" class="whs17">Fig. 8 : Point sprite display mode</p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p>Two different scalar bars are displayed simultaneously:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>The first scale \96 <span style="font-weight: bold;"><B>global</B></span> \r
\96 corresponds to the minimum and maximum values founded for the variable \r
+ at <span style="font-weight: bold;"><B>all time stamps</B></span> (located on \r
+ the left side). When active, the second is greyed and disabled (not used).</p></li>\r
+       \r
+       <li class=kadov-p><p>The second scale \96 <span style="font-weight: bold;"><B>local</B></span> \r
\96 defines the minimum and maximum values at the <span style="font-weight: bold;"><B>current \r
+ time stamp</B></span> for the variable (located on the right side). When active, \r
+ the first one shows the limits of the second one by 2 black lines.</p></li>\r
+       \r
+       <li class=kadov-p><p>Possibility to display only one bar (defined in \r
+ the preferences). In this case it is the local one.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>Two modes are defined for these scalar bars:</p></li>\r
+       \r
+       <ul type="square" class="whs18">\r
+               \r
+               <li class=kadov-p><p>Palette of colours (rainbow scale)</p></li>\r
+               \r
+               <li class=kadov-p><p>2 colors (bicolor scale)</p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>Only one is active at a time. It uses all the \r
+ available colors.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="100%" class="whs19">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='100%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs20">\r
+<col class="whs20">\r
+<col class="whs20">\r
+<col class="whs20">\r
+\r
+<tr valign="top" class="whs7">\r
+<td bgcolor="#008080" width="25%" class="whs21">\r
+<p align="center" class="whs22">Mode</td>\r
+<td bgcolor="#008080" width="25%" class="whs23">\r
+<p class="whs1">2 b<span style="font-weight: bold;"><B>ars / \r
+ active = global bar</B></span></td>\r
+<td bgcolor="#008080" width="25%" class="whs23">\r
+<p class="whs1">2 bars / active = local bar</td>\r
+<td bgcolor="#008080" width="25%" class="whs23">\r
+<p class="whs1">1 active bar = local bar</td></tr>\r
+\r
+<tr valign="top" class="whs7">\r
+<td valign="middle" width="25%" class="whs24">\r
+<p align="center" class="whs22">Palette</td>\r
+<td width="25%" class="whs25">\r
+<p align="center" class="whs15"><img src="image31.gif" x-maintain-ratio="FALSE" width="51px" height="150px" border="0" class="img_whs26"></td>\r
+<td width="25%" class="whs25">\r
+<p align="center" class="whs15"><img src="image32.gif" x-maintain-ratio="FALSE" width="50px" height="150px" border="0" class="img_whs27"></td>\r
+<td width="25%" class="whs25">\r
+<p align="center" class="whs15"><img src="image33.gif" x-maintain-ratio="FALSE" width="20px" height="150px" border="0" class="img_whs28"></td></tr>\r
+\r
+<tr valign="top" class="whs7">\r
+<td valign="middle" width="25%" class="whs24">\r
+<p align="center" class="whs22">Bicolor</p>\r
+<p align="center" class="whs29">red &gt; 0</p>\r
+<p align="center" class="whs30">blue &lt; 0</td>\r
+<td width="25%" class="whs25">\r
+<p align="center" class="whs15"><img src="image34.gif" x-maintain-ratio="FALSE" width="51px" height="150px" border="0" class="img_whs26"></td>\r
+<td width="25%" class="whs25">\r
+<p align="center" class="whs15"><img src="image35.gif" x-maintain-ratio="FALSE" width="50px" height="150px" border="0" class="img_whs27"></td>\r
+<td width="25%" class="whs25">\r
+<p align="center" class="whs15"><img src="image36.gif" x-maintain-ratio="FALSE" width="20px" height="150px" border="0" class="img_whs28"></td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs17">Fig. 9 : Scalar bars for results at Gauss point</p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p>The necessity to display simultaneously 2 synchronized scalars bars \r
+ requires defining a new dialog for the configuration.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Besides, a dedicated dialog is also defined to customize the point sprite \r
+ behaviour. Thus, when user activates the command, he is prompted by a \r
+ dialog with 2 tabs. They are defined as follows:</p>\r
+\r
+<p><a name=Fig__10___Results_at_Gauss_points_primitive_configuration_dialog></a></p>\r
+\r
+<p align="center" class="whs15"><img src="image37.gif" x-maintain-ratio="FALSE" width="350px" height="432px" border="0" class="img_whs31"></p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p align="center" class="whs17">Fig. 10 : Results at Gauss points primitive configuration \r
+ dialog</p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Primitives</B></span> \r
+ allows user to choose the graphic primitive to use to display results \r
+ at Gauss points. As a first step, the \91<span style="font-weight: bold;"><B>point \r
+ sprite</B></span>\92 only will be used (LOT 1). Other primitives will be discussed \r
+ later on at LOT 3, and are suggested here for information purpose only.</p></li>\r
+</ul>\r
+\r
+<p class="whs3">&nbsp;</p>\r
+\r
+<p class="whs3">When user activates the Results at Gauss \r
+ points function, the dialog of the \91Primitive\92 tab is moved to an auto-adaptable \r
+ dialog which content depends on the selected primitive. Three different \r
+ primitives are available and defined as follows:</p>\r
+\r
+<p class="whs3">&nbsp;</p>\r
+\r
+<p align="center" class="whs32"><img src="image83.gif" x-maintain-ratio="FALSE" width="350px" height="432px" border="0" class="img_whs31"></p>\r
+\r
+<p align="center" class="whs32">&nbsp;</p>\r
+\r
+<p align="center" class="whs33">Fig. 11 : Results at Gauss points \96 Point sprite primitive \r
+ configuration dialog</p>\r
+\r
+<p align="center" class="whs32">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs34"><span \r
+ style="font-weight: bold;"><B>Point sprite</B></span> parameters remain unchanged \r
+ regarding the definition given in LOT 1 specification.</p></li>\r
+</ul>\r
+\r
+<p class="whs34">&nbsp;</p>\r
+\r
+<p align="center" class="whs35"></p>\r
+\r
+<p align="center" class="whs35">&nbsp;</p>\r
+\r
+<p align="center" class="whs36">Fig. 12 : Results at Gauss points \96 OpenGL primitive configuration \r
+ dialog</p>\r
+\r
+<p align="center" class="whs35">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>OpenGL</B></span> \r
+ point is a new mode to display results as simple OpenGL points. The <span \r
+ style="font-weight: bold;"><B>Clamp</B></span> parameter defines the maximum \r
+ size of the OpenGL point as it is defined for the Point sprite option.</p></li>\r
+</ul>\r
+\r
+<p class="whs34">&nbsp;</p>\r
+\r
+<p class="whs34">&nbsp;</p>\r
+\r
+<p align="center" class="whs35"><img src="image85.gif" width="138px" height="123px" border="0" class="img_whs37"></p>\r
+\r
+<p align="center" class="whs35">&nbsp;</p>\r
+\r
+<p align="center" class="whs36">Fig. 13 : OpenGL points presentations</p>\r
+\r
+<p align="center" class="whs35">&nbsp;</p>\r
+\r
+<p align="center" class="whs35"><img src="image86.gif" x-maintain-ratio="FALSE" width="350px" height="432px" border="0" class="img_whs31"></p>\r
+\r
+<p align="center" class="whs35">&nbsp;</p>\r
+\r
+<p align="center" class="whs36">Fig. 14 : Results at Gauss points \96 Geometrical sphere \r
+ primitive configuration dialog</p>\r
+\r
+<p class="whs3">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Geometrical \r
+ Sphere</B></span> is the second new mode that displays results using a standard \r
+ sphere with a number of faces to be defined thought a <span style="font-weight: bold;"><B>Resolution</B></span> \r
+ parameter. <span style="font-weight: bold;"><B>Default Resolution is set \r
+ to 8</B></span>. This number corresponds to the Latitude and Longitude definitions \r
+ of VTK sphere. The <span style="font-weight: bold;"><B>Number of Faces</B></span> \r
+ parameter \96 not editable \96 is computed by the system ( NbrFaces = 2*Resolution \r
+ x &nbsp;[Resolution-2] \r
+ ) and displayed for information purpose to end-user.</p></li>\r
+</ul>\r
+\r
+<p class="whs9">&nbsp;</p>\r
+\r
+<p align="center" class="whs11"><img src="image87.gif" width="186px" height="175px" border="0" class="img_whs38"> &nbsp;&nbsp;&nbsp;&nbsp;<img src="image88.gif" width="191px" height="175px" border="0" class="img_whs39"></p>\r
+\r
+<p align="center" class="whs11">&nbsp;</p>\r
+\r
+<p align="center" class="whs40">Fig. 15 : Sphere presentations (resp. with resolution \r
+ <span style="font-weight: bold;"><B>8</B></span> and <span style="font-weight: bold;"><B>6</B></span>)</p>\r
+\r
+<p align="center" class="whs11">&nbsp;</p>\r
+\r
+<p class="whs41">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="ex_green.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs42"> Note:</p>\r
+\r
+<p class="whs43">In the case the number \r
+ of faces (equal to the total number of points in the scene when no segmentation \r
+ cursor is used or number of points within the cursor when a segmentation \r
+ is in progress, multiplied by the number of faces of one Sphere in the \r
+ current resolution) to display is greater than the number defined in the \r
\93Notify when number of faces exceeds:\94 parameter, then user is prompted \r
+ by a dialog to continue or to cancel the display operation.</p>\r
+\r
+<p class="whs43">&nbsp;</p>\r
+\r
+<p align="center" class="whs44"><img src="image89.gif" x-maintain-ratio="FALSE" width="300px" height="106px" border="0" class="img_whs45"></p>\r
+\r
+<p align="center" class="whs44">&nbsp;</p>\r
+\r
+<p align="center" class="whs46">Fig. 16 : Notification message for existing and not modified \r
+ VISU presentation</p>\r
+\r
+<p align="center" class="whs47">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs9">Size block remains unchanged \r
+ as well.</p></li>\r
+</ul>\r
+\r
+<p class="whs48">&nbsp;</p>\r
+\r
+<p class="whs48">For both of these new modes \96 OpenGL points \r
+ and Sphere \96 the computation of size and the definition of <span style="font-weight: bold;"><B>colors</B></span> \r
+ applied to points are done in the same way as for point sprite.</p>\r
+\r
+<p class="whs3">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>The <span style="font-weight: bold;"><B>Maximum Size \r
+ (Clamp)</B></span> value corresponds to the maximum size that can have a point \r
+ sprite during rendering whatever is the magnification of the point or \r
+ the zoom of the view. Technically, it corresponds to setting up a clamp \r
+ in the vertex shader. The unit is the pixel, and minimum value is defined \r
+ to 1, maximum value can be either set to 512 pixels or read from the hardware \r
+ by using OpenGL extension functions.<span style="font-weight: bold;"><B> \r
+ Default value is set to 256 pixels</B></span>.</p></li>\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Textures</B></span> \r
+ allows user to define the 2 textures (16x16 pixels) used for point sprite \r
+ rendering. The main defines the shape of the point sprite, the alpha channel \r
+ one defines the transparency filter by the threshold parameter (<span \r
+ style="font-weight: bold;"><B>default is 0.1</B></span>). The buttons at the \r
+ end of each \91edit-box\92 control open a standard open file dialog to look \r
+ for a texture within the directory structure of the disk:</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs15"><img src="image38.gif" x-maintain-ratio="FALSE" width="400px" height="272px" border="0" class="img_whs49"></p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p align="center" class="whs17">Fig. 17 : Open file dialog to load a texture</p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Range for min/max</B></span> \r
+ defines 2 values that will be respectively multiplied by a <span style="font-weight: bold;"><B>reference \r
+ length</B></span> (representative of the average size of cells of the mesh) \r
+ to define the range for minimum and maximum size of a point during rendering \r
+ (at magnification = 100%). Default values are:</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ol type="disc" class="whs50">\r
+       \r
+       <ul type="disc" class="whs2">\r
+               \r
+               <li style="list-style: circle;"\r
+                       type=circle\r
+                       class=kadov-p><p><span style="font-weight: bold;"><B>Rainbow</B></span> \r
+ scale: <span style="font-weight: bold;"><B>min = 10%</B></span>, <span style="font-weight: bold;"><B>max \r
+ = 33%</B></span></p></li>\r
+               \r
+               <ul type="square" class="whs18">\r
+                       \r
+                       <li class=kadov-p><p class="whs51">Min size will \r
+ be associated to the smallest real value (included negative values) of \r
+ a result.</p></li>\r
+                       \r
+                       <li class=kadov-p><p class="whs51">Max size will \r
+ be associated to the largest real values of results</p></li>\r
+               </ul>\r
+               \r
+               <li style="list-style: circle;"\r
+                       type=circle\r
+                       class=kadov-p><p><span style="font-weight: bold;"><B>Bicolor</B></span> \r
+ scale: <span style="font-weight: bold;"><B>min = 0</B></span> (not editable), \r
+ <span style="font-weight: bold;"><B>max = 33%</B></span></p></li>\r
+               \r
+               <ul type="square" class="whs18">\r
+                       \r
+                       <li class=kadov-p><p class="whs51">Null size \r
+ will be associated to the 0 scalar value of a result.</p></li>\r
+                       \r
+                       <li class=kadov-p><p class="whs51">Max size will \r
+ be associated to the largest absolute values of results</p></li>\r
+               </ul>\r
+       </ul>\r
+</ol>\r
+\r
+<p class="whs43">&nbsp;</p>\r
+\r
+<p class="whs43">Both values are dynamically \r
+ updated by the system according to the selected scalar bar (see <a href="#Fig__18___Scalar_bar_configuration">Fig. \r
+ 18: Scalar bar configuration</a>). In the case of a bicolor scale, the \r
+ minimum value is set to 0 in the dialog and the control is disabled.</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Magnification \r
+ (%)</B></span> corresponds to the change of the size in 2D of a <span style="font-weight: bold;"><B>result \r
+ at Gauss point</B></span> primitive or <span style="font-weight: bold;"><B>Gauss \r
+ point</B></span> primitives (not applicable on other existing presentations). \r
+ Acceptable values are in the range ]0;N[. 100% means no magnification, \r
+ 50% means half of its size, 200% mean twice its size and so forth. <span \r
+ style="font-weight: bold;"><B>Default is set to 100%</B></span>.</p></li>\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>+/- Ratio</B></span> \r
+ corresponds to the number by which the magnification will be respectively \r
+ multiplied or divided at edition. Minimum value is defined to 0.01, maximum \r
+ is defined to 10. <span style="font-weight: bold;"><B>Default is set to 2</B></span>.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs51">Keyboard:</p>\r
+\r
+<p>During rendering the scene, it is possible to modify the <span style="font-weight: bold;"><B>magnification</B></span> \r
+ (multiply/divide by the magnification ratio) by using \91<span style="font-weight: bold;"><B>M</B></span>\92\r
\91<span style="font-weight: bold;"><B>m</B></span>\92 keys of the keyboard when \r
+ the 3D view is active. The effect is immediately applied. The ratio is \r
+ only defined through the dialog box.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs51">Spacemouse:</p>\r
+\r
+<p>The dynamic modification of the magnification is also possible using \r
+ 2 buttons of the <span style="font-weight: bold;"><B>Spacemouse</B></span> Plus \r
+ (see <a href="navigation_using_the_spacemouse.htm#Navigation_using_the_spacemouse">Navigation \r
+ using the spacemouse</a>).</p>\r
+\r
+<p><a name=Fig__18___Scalar_bar_configuration></a></p>\r
+\r
+<p align="center" class="whs15"><img src="image39.gif" x-maintain-ratio="FALSE" width="350px" height="432px" border="0" class="img_whs31"></p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p align="center" class="whs17">Fig. 18 : Scalar bar configuration</p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p>This last dialog allows user to define the characteristics of the scalar \r
+ bars to display within the scene.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs1">Active bar section</p></li>\r
+       \r
+       <ul type="circle" class="whs52">\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Local:</B></span> \r
+ when selected, the local bar will be active. Colors used for rendering \r
+ the results are taken from this bar. If displayed, global bar will be \r
+ greyed and 2 markers will define the limits of the local min/max.</p></li>\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Global:</B></span> \r
+ when selected, the global bar will be active. Colors for results are taken \r
+ in this bar (i.e.: not all colors may be used to display results at a \r
+ given time stamp). Local bar is greyed and inactive.</p></li>\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Displayed:</B></span> \r
+ when checked, the global bar is displayed, else it is not seen. This control \r
+ is systematically checked and disabled when the global bar is defined \r
+ as active.</p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs1">Scalar range</p></li>\r
+       \r
+       <ul type="circle" class="whs52">\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Scalar Mode:</B></span> \r
+ this feature is the same as for standard scalar bar. It allows refining \r
+ the value to be inspected:</p></li>\r
+               \r
+               <ul type="square" class="whs18">\r
+                       \r
+                       <li class=kadov-p><p>Modulus: value of a scalar or modulus \r
+ of a vector</p></li>\r
+                       \r
+                       <li class=kadov-p><p>Component N: Nth component of a vector, \r
+ a tensor or a matrix</p></li>\r
+               </ul>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs1">Colors and labels</p></li>\r
+       \r
+       <ul type="circle" class="whs52">\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Bicolor:</B></span> \r
+ 2 colors will be used for the active bar:</p></li>\r
+               \r
+               <ul type="square" class="whs18">\r
+                       \r
+                       <li class=kadov-p><p>Red for positive values</p></li>\r
+                       \r
+                       <li class=kadov-p><p>Blue for negative values</p></li>\r
+               </ul>\r
+       </ul>\r
+</ul>\r
+\r
+<p class="whs53">These colors also correspond to colors associated \r
+ to min/max values of the palette option.</p>\r
+\r
+<ol type="disc" class="whs50">\r
+       \r
+       <ul type="circle" class="whs52">\r
+               \r
+               <li class=kadov-p><p>&nbsp;<span style="font-weight: bold;"><B>Rainbow:</B></span> \r
+ A palette of several colors will be used to render the results. A regular \r
+ and linear progression is considered from min to max.</p></li>\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Nb. of colors:</B></span> \r
+ defines the number of color to design the palette (up to 256 colors can \r
+ be used).</p></li>\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Nb. of labels:</B></span> \r
+ defines the number of labels to be written in the bar as text markers.</p></li>\r
+       </ul>\r
+</ol>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs1">Orientation</p></li>\r
+       \r
+       <ul type="circle" class="whs52">\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Vertical:</B></span> \r
+ bar will be vertical</p></li>\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Horizontal:</B></span> \r
+ bar will be horizontal</p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs1">Origin</p></li>\r
+       \r
+       <ul type="circle" class="whs52">\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>X:</B></span> \r
+ abscissa of the origin of the bar (from the left side)</p></li>\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Y:</B></span> \r
+ ordinate of the origin of the bar (from the bottom)</p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs1">Dimension</p></li>\r
+       \r
+       <ul type="circle" class="whs52">\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Width:</B></span> \r
+ width of the each bar</p></li>\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Height:</B></span> \r
+ height of each bar</p></li>\r
+               \r
+               <li class=kadov-p><p><span style="font-weight: bold;"><B>Spacing:</B></span> \r
+ space between both bar (only if the 2 bars are to be displayed)</p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p\r
+               class=kadov-p>&nbsp;</li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Text properties</B></span> \r
+ button: correspond to the standard feature to define the font and text \r
+ associated to the active bar</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Finally, to exit the dialog and apply choices, press the <span style="font-weight: bold;"><B>OK</B></span> \r
+ button, else <span style="font-weight: bold;"><B>CANCEL</B></span> button, to \r
+ quit.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<p class="whs1"><a name=Gauss_Points___Geometry__new_presentation_>Gauss \r
+ Points \96 Geometry (new presentation)</a></p>\r
+\r
+<p class="whs51">&nbsp;</p>\r
+\r
+<p class="whs51">This mode corresponds to a new development \r
+ that will be performed in the frame of this project. It is very similar \r
+ to the presentation of Results as Gauss points (discussed in the previous \r
+ paragraph), so only differences are presented here.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Roughly, the differences between this presentation and the one for results \r
+ at Gauss points are:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>Size of points and color are fixed (because there \r
+ is no result)</p></li>\r
+       \r
+       <li class=kadov-p><p>There are no scalar bars</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs15"><img src="image40.gif" x-maintain-ratio="FALSE" width="300px" height="217px" border="0" class="img_whs54"></p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs17">Fig. 19 : Point sprite display mode (no results case)</p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p>Besides, a dedicated dialog is also defined to customize the point sprite \r
+ behaviour. Thus, when user activates the command, he is prompted by a \r
+ dialog box defined as follow:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs15"><img src="image90.gif" x-maintain-ratio="FALSE" width="350px" height="432px" border="0" class="img_whs31"></p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p align="center" class="whs17">Fig. 20 : Gauss points (Geometry) \96 Point sprite primitive \r
+ configuration dialog</p>\r
+\r
+<p align="center" class="whs17">&nbsp;</p>\r
+\r
+<p align="center" class="whs17"><img src="image91.gif" x-maintain-ratio="FALSE" width="350px" height="432px" border="0" class="img_whs31"></p>\r
+\r
+<p align="center" class="whs17">&nbsp;</p>\r
+\r
+<p align="center" class="whs17">Fig. 21 : Gauss points (Geometry) \96 OpenGL primitive configuration \r
+ dialog</p>\r
+\r
+<p align="center" class="whs17">&nbsp;</p>\r
+\r
+<p align="center" class="whs17"><img src="image92.gif" x-maintain-ratio="FALSE" width="350px" height="432px" border="0" class="img_whs31"></p>\r
+\r
+<p align="center" class="whs17">&nbsp;</p>\r
+\r
+<p align="center" class="whs17">Fig. 22 : Gauss points (Geometry) \96 Geometrical Sphere \r
+ primitive configuration dialog</p>\r
+\r
+<p align="center" class="whs17">&nbsp;</p>\r
+\r
+<p align="center" class="whs17">&nbsp;</p>\r
+\r
+<p>The first part of the dialog is the same as for <a href="#Fig__10___Results_at_Gauss_points_primitive_configuration_dialog">Fig. \r
+ 10 : Results at Gauss points primitive configuration dialog</a>.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Size</B></span> defines \r
+ a value that will be multiplied by a reference length (representative \r
+ of the average size of cells of the mesh) to define the size of points \r
+ during rendering (at magnification = 100%). <span style="font-weight: bold;"><B>Default \r
+ values 10%</B></span>.</p></li>\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Magnification</B></span> \r
+ and <span style="font-weight: bold;"><B>Ratio</B></span> have the same meaning \r
+ as for Results at Gauss points presentation.</p></li>\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Color</B></span>: \r
+ define the unique color for Gauss. It is a button control. When user press \r
+ it, he can choose a color from a standard color configuration dialog:</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs15"><img src="image42.gif" x-maintain-ratio="FALSE" width="300px" height="240px" border="0" class="img_whs55"></p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p align="center" class="whs17">Fig. 23 : Standard color dialog</p>\r
+\r
+<p align="center" class="whs15">&nbsp;</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs1">Display of a deformed shape</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs3">Once the option is activated, user is prompted \r
+ by a dialog made of two tabs. First tab defined the following dialog to \r
+ set-up the presentation at Gauss points and scale factor:</p>\r
+\r
+<p class="whs3">&nbsp;</p>\r
+\r
+<p align="center" class="whs32"><img src="image96.gif" x-maintain-ratio="FALSE" width="350px" height="432px" border="0" class="img_whs31"></p>\r
+\r
+<p align="center" class="whs32">&nbsp;</p>\r
+\r
+<p align="center" class="whs33">Fig. 24 : Deformed Shape dialog \96 Point sprite primitive</p>\r
+\r
+<p align="center" class="whs32">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs3"><span style="font-weight: bold;"><B>Scale \r
+ Factor</B></span> is a ratio that is applied to the deformation at each Gauss \r
+ points to amplify it for user understanding</p></li>\r
+</ul>\r
+\r
+<p class="whs3">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p class="whs3">All other parameters \r
+ have already been explained. Content is modified depending on chosen Primitive.</p></li>\r
+</ul>\r
+\r
+<p align="center" class="whs32">&nbsp;</p>\r
+\r
+<p align="center" class="whs32"><img src="image97.gif" x-maintain-ratio="FALSE" width="350px" height="432px" border="0" class="img_whs31"></p>\r
+\r
+<p align="center" class="whs32">&nbsp;</p>\r
+\r
+<p align="center" class="whs33">Fig. 25 : Deformed Shape dialog \96 OpenGL primitive</p>\r
+\r
+<p align="center" class="whs32">&nbsp;</p>\r
+\r
+<p align="center" class="whs32"><img src="image98.gif" x-maintain-ratio="FALSE" width="350px" height="432px" border="0" class="img_whs31"></p>\r
+\r
+<p align="center" class="whs33">&nbsp;</p>\r
+\r
+<p align="center" class="whs33">Fig. 26 : Deformed Shape dialog \96 Geometrical Sphere primitive</p>\r
+\r
+<p align="center" class="whs32">&nbsp;</p>\r
+\r
+<p class="whs3">The second tab of the dialog allows the user \r
+ to set-up scalar bars in the same way as for Display Results at Gauss \r
+ points presentation.</p>\r
+\r
+<p class="whs3">&nbsp;</p>\r
+\r
+<p class="whs3">When user validates the dialog by pressing \r
+ the \91<span style="font-weight: bold;"><B>OK</B></span>\92 button, the 3D view is \r
+ updated to display the Gauss points, using the selected primitive form, \r
+ at their new location.</p>\r
+\r
+<p class="whs3">&nbsp;</p>\r
+\r
+<p class="whs3">In this display mode, <span style="font-weight: bold;"><B>the \r
+ mesh is never displayed</B></span>.</p>\r
+\r
+<p class="whs3">&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/description_of_the_picking_functionality.htm b/doc/salome/gui/GAUSS/description_of_the_picking_functionality.htm
new file mode 100644 (file)
index 0000000..37072e5
--- /dev/null
@@ -0,0 +1,234 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Description of the picking functionality</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+p.whs2 { text-align:center; }\r
+img_whs3 { border:none; width:159px; height:159px; float:none; border-style:none; }\r
+p.whs4 { text-align:center; font-size:8pt; }\r
+p.whs5 { font-weight:bold; }\r
+p.whs6 { margin-left:40px; }\r
+p.whs7 { font-style:italic; margin-left:40px; }\r
+ul.whs8 { list-style:disc; }\r
+img_whs9 { border:none; width:300px; height:100px; float:none; border-style:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Picking\nDescription of the picking functionality");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Description of the picking functionality</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> In default mode, moving the mouse over the results at \r
+ Gauss points presentation produces the display of a <span style="font-weight: bold;"><B>specific \r
+ 3D cursor</B></span> on each <span style="font-weight: bold;"><B>detected</B></span> \r
+ Gauss points. Then, user has the possibility to select the detected item \r
+ to analyse it.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The specific cursor used for both modes, detection (pre-highlight) and \r
+ selection (highlight), is defined by a six-pyramids 3D graphic primitive \r
+ centred on the Gauss points. For more convenience, detection and selection \r
+ mode have different colors (same as Salome VISU) and cursor is displayed \r
+ in <span style="font-weight: bold;"><B>reverse-video</B></span>.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image67.gif" x-maintain-ratio="TRUE" width="159px" height="159px" border="0" class="img_whs3"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 47 : Cursor for detection and selection of a result \r
+ at Gauss point</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p class="whs5">Selection of a point</p>\r
+\r
+<p>There are two to way to select the current detected point:</p>\r
+\r
+<p class="whs6"><span style="font-weight: bold;"><B>Mouse:</B></span> \r
+ A left-mouse button click on the detected point</p>\r
+\r
+<p class="whs6"><span style="font-weight: bold;"><B>Keyboard:</B></span> \r
+ &nbsp;\91<span \r
+ style="font-weight: bold;"><B>S</B></span>\92 (or \91<span style="font-weight: bold;"><B>s</B></span>\92\r
+ key of the keyboard when the 3D view is active</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs5"><img src="ex_green.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Note:</p>\r
+\r
+<p class="whs7">Only one point can be \r
+ selected at a time. Thus, selection of another point automatically unselects \r
+ the possibly selected one.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs5">Modification of the camera after picking \r
+ of a point</p>\r
+\r
+<p>Two situations occur:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>i) No point is yet selected (&gt;&gt; first selection)</p>\r
+\r
+<ul type="disc" class="whs8">\r
+       \r
+       <li class=kadov-p><p>The camera is smoothly moved, as defined in <a href="cameras.htm#Movement_of_the_camera_between_2_positions">Movement \r
+ of the camera between 2 positions</a>, in such a way that the centre of \r
+ the 3D view becomes the selected point (<span style="font-weight: bold;"><B>focus</B></span> \r
+ is set to this point) and <span style="font-weight: bold;"><B>focal distance</B></span> \r
+ is adapted to increase the zoom (<span style="font-weight: bold;"><B>x 1.5</B></span>).</p></li>\r
+       \r
+       <li class=kadov-p><p>The <span style="font-weight: bold;"><B>center of \r
+ dynamic rotations</B></span> of the view is modified to the selected point</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>ii) A point is already selected (&gt;&gt; N<span style="vertical-align: Super;">th</span> \r
+ selection)</p>\r
+\r
+<ul type="disc" class="whs8">\r
+       \r
+       <li class=kadov-p><p>The camera is smoothly moved, as defined in <a href="cameras.htm#Movement_of_the_camera_between_2_positions">Movement \r
+ of the camera between 2 positions</a>, in such a way that the centre of \r
+ the 3D view becomes the selected point (<span style="font-weight: bold;"><B>focus</B></span> \r
+ is set to this point). The <span style="font-weight: bold;"><B>focal distance</B></span> \r
+ is not changed.</p></li>\r
+       \r
+       <li class=kadov-p><p>The <span style="font-weight: bold;"><B>center of \r
+ dynamic rotations</B></span> of the view is modified to the selected point</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs5">Display information</p>\r
+\r
+<p>Once a point is selected, a semi-transparent window is displayed next \r
+ to the selected point and shows the following information:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs8">\r
+       \r
+       <li class=kadov-p><p>The ID of the point within its parent mesh element</p></li>\r
+       \r
+       <li class=kadov-p><p>Coordinates of the Gauss point</p></li>\r
+       \r
+       <li class=kadov-p><p>In the case of a result at Gauss point: Scalar \r
+ value being inspected + all components individually</p></li>\r
+       \r
+       <li class=kadov-p><p>Name of its parent mesh element</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image68.gif" x-maintain-ratio="FALSE" width="300px" height="100px" border="0" class="img_whs9"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 48 : Sample of semi-transparent window</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p>In addition, the active scalar bar is updated to highlight the corresponding \r
+ value of the selected scalar value by a black line (not applicable for \r
+ a Gauss point without result).</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs5">Display parent mesh element</p>\r
+\r
+<p>Once a point is selected, it is possible to <span style="font-weight: bold;"><B>display/erase</B></span> \r
+ the parent mesh element in wireframe by using one of the following toggle \r
+ options:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs6"><span style="font-weight: bold;"><B>Mouse:</B></span> \r
+ Popup menu on the selected point: \91<span style="font-weight: bold;"><B>Display \r
+ Parent mesh element</B></span>\92 (a <span style="font-weight: bold;"><B>check \r
+ mark</B></span> on the left of the item informs if the parent is displayed \r
+ or not)</p>\r
+\r
+<p class="whs6"><span style="font-weight: bold;"><B>Keyboard:</B></span> \r
\91<span style="font-weight: bold;"><B>P</B></span>\92 (or \91<span style="font-weight: bold;"><B>p</B></span>\92\r
+ key of the keyboard when the 3D view is active (toggle option)</p>\r
+\r
+<p class="whs6">&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/display_meshes_general.htm b/doc/salome/gui/GAUSS/display_meshes_general.htm
new file mode 100644 (file)
index 0000000..a09de98
--- /dev/null
@@ -0,0 +1,92 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Display Meshes General</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Display of meshes and mesh groups \nGeneral");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>General</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> This functionality allows the user to display in the \r
+ 3D view the loaded meshes entities.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>There are several standard ways in Salome to display meshes and to modify \r
+ corresponding properties. Commands are accessible from the menu bar, contextual \r
+ popup menus and a toolbar. All these resources are defined and embedded \r
+ within VISU module.</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/display_results_at_gauss_points_general.htm b/doc/salome/gui/GAUSS/display_results_at_gauss_points_general.htm
new file mode 100644 (file)
index 0000000..ef79772
--- /dev/null
@@ -0,0 +1,111 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Display results at Gauss Points_General</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; }\r
+img_whs2 { border:none; float:none; width:32px; height:37px; }\r
+p.whs3 { margin-left:40px; font-style:italic; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Display results at Gauss points\nGeneral");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>General</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> The current functionality of SALOME allows user to display \r
+ in the 3D view the results of a calculation when known for each element \r
+ or each nodes. The capability to consider results at Gauss Points is a \r
+ new behaviour of this project.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p><img src="ex_green.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="32px" height="37px" border="0" class="img_whs2"> <span style="font-weight: bold;"><B>Note:</B></span></p>\r
+\r
+<p class="whs3">The current existing \r
+ presentations for results on nodes of elements or on elements \96 in VISU \r
\96 will not be modified in this project. These modes are briefly presented \r
+ in this specification<span style="x-text-underline: normal; /*begin!kadov{{*/ text-decoration: underline; /*}}end!kadov*/ "><U> \r
+ for information purpose</U></span>. Reversibly, presentation of results at \r
+ Gauss Points corresponds to a new functionality that will be added to \r
+ the VISU module. <span style="x-text-underline: normal; /*begin!kadov{{*/ text-decoration: underline; /*}}end!kadov*/ "><U>This \r
+ new display mode will be the only way to visualize results at Gauss points.</U></span> \r
+ The GUI of this new presentation will be fully defined in the next paragraphs.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The process to access these commands is similar to the one defined for \r
+ displaying meshes elements. That is: menu bar, contextual popup menu and \r
+ toolbar. They are described here after.</p>\r
+\r
+<h1>&nbsp;</h1>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/ehelp.xml b/doc/salome/gui/GAUSS/ehelp.xml
new file mode 100644 (file)
index 0000000..7a1defe
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>\r
+<!DOCTYPE SYSTEM "ehelpopt.dtd">\r
+<FILE-OPTIONS FILE-VERSION="2" FILE-KEY="e69c63b7_20c0_4018_9bc6_661b5ace7bed">\r
+</FILE-OPTIONS>\r
+<EHELP-OPTIONS FORMAT-VERSION="1.0">\r
+ <OPTIONS ENABLED="NO" EMBEDDED="YES" MAIN-WINDOW-ONLY="NO" COMMUNITY-NOTIFY="NO" FIRST-PAGE="NOT-SET">\r
+ </OPTIONS>\r
+ <BUTTON-LABEL>WebSearch\r
+ </BUTTON-LABEL>\r
+</EHELP-OPTIONS>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/ehlpdhtm.js b/doc/salome/gui/GAUSS/ehlpdhtm.js
new file mode 100644 (file)
index 0000000..6cfd2e4
--- /dev/null
@@ -0,0 +1,4239 @@
+// eHelp® Corporation Dynamic HTML JavaScript \r
+// Copyright© 1998-2003 eHelp® Corporation.All rights reserved.\r
+// Version=4.82\r
+\r
+// Warning:Do not modify this file.It is generated by RoboHELP® and changes will be overwritten.\r
+\r
+//// Segment Begin -- (JavaScript 1.0)\r
+\r
+/// Section Begin - General and relative topics(JavaScript 1.0)\r
+\r
+//{{HH_SYMBOL_SECTION\r
+var HH_ChmFilename = "";\r
+var HH_WindowName = "";\r
+var HH_GlossaryFont = "";\r
+var HH_Glossary = "";\r
+var HH_Avenue = "";\r
+var HH_ActiveX = false;\r
+//}}HH_SYMBOL_SECTION\r
+\r
+//Begin to support previous generic parameters\r
+//Get the information about the browser.\r
+var gstrBsAgent        = navigator.userAgent.toLowerCase();\r
+var gnBsVer                    = parseInt(navigator.appVersion);\r
+\r
+var gbBsOpera          = (gstrBsAgent.indexOf('opera') != -1);\r
+var gbBsKonqueror      = (gstrBsAgent.indexOf('konqueror') != -1);\r
+var gbBsSafari         = (gstrBsAgent.indexOf('safari') != -1);\r
+var gbBsIE             = (gstrBsAgent.indexOf('msie') != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;\r
+var gbBsNS             = (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1)) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;\r
+\r
+var gbBsMac                    = (gstrBsAgent.indexOf('mac') != -1);\r
+var gbBsWindows                = ((gstrBsAgent.indexOf('win') != -1) || (gstrBsAgent.indexOf('16bit') != -1));\r
+var gbBsSunOS          = (gstrBsAgent.indexOf("sunos") != -1);\r
+\r
+var gbBsIE3Before      = ((gbBsIE) && (gnBsVer <= 2));\r
+var gbBsNS3Before      = ((gbBsNS) && (gnBsVer <= 3));\r
+\r
+var gbBsNS2                    = ((gbBsNS) && (gnBsVer <= 2));\r
+var gbBsNS3                    = ((gbBsNS) && (gnBsVer == 3));\r
+var gbBsIE300301       = ((gbBsIE) && (gnBsVer == 2) && ((gstrBsAgent.indexOf("3.00") != -1)||(gstrBsAgent.indexOf("3.0a") != -1)||(gstrBsAgent.indexOf("3.0b")!=-1)||(gstrBsAgent.indexOf("3.01")!=-1)));\r
+var gbBsIE302          = ((gbBsIE) && (gnBsVer == 2) && (gstrBsAgent.indexOf("3.02") != -1));\r
+\r
+var gbBsNS4                    = ((gbBsNS) && (gnBsVer >= 4));\r
+var gbBsNS6                    = ((gbBsNS) && (gnBsVer >= 5));\r
+var    gbBsNS7                 = false;\r
+\r
+var gbBsIE4                    = ((gbBsIE) && (gnBsVer >= 4));\r
+var gbBsIE5                    = false;\r
+var gbBsIE55           = false;\r
+\r
+var gbBsOpera6         = false;\r
+var gbBsOpera7         = false;\r
+\r
+var gbBsKonqueror3     = false;\r
+\r
+\r
+\r
+gbBsIE = (navigator.appName.indexOf("Microsoft") != -1) && !gbBsOpera && !gbBsKonqueror && !gbBsSafari;;\r
+if (gbBsIE)\r
+{\r
+       if (parseInt(navigator.appVersion) >= 4) {\r
+               gbBsIE4 = true;\r
+               if (gbBsIE4) {\r
+                       var nPos = gstrBsAgent.indexOf("msie");\r
+                       var strIEversion = gstrBsAgent.substring(nPos + 5);\r
+                       var nVersion =  parseFloat(strIEversion);\r
+                       if (nVersion >= 5)\r
+                               gbBsIE5 = true;\r
+                       if (nVersion >= 5.5)\r
+                               gbBsIE55 = true;\r
+               }\r
+       }\r
+}\r
+if (gbBsNS6)\r
+{\r
+       var nPos=gstrBsAgent.indexOf("gecko");\r
+       if(nPos!=-1)\r
+       {\r
+               var nPos2=gstrBsAgent.indexOf("/", nPos);\r
+               if(nPos2!=-1)\r
+               {\r
+                       var nVersion=parseFloat(gstrBsAgent.substring(nPos2+1));\r
+                       if (nVersion>=20020823)\r
+                               gbBsNS7=true;\r
+               }\r
+       }       \r
+}\r
+if (gbBsOpera)\r
+{\r
+       var nPos = gstrBsAgent.indexOf("opera");\r
+       if(nPos!=-1)\r
+       {\r
+               var nVersion = parseFloat(gstrBsAgent.substring(nPos+6));\r
+               if (nVersion >= 6)\r
+               {\r
+                       gbBsOpera6=true;\r
+                       if (nVersion >=7)\r
+                               gbBsOpera7=true;        \r
+               }\r
+       }\r
+}\r
+if (gbBsKonqueror)\r
+{\r
+       var nPos = gstrBsAgent.indexOf("konqueror");\r
+       if(nPos!=-1)\r
+       {\r
+               var nVersion = parseFloat(gstrBsAgent.substring(nPos+10));\r
+               if (nVersion >= 3)\r
+               {\r
+                       gbBsKonqueror3=true;\r
+               }\r
+       }\r
+}\r
+\r
+function insertAdjacentHTML(obj, where, htmlStr)\r
+{\r
+       if (gbBsIE || gbBsOpera7)\r
+       {\r
+               obj.insertAdjacentHTML(where, htmlStr);\r
+       }\r
+       else if (gbBsNS6 || gbBsSafari)\r
+       {\r
+               var r = obj.ownerDocument.createRange();\r
+               r.setStartBefore(obj);\r
+               var     parsedHTML = r.createContextualFragment(htmlStr);\r
+               \r
+               switch (where){\r
+               case 'beforeBegin':\r
+                       obj.parentNode.insertBefore(parsedHTML,obj);\r
+                       break;\r
+               case 'afterBegin':\r
+                       obj.insertBefore(parsedHTML,obj.firstChild);\r
+                       break;\r
+               case 'beforeEnd':\r
+                       obj.appendChild(parsedHTML);\r
+                       break;\r
+               case 'afterEnd':\r
+                       if (obj.nextSibling){\r
+                       obj.parentNode.insertBefore(parsedHTML,obj.nextSibling);\r
+                       } else {\r
+                       obj.parentNode.appendChild(parsedHTML);\r
+                       }\r
+                       break;\r
+               }\r
+       }\r
+}\r
+\r
+// Utilities functions.\r
+function BsscHasExtJs()\r
+{\r
+       if( gbBsIE3Before || gbBsNS3Before)\r
+               return false;\r
+       return true;\r
+}\r
+\r
+// Register event handler\r
+var gBsOnLoads                         = new Array();  // An array holds all the onload event handler.\r
+var gBsOnClicks                = new Array();  // An array holds all the onClick event handler.\r
+var gBsOnUnLoads               = new Array();  // An array holds all the OnUnLoad event handler.\r
+var gBsOnMouseOvers    = new Array();  // An array holds all the OnMouseOver event handler.\r
+var gBsOnMouseOuts             = new Array();  // An array holds all the OnMouseOut event handler.\r
+\r
+var gbOrignalOnMouseDown = null;\r
+\r
+function BsscRegisterOnLoad(funcHandler)\r
+{\r
+       var nLength = gBsOnLoads.length;\r
+       gBsOnLoads[nLength] = funcHandler;\r
+}\r
+\r
+function BsscRegisterOnClick(funcHandler)\r
+{\r
+       var nLength = gBsOnClicks.length;\r
+       gBsOnClicks[nLength] = funcHandler;\r
+}\r
+\r
+function BsscRegisterOnUnLoad(funcHandler)\r
+{\r
+       var nLength = gBsOnUnLoads.length;\r
+       gBsOnUnLoads[nLength] = funcHandler;\r
+}\r
+\r
+function BsscRegisterOnMouseOver(funcHandler)\r
+{\r
+       var nLength = gBsOnMouseOvers.length;\r
+       gBsOnMouseOvers[nLength] = funcHandler;\r
+}\r
+\r
+function BsscRegisterOnMouseOut(funcHandler)\r
+{\r
+       var nLength = gBsOnMouseOuts.length;\r
+       gBsOnMouseOuts[nLength] = funcHandler;\r
+}\r
+\r
+function BsGeneralOnLoad()\r
+{\r
+       if (!gbBsIE4 && !gbBsNS4)\r
+               return;\r
+\r
+       // Make everything visible in navigator\r
+       if (gbBsNS4 && !gbBsNS6) {\r
+               // Make some special effects items visible\r
+               for (var iLayer = 0; iLayer < document.layers.length; iLayer++) {\r
+                       document.layers[iLayer].visibility = "show";\r
+                       document.layers[iLayer].left = 0;\r
+               }\r
+       }\r
+}\r
+\r
+// If resize the netscape browser, need to reload it.\r
+function BsReDo()\r
+{\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+// End of the local functions.\r
+\r
+// The following functions are used by the html files.\r
+function BSSCOnLoad()\r
+{\r
+       if( !BsscHasExtJs() )\r
+               return;\r
+       for (var nElement = gBsOnLoads.length - 1; nElement >= 0; nElement--)\r
+               gBsOnLoads[nElement]();\r
+}\r
+\r
+function BSSCOnClick()\r
+{\r
+       if (!BsscHasExtJs()) return;\r
+               \r
+       for (var nElement = gBsOnClicks.length - 1; nElement >= 0; nElement--)\r
+               gBsOnClicks[nElement]();\r
+}\r
+\r
+function BSSCOnUnload()\r
+{\r
+       if (!BsscHasExtJs()) return;\r
+       for (var nElement = gBsOnUnLoads.length - 1; nElement >= 0; nElement--)\r
+               gBsOnUnLoads[nElement]();\r
+}\r
+\r
+function BSSCOnMouseOver()\r
+{\r
+       if (!BsscHasExtJs()) return;\r
+       for (var nElement = gBsOnMouseOvers.length - 1; nElement >= 0; nElement--)\r
+               gBsOnMouseOvers[nElement]();\r
+}\r
+\r
+function BSSCOnMouseOut()\r
+{\r
+       if (!BsscHasExtJs()) return;\r
+       for (var nElement = gBsOnMouseOuts.length - 1; nElement >= 0; nElement--)\r
+       {\r
+               gBsOnMouseOuts[nElement]();\r
+       }\r
+}\r
+// End of invocation of the event handle functions.\r
+\r
+// Add the GereralOnLoad to the onload array.\r
+if (typeof(BsscRegisterOnLoad) != "undefined")\r
+{\r
+       BsscRegisterOnLoad(BsGeneralOnLoad);\r
+}\r
+if (gbBsNS4&&!gbBsNS6) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = BsReDo;\r
+}\r
+//End to support previous generic parameters\r
+\r
+//Begin to support previous HHActiveX invoking\r
+function BsHHActivateComponents()\r
+{\r
+       if( HH_ActiveX && (HH_ChmFilename != "") && ((self == top) || (self == top.frames[0])))\r
+       {\r
+               var objBody = getElementsByTag(document,"BODY")[0];\r
+               if( typeof(objBody) == "object" )\r
+               {\r
+                       insertAdjacentHTML(objBody, "beforeEnd", '<OBJECT ID="HHComponentActivator" CLASSID="CLSID:399CB6C4-7312-11D2-B4D9-00105A0422DF" width=0 height=0></OBJECT>');\r
+                       if (HHComponentActivator.object)\r
+                               HHComponentActivator.Activate(HH_ChmFilename, HH_WindowName, HH_GlossaryFont, HH_Glossary, HH_Avenue);\r
+               }\r
+       }\r
+}\r
+\r
+function BsHHActivXOnLoad()\r
+{      \r
+       if( gbBsIE4 )\r
+               BsHHActivateComponents(); \r
+}\r
+\r
+if( typeof(BsscRegisterOnLoad) != "undefined" )\r
+{\r
+       BsscRegisterOnLoad(BsHHActivXOnLoad);\r
+}\r
+//End to support previous HHActiveX invoking\r
+\r
+//Begin to support previous relative topics\r
+//If webHelp needs Related Topics DHTMLcode, it's supposed to add it here\r
+var gbPopupMenuTimeoutExpired = false;\r
+var gbInPopupMenu = false;\r
+var gbPopupMenuTopicList = null;\r
+var gOlddocumentClick = null;\r
+\r
+//////////////////////////////////////////////////////////////////////////////////////////\r
+//\r
+// Popup Menu code\r
+//\r
+//////////////////////////////////////////////////////////////////////////////////////////\r
+\r
+var g_bIsPopupMenuInit = false;\r
+function _WritePopupMenuLayer()\r
+{\r
+       if (!g_bIsPopupMenuInit)\r
+        {\r
+         if (gbBsNS4&&!gbBsNS6) {\r
+//Do not try to write ininle styles for NS!  NS can not handle it and will not stop downloading the html page...\r
+               document.write("<DIV CLASS='WebHelpPopupMenu' ID='PopupMenu'></DIV>");\r
+         } else{\r
+         document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");\r
+         if (!(gbBsNS4&&!gbBsNS6)) {\r
+               document.write("<STYLE TYPE='text/css'>");\r
+               if (gbBsMac&&gbBsIE4) {\r
+                       document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
+                       document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
+               } else {\r
+                       document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
+                       document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:8pt; font-style:normal;font-weight:normal;text-decoration:none;}");\r
+               }\r
+               document.write("</STYLE>");\r
+          }\r
+          }\r
+         g_bIsPopupMenuInit = true;\r
+       }\r
+}\r
+\r
+//Seek for the bsscright frame \r
+function _SeekFrameByName( cRoot, strName )\r
+{\r
+       if( cRoot == null )     return null;\r
+       if( cRoot.frames == null )      return null;\r
+       if( cRoot.frames[strName] != null )     return cRoot.frames[strName];\r
+       for (var i=0; i<cRoot.frames.length; i++)\r
+       {\r
+               var cObj = null;\r
+               if (!gbBsNS6) \r
+                       cObj = _SeekFrameByName( cRoot.frames(i).document, strName );\r
+               else\r
+                       cObj = _SeekFrameByName( cRoot.frames[i], strName );\r
+               if( cObj != null )              return cObj;\r
+       };\r
+       return null;\r
+}\r
+function _GetFrameByName( cRoot, strName )\r
+{\r
+       if( cRoot == null )     return null;\r
+       var cRet = _SeekFrameByName(cRoot, strName);\r
+       if( cRet != null )      return cRet;\r
+       if (cRoot.parent != cRoot)\r
+               return _GetFrameByName( cRoot.parent, strName );\r
+       else\r
+               return null;\r
+}\r
+\r
+var gfn_arguments = null;\r
+function _PopupMenu_Invoke(fn_arguments)\r
+{\r
+       gfn_arguments = fn_arguments;\r
+       if (gbBsOpera6&&gbBsMac)\r
+       {\r
+               var wndOldPopupLinks= window.open(document.location.href, "popuplinks");\r
+               wndOldPopupLinks.close();\r
+               setTimeout("_PopupMenu_Invoke_2();",100);\r
+       }\r
+       else\r
+       {\r
+               _PopupMenu_Invoke_2();\r
+       }\r
+}\r
+\r
+function _PopupMenu_Invoke_2()\r
+{\r
+       var fn_arguments = gfn_arguments;\r
+       gfn_arguments = null;\r
+       \r
+       // Make sure we have reasonable arguments\r
+       var argLen = fn_arguments.length;\r
+       if (argLen < 3) {\r
+               return false;\r
+       }\r
+\r
+       // Check to see if we only have one target\r
+       var strTarget = "";\r
+       var targetDoc = null;\r
+       if (fn_arguments[1] == '') {\r
+               if (BSSCPopup_IsPopup()) {\r
+                       targetDoc = parent;\r
+                       strTarget = "TARGET= _parent";\r
+               }\r
+               else\r
+                       targetDoc = window.document;\r
+       } else {\r
+               targetDoc = _GetFrameByName( parent, fn_arguments[1] );\r
+\r
+               strTarget = "TARGET='" + fn_arguments[1] + "'";\r
+       }\r
+\r
+       if ((!gbBsIE4 && !gbBsNS4 && !gbBsOpera7 && !gbBsKonqueror3 &&!gbBsSafari) || ((gbBsMac) && (gbBsIE4) && (window.event.srcElement.tagName == "AREA"))) {\r
+       \r
+               var argLen      = fn_arguments.length;\r
+\r
+               // Create the window that the hyperlinks will go into\r
+               var nHeight = argLen * 15;\r
+               var nWidth = 400;\r
+               var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto";\r
+               strParam += ",height=" + nHeight + ",width=200";\r
+               strParam += ",resizable";\r
+\r
+               var wndTemp=null;\r
+               // Create a temporary window first to ensure the real popup comes up on top\r
+               if (!gbBsOpera)\r
+                       wndTemp = window.open("", "temp", strParam);\r
+\r
+               // Create the real popup window\r
+               var wndPopupLinks=null;\r
+               if (gbBsOpera&&gbBsMac)\r
+               {\r
+                       wndTemp = window.open(document.location.href, "temp", strParam);\r
+                       wndPopupLinks= window.open(document.location.href, "popuplinks", strParam);\r
+               }\r
+               else\r
+                       wndPopupLinks= window.open("", "popuplinks", strParam);\r
+               wndPopupLinks.document.open("text/html");\r
+\r
+               // Close the temporary\r
+               if (wndTemp)\r
+                       wndTemp.close();\r
+\r
+               var sHTML="<html><head></head>";\r
+               sHTML+="<body onBlur=\'self.focus();\'>";\r
+               var strParaLine = "";\r
+               for (var i = 0; i < (argLen - 2) / 2; i++) {\r
+                       strParaLine = "";\r
+                       strParaLine += "<a href=\"javascript:";\r
+                       if (gbBsIE) {\r
+                               strParaLine += "onBlur=null; ";\r
+                       }\r
+                       strParaLine += "opener.location=\'";\r
+                       strParaLine += fn_arguments[2 * i + 3];\r
+                       strParaLine += "\';close();\"";\r
+                       strParaLine += strTarget;\r
+\r
+                       strParaLine += ">";\r
+                       strParaLine += fn_arguments[2 * i + 2];\r
+                       strParaLine += "</a>";\r
+                       strParaLine += "<br>";\r
+                       sHTML+=strParaLine;\r
+               }\r
+               sHTML+="</body></html>";\r
+               wndPopupLinks.document.write(sHTML);\r
+               wndPopupLinks.document.close();\r
+               window.gbInPopupMenu = true;\r
+               if (!gbBsIE) {\r
+                       wndPopupLinks.focus();\r
+               }\r
+               return false;\r
+       }\r
+\r
+       if (((argLen < 5) && ((isNaN(fn_arguments[2])) || (gbPopupMenuTopicList == null))) ||\r
+               ((argLen < 4) && ((!isNaN(fn_arguments[2])) && (gbPopupMenuTopicList != null)))) {\r
+               // Get the place that we will be putting the topic into\r
+               var strURL = "";\r
+               if (isNaN(fn_arguments[2]) ||  (gbPopupMenuTopicList == null)) {\r
+                       strURL = fn_arguments[3];\r
+               }\r
+               else    {\r
+                       strURL = gbPopupMenuTopicList[fn_arguments[2]].strURL;\r
+               }\r
+\r
+               if (targetDoc != null) {\r
+                       targetDoc.location.href = strURL;\r
+               }\r
+               else {\r
+                       if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")\r
+                               window.open(strURL, fn_arguments[1]);\r
+                       else\r
+                               window.open(strURL);\r
+               }               \r
+               window.gbInPopupMenu = true;\r
+               return false;\r
+       }\r
+       \r
+       var strMenu = "";\r
+       if (gbBsNS4&&!gbBsNS6) {\r
+               strMenu = '<TABLE BORDER="1" CELLSPACING=0 CELLPADDING=3 BGCOLOR="#c0c0c0">';\r
+       } else {\r
+               strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0';\r
+               if (gbBsMac) {\r
+                       strMenu += ' CELLPADDING=4';\r
+               } else {\r
+                       strMenu += ' CELLPADDING=2';\r
+               }       \r
+               strMenu += ' BGCOLOR=#c0c0c0>';\r
+       }\r
+       // Add each of the items\r
+       var i = 2;\r
+       while (i <= argLen - 1) {\r
+               strMenu += '<TR><TD><NOBR>'\r
+               // If the destination is a number then look it up in the topic list\r
+               if (isNaN(fn_arguments[i]) ||  (gbPopupMenuTopicList == null)) {\r
+                       strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + fn_arguments[i + 1] + '"' + strTarget;\r
+               } else {\r
+                       strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + gbPopupMenuTopicList[fn_arguments[i]].strURL + '"' + strTarget;\r
+               }\r
+               strMenu += ' onclick="PopupMenu_HandleClick(event);"';\r
+               strMenu += ' onmouseover="PopupMenu_Over(event);"';\r
+               strMenu += ' onmouseout="PopupMenu_Out(event);"';\r
+               strMenu += '>';\r
+               if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {\r
+                       strMenu += '<SPAN CLASS="PopupNotOver">' + fn_arguments[i] + '</SPAN>';\r
+               } else {\r
+                       strMenu += '<SPAN CLASS="PopupNotOver">' + gbPopupMenuTopicList[fn_arguments[i]].strTitle + '</SPAN>';\r
+               }\r
+               strMenu += '</A></DIV></NOBR></TD></TR>';\r
+\r
+               if (isNaN(fn_arguments[i]) || (gbPopupMenuTopicList == null)) {\r
+                       i += 2;\r
+               } else {\r
+                       i += 1;\r
+               }\r
+       }\r
+       strMenu += "</TABLE>";\r
+\r
+       if (gbBsMac) {\r
+       // totally hack. because ie5 in mac need something. </TABLE> is one of them. mac is mad.\r
+               strMenu +="<TABLE></TABLE>";\r
+       }\r
+\r
+       var layerPopup = null;\r
+       var stylePopup = null;\r
+       var nEventX = 0;\r
+       var nEventY = 0;\r
+       var nWindowWidth = 0;\r
+       if (gbBsIE4 || gbBsOpera7) {\r
+\r
+               layerPopup = getElement("PopupMenu");\r
+               layerPopup.innerHTML = strMenu;\r
+               stylePopup = layerPopup.style;\r
+\r
+               _BSPSGetClientSize();\r
+\r
+               // Get the position of the item causing the event (relative to its parent)\r
+               nEventX = window.event.clientX;\r
+               nEventY = window.event.clientY;\r
+\r
+               if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) {\r
+                       nEventY += document.body.scrollTop + 10;\r
+               } else {\r
+                       nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20;\r
+               }\r
+               stylePopup.top = nEventY;\r
+               \r
+               var nPopupWidth = layerPopup.scrollWidth;\r
+               if (gbBsMac) {\r
+                       nPopupWidth = 80; // we have no idea how to get the dynamic width of the popup.\r
+               }\r
+               if (nEventX + nPopupWidth + 20 > gBsClientWidth) {\r
+                       if (gBsClientWidth - nPopupWidth < 5) {\r
+                               stylePopup.left = 5;\r
+                       } else {\r
+                               stylePopup.left = gBsClientWidth - nPopupWidth - 5;\r
+                       }\r
+               } else {\r
+                       stylePopup.left = nEventX + document.body.scrollLeft + 20;\r
+               }\r
+\r
+               stylePopup.visibility = "visible";\r
+               if (!gOlddocumentClick && document.onclick)\r
+                       gOlddocumentClick = document.onclick;\r
+               document.onclick = PopupMenu_HandleClick;\r
+\r
+       } else if (gbBsNS6 || gbBsKonqueror3||gbBsSafari) {\r
+               layerPopup = getElement("PopupMenu");\r
+               layerPopup.style.visibility = "hidden";\r
+       \r
+               if (gbBsNS6)\r
+               {\r
+                       var e = fn_arguments[0];\r
+                       nEventX = e.pageX;\r
+                       nEventY = e.pageY;\r
+               }\r
+               else\r
+               {\r
+                       nEventX = window.event.clientX;\r
+                       nEventY = window.event.clientY;\r
+               }\r
+               _BSPSGetClientSize();\r
+               layerPopup.innerHTML = strMenu;\r
+\r
+               if (nEventY + layerPopup.offsetHeight + 20  <  window.pageYOffset + gBsClientHeight) {\r
+                       nEventY += 20;\r
+               } else {\r
+                       nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20;\r
+               }\r
+\r
+               if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) {\r
+                       if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) {\r
+                               nEventX = 5;\r
+                       } else {\r
+                               nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20;\r
+                       }\r
+               } else {\r
+                       nEventX += 20;\r
+               }\r
+               layerPopup.style.top = nEventY;\r
+               layerPopup.style.left = nEventX;\r
+               // set again to avoid the stupid frash in netscape 6.\r
+               layerPopup.innerHTML = strMenu;\r
+               layerPopup.style.visibility = "visible";\r
+               //window.captureEvents(Event.MOUSEDOWN);\r
+               if (!gOlddocumentClick && document.onclick)\r
+                       gOlddocumentClick = document.onclick;\r
+               window.onclick = PopupMenu_HandleClick;\r
+       }\r
+       else if (gbBsNS4) {\r
+               layerPopup = document.layers.PopupMenu;\r
+               layerPopup.visibility = "hide";\r
+               stylePopup = layerPopup.document;\r
+               stylePopup.write(strMenu);\r
+               stylePopup.close();\r
+               var e = fn_arguments[0];\r
+               nEventX = e.pageX;\r
+               nEventY = e.pageY;\r
+               _BSPSGetClientSize();\r
+               if (nEventY + layerPopup.clip.height + 20 < window.pageYOffset + gBsClientHeight) {\r
+                       nEventY += 20;\r
+               } else {\r
+                       nEventY = gBsClientHeight + window.pageYOffset- layerPopup.clip.height - 20;\r
+               }\r
+               layerPopup.top = nEventY;\r
+\r
+               if (nEventX + layerPopup.clip.width + 20 > gBsClientWidth + window.pageXOffset) {\r
+                       if (gBsClientWidth + window.pageXOffset - layerPopup.clip.width < 20) {\r
+                               nEventX = 5;\r
+                       } else {\r
+                               nEventX = gBsClientWidth + window.pageXOffset - layerPopup.clip.width - 20;\r
+                       }\r
+               } else {\r
+                       nEventX += 20;\r
+               }\r
+\r
+               layerPopup.left = nEventX;\r
+\r
+               layerPopup.visibility = "show";\r
+\r
+               window.captureEvents(Event.MOUSEDOWN);\r
+               if (!gOlddocumentClick && document.onmousedown)\r
+                       gOlddocumentClick = document.onmousedown;\r
+               window.onmousedown = PopupMenu_HandleClick;\r
+       }\r
+\r
+       window.gbInPopupMenu = true;\r
+       window.gbPopupMenuTimeoutExpired = false;\r
+       setTimeout("PopupMenu_Timeout();", 100);\r
+       return false;\r
+}\r
+\r
+function PopupMenu_Timeout()\r
+{\r
+       window.gbPopupMenuTimeoutExpired = true;\r
+}\r
+\r
+function PopupMenu_Over(e)\r
+{\r
+    if (gbBsIE4||gbBsOpera7)\r
+               e.srcElement.className = "PopupOver";\r
+    else if (gbBsNS6)\r
+               e.target.parentNode.className = "PopupOver";\r
+       return;\r
+}\r
+\r
+function PopupMenu_Out(e)\r
+{\r
+    if (gbBsIE4||gbBsOpera7)\r
+               e.srcElement.className = "PopupNotOver";\r
+    else if (gbBsNS6)\r
+               e.target.parentNode.className = "PopupNotOver";\r
+       return;\r
+}\r
+\r
+function PopupMenu_HandleClick(e)\r
+{\r
+       if (window.gbPopupMenuTimeoutExpired) {\r
+               window.gbInPopupMenu = false;\r
+               if (gbBsNS4 && !gbBsNS6) {\r
+                       window.releaseEvents(Event.MOUSEDOWN);\r
+               }\r
+\r
+               var layerPopup = null;\r
+               if (gbBsNS4&&!gbBsNS6) {\r
+                       layerPopup = document.layers.PopupMenu;\r
+                       layerPopup.visibility = "hide";\r
+               } else {\r
+                       layerPopup = getElement("PopupMenu");\r
+                       layerPopup.style.visibility = "hidden";\r
+               }\r
+       \r
+               if (gOlddocumentClick)\r
+               {\r
+                       if (gbBsNS4 && !gbBsNS6)\r
+                               document.onmousedown = gOlddocumentClick;\r
+                       else\r
+                               document.onclick = gOlddocumentClick;\r
+               }\r
+       }\r
+       return;\r
+}\r
+\r
+function BSSCPopup_ClickMac()\r
+{\r
+       if ((!DHTMLPopupSupport()) && (gbBsIE4 || gbBsOpera7))\r
+       {       \r
+               var bClickOnAnchor = false;\r
+               var el;\r
+               if ((window.event != null) &&\r
+                   (window.event.srcElement != null))\r
+               {\r
+                   el = window.event.srcElement;\r
+                       while (el != null)\r
+                       {\r
+                               if ((el.tagName == "A") || (el.tagName == "AREA"))      {\r
+                                       bClickOnAnchor = true;\r
+                                       break;\r
+                               }\r
+                               if (el.tagName == "BODY") {\r
+                                       break;\r
+                               }\r
+                               el = getParentNode(el);\r
+                       }\r
+               }\r
+               if (BSSCPopup_IsPopup())\r
+               {\r
+                       if (!bClickOnAnchor) {\r
+                               parent.window.gPopupWindow = null;\r
+                               self.close();\r
+                       }\r
+               }\r
+               else\r
+               {\r
+                       bClosePopupWindow = true;\r
+                       if ((bClickOnAnchor) &&\r
+                               (el.href) &&\r
+                           ((el.href.indexOf("javascript:BSSCPopup") != -1) || (el.href.indexOf("javascript:null") != -1) || (el.href.indexOf("javascript:void(0)") != -1)))\r
+                       {\r
+                               bClosePopupWindow = false;\r
+                       }\r
+                       if (bClosePopupWindow)\r
+                       {\r
+                               if (window.gPopupWindow != null && !window.gPopupWindow.closed )\r
+                               {\r
+                                       window.gPopupWindow.close();\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function BsPopupOnClick()\r
+{\r
+       if (!gbBsIE4 && !gbBsOpera7)\r
+               return;\r
+\r
+       BSSCPopup_ClickMac();\r
+}\r
+\r
+function _BSSCOnError(message)\r
+{\r
+       if(-1 != message.indexOf("denied") \r
+               || -1 != message.indexOf("Object required"))\r
+        return true;\r
+}\r
+\r
+//End to support previous relative topics\r
+\r
+/// Section End - General and relative topics (JavaScript 1.0)\r
+\r
+/// Section Begin  - Popup (JavaScript 1.0)\r
+//Begin to support previous popup functions\r
+\r
+//variables used to isolate the browser type\r
+var gBsStyVisShow      = null;\r
+var gBsStyVisHide      = null;\r
+var gBsClientWidth     = 640;\r
+var gBsClientHeight = 480;\r
+\r
+// here is the varible for judge popup windows size. these parameter is for IE5.0, it may need adjust for others.\r
+var gBRateH_W          = 0.618; // 1.618 Golden cut.\r
+var gBMaxXOfParent     = 0.8; \r
+var gBMaxYOfParent     = 0.8;\r
+var gBscrollHeight   = 16;\r
+var gBscrollWidth   =  16;\r
+var gBpermitXDelta     = 3;\r
+var gBpermitYDelta     = 3;\r
+\r
+\r
+var arrayPopupURL = new Array();\r
+var arrayAbsPopupURL = new Array();\r
+\r
+var arrayDirty = new Array();\r
+\r
+function setAbsPopupURL(nIndex, strURL)\r
+{\r
+       arrayAbsPopupURL[nIndex] = strURL;\r
+}\r
+\r
+function getAbsPopupURL(nIndex)\r
+{\r
+       if (nIndex == -1 || arrayAbsPopupURL.length <= nIndex) return null;\r
+       else \r
+               return arrayAbsPopupURL[nIndex];\r
+}\r
+\r
+function getPopupURL(nIndex)\r
+{\r
+       if (nIndex == -1 || arrayPopupURL.length <= nIndex) return null;\r
+       else \r
+               return arrayPopupURL[nIndex];\r
+}\r
+\r
+function getPopupID(nIndex)\r
+{\r
+       return gstrPopupID + nIndex;\r
+}\r
+\r
+function getPopupShadowID(nIndex)\r
+{\r
+       return gstrPopupShadowID + nIndex;\r
+}\r
+\r
+function getPopupTopicID(nIndex)\r
+{\r
+       return gstrPopupTopicID + nIndex;\r
+}\r
+\r
+function getPopupIFrameID(nIndex)\r
+{\r
+       return gstrPopupIFrameID + nIndex;\r
+}\r
+\r
+function getPopupIFrameName(nIndex)\r
+{\r
+       return gstrPopupIFrameName + nIndex;\r
+}\r
+\r
+\r
+function getPopupTopicStyle(nIndex)\r
+{\r
+       return getElement(getPopupTopicID(nIndex)).style;\r
+}\r
+\r
+function getPopupShadowStyle(nIndex)\r
+{\r
+       return getElement(getPopupShadowID(nIndex)).style;\r
+}\r
+\r
+function getPopupIFrame(nIndex)\r
+{\r
+       if (gbBsNS6)\r
+               return eval("window.frames['" + getPopupIFrameName(nIndex) + "']");\r
+       else\r
+               return eval("document.frames['" + getPopupIFrameName(nIndex) + "']");\r
+}\r
+\r
+function getPopupDivStyle(nIndex)\r
+{\r
+       return getElement(getPopupID(nIndex)).style;\r
+}\r
+\r
+function getPopupIFrameStyle(nIndex)\r
+{\r
+       return getElement(getPopupIFrameID(nIndex)).style;\r
+}\r
+\r
+\r
+function findDiv(strURL)\r
+{\r
+       for (var i = 0; i < arrayPopupURL.length; i ++ ) {\r
+               if (arrayPopupURL[i] == strURL) {\r
+                       return i;\r
+               }\r
+       }\r
+       return -1;\r
+}\r
+\r
+var gnToken = -1;\r
+function takeToken()\r
+{\r
+       gnToken ++;\r
+       if (gnToken > 10000) gnToken = 0;\r
+       return gnToken;\r
+}\r
+\r
+function IsValidToken(nToken)\r
+{\r
+       return (gnToken == nToken);\r
+}\r
+\r
+function addDiv(strURL)\r
+{\r
+       for (var i = 0; i < arrayPopupURL.length; i ++) {\r
+               if (arrayPopupURL[i] == null) {\r
+                       arrayPopupURL[i] = strURL;\r
+                       return i;\r
+               }\r
+       }       \r
+       arrayPopupURL[i] = strURL;\r
+       arrayDirty[i] = true;\r
+       return i;\r
+}\r
+\r
+function setDirty()\r
+{\r
+       for (var i = 0; i < arrayPopupURL.length; i ++ )\r
+               arrayDirty[i] = true;\r
+}\r
+\r
+function IsDirty(nIndex)\r
+{\r
+       if (nIndex == -1)\r
+               return true;\r
+       else \r
+               if (arrayDirty.length > nIndex) \r
+                       return arrayDirty[nIndex];\r
+               else\r
+                       return true;\r
+}\r
+\r
+function hideAll()\r
+{\r
+       for (var i = 0; i < arrayPopupURL.length; i ++ )\r
+       {\r
+               getPopupDivStyle(i).visibility = gBsStyVisHide;\r
+               getPopupIFrameStyle(i).visibility = gBsStyVisHide;\r
+       }\r
+}\r
+\r
+function getCurrentPopupIFrame()\r
+{\r
+       for (var i = 0; i < arrayPopupURL.length; i ++)\r
+               if (getPopupDivStyle(i).visibility == gBsStyVisShow)\r
+                       return getPopupIFrame(i);\r
+       return null;\r
+}\r
+\r
+function setClear(nIndex)\r
+{\r
+       if (nIndex != -1)\r
+               arrayDirty[nIndex] = false;\r
+}\r
+\r
+function _BSSCCreatePopupDiv(strURL)\r
+{\r
+       var nIndex = findDiv(strURL);\r
+       if (nIndex == -1 ) {\r
+               nIndex = addDiv(strURL);\r
+               BsPopup_CreateDiv(nIndex);\r
+       }\r
+       else {\r
+               if (IsDirty(nIndex)) {\r
+                       if("object" == typeof(getPopupIFrame(nIndex).document))\r
+                               getPopupIFrame(nIndex).document.location.href = strURL;\r
+               }\r
+       }\r
+       return nIndex;\r
+}\r
+\r
+//Here is the browser type \r
+function _BSPSGetBrowserInfo()\r
+{\r
+       if (gbBsNS4&&!gbBsNS6)\r
+       {\r
+               gBsStyVisShow   = "show";\r
+               gBsStyVisHide   = "hide";\r
+       }\r
+       else\r
+       {\r
+               gBsStyVisShow   = "visible";\r
+               gBsStyVisHide   = "hidden";\r
+       }\r
+}\r
+\r
+_BSPSGetBrowserInfo();\r
+\r
+//Get client size info\r
+function _BSPSGetClientSize()\r
+{\r
+       if (gbBsNS4||gbBsKonqueror3||gbBsSafari)\r
+       {\r
+               gBsClientWidth  = innerWidth;\r
+               gBsClientHeight = innerHeight;\r
+       }\r
+       else if (gbBsIE4 || gbBsOpera7)\r
+       {\r
+               gBsClientWidth  = document.body.clientWidth;\r
+               gBsClientHeight = document.body.clientHeight;\r
+       }\r
+}\r
+\r
+var gstrPopupID = 'BSSCPopup';\r
+var gstrPopupShadowID = 'BSSCPopupShadow';\r
+var gstrPopupTopicID = 'BSSCPopupTopic';\r
+var gstrPopupIFrameID = 'BSSCPopupIFrame';\r
+var gstrPopupIFrameName = 'BSSCPopupIFrameName';\r
+\r
+var gstrPopupSecondWindowName = 'BSSCPopup';\r
+\r
+var gPopupWindow = null;\r
+var gnPopupClickX = 0;\r
+var gnPopupClickY = 0;\r
+\r
+var gnPopupScreenClickX = 0;\r
+var gnPopupScreenClickY = 0;\r
+\r
+var gbPopupTimeoutExpired = false;\r
+\r
+function DHTMLPopupSupport()\r
+{\r
+       if (((gbBsIE4) && (!gbBsMac))||gbBsOpera7|| gbBsNS7) {\r
+               return true;\r
+       }\r
+       return false;\r
+}\r
+\r
+function BSSCPopup_IsPopup()\r
+{\r
+       if (DHTMLPopupSupport() && (this.name.indexOf(gstrPopupIFrameName) != -1)) {\r
+               return true;\r
+       } else if ((gbBsNS4 || gbBsIE4 || gbBsOpera7) && (this.name.indexOf(gstrPopupID) != -1)) {\r
+               return true;\r
+       } else {\r
+               return false;\r
+       }\r
+}\r
+\r
+// If there is a hyperlink in a popup window, display the hyperlink in\r
+// the original window. (bsscright)\r
+if (BSSCPopup_IsPopup() && !gbBsIE4 && !gbBsOpera7) {\r
+       document.write("<base target=\"bsscright\">");\r
+}\r
+\r
+// Local functions.\r
+function BsPopup_CreateDiv(nIndex)\r
+{\r
+       if(!DHTMLPopupSupport())\r
+               return;\r
+       // DO NOT SET Width and height for the div, otherwize it will make IE4 popup do not work when view the topic alone.\r
+       var strPopupDiv = "<DIV ID='" + getPopupID(nIndex) + "' STYLE='position:absolute; top:-100; left:0; z-index:600; visibility:hidden;'>";\r
+       strPopupDiv += "<DIV ID='" + getPopupShadowID(nIndex) + "' STYLE=\"position:absolute;top:0; left:0;  background-color:#C0C0C0;\"></DIV>";\r
+       strPopupDiv += "<DIV ID='" + getPopupTopicID(nIndex) + "' STYLE=\"position:absolute;top:0; left:0;  background-color:#FFFFFF;border:1px #000000 outset;\">";\r
+       strPopupDiv += "<IFRAME title=\"Popup Window\" ID='" + getPopupIFrameID(nIndex) + "' name='" + getPopupIFrameName(nIndex) + "' src = '" + getPopupURL(nIndex) + "' frameborder=0 scrolling=auto></IFRAME>";\r
+       strPopupDiv += "</DIV></DIV>";\r
+\r
+       var objBody = getElementsByTag(document, "BODY")[0];\r
+       if( typeof(objBody) != "object" )\r
+               return;\r
+\r
+       insertAdjacentHTML(objBody, "beforeEnd", strPopupDiv);\r
+}\r
+\r
+function handleLoadNS()\r
+{\r
+       if (this.id)\r
+       {\r
+               var nIndex = parseInt(this.id.substring(gstrPopupIFrameID.length));\r
+               BSSCPopup_PostWork(nIndex);\r
+       }\r
+}\r
+\r
+function BSSCPopup_PostWork(nIndex)\r
+{\r
+       getPopupDivStyle(nIndex).visibility = gBsStyVisShow;\r
+       getPopupIFrameStyle(nIndex).visibility =gBsStyVisShow;\r
+\r
+       setClear(nIndex);\r
+       window.gbPopupTimeoutExpired = true;\r
+\r
+       BSSCPopup_ChangeTargettoParent(getPopupIFrame(nIndex).document);\r
+       if (gbBsNS6)\r
+               getPopupIFrame(nIndex).document.body.addEventListener("click",BSSCPopupClicked,false);\r
+       else\r
+               getPopupIFrame(nIndex).document.body.onclick = BSSCPopupClicked;\r
+\r
+       if (!gbOrignalOnMouseDown && document.onmousedown)\r
+               gbOrignalOnMouseDown = document.onmousedown;\r
+\r
+       if (gbBsNS6)\r
+               document.addEventListener("mousedown", BSSCPopupParentClicked,false);\r
+       else\r
+               document.onmousedown = BSSCPopupParentClicked;\r
+}\r
+\r
+function BSSCPopup_Timeout(nIndex, nToken)\r
+{\r
+    if (!IsValidToken(nToken)) return;\r
+\r
+       if (gbBsNS6||((getPopupIFrame(nIndex).document.readyState == "complete") &&\r
+               (getPopupIFrame(nIndex).document.body != null))) {\r
+               BSSCPopup_PostWork(nIndex);\r
+       } else {\r
+               setTimeout("BSSCPopup_Timeout(" + nIndex + "," + nToken + ")", 100);\r
+       }\r
+}\r
+\r
+// VH 08/10/00 \r
+// do not change target to parent if the href is using javascript\r
+function BSSCPopup_ChangeTargettoParent(tagsObject)\r
+{\r
+       var collA = getElementsByTag(tagsObject, "A");\r
+       BSSCPopup_ChangeTargettoParent2(collA);\r
+\r
+       var collIMG = getElementsByTag(tagsObject,"IMG");\r
+       BSSCPopup_ChangeTargettoParent2(collIMG);\r
+}\r
+\r
+function BSSCPopup_ChangeTargettoParent2(colls)\r
+{\r
+       if (colls != null)  {\r
+               for (var j = 0; j < colls.length; j ++ )\r
+               {\r
+                       var strtemp = colls[j].href;\r
+                       if (strtemp)\r
+                       {\r
+                               strtemp = strtemp.toLowerCase();\r
+                               if (strtemp.indexOf("javascript:") == -1)\r
+                               if (colls[j].target == "")\r
+                                       colls[j].target = "_parent";\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function BSPSPopupTopicWinHelp(strURL)\r
+{\r
+       _BSSCPopup(strURL);\r
+       return;\r
+}\r
+\r
+function _BSSCPopup(strURL, width, height)\r
+{\r
+       var cuswidth = 0;\r
+       var cusheight = 0;\r
+       if ("undefined" != typeof(width) && "undefined" != typeof(height)) {\r
+               cuswidth = width;\r
+               cusheight= height;\r
+       }\r
+       \r
+       if (DHTMLPopupSupport()) {\r
+               var nToken = takeToken(); // take  token first.\r
+               var nIndex = _BSSCCreatePopupDiv(strURL);\r
+               window.gbPopupTimeoutExpired = false;\r
+               var ntWidth = gBsClientWidth;\r
+               var ntHeight = gBsClientHeight;\r
+               _BSPSGetClientSize();\r
+               if (ntWidth != gBsClientWidth || ntHeight != gBsClientHeight) {\r
+                       setDirty();\r
+               }\r
+\r
+               if (IsDirty(nIndex)) {\r
+                       if (gbBsMac) {\r
+                               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight  +")", 400);\r
+                       } else {\r
+                               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 100);\r
+                       }\r
+               }\r
+               else {\r
+                       MoveDivAndShow(nIndex ,nToken, cuswidth, cusheight);\r
+               }\r
+       } else {\r
+               _BSSCPopup2(strURL, cuswidth, cusheight);\r
+       }\r
+       return;\r
+}\r
+\r
+if (gbBsIE55)\r
+{\r
+       var ehlpdhtm_fOldBefureUnload = window.onbeforeunload;\r
+       var gnBsUnload=0;\r
+       window.onbeforeunload = window_BUnload;\r
+}\r
+       \r
+function window_BUnload()\r
+{\r
+       gnBsUnload++;\r
+       if (gnBsUnload>1)\r
+               return;\r
+       for (var i = 0; i < arrayPopupURL.length; i ++)\r
+               removeThis(document.all(getPopupID(i)));\r
+       arrayPopupURL.length = 0;       \r
+       if (ehlpdhtm_fOldBefureUnload)\r
+               ehlpdhtm_fOldBefureUnload();\r
+}\r
+\r
+function _BSSCPopup2(strURL, width, height)\r
+{\r
+       if (gbBsOpera6&&gbBsMac)\r
+       {\r
+               var wmTemp = window.open(document.location.href, gstrPopupSecondWindowName);\r
+               wmTemp.close();\r
+               setTimeout("_BSSCPopup3(\""+strURL+"\","+width+","+height+");",100);\r
+       }\r
+       else\r
+               _BSSCPopup3(strURL, width, height);\r
+}\r
+               \r
+function _BSSCPopup3(strURL, width, height)\r
+{\r
+       if (window.name == gstrPopupSecondWindowName) {\r
+               window.location = strURL;\r
+       } else {\r
+               if (!gbBsMac || !gbBsNS4) {\r
+                       BSSCHidePopupWindow();\r
+               }\r
+               var nX = 0;\r
+               var nY = 0;\r
+               var nHeight = 300;\r
+               var nWidth = 400;\r
+               if (width > 0 && height > 0) {\r
+                       nHeight = height;\r
+                       nWidth = width;\r
+               }\r
+               _BSPSGetClientSize();\r
+\r
+               nX = window.gnPopupScreenClickX;\r
+               nY = window.gnPopupScreenClickY;\r
+\r
+               if (nY + nHeight + 40 > screen.availHeight) {\r
+                       nY = screen.availHeight - nHeight - 40;\r
+               }\r
+               if (nX + nWidth + 40 > screen.availWidth) {\r
+                       nX = screen.availWidth - nWidth - 40;\r
+               }\r
+\r
+               // Launch a separate window\r
+               var strParam="titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes";\r
+               if (gbBsNS) {\r
+                       if (gbBsNS6) {\r
+                               strParam += ",Height=" + nHeight + ",Width=" + nWidth;\r
+                               strParam += ",screenX=" + nX + ",screenY=" + nY;\r
+                               strParam += ",dependent=yes";\r
+                       }\r
+                       else {\r
+                               strParam += ",OuterHeight=" + nHeight + ",OuterWidth=" + nWidth;\r
+                               strParam += ",screenX=" + nX + ",screenY=" + nY;\r
+                               strParam += ",dependent=yes";\r
+                       }\r
+               }\r
+               else {\r
+                       strParam += ",height=" + nHeight + ",width=" + nWidth;\r
+                       strParam += ",left=" + nX + ",top=" + nY;\r
+               }\r
+               if (gbBsSafari)\r
+               {\r
+                       if (window.gPopupWindow)\r
+                               window.gPopupWindow.close();            \r
+                       window.gPopupWindow = window.open(strURL, "", strParam);\r
+                       window.gPopupWindow.name = gstrPopupSecondWindowName;\r
+                       window.gPopupWindow.moveTo(nX, nY);\r
+                       widnow.gPopupWindow.document.location.reload();\r
+               }       \r
+               else\r
+               {\r
+                       var wmTemp=null;\r
+                       if (gbBsKonqueror3)\r
+                       {\r
+                               if (window.gPopupWindow)\r
+                                       window.gPopupWindow.close();\r
+                       }\r
+                       if (gbBsOpera&&gbBsMac)\r
+                       {\r
+                               wmTemp= window.open(document.location.href, "Temp", strParam);\r
+                       }\r
+                       window.gPopupWindow = window.open(strURL, gstrPopupSecondWindowName, strParam);\r
+                       if (!gbBsIE)\r
+                               window.gPopupWindow.focus();\r
+                               \r
+                       if (wmTemp)\r
+                               wmTemp.close();\r
+               }\r
+\r
+               if (gbBsNS4)\r
+                       setEventHandle();\r
+               else if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3)\r
+                       setTimeout("setPopupFocus();", 100);\r
+       }\r
+       return;\r
+}\r
+\r
+function setEventHandle()\r
+{\r
+       window.gPopupWindow.captureEvents(Event.CLICK | Event.BLUR);\r
+       window.gPopupWindow.onclick = NonIEPopup_HandleClick;\r
+       window.gPopupWindow.onblur = NonIEPopup_HandleBlur;\r
+}\r
+\r
+function setPopupFocus()\r
+{\r
+       window.gPopupWindow.focus();\r
+}\r
+\r
+function NonIEPopup_HandleBlur(e)\r
+{\r
+       window.gPopupWindow.focus();\r
+}\r
+\r
+function NonIEPopup_HandleClick(e)\r
+{\r
+       // Because navigator will give the event to the handler before the hyperlink, let's\r
+       // first route the event to see if we are clicking on a Popup menu in a popup.\r
+       document.routeEvent(e);\r
+\r
+       // If a popup menu is active then don't do anything with the click\r
+       if (window.gPopupWindow.gbInPopupMenu) {\r
+               window.gPopupWindow.captureEvents(Event.CLICK);\r
+               window.gPopupWindow.onclick = NonIEPopup_HandleClick;\r
+               return false;\r
+       }\r
+\r
+       // Close the popup window\r
+       if(e.target.href)\r
+       {\r
+               if(e.target.href.indexOf("javascript:")==-1) \r
+               {\r
+                       if (e.target.target=="")\r
+                               window.location.href = e.target.href;\r
+                       else\r
+                               window.open(e.target.href, e.target.target);\r
+                       this.close();\r
+               }\r
+       } \r
+       else\r
+               this.close();\r
+       return false;\r
+}\r
+\r
+function BSSCPopup_AfterLoad(nIndex, nToken, cuswidth, cusheight)\r
+{      \r
+       if (!window.getPopupIFrame(nIndex).document) {\r
+               _BSSCPopup2(getPopupURL(nIndex), cuswidth, cusheight);\r
+               return;\r
+       }\r
+       \r
+    if (!IsValidToken(nToken)) return;\r
+\r
+       if (gbBsNS6)\r
+       {\r
+               setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url.\r
+               BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight);\r
+               return;\r
+       }\r
+       \r
+       if ((window.getPopupIFrame(nIndex).document.readyState == "complete") &&\r
+               (window.getPopupIFrame(nIndex).document.body != null)) {\r
+                       if (window.getPopupIFrame(nIndex).document.location.href.indexOf("about:blank") != -1) { // add this check. IE will use about:blank" as the default vaule for Iframe.\r
+                               window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex);\r
+                               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
+                       }\r
+                       else\r
+                               {\r
+                                       setAbsPopupURL(nIndex, window.getPopupIFrame(nIndex).document.location.href); // change URL to abs url.\r
+                                       BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight);\r
+                               }\r
+       } else {\r
+               setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
+       }\r
+}\r
+\r
+function BSSCPopup_ResizeAfterLoad(nIndex, nToken, cuswidth, cusheight)\r
+{\r
+       if (window.gbPopupTimeoutExpired) return;\r
+\r
+    if (!IsValidToken(nToken)) return;\r
+\r
+       getPopupDivStyle(nIndex).visibility = gBsStyVisHide;\r
+       getPopupIFrameStyle(nIndex).visibility = gBsStyVisHide;\r
+\r
+       // Determine the width and height for the window\r
+       _BSPSGetClientSize();\r
+\r
+       var size = new BSSCSize(0, 0);\r
+\r
+       if (cuswidth <= 0 || cusheight <= 0)\r
+               BSSCGetContentSize(window.getPopupIFrame(nIndex), size);\r
+       else {\r
+               size.x = cuswidth;\r
+               size.y = cusheight;\r
+       }\r
+\r
+       // Determine the width and height for the window\r
+       var nWidth = size.x;\r
+       var nHeight = size.y;\r
+\r
+       // for small popup size, we should allow any size.\r
+       // The popup size should be ok if bigger than 0\r
+       if (nWidth < 0 || nHeight < 0) return;  // there must be something terribly wrong.              \r
+\r
+       getPopupDivStyle(nIndex).width = nWidth;\r
+       getPopupDivStyle(nIndex).height = nHeight;\r
+\r
+       getPopupShadowStyle(nIndex).width = nWidth;\r
+       getPopupShadowStyle(nIndex).height = nHeight;\r
+       getPopupTopicStyle(nIndex).width = nWidth;\r
+       getPopupTopicStyle(nIndex).height = nHeight;\r
+       if (gbBsIE55)\r
+       {\r
+               getPopupShadowStyle(nIndex).width = nWidth + 2;\r
+               getPopupShadowStyle(nIndex).height = nHeight + 2;\r
+               getPopupTopicStyle(nIndex).width = nWidth + 2;\r
+               getPopupTopicStyle(nIndex).height = nHeight + 2;\r
+       }\r
+\r
+       getPopupIFrameStyle(nIndex).width = nWidth;\r
+       getPopupIFrameStyle(nIndex).height = nHeight;\r
+       if (gbBsIE55 || gbBsNS6)\r
+       {\r
+               getPopupIFrameStyle(nIndex).top = 0;\r
+               getPopupIFrameStyle(nIndex).left = 0;\r
+       }\r
+       \r
+       var strURL = getPopupURL(nIndex);\r
+       if (strURL.indexOf("#") != -1&&gbBsNS6)\r
+               getPopupIFrame(nIndex).location.reload();\r
+       else if (strURL.indexOf("#") != -1||gbBsNS6)\r
+               getPopupIFrame(nIndex).location.href = strURL;  // reload again, this will fix the bookmark misunderstand in IE5.\r
+               \r
+       MoveDivAndShow(nIndex, nToken, cuswidth, cusheight);\r
+}\r
+\r
+function getScrollLeft()\r
+{\r
+       if (document.body.scrollLeft)\r
+               return document.body.scrollLeft;\r
+       else if (window.pageXOffset)\r
+               return window.pageXOffset;\r
+       else\r
+               return 0;\r
+}\r
+\r
+function getScrollTop()\r
+{\r
+       if (document.body.scrollTop)\r
+               return document.body.scrollTop;\r
+       else if (window.pageYOffset)\r
+               return window.pageYOffset;\r
+       else\r
+               return 0;\r
+}\r
+\r
+\r
+function MoveDivAndShow(nIndex, nToken, cuswidth, cusheight)\r
+{\r
+       if (window.getPopupIFrame(nIndex).document.location.href != getAbsPopupURL(nIndex)) { // if redirect, reload again.\r
+                       window.getPopupIFrame(nIndex).document.location = getPopupURL(nIndex);\r
+                       setTimeout("BSSCPopup_AfterLoad(" + nIndex + "," + nToken + "," + cuswidth + "," + cusheight + ")", 200);\r
+                       return;\r
+       }\r
+\r
+       // Determine the position of the window\r
+       var nClickX = window.gnPopupClickX;\r
+       var nClickY = window.gnPopupClickY;\r
+       var nTop = 0;\r
+       var nLeft = 0;\r
+\r
+       var nWidth = parseInt(getPopupDivStyle(nIndex).width);\r
+       var nHeight = parseInt(getPopupDivStyle(nIndex).height);\r
+\r
+       if (nClickY + nHeight + 20 < gBsClientHeight + getScrollTop()) {\r
+               nTop = nClickY + 10;\r
+       } else {\r
+               nTop = (getScrollTop() + gBsClientHeight) - nHeight - 20;\r
+       }\r
+       if (nClickX + nWidth < gBsClientWidth + getScrollLeft()) {\r
+               nLeft = nClickX;\r
+       } else {\r
+               nLeft = (getScrollLeft() + gBsClientWidth) - nWidth - 8;\r
+       }\r
+\r
+       if (nTop < getScrollTop()) nTop  = getScrollTop() + 1;\r
+       if (nLeft< getScrollLeft())  nLeft = getScrollLeft() + 1;\r
+\r
+       getPopupDivStyle(nIndex).left = nLeft;\r
+       getPopupDivStyle(nIndex).top = nTop;\r
+\r
+       // Set the location of the background blocks\r
+       getPopupShadowStyle(nIndex).left = 6;\r
+       getPopupShadowStyle(nIndex).top = 6;\r
+       if (gbBsIE55)\r
+       {\r
+               getPopupShadowStyle(nIndex).left = 4;\r
+               getPopupShadowStyle(nIndex).top = 4;\r
+       }\r
+\r
+       if (gbBsMac&&gbBsIE4) {\r
+               // Total hack on the iMac to get the IFrame to position properly\r
+               getPopupIFrameStyle(nIndex).pixelLeft = 100;\r
+               getPopupIFrameStyle(nIndex).pixelLeft = 0;\r
+               // Explicitly call BSSCOnLoad because the Mac doesn't seem to do it\r
+               getPopupIFrame(nIndex).window.BSSCOnLoad();\r
+       }\r
+\r
+       if (gbBsNS6&&IsDirty(nIndex))\r
+               getElement(getPopupIFrameID(nIndex)).addEventListener("load", handleLoadNS, false);\r
+       else\r
+               BSSCPopup_Timeout(nIndex , nToken );\r
+       return;\r
+}\r
+\r
+function       BSSCSize(x, y)\r
+{\r
+       this.x = x;\r
+       this.y = y;\r
+}\r
+\r
+function BSSCGetContentSize(thisWindow, size)\r
+{\r
+       if (!gbBsIE4 && !gbBsOpera7 && !gbBsNS4)\r
+               return;\r
+\r
+       if ((gbBsMac&&gbBsIE4)||gbBsNS4||gbBsOpera7) {\r
+               size.x = 320;\r
+               size.y = 180;\r
+               return;\r
+       }\r
+\r
+       // Resize the width until it is wide enough to handle the content\r
+       // The trick is to start wide and determine when the scrollHeight changes\r
+       // because then we know a scrollbar is necessary. We can then go back\r
+       // to the next widest size (for no scrollbar)\r
+\r
+       var ClientRate = gBsClientHeight / gBsClientWidth;\r
+\r
+       \r
+       var GoldenSize = new BSSCSize(0,0);\r
+       GoldenSize.x = gBsClientWidth * gBMaxXOfParent;\r
+       GoldenSize.y = gBsClientHeight *gBMaxYOfParent ;\r
+\r
+       if (ClientRate > gBRateH_W) {\r
+               GoldenSize.y = GoldenSize.x * gBRateH_W;\r
+       }\r
+       else {\r
+               GoldenSize.x = GoldenSize.y / gBRateH_W;\r
+       }\r
+\r
+       // Try to using parent specified max x.\r
+       var x = 0;\r
+       var maxgoldx = GoldenSize.x;\r
+       var maxx = gBsClientWidth * gBMaxXOfParent;\r
+       \r
+       // This double resize causes the document to re-render (and we need it to)\r
+       if (!gbBsIE5)\r
+               thisWindow.moveTo(10000,10000); // this is used to fix the flash on IE4.\r
+               \r
+       thisWindow.resizeTo(1, 1);\r
+       thisWindow.resizeTo(1, 1);\r
+       thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);\r
+       thisWindow.resizeTo(maxgoldx, thisWindow.document.body.scrollHeight + gBscrollHeight);\r
+               \r
+       var miny = thisWindow.document.body.scrollHeight + gBscrollHeight;\r
+       \r
+       if (miny > GoldenSize.y) // the popup does not fix in the parent wanted golden area. so try to expand itself as large as it can\r
+       {\r
+               thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight);\r
+               thisWindow.resizeTo(maxx , thisWindow.document.body.scrollHeight + gBscrollHeight);\r
+               \r
+               miny =  thisWindow.document.body.scrollHeight + gBscrollHeight;\r
+               maxy = gBsClientHeight * gBMaxYOfParent;\r
+               \r
+               if (miny > maxy) { // the popup must have a scroll, OK let it be.\r
+                       miny = maxy;\r
+                       size.x = maxx;\r
+                       size.y = maxy;\r
+                       thisWindow.document.body.scroll = 'yes'; // At this time we do want to show scroll any more. so it will looks better a little.\r
+               }\r
+               else { // popup still can fit in the parent area by someway. now we choose the same h/w rate as parent.\r
+                       size.y = miny;\r
+                       \r
+                       //  downsize from maxx , now I try to using binary divide.\r
+                       x = maxx;\r
+                       deltax = -maxx/2;\r
+                       //j = 0;\r
+                       while (true) {\r
+                               x = x + deltax;\r
+                               thisWindow.resizeTo(x, miny);\r
+                               thisWindow.resizeTo(x, miny);\r
+                               diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * ClientRate;\r
+                               if (diffy >  gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter\r
+                                       deltax = Math.abs(deltax) /2;\r
+                               else if (diffy <  -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter\r
+                                       deltax = -Math.abs(deltax) /2;\r
+                               else \r
+                                       // the y is close enough to wanted.\r
+                                       break;\r
+                               if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.\r
+                                       break;\r
+                       }\r
+                       size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;\r
+                       size.y = thisWindow.document.body.scrollHeight;// + gBscrollHeight;     \r
+                       thisWindow.document.body.scroll = 'no';\r
+               }\r
+       }\r
+       else {\r
+               if (thisWindow.document.body.scrollWidth > maxgoldx) {\r
+                       size.x = maxx; \r
+                       size.y = miny;  \r
+                       thisWindow.document.body.scroll = 'yes';\r
+               }\r
+               else {\r
+                       //  downsize from maxgoldx , now I try to using binary divide.\r
+                       x = maxgoldx;\r
+                       deltax = -maxgoldx/2;\r
+                       while (true) {\r
+                               x = x + deltax;\r
+                               thisWindow.resizeTo(x, miny);\r
+                               thisWindow.resizeTo(x, miny);\r
+                               diffy = thisWindow.document.body.scrollHeight + gBscrollHeight - x * gBRateH_W;\r
+                               if (diffy >  gBpermitYDelta ) // it is higher than wanted, so x need to be wide a little bitter\r
+                                       deltax = Math.abs(deltax) /2;\r
+                               else if (diffy <  -gBpermitYDelta) // it is shorter than wanted, so x need to be narrow a little bitter\r
+                                       deltax = -Math.abs(deltax) /2;\r
+                               else \r
+                                       // the y is close enough to wanted.\r
+                                       break;\r
+                               if (Math.abs(deltax) < gBpermitXDelta) // the next change is too slight and it can be ignore.\r
+                                       break;\r
+                       }\r
+                       size.x = thisWindow.document.body.scrollWidth; //+ gBscrollWidth;\r
+                       size.y = thisWindow.document.body.scrollHeight ;\r
+                       thisWindow.document.body.scroll = 'no'; // At this time we do not want to show scroll any more. so it will looks better a little.\r
+                       thisWindow.resizeTo(size.x, size.y);\r
+                       if (thisWindow.document.body.scrollWidth > size.x)\r
+                       {\r
+                               size.x = thisWindow.document.body.scrollWidth;\r
+                       }\r
+                       if (thisWindow.document.body.scrollHeight > size.y)\r
+                       {\r
+                               size.y = thisWindow.document.body.scrollHeight;\r
+                       }\r
+               }\r
+       }\r
+       thisWindow.resizeTo(size.x, size.y);\r
+       thisWindow.resizeTo(size.x, size.y);\r
+       return;\r
+}\r
+\r
+function BSSCPopupParentClicked()\r
+{\r
+       if (!window.gbPopupTimeoutExpired) {\r
+               return false;\r
+       }\r
+       \r
+       document.onmousedown = gbOrignalOnMouseDown;\r
+\r
+       // Simply hide the popup\r
+       hideAll();\r
+\r
+       window.gbPopupTimeoutExpired = false;\r
+\r
+       return true;\r
+}\r
+\r
+function isInsideHyperLink(obj)\r
+{\r
+       if (obj&&obj!=getParentNode(obj))\r
+       {\r
+               if (obj.tagName=="A"||obj.tagName=="IMG")\r
+                       return true;\r
+               else\r
+                       return isInsideHyperLink(getParentNode(obj));\r
+       }\r
+       else\r
+               return false;\r
+}\r
+\r
+function BSSCPopupClicked(e)\r
+{\r
+       if (!window.gbPopupTimeoutExpired) {\r
+               return false;\r
+       }\r
+\r
+       var popupIFrame = getCurrentPopupIFrame();\r
+       if (popupIFrame == null) {\r
+               return true;\r
+       }\r
+\r
+       if (gbBsIE4 && (!((popupIFrame.window.event != null) &&\r
+               (popupIFrame.window.event.srcElement != null) &&\r
+               isInsideHyperLink(popupIFrame.window.event.srcElement)))) {\r
+               document.onmousedown = gbOrignalOnMouseDown;\r
+               \r
+               // Simply hide the popup\r
+               hideAll();\r
+               window.gbPopupTimeoutExpired = false;\r
+               return true;\r
+       }\r
+       else if (gbBsNS6 && (!((e != null) &&\r
+                       (e.target!= null) && isInsideHyperLink(e.target))))\r
+       {\r
+               document.addEventListener("mousedown", gbOrignalOnMouseDown,false);\r
+               // Simply hide the popup\r
+               hideAll();\r
+               window.gbPopupTimeoutExpired = false;\r
+               return true;            \r
+       }\r
+}\r
+\r
+//trace the mouse over's position for hotspot\r
+function  BSPSPopupOnMouseOver(event)\r
+{\r
+       if (gbBsIE4 || gbBsOpera7||gbBsKonqueror3) {\r
+               window.gnPopupClickX = event.clientX + getScrollLeft();\r
+               window.gnPopupClickY = event.clientY + getScrollTop();\r
+               window.gnPopupScreenClickX = event.screenX;\r
+               window.gnPopupScreenClickY = event.screenY;\r
+       } else if (gbBsSafari) {\r
+               window.gnPopupClickX = event.clientX + getScrollLeft();\r
+               window.gnPopupClickY = event.clientY + getScrollTop();\r
+               window.gnPopupScreenClickX = event.screenX + window.screenX;\r
+               window.gnPopupScreenClickY = event.screenY + window.screenY;\r
+       } else if (gbBsNS4) {\r
+               window.gnPopupClickX = event.pageX - window.pageXOffset;\r
+               window.gnPopupClickY = event.pageY - window.pageYOffset;\r
+               window.gnPopupScreenClickX = event.screenX - window.pageXOffset;\r
+               window.gnPopupScreenClickY = event.screenY - window.pageYOffset;\r
+       }\r
+}\r
+\r
+function BSSCHidePopupWindow()\r
+{\r
+       if (window.gPopupWindow != null) {\r
+               if (gbBsNS4) {\r
+                       if ((typeof window.gPopupWindow != "undefined") && (!window.gPopupWindow.closed)) {\r
+                               window.gPopupWindow.close();\r
+                               window.gPopupWindow = null;\r
+                       }\r
+               }\r
+       }\r
+       return;\r
+}\r
+\r
+// Add the PopupOnClick to the onclick array.\r
+if (typeof(BsscRegisterOnClick) != "undefined")\r
+{\r
+       BsscRegisterOnClick(BsPopupOnClick);\r
+}\r
+//End to support previous popup functions\r
+\r
+/// Section End  - Popup (JavaScript 1.0)\r
+\r
+/// Section Begin - Embedded Stub (JavaScript 1.0)\r
+\r
+function BSSCCreatePopupDiv()\r
+{\r
+       return;\r
+}\r
+\r
+function WritePopupMenuLayer()\r
+{\r
+       if (BsscHasExtJs()) {_WritePopupMenuLayer();}\r
+}\r
+\r
+function BSSCPopup(strURL, width, height)\r
+{\r
+       var re = new RegExp("'", 'g');\r
+       strURL = strURL.replace(re, "%27");\r
+\r
+       if (BsscHasExtJs())     { \r
+               _BSSCPopup(strURL, width, height);\r
+       }else{\r
+               //Create a temporary window first to ensure the real popup comes up on top\r
+               var wndTemp = null;\r
+               if (!gbBsNS3) {\r
+                       wndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");\r
+               }\r
+               // Create the real popup window\r
+               var wndPopup = window.open(strURL, "BSSCPopup", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=300,width=400");\r
+               // Close the temporary\r
+               if (!gbBsNS3) {\r
+                       wndTemp.close();\r
+               } else {\r
+                       wndPopup.focus();\r
+               }\r
+       }\r
+}\r
+\r
+var gbWndTemp = null, gbWndPopupLinks = null;\r
+var gbstrParaTotal = "";\r
+\r
+function PopupMenu_Invoke()\r
+{\r
+       if (typeof(wfRelatedTopic) == 'function' && typeof(IsFlashSupported) == 'function')\r
+       {\r
+               if (Number(gsSkinVersion) > 2 && IsFlashSupported())\r
+               {\r
+                       return wfRelatedTopic(PopupMenu_Invoke.arguments);\r
+               }\r
+       }\r
+       if (BsscHasExtJs()) {\r
+               return _PopupMenu_Invoke(PopupMenu_Invoke.arguments);\r
+       }\r
+       if (gbBsNS3Before || gbBsIE3Before )    {\r
+               var argLen      = PopupMenu_Invoke.arguments.length;\r
+               if (argLen < 5) {\r
+                       window.document.location.href = PopupMenu_Invoke.arguments[3];\r
+                       return false;\r
+               }\r
+               gbWndTemp = null;\r
+               gbWndPopupLinks = null;\r
+               gbstrParaTotal = "";\r
+               for (var i = 0; i < (argLen - 2) / 2; i++) {\r
+                       var strParaLine = "";\r
+                       if (gbBsNS2){\r
+                               strParaLine += "<a href=\"";\r
+                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];\r
+                               strParaLine += "\">"\r
+                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 2];\r
+                               strParaLine += "</a>";\r
+                       } else {\r
+                               strParaLine += "<a href=\"javascript:";\r
+                               strParaLine += "gotoUrl(\'";\r
+                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 3];\r
+                               strParaLine += "\');\"";\r
+                               if (PopupMenu_Invoke.arguments[1] != '') {\r
+                                       strParaLine += " TARGET='" + PopupMenu_Invoke.arguments[1] + "'";\r
+                               }\r
+                               strParaLine += ">";\r
+                               strParaLine += PopupMenu_Invoke.arguments[2 * i + 2];\r
+                               strParaLine += "</a>";\r
+                       }\r
+                       strParaLine += "<br>";\r
+                       gbstrParaTotal += strParaLine;\r
+               }\r
+               var nHeight = argLen * 15;\r
+               var nWidth = 400;\r
+               var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=auto";\r
+               strParam += ",height=" + nHeight + ",width=200,resizable";\r
+               \r
+               //Create a temporary window first to ensure the real popup comes up on top\r
+               //var wndTemp = null;\r
+               if (!gbBsNS3) {\r
+                       gbWndTemp = window.open("", "temp", "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=yes,scrollbars=yes,height=3,width=4");\r
+               } \r
+               gbWndPopupLinks = window.open("", "popuplinks", strParam);\r
+\r
+               setTimeout("Wait_PopupMenuReady()", 100);\r
+       }\r
+       return true;\r
+}\r
+\r
+function Wait_PopupMenuReady() \r
+{\r
+       if (gbWndPopupLinks != null && "object" == typeof(gbWndPopupLinks.document)) {\r
+               PopupMenu_InvokeReady();\r
+       }\r
+       else \r
+               setTimeout("Wait_PopupMenuReady()", 100);\r
+}\r
+\r
+function PopupMenu_InvokeReady()\r
+{\r
+       if (gbWndPopupLinks != null) {\r
+               gbWndPopupLinks.document.open("text/html");\r
+               gbWndPopupLinks.document.write("<html><head>");\r
+               if (gbBsNS2) {\r
+                       gbWndPopupLinks.document.write("<base href=\"" + location +"\">");\r
+               } else {\r
+                       //YJ: IE301,302 and NS3.x works fine\r
+                       gbWndPopupLinks.document.write("<");\r
+                       gbWndPopupLinks.document.write("script>");\r
+                       gbWndPopupLinks.document.write("function gotoUrl(aUrl) {opener.window.location=aUrl; close();}");\r
+                       gbWndPopupLinks.document.write("<");\r
+                       gbWndPopupLinks.document.write("/script>");\r
+               }\r
+               gbWndPopupLinks.document.write("</head><body onBlur=\'self.focus();\'>");\r
+               gbWndPopupLinks.document.write(gbstrParaTotal);\r
+               gbWndPopupLinks.document.write("</body></html>");\r
+               gbWndPopupLinks.document.close();\r
+\r
+               // Close the temporary\r
+               if (!gbBsNS3 && gbWndTemp != null) {\r
+                       gbWndTemp.close();\r
+               }else {\r
+                       gbWndPopupLinks.focus();\r
+               }\r
+\r
+               return true;\r
+       }\r
+       return false;\r
+}\r
+\r
+/// Section End - Embedded Stub (JavaScript 1.0)\r
+\r
+//// Segment End -- (JavaScript 1.0)\r
+\r
+//// Segment Begin -- (JavaScript 1.2)\r
+/// Section Begin  - kadov DHTM (JavaScript 1.2)\r
+\r
+//Begin to support extended and dropdown text effects.\r
+function kadovIsParagraph(el)\r
+{\r
+       return( el.tagName == "P" || el.tagName.indexOf("H") == 0 ) ? true : false;\r
+}\r
+\r
+function kadovInitEachChild(el)\r
+{      \r
+       for(var i=0; i<getChildNodes(el).length; i++)\r
+       {\r
+               var child = getChildNodes(el)[i];\r
+               if( child.tagName == "SCRIPT" || child.tagName == "!" )\r
+                       continue;\r
+\r
+               if( child.id != "" )\r
+               {\r
+                       // to wipe out the onload effects\r
+                       if (gbBsIE4&&!gbBsMac)\r
+                       {\r
+                               var onLoadEffect = child.style.getAttribute( "x-on-pageload" );\r
+                               if( (onLoadEffect != null) && (onLoadEffect > "") )\r
+                                       child.style.setAttribute( "x-on-pageload", "" );\r
+                       }\r
+                       \r
+                       var href = child.getAttribute("href")\r
+                       if( href != null && href > "" && href.indexOf( "BSSCPopup" ) >= 0 )\r
+                               kadovFilePopupInit(child.id); // Init for Popup\r
+                       else if( child.className == "dropspot" || child.className == "expandspot" || \r
+                                        child.className == "glossterm" )\r
+                               kadovTextPopupInit(child.id);// Init for Expanding/Glossary or DropDown text\r
+                       else if( child.className == "trigger")\r
+                               kadovInitTrigger(child.id);// Init for Trigger\r
+                       else\r
+                       {\r
+                               kadovInitEffects(child.id);// Init for DHTML effects\r
+                               CEngine.SetOneTargetInitialState( child.id );\r
+                       }\r
+               }\r
+               \r
+               if( (child.tagName == "IMG") && (child.getAttribute("dynsrc") > "") )\r
+                       child.start = "mouseover";// to start a AVI file. fileopen doesn't work\r
+\r
+               kadovInitEachChild(child);\r
+       }\r
+}\r
+\r
+function kadovRetrieveTextInner(el)\r
+{      \r
+       var x = "";\r
+       if( (!el) || (el.tagName == "!") || (el.tagName == "SCRIPT" ))\r
+               return x;\r
+\r
+       if( kadovIsParagraph(el) )\r
+       {\r
+               var strNewID = " ";\r
+               if( el.id != "" )\r
+                       strNewID += "id=" + el.id + "_NewSpan ";\r
+               x = "<span" + strNewID + "style='" + el.style.cssText + "'>" + el.innerHTML + "</span>";\r
+       }\r
+       else\r
+       {\r
+               for(var i=0; i<getChildNodes(el).length; i++)\r
+                       x += kadovRetrieveTextInner( getChildNodes(el)[i] );\r
+       }\r
+       return x;\r
+}\r
+\r
+function kadovRetrieveCleanHTML( strRawHTML, strTagOpen, strTagClose, nDistance )\r
+{      \r
+       var nTagOpen = strRawHTML.indexOf( strTagOpen, 0 );\r
+       if( nTagOpen < 0 )\r
+               return strRawHTML;\r
+\r
+       var nTagClose = strRawHTML.indexOf( strTagClose, nTagOpen);\r
+       if( nTagClose < nTagOpen )\r
+               return strRawHTML;\r
+               \r
+       if( typeof(nDistance) == "number" && nDistance > 0 )\r
+               if( (nTagClose - nTagOpen) != nDistance )\r
+                       return strRawHTML;\r
+               \r
+       var strCleanOnce = strRawHTML.substring(0, nTagOpen) + strRawHTML.substr(nTagClose + strTagClose.length) ;\r
+       return  kadovRetrieveCleanHTML( strCleanOnce, strTagOpen, strTagClose );\r
+}\r
+\r
+function kadovAdjustObjectTag(strRawHTML, nStartPos)\r
+{// adjust object tag for related topics HTML control, because innerHTML misses out the item settings\r
+       \r
+       //Is there any DTC?\r
+       var strDTCTagOpen = '<!--Metadata type="DesignerControl" startspan';\r
+       var strDTCTagClose = '<!--Metadata type="DesignerControl" endspan-->';\r
+       var nDTCTagOpen = strRawHTML.indexOf( strDTCTagOpen, nStartPos );\r
+       if( nDTCTagOpen < 0 )\r
+               return strRawHTML;\r
+       var nDTCTagClose = strRawHTML.indexOf( strDTCTagClose, nDTCTagOpen );\r
+       if( nDTCTagClose < nDTCTagOpen)\r
+               return strRawHTML; // no Design Time Controls;\r
+               \r
+       //Is the DTC HTML Help Control?\r
+       var strRTObjTagOpen = 'classid=clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11';\r
+       var strRTObjTagClose = '</OBJECT>';\r
+       var nRTObjTagOpen = strRawHTML.indexOf( strRTObjTagOpen, nDTCTagOpen );\r
+       if( nRTObjTagOpen < nDTCTagOpen )\r
+               return strRawHTML;\r
+       var nRTObjTagClose = strRawHTML.indexOf( strRTObjTagClose, nRTObjTagOpen );\r
+       if( nRTObjTagClose < nRTObjTagOpen )\r
+               return strRawHTML; // is not a HTML help control\r
+               \r
+       // Is it a related Topics html help control?\r
+       var strRTObjLabel = '<PARAM NAME=\"Command\" VALUE=\"Related Topics';\r
+       if( strRawHTML.indexOf(strRTObjLabel, nRTObjTagOpen) < 0 )\r
+               return strRawHTML;\r
+       \r
+       // does the commented object tag contain a items parameters             \r
+       var strRTItemsOpen = '<param name="Items" value="';\r
+       var strRTItemsClose = '$$**$$" >';\r
+       var strRTItemsClose2 = '$$**$$">';\r
+\r
+       var nRTItemsOpen = strRawHTML.indexOf(strRTItemsOpen, nDTCTagOpen);\r
+       if( nRTItemsOpen < nDTCTagOpen )\r
+               return strRawHTML;\r
+       var nRTItemsClose = strRawHTML.indexOf(strRTItemsClose, nRTItemsOpen);\r
+       if (nRTItemsClose == -1)\r
+               nRTItemsClose = strRawHTML.indexOf(strRTItemsClose2, nRTItemsOpen);\r
+       if( nRTItemsClose < nRTItemsOpen )\r
+               return strRawHTML;\r
+               \r
+       // found a items string\r
+       var strItems = strRawHTML.substring( nRTItemsOpen + strRTItemsOpen.length, nRTItemsClose);\r
+       if( strItems.length < 1 )\r
+               return strRawHTML;\r
+       \r
+       // to reconstruct the item(s) param tag(s)\r
+       var strItemsArray = strItems.split('$$**$$');\r
+       if( strItemsArray.length < 1 )\r
+               return strRawHTML;\r
+       var strRunTimeItemParam = "";\r
+       for( var i = 0; i < strItemsArray.length; i++ )\r
+       {\r
+               strRunTimeItemParam += '<PARAM  NAME="Item' + (i+1);\r
+               strRunTimeItemParam += '"' + '  VALUE="';\r
+               strRunTimeItemParam += strItemsArray[i];\r
+               strRunTimeItemParam += '">';\r
+       }\r
+       \r
+       // to insert the reconstructed item params into runtime object tag\r
+       var strAdjustedHTML = strRawHTML.substring(0,nRTObjTagClose) + strRunTimeItemParam + strRawHTML.substring(nRTObjTagClose, strRawHTML.length);\r
+       return kadovAdjustObjectTag(strAdjustedHTML, nDTCTagClose + strDTCTagClose.length);\r
+}\r
+\r
+function kadovTextPopupOnLoad( el )\r
+{\r
+       if( typeof(el) == "string" )\r
+               el = getElement(el);\r
+\r
+       var src = el.getAttribute( "x-use-popup" );\r
+       var bNeedMove=true;\r
+       if(!src&&el.id)\r
+       {\r
+               for (var i=0;i<gPopupData.length;i++)\r
+                       if (gPopupData[i].el==el.id)\r
+                       {\r
+                               src=gPopupData[i].popupId;\r
+                               bNeedMove=false;\r
+                               break;\r
+                       }\r
+       }\r
+       if(!src)\r
+               src = el.style.getAttribute( "x-use-popup" );   \r
+       if (!src)       \r
+               return 0;\r
+\r
+       var name = src;\r
+       if( src.substr(0,1) == "#" ) \r
+               name = src.substr(1, src.length-1);\r
+       var srcDiv = getElement(name);\r
+       if( !srcDiv )\r
+               return 1;\r
+\r
+       if (bNeedMove)\r
+       {\r
+               var type = el.getAttribute( "x-popup-type" );\r
+               if (!type)\r
+                       type = el.style.getAttribute("x-popup-type");\r
+               if (!type)              \r
+                       return 1;               \r
+               var setup = el.getAttribute( "x-tmp-setup" );\r
+               var newId = name;\r
+               if( newId.indexOf( "_tmp") <= 0 )\r
+                       newId += "_tmp";\r
+\r
+               if( !setup)\r
+               {\r
+                       el.setAttribute( "x-tmp-setup", 1 );\r
+\r
+                       if( type == "pulldown"  )\r
+                       {\r
+                               var strAdjust = kadovAdjustObjectTag(srcDiv.innerHTML,0);\r
+                               var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
+                               strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
+                               \r
+                               //work around the bug in HH.exe that highlight the phrases when use Search tab\r
+                               //this approach is just removing the <FONT...> tag inserted by Microsoft in the runtime\r
+                               strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<FONT color=#", "\">", 52);\r
+                               \r
+                               var strStyle = " style='display:none; position:relative;";\r
+                               var newDiv = "<div class=droptext id=" + newId + strStyle + "'>" + strCleanHTML + "</div>";\r
+\r
+                               removeThis(srcDiv); // empty the original DIV tag\r
+                               var elParentPra = kadovFindParentParagraph(el);\r
+                               if( elParentPra )\r
+                                       insertAdjacentHTML(elParentPra, "afterEnd", newDiv );\r
+                       }\r
+                       else if( type == "expanding"  )\r
+                       {\r
+                               var inner = kadovRetrieveTextInner(srcDiv);\r
+                               if( inner == "" )\r
+                                       inner = srcDiv.innerHTML;\r
+                               var strAdjust = kadovAdjustObjectTag(inner,0);\r
+                               var strCleanHTML = kadovRetrieveCleanHTML(strAdjust, "<!--", "-->");\r
+                               strCleanHTML = kadovRetrieveCleanHTML(strCleanHTML, "<SCRIPT", "/SCRIPT>");\r
+                               var strClassName = (el.className == "glossterm") ? "glosstext" : "expandtext";\r
+                               var newSpan = "<span class=" + strClassName + " style='display: none;' id=" + newId + ">&nbsp;" + strCleanHTML + "</span>";\r
+                               removeThis(srcDiv); // empty the original DIV tag\r
+                               insertAdjacentHTML(el, "afterEnd", newSpan );\r
+                       }\r
+               }\r
+       }\r
+       else\r
+       {\r
+               srcDiv.style.display = "none";\r
+       }\r
+       return 0;\r
+}\r
+\r
+function getElementsByTag(obj,sTagName)\r
+{\r
+       if(obj.getElementsByTagName)\r
+               return obj.getElementsByTagName(sTagName);\r
+       else if(obj.all)\r
+               return obj.all.tags(sTagName);\r
+       return null;\r
+}\r
+\r
+function getElement(sID)\r
+{\r
+       if(document.getElementById)\r
+               return document.getElementById(sID);\r
+       else if(document.all)\r
+               return document.all(sID);\r
+       return null;\r
+}\r
+\r
+function getParentNode(obj)\r
+{\r
+       if(obj.parentNode)\r
+               return obj.parentNode;\r
+       else if(obj.parentElement)\r
+               return obj.parentElement;\r
+       return null;\r
+}\r
+\r
+function getChildNodes(obj)\r
+{\r
+       if(obj.childNodes)\r
+       {\r
+               var children = new Array();\r
+               for (var i = 0; i < obj.childNodes.length; i++)\r
+               {\r
+                       if (obj.childNodes[i].nodeType == 1)\r
+                               children[children.length] = obj.childNodes[i];\r
+               }\r
+               return children;\r
+       }\r
+       else if(obj.children)\r
+               return obj.children;\r
+       return null;    \r
+}\r
+\r
+function removeThis(obj)\r
+{\r
+       if(obj.parentNode)\r
+               obj.parentNode.removeChild(obj);\r
+       else\r
+               obj.outerHTML="";\r
+}\r
+\r
+function kadovTextPopup( el )\r
+{\r
+       if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3 )\r
+               return;\r
+\r
+       var bNeedMove=true;\r
+       \r
+       if (window.event)\r
+               window.event.cancelBubble = true;\r
+\r
+       if( typeof(el) == "string" )\r
+               el = getElement(el);\r
+\r
+       if (!el||el==window)\r
+               return;\r
+       \r
+       var src = el.getAttribute( "x-use-popup" );\r
+       if(!src&&el.id)\r
+       {\r
+               for (var i=0;i<gPopupData.length;i++)\r
+                       if (gPopupData[i].el==el.id)\r
+                       {\r
+                               src=gPopupData[i].popupId;\r
+                               bNeedMove=false;\r
+                               break;\r
+                       }\r
+       }\r
+       if(!src)\r
+               src = el.style.getAttribute( "x-use-popup" );   \r
+       if(!src)\r
+               return;\r
+               \r
+       var name = src;\r
+       if( src.substr(0,1) == "#" ) \r
+       if (bNeedMove)\r
+               name = src.substr(1, src.length-1) + "_tmp";\r
+       else\r
+               name = src.substr(1, src.length-1);\r
+\r
+       var srcDiv = getElement(name);\r
+       if( !srcDiv )\r
+               return;\r
+\r
+       if( srcDiv )\r
+       {\r
+               if( srcDiv.style.display == "" )\r
+                       srcDiv.style.display = "none";\r
+               else\r
+               {\r
+                       srcDiv.style.display = "";\r
+                       if( typeof(srcDiv.bInitialized) == "undefined" )\r
+                       {\r
+                               srcDiv.bInitialized = true;\r
+                               kadovInitEffects(name);\r
+                               kadovInitEachChild(srcDiv);\r
+                       }\r
+               }\r
+       }\r
+       if(gbBsIE4)\r
+               event.returnValue=false;\r
+       return;\r
+}\r
+\r
+function kadovFindParentParagraph( el )\r
+{\r
+       if( typeof(el) == "string" )\r
+               el = getElement(el);\r
+       if( (!el) || el.tagName == "BODY" )\r
+               return null;\r
+       if( kadovIsParagraph(getParentNode(el)) )\r
+               return getParentNode(el);\r
+       else\r
+               return kadovFindParentParagraph( getParentNode(el) );\r
+}\r
+\r
+//Begin HTML code invoked function\r
+function kadovRegisterEventHandler( obj, strEvent, strEventHandler )\r
+{\r
+       if( !gbBsIE4 )\r
+               return;\r
+       CCSSP.RegisterEventHandler( obj, strEvent, strEventHandler );\r
+}\r
+\r
+function textPopupData(el, popupId)\r
+{\r
+       this.el = el;\r
+       this.popupId = "#"+popupId;\r
+}\r
+\r
+var gPopupData = new Array();\r
+\r
+function kadovTextPopupInit( el, popupId)\r
+{\r
+       if (!gbBsIE4 && !gbBsOpera7 && !gbBsSafari && !gbBsNS6 && !gbBsKonqueror3)\r
+               return;\r
+               \r
+       if( typeof(el) == "string" )\r
+       {\r
+               if (popupId)\r
+               {\r
+                       gPopupData[gPopupData.length]=new textPopupData(el, popupId);\r
+               }\r
+               el = getElement(el);\r
+       }\r
+               \r
+       if( el != null )\r
+       {\r
+               CCSSP.RegisterEventHandler( el, "onclick", "kadovTextPopup(\"" + el.id +"\");" );\r
+               CCSSP.RegisterEventHandler( window, "onload", "kadovTextPopupOnLoad(\"" + el.id +"\");" );\r
+       }\r
+}\r
+//End HTML code invoked function\r
+\r
+//End to support extended and dropdown text effects.\r
+\r
+//Begin to convert iWrite format to RoboEditor Format for DHTML effects\r
+function kadovInitTriggersInHead( )\r
+{\r
+  if( Object.xDelayedInitElements )\r
+  {\r
+     var x = Object.xDelayedInitElements;\r
+     for(i=0; i<x.length; i++)\r
+       kadovInitTrigger( x[i] );\r
+  }\r
+}\r
+\r
+//Begin HTML code invoked function\r
+function kadovFilePopupInit( el )\r
+{\r
+       if( typeof(el) == "string" )\r
+               el = getElement(el);\r
+\r
+       if( el != null )\r
+               CCSSP.RegisterEventHandler( el, "onmouseover", "BSPSPopupOnMouseOver(event);" );\r
+}\r
+\r
+function kadovInitTrigger( element )\r
+{\r
+       if( !gbBsIE4 )\r
+               return;\r
+       var srcElement = element;\r
+       if( typeof(srcElement) == "string" )\r
+       {\r
+               srcElement = getElement(element,0);\r
+               if(srcElement == null)\r
+                       return;\r
+       }\r
+       \r
+       if( !kadovIsParentVisible(srcElement) )\r
+               return;\r
+\r
+       var targets = srcElement.getAttribute( "x-targets" );\r
+       if (!targets)\r
+               targets = srcElement.style.getAttribute("x-targets");\r
+       if (!targets)\r
+               return; \r
+       var arrOneTarget = targets.split( "," );\r
+       for( var i = 0; i < arrOneTarget.length; i ++ )\r
+               bsscFXInit( element, arrOneTarget[i], null, null, null, null );\r
+}\r
+\r
+function kadovIsParentVisible( el )\r
+{\r
+       if( typeof(el) == "string" )\r
+               el = getElement(el);\r
+       if( (!el) || el.tagName == "BODY" )\r
+               return true;\r
+       if( el.style.display == 'none' ) //el.visibility == 'hidden' || \r
+               return false;\r
+       else\r
+               return kadovIsParentVisible( getParentNode(el) );\r
+}\r
+\r
+function kadovInitEffects( element )\r
+{\r
+       if( !gbBsIE4 )\r
+               return;\r
+       var srcElement = element;\r
+       if( typeof(srcElement) == "string" )\r
+       {\r
+               srcElement = getElement(element,0);\r
+               if(srcElement == null)\r
+                       return;\r
+       }\r
+       \r
+       if( !kadovIsParentVisible(srcElement) )\r
+               return;\r
+       \r
+       kadovInitEffect( srcElement, "x-on-hover" );\r
+       kadovInitEffect( srcElement, "x-on-pageclick" );\r
+       kadovInitEffect( srcElement, "x-on-pageload" );\r
+       kadovInitEffect( srcElement, "x-on-trigger-1" );\r
+       kadovInitEffect( srcElement, "x-on-trigger-2" );\r
+}\r
+//End HTML code invoked function\r
+\r
+function kadovInitEffect( element, prop )\r
+{\r
+       var values = null;\r
+       if( element.getAttribute( "currentStyle" )  && element.currentStyle.getAttribute)\r
+               values = element.currentStyle.getAttribute( prop );\r
+       else  if (element.style.getAttribute)\r
+               values = element.style.getAttribute( prop );\r
+       if( !values )\r
+               return;\r
+\r
+       var functions = new Array();\r
+       var nIdx = 0, nStart = 0;\r
+       var nNext = values.indexOf( "\)", 0);\r
+       while( nNext >= 0 && nNext < values.length )\r
+       {\r
+               functions[nIdx] = values.substr( nStart, nNext-nStart+1);\r
+               nStart = nNext + 1;\r
+               nIdx++;\r
+               nNext = values.indexOf( "\)", nStart);\r
+       }\r
+               \r
+       for( var i=0; i<functions.length; i++)\r
+       {\r
+               var id = element.getAttribute( "id" );\r
+               var translatedProp = kadovTranslateProp(prop);\r
+\r
+               var lp = functions[i].indexOf( "(" );\r
+               var fnname = functions[i].substring(0, lp);\r
+               var srcargs = functions[i].substring(lp+1, functions[i].length-1);\r
+               \r
+               var nClickTimes = 1;\r
+               var arrForClickCount = srcargs.split( "," );\r
+               for( var j = 0; j < arrForClickCount.length; j++ )\r
+               {// to locate and get the "clicks=99" settings\r
+                       var nPageClick = arrForClickCount[j].indexOf("clicks");\r
+                       if( nPageClick >= 0 )\r
+                       {\r
+                               nPageClick = arrForClickCount[j].indexOf("=");\r
+                               if( nPageClick > 0 )\r
+                               {\r
+                                       nClickTimes = arrForClickCount[j].substring( nPageClick + 1, arrForClickCount[j].length) * 1;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+               var args = srcargs;\r
+               if( j < arrForClickCount.length )\r
+               {// to strip out the "clicks=99" from the arguments string\r
+                       args = "";\r
+                       for( var k = 0; k < arrForClickCount.length; k ++ )\r
+                       {\r
+                               if( k != j )\r
+                               {\r
+                                       args += arrForClickCount[k];\r
+                                       if( k < arrForClickCount.length - 1 )\r
+                                               args += ",";\r
+                               }\r
+                       }\r
+               }\r
+               bsscFXInit( null, id, translatedProp, fnname, args, nClickTimes );\r
+       }\r
+}\r
+\r
+function kadovTranslateProp( prop )\r
+{\r
+       switch( prop )\r
+       {\r
+       case "x-on-hover" :     return "bsschover";\r
+       case "x-on-pageclick" : return "bsscpageclick";\r
+       case "x-on-pageload" :  return "bsscpageload";\r
+       case "x-on-trigger-1" : return "bssctrigger1";\r
+       case "x-on-trigger-2" : return "bssctrigger2";\r
+       }\r
+       return null;\r
+}\r
+//End to convert iWrite format to RoboEditor Format for DHTML effects\r
+\r
+//Begin the definition of one entry to DHTML effects\r
+function bsscFXInit( trigger_ID, target_ID, event_type, \r
+       action_type, action_setting, event_addional )\r
+{\r
+       if( (!gbBsWindows && !gbBsSunOS  && !(gbBsMac&&gbBsIE5)) || typeof(target_ID) != "string" )//MUST have a target_ID\r
+               return; // we don't support Navigator yet\r
+       \r
+       if( typeof(event_type) == "string" )\r
+               event_type = event_type.toLowerCase();\r
+       if( typeof(action_type) == "string" )\r
+               action_type = action_type.toLowerCase();\r
+       if( typeof(action_setting) == "string" )\r
+                action_setting = action_setting.toLowerCase();\r
+       \r
+       // to get the target element then add it to the target list\r
+       var eleTarget = CCSSP.GetObject( target_ID );\r
+       if( (eleTarget != null) && (event_type != null) && (action_type != null) )\r
+       {\r
+               CEngine.AddOneTarget( target_ID, eleTarget );\r
+               CEngine.BuildTargetObject(target_ID, event_type, action_type, action_setting, event_addional);\r
+       }\r
+       \r
+       // to validate the trigger_ID parameter\r
+       if( typeof(trigger_ID) == "string" && trigger_ID != "" )\r
+               CEngine.BuildTriggerObject( trigger_ID, target_ID );\r
+}      \r
+//End the definition of one entry to DHTML effects\r
+\r
+/// Section End  - kadov DHTM (JavaScript 1.2)\r
+\r
+/// Section Begin  - CCSSP DHTM (JavaScript 1.2)\r
+\r
+//Begin JavaScript libary for cross-platform positioning object.\r
+function CCSSP(){} // constructor of CCSSP class\r
+\r
+CCSSP.GetObject = function( obj )\r
+{//convert object name string or reference into a valid object reference\r
+       if( typeof(obj) == "object" )\r
+               return obj;\r
+       else if( typeof(obj) == "string" && obj != "")\r
+       {\r
+               if( gbBsNS4 )\r
+                       return eval("document." + obj);\r
+               else\r
+                       return eval("document.all(\"" + obj + "\")");\r
+       }\r
+       else\r
+               return null;\r
+}\r
+\r
+CCSSP.MoveObjectTo = function(obj, x, y)\r
+{//positioning an object at a specific pixel coordinate\r
+       if( gbBsNS4 )\r
+               obj.moveTo(x,y);\r
+       else\r
+       {\r
+               obj.style.pixelLeft = x;\r
+               obj.style.pixelTop = y;\r
+       }\r
+}\r
+\r
+CCSSP.MoveObjectBy = function(obj, dx, dy)\r
+{//moveing a object by x and/or y pixel\r
+       if( gbBsNS4 )\r
+               obj.moveBy(dx,dy);\r
+       else\r
+       {\r
+               obj.style.pixelLeft += dx;\r
+               obj.style.pixelTop += dy;\r
+       }\r
+}\r
+\r
+CCSSP.SetObjectBGColor = function(obj, color)\r
+{//set the background color of an object\r
+       if( gbBsNS4 )\r
+               obj.bgColor = color;\r
+       else\r
+               obj.style.backgroundColor = color;\r
+}\r
+\r
+CCSSP.ShowObject = function(obj, bShow)\r
+{// set the object to be visible or invisible\r
+       if( gbBsNS4 )\r
+               obj.visibility = (bShow == true) ? 'show' : 'hide';\r
+       else\r
+               obj.style.visibility = (bShow == true) ? 'visible' : 'hidden';// when hidden, it still occupy some space.\r
+}\r
+\r
+CCSSP.GetObjectLeft = function(obj)\r
+{// retrieve the x coordinate of a posionable object\r
+       if( gbBsNS4 )\r
+               return obj.left;\r
+       else\r
+               return obj.style.pixelLeft;\r
+}\r
+\r
+CCSSP.GetObjectTop = function(obj)\r
+{// retrieve the y coordinate of a posionable object\r
+       if( gbBsNS4 )\r
+               return obj.top;\r
+       else\r
+               return obj.style.pixelTop;\r
+}\r
+\r
+CCSSP.GetObjectContainLeft = function(obj)\r
+{// retrieve the x coordinate of a posionable object relative to it's parent element\r
+       if( gbBsNS4 )\r
+               return obj.pageX;\r
+       else\r
+       {\r
+               if( obj == document.body )\r
+                       return obj.clientLeft;\r
+               else\r
+                       return obj.offsetLeft;\r
+       }\r
+}\r
+\r
+CCSSP.GetObjectWindowLeft = function(obj)\r
+{// retrieve the x coordinate of a posionable object relative to browser window\r
+       if( gbBsNS4 )\r
+               return obj.pageX;\r
+       else\r
+       {\r
+               var nOffsetWindowLeft = 0;\r
+               for(var element = obj; element; element = element.offsetParent)\r
+                       nOffsetWindowLeft += CCSSP.GetObjectContainLeft(element);\r
+               return nOffsetWindowLeft;\r
+       }\r
+}\r
+\r
+CCSSP.GetObjectContainTop = function(obj)\r
+{// retrieve the y coordinate of a posionable object relative to it's parent element\r
+       if( gbBsNS4 )\r
+               return obj.pageY;\r
+       else\r
+       {\r
+               if( obj == document.body )\r
+                       return obj.clientTop;\r
+               else\r
+                       return obj.offsetTop;\r
+       }\r
+}\r
+\r
+CCSSP.GetObjectWindowTop = function(obj)\r
+{// retrieve the y coordinate of a posionable object relative to browser window\r
+       if( gbBsNS4 )\r
+               return obj.pageY;\r
+       else\r
+       {\r
+               var nOffsetWindowTop = 0;\r
+               for(var element = obj; element; element = element.offsetParent)\r
+                       nOffsetWindowTop += CCSSP.GetObjectContainTop(element);\r
+               return nOffsetWindowTop;\r
+       }\r
+}\r
+\r
+CCSSP.GetObjectHeight = function(obj)\r
+{// retrieve the height of a posionable object\r
+       if( gbBsNS4 )\r
+               return obj.clip.height;\r
+       else\r
+               return obj.offsetHeight;\r
+}\r
+\r
+CCSSP.GetObjectWidth = function(obj)\r
+{// retrieve the width of a posionable object\r
+       if( gbBsNS4 )\r
+               return obj.clip.width;\r
+       else\r
+               return obj.offsetWidth;\r
+}\r
+\r
+CCSSP.RegisterEventHandler = function( srcObj, rawEventName, funcHandler )\r
+{ // to add the "funcHandler" as the "rawEventName" 's handler to the "srcObj" object,the original event handler will be combined\r
+       if (gbBsNS4 && !gbBsNS6)\r
+               return ;\r
+               \r
+       var oldHandler = "";\r
+\r
+       if (gbBsMac &&gbBsIE4&&!gbBsIE5)\r
+       {\r
+               if (typeof(srcObj[rawEventName.toLowerCase()])=="unknown")\r
+               { //search for <SCRIPT> tag which define the event handler\r
+                       for( var i = 0; i < document.scripts.length; i++ ) \r
+                       {\r
+                               var script = document.scripts[i];\r
+                               if( (script.htmlFor == srcObj.id || script.htmlFor == srcObj ) && script.event == rawEventName )\r
+                               {\r
+                                       oldHandler = script.innerHTML;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       else\r
+       {\r
+               var oldInlineHandler = srcObj[rawEventName.toLowerCase()];\r
+               if( oldInlineHandler != null && typeof(oldInlineHandler) != "undefined")\r
+               {\r
+                       var functionDefinition = oldInlineHandler.toString();\r
+                       var bodyStart = functionDefinition.indexOf( "{" );\r
+                       var bodyEnd = functionDefinition.lastIndexOf( "}" );\r
+                       if( bodyStart > 0 || bodyEnd > bodyStart )\r
+                               oldHandler = functionDefinition.substr( bodyStart + 1, bodyEnd - bodyStart - 2 );\r
+               }\r
+               else if( gbBsIE4 )\r
+               { //search for <SCRIPT> tag which define the event handler\r
+                       for( var i = 0; i < document.scripts.length; i++ ) \r
+                       {\r
+                               var script = document.scripts[i];\r
+                               if( (script.htmlFor == srcObj.id || script.htmlFor == srcObj ) && script.event == rawEventName )\r
+                               {\r
+                                       oldHandler = script.innerHTML;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       if( oldHandler.indexOf(funcHandler) >= 0 )\r
+               return;// to prevent register the funtion twice.\r
+\r
+       if( gbBsNS4 ) // only "onload, onresize, onfocus" apply to window\r
+       {// other raw events will apply to layer\r
+               var noOn = rawEventName.substring(2, rawEventName.length);\r
+               if( typeof(noOn) == "string" && noOn.length > 3 ) {\r
+                       if (srcObj.captureEvents)\r
+                               srcObj.captureEvents( Event[noOn.toUpperCase()] );\r
+               }\r
+       }\r
+       \r
+       var newHandler = oldHandler;\r
+       if( newHandler.length == 0 )\r
+               newHandler = funcHandler;\r
+       else\r
+               newHandler += "; " + funcHandler;\r
+       \r
+       srcObj[rawEventName.toLowerCase()] = new Function( newHandler );\r
+}\r
+\r
+CCSSP.GetWindowHeight = function()\r
+{// retrieve the height of available content in browser window\r
+       if( gbBsNS4 )\r
+               return window.innerHeight;\r
+       else\r
+               return document.body.clientHeight;\r
+}\r
+\r
+CCSSP.GetWindowBottom = function()\r
+{// retrieve the bottom postion of browser window\r
+       if( gbBsNS4 )\r
+               return window.outerHeight + window.pageYOffset;\r
+       else\r
+               return document.body.clientHeight + document.body.scrollTop;\r
+}\r
+\r
+CCSSP.GetWindowWidth = function()\r
+{// retrieve the width of available content in browser window\r
+       if( gbBsNS4 )\r
+               return window.innerWidth;\r
+       else\r
+               return document.body.clientWidth;\r
+}\r
+\r
+CCSSP.GetWindowRight = function()\r
+{// retrieve the right postion of browser window\r
+       if( gbBsNS4 )\r
+               return window.outerWidth + window.pageXOffset;\r
+       else\r
+               return document.body.clientWidth + document.body.scrollLeft;\r
+}\r
+\r
+CCSSP.TrimString = function( objString, subtrim )\r
+{// to trim the "subtrim" in the beginning and ending of a string object\r
+       if( typeof(subtrim) != "string" || subtrim == null )\r
+               return objString;\r
+       var strHead = objString.substring(0, 1);\r
+       var strRear = objString.substring(objString.length-1, objString.length);\r
+       if( strHead != subtrim && strRear != subtrim )\r
+               return objString;\r
+       \r
+       var spacePos = objString.indexOf(subtrim);\r
+       if( spacePos < 0 )\r
+               return objString;\r
+       else if( spacePos == objString.length - 1 )\r
+               return objString.substring(0, spacePos);\r
+       else\r
+       {\r
+               var newString = objString.substring( spacePos + 1, objString.length);\r
+               return CCSSP.TrimString( newString, subtrim );\r
+       }\r
+}\r
+\r
+CCSSP.TrimSpace = function( objString )\r
+{\r
+       var Trim1 = CCSSP.TrimString( objString, " ");\r
+       return CCSSP.TrimString( Trim1, "\'");\r
+}\r
+\r
+CCSSP.GetEventElement = function( navEventObject )\r
+{// to get the element who fired the current event\r
+       if(gbBsNS4) \r
+               if (gbBsNS6)\r
+                       return null;\r
+               else\r
+                        navEventObject.target;\r
+       else\r
+               return event.srcElement;\r
+}\r
+\r
+CCSSP.PrepareFilter = function( Obj )\r
+{//to prepare for making the filter work\r
+       Obj.style.filter = "";\r
+       if( Obj.style.width != "" || Obj.style.height != "" || Obj.style.position == "absolute" )\r
+               return;\r
+       Obj.style.height = CCSSP.GetObjectHeight(Obj);\r
+}\r
+\r
+CCSSP.IsDescendant = function( progenitor, progeny )\r
+{\r
+       if( typeof(progeny) == "undefined" || progeny == null )\r
+               return false;\r
+       else if( progeny == progenitor )\r
+               return true; \r
+       else if( progeny.id == progenitor.id ) \r
+               return true; \r
+       else if( getParentNode(progeny) == getParentNode(progenitor))\r
+               return false;\r
+       else\r
+               return CCSSP.IsDescendant( progenitor, getParentNode(progeny));\r
+}\r
+\r
+CCSSP.IsTextTag = function( Obj )\r
+{\r
+       if( typeof( Obj.tagName ) == "undefined" )\r
+               return false;\r
+       return( Obj.tagName.indexOf("H") == 0 || Obj.tagName == "P" || \r
+                       Obj.tagName == "FONT" || Obj.tagName == "SPAN" );\r
+}\r
+\r
+//End JavaScript libary for cross-platform positioning object.\r
+\r
+/// Section End  - CCSSP DHTM (JavaScript 1.2)\r
+\r
+/// Section Begin  - CCSSP DHTM 1 (JavaScript 1.2)\r
+\r
+//Begin the definition of class CTrigger\r
+function CTrigger( TriggerElement )\r
+{\r
+       // object : the trigger element. Never be null. \r
+       this.eleTrigger = TriggerElement;\r
+       \r
+       // number : the click counter number: only 3 values: 0,1,2;\r
+       this.nCounter = 0; \r
+       \r
+       //object as associative array of string:\r
+       // the associate target ID strings; one element at least.                       \r
+       this.objStrTarget = new Object();\r
+       this.eleTrigger.style.cursor = "hand";\r
+       if( this.eleTrigger.tagName == "AREA" && this.eleTrigger.getAttribute("href") == "" )\r
+               this.eleTrigger.setAttribute("href", "#") // to make a hand cursor for image map\r
+}\r
+\r
+CTrigger.prototype.AddTargetID = function( strTargetID )\r
+{// add one target ID string to the objStrTarget\r
+       if( typeof(strTargetID) != "string" )\r
+               return ;\r
+       if( typeof(this.objStrTarget[strTargetID]) != "string" )\r
+               this.objStrTarget[strTargetID] = strTargetID;\r
+}\r
+\r
+CTrigger.prototype.OnTriggerClick = function()\r
+{// to activate all asociated target\r
+       var strEventType = ( (this.nCounter++)% 2 == 0 ) ? \r
+               "bssctrigger1" : "bssctrigger2";\r
+               \r
+       // to enumerate associative target element's ID string\r
+       for( var strTargetID in this.objStrTarget ) \r
+               CEngine.SendEventToOneTarget( strTargetID, strEventType );\r
+}\r
+//End the definition of class CTrigger\r
+\r
+//Begin the definition of class CTarget\r
+function CTarget( TargetElement )\r
+{\r
+       // object : the target element. Never be null.\r
+       this.eleTarget = TargetElement;\r
+       this.objManager = new Object(); // object: the event manager\r
+} \r
+\r
+CTarget.nPageClickCounter = 0;// static class property.\r
+\r
+CTarget.prototype.GetAgencyObject = function(str_action_type,action_setting )\r
+{// return the action agency ( effect )object's refernece \r
+       switch( str_action_type )\r
+       {\r
+       case "show":return new CAgencyShow( this.eleTarget, true ) ;\r
+       case "hide":return new CAgencyShow( this.eleTarget, false ) ;\r
+\r
+    case "flyin" : \r
+       return new CAgencyFly(this.eleTarget, action_setting, true);\r
+    case "flyout" : \r
+       return new CAgencyFly(this.eleTarget, action_setting, false);\r
+    case "spiralin" : \r
+       return new CAgencySpiral(this.eleTarget, action_setting, true);\r
+    case "spiralout" : \r
+       return new CAgencySpiral(this.eleTarget, action_setting, false);\r
+    case "zoomin" :\r
+       return new CAgencyZoom(this.eleTarget, action_setting, true);\r
+    case "zoomout" : \r
+       return new CAgencyZoom(this.eleTarget, action_setting, false);\r
+    case "elastic" : \r
+               return new CAgencyElastic(this.eleTarget, action_setting);\r
+               \r
+    case "fadein" : \r
+       return (gbBsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, true) : null;\r
+    case "fadeout" :\r
+       return (gbBsIE4)? new CAgencyAlpha(this.eleTarget, action_setting, false) : null;\r
+    case "rockrollstatic" :\r
+    case "rockroll" :\r
+       return (gbBsIE4)? new CAgencyWave(this.eleTarget, action_setting, false) : null;\r
\r
+    case "glow":\r
+       return (gbBsIE4)? new CAgencyGlow(this.eleTarget,action_setting) : null;\r
+    case "dropshadow":\r
+       return (gbBsIE4)? new CAgencyDropShadow(this.eleTarget,action_setting) : null;\r
+    case "transition" :\r
+       return (gbBsIE4)? new CAgencyRevealTrans(this.eleTarget,action_setting) : null;\r
+    case "blur" :\r
+       return (gbBsIE4)? new CAgencyBlur(this.eleTarget,action_setting) : null;\r
+\r
+    case "fliph" : // all these 4 do NOT need any parameters\r
+    case "flipv" :\r
+    case "invert":\r
+    case "gray" :\r
+       return (gbBsIE4)? new CAgencyChangeFilter(this.eleTarget, str_action_type) : null;\r
+    \r
+    case "fontchange": // the effects below change the style on the fly, so won't work in Navigator\r
+       return (gbBsIE4)? new CAgencyFontChange(this.eleTarget,action_setting) : null;\r
+    case "boderchange": \r
+    case "stylechange":\r
+       return (gbBsIE4)? new CAgencyChangeStyle(this.eleTarget,action_setting) : null;\r
+\r
+       default: return null;\r
+       }\r
+}\r
+\r
+CTarget.prototype.SetEventManager = function( \r
+       one_event_type,str_action_type,action_setting,event_additional)\r
+{// to set the event manager with specified action \r
+       if( typeof( one_event_type ) != "string" ||     \r
+               typeof( str_action_type ) != "string"||\r
+               typeof( action_setting ) != "string" )\r
+               return false;\r
+       if( typeof(this.objManager[one_event_type]) == "undefined" )\r
+       {\r
+               this.objManager[one_event_type] = new Object();\r
+               this.objManager[one_event_type].length = 0;\r
+       }\r
+       \r
+       var eventAgency = this.GetAgencyObject(str_action_type,action_setting);\r
+       if( eventAgency != null )\r
+       {\r
+               var ct = this.objManager[one_event_type].length ++;\r
+               this.objManager[one_event_type][ct] = eventAgency;\r
+               \r
+               if( one_event_type == "bsscpageclick" )\r
+               {// to deal with the "number of pageclick" stuff\r
+                       if( typeof(event_additional) == "number" )\r
+                               this.objManager[one_event_type][ct].nPageClick = event_additional;\r
+                       else // set the default number \r
+                               this.objManager[one_event_type][ct].nPageClick = 1;\r
+                       \r
+                       if( (typeof(this.objManager.nMinPageClickIndex) == "undefined") ||\r
+                           (this.objManager[one_event_type][ct].nPageClick < \r
+                                       this.objManager[one_event_type][this.objManager.nMinPageClickIndex].nPageClick) )\r
+                               this.objManager.nMinPageClickIndex = ct;\r
+               }\r
+               \r
+               //hide the object blindly,SetState function will take care of the final correct state\r
+               if( ((one_event_type == "bsscpageclick") && \r
+                        (this.objManager[one_event_type][ct].nPageClick == 1)) ||\r
+                       one_event_type == "bsscpageload" ||\r
+                       one_event_type == "bssctrigger1" )\r
+                       CCSSP.ShowObject( this.eleTarget, false );\r
+               \r
+               if( one_event_type == "bssctrigger1" || one_event_type == "bssctrigger2" )\r
+                       if( typeof( this.strTriggerEvent ) == "undefined" )\r
+                               this.strTriggerEvent = ( one_event_type == "bssctrigger1" ) ? "bssctrigger2" : "bssctrigger1";\r
+                       \r
+               return true;\r
+       }\r
+       return false;\r
+}\r
+\r
+CTarget.prototype.OnEvent = function( strBsscEvent )\r
+{// response to the event ( bssc format )\r
+       if( typeof(this.objManager[strBsscEvent]) == "object" )\r
+       { // to get the event agency from the event manager\r
+               var eventAgency = this.objManager[strBsscEvent];\r
+               for( var i = 0; i < eventAgency.length; i++ )\r
+               {\r
+                       if( strBsscEvent == "bsscpageclick" && \r
+                               eventAgency[i].nPageClick != CTarget.nPageClickCounter )\r
+                                continue;\r
+                       else if( strBsscEvent == "bsschover" && event.type == "mouseout" )\r
+                               eventAgency[i].EndEffect();\r
+                       else // to invoke the unified function in effect object \r
+                               eventAgency[i].UpdateEffect(); \r
+               }\r
+       }\r
+}\r
+\r
+CTarget.prototype.SetState = function( strBsscEvent )\r
+{\r
+       if( typeof(this.objManager[strBsscEvent]) != "object" )\r
+               return false;\r
+\r
+       // to get the event agency from the event manager\r
+       var eventAgency = this.objManager[strBsscEvent];\r
+       \r
+       if( strBsscEvent == "bsscpageclick" )\r
+       {// we only set the initial state for the minium number of pageclick \r
+               eventAgency[this.objManager.nMinPageClickIndex].PrepareEffect();\r
+               return true;\r
+       }\r
+       else\r
+       {\r
+               for( var i = 0; i < eventAgency.length; i++ )\r
+                       eventAgency[i].PrepareEffect(); // to invoke the unified function in effect object       \r
+               if( i > 0 )\r
+                       return true;\r
+               else\r
+                       return false;\r
+       }\r
+}\r
+//End the definition of class CTarget\r
+\r
+//Begin the definition of CEngine class\r
+function CEngine(){}// all properities are going be "class" properities\r
+\r
+// object : as associative array of trigger objects\r
+CEngine.objTrigger = new Object();\r
+// object : as associative array of target objects \r
+CEngine.objTarget = new Object(); \r
+\r
+// Array : each element is a CAgencyXXX animation object\r
+CEngine.arrAnimation = new Array();\r
+CEngine.PerformAnimation = function( nIndex )\r
+{// animation : update effects function\r
+       CEngine.arrAnimation[nIndex].UpdateEffect();\r
+}\r
+\r
+CEngine.AddOneTrigger = function(TriggerID,TriggerElement)\r
+{// add one Trigger object into the trigger array\r
+       if( typeof(TriggerID) != "string" || TriggerElement == null ||\r
+           typeof(TriggerElement) != "object" )\r
+               return;\r
+       if( typeof(CEngine.objTrigger[TriggerID] ) != "object" )\r
+               CEngine.objTrigger[TriggerID] = new CTrigger(TriggerElement);\r
+}\r
+       \r
+CEngine.AddOneTarget = function(TargetID, TargetElement)\r
+{// add one Target object into the target array\r
+       if( typeof(TargetID) != "string" || TargetElement == null ||\r
+               typeof(TargetElement) != "object" )\r
+               return;\r
+       if( typeof(CEngine.objTarget[TargetID]) != "object" )\r
+               CEngine.objTarget[TargetID] = new CTarget( TargetElement );\r
+}\r
+\r
+CEngine.SendEventToOneTarget = function(strTargetID, strBsscEvent )\r
+{// to activate one target object\r
+       if( typeof(CEngine.objTarget[strTargetID]) == "object" ) \r
+       {\r
+               if( strBsscEvent == "bssctrigger1" || strBsscEvent == "bssctrigger2" )\r
+               {//now, the "bssctrigger1" and "bssctrigger2" work like a toggle\r
+                       if( strBsscEvent == CEngine.objTarget[strTargetID].strTriggerEvent )\r
+                               strBsscEvent = (strBsscEvent == "bssctrigger1") ? "bssctrigger2" : "bssctrigger1";\r
+                       CEngine.objTarget[strTargetID].strTriggerEvent = strBsscEvent;\r
+               }\r
+               CEngine.objTarget[strTargetID].OnEvent( strBsscEvent );\r
+       }\r
+}\r
+\r
+CEngine.SendEventToAllTarget = function( strBsscEvent )\r
+{ //to activate all target associative to the BSSC event\r
+       for( var strTargetID in CEngine.objTarget ) //to enumerate all target\r
+               CEngine.SendEventToOneTarget( strTargetID, strBsscEvent );\r
+}\r
+\r
+CEngine.SetOneTargetInitialState = function( strTargetID )\r
+{// only invoked after ALL effects for the target have been set\r
+       if( typeof(CEngine.objTarget[strTargetID]) == "object" ) \r
+       {// to get target object\r
+               var objTarget = CEngine.objTarget[strTargetID];\r
+               if( objTarget.SetState( "bsscpageload" ) == false )\r
+               {\r
+                       objTarget.SetState( "bsscpageclick" );\r
+                       objTarget.SetState( "bssctrigger1" );\r
+               }\r
+       }\r
+}\r
+\r
+CEngine.AdjustPageClickCounter = function()\r
+{\r
+       var nAdjustedClickCounter = CTarget.nPageClickCounter;\r
+       var bAdjusted = false;\r
+       for( var strTargetID in CEngine.objTarget ) //to enumerate all target\r
+       {// try to find the minum pageCliclConter greater than CTarget.nPageClickCounter\r
+               var objEventPageClick = CEngine.objTarget[strTargetID].objManager.bsscpageclick;\r
+               if( objEventPageClick != null )\r
+               {\r
+                       for( var i = 0; i < objEventPageClick.length; i++ )\r
+                       {\r
+                               var nOtherPageClick = objEventPageClick[i].nPageClick;\r
+                               if( nOtherPageClick == CTarget.nPageClickCounter )\r
+                                       return;\r
+                               if( nOtherPageClick > CTarget.nPageClickCounter )\r
+                               {\r
+                                       if( !bAdjusted )\r
+                                       {\r
+                                               nAdjustedClickCounter = nOtherPageClick;\r
+                                               bAdjusted = true;\r
+                                       }\r
+                                       else if( nOtherPageClick < nAdjustedClickCounter )\r
+                                               nAdjustedClickCounter = nOtherPageClick;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       CTarget.nPageClickCounter = nAdjustedClickCounter;\r
+}\r
+\r
+CEngine.OnPageLoad = function()\r
+{      \r
+       // first, to set all target's initial state\r
+       for( var strTargetID in CEngine.objTarget )\r
+               CEngine.SetOneTargetInitialState( strTargetID );\r
+       \r
+       // to invoke all target's onpageload handler\r
+       CEngine.SendEventToAllTarget( "bsscpageload" );\r
+}\r
+\r
+CEngine.OnPageClick = function()\r
+{ // to invoke all target's onpageclick handler\r
+       var src = CCSSP.GetEventElement( arguments[0] );\r
+       if( src == null )\r
+               return;\r
+               \r
+       var objClickedTrigger = null;\r
+       for( var strTriggerID in CEngine.objTrigger )\r
+       { // to detect which trigger is clicked\r
+               if( CCSSP.IsDescendant( CEngine.objTrigger[strTriggerID].eleTrigger,src) )\r
+               {\r
+                       objClickedTrigger = CEngine.objTrigger[strTriggerID];\r
+                       break;\r
+               }\r
+       }\r
+       \r
+       if( objClickedTrigger != null) // the clicked trigger found\r
+               objClickedTrigger.OnTriggerClick();\r
+       else // no trigger is clicked\r
+       { // to send PageClick event to all target\r
+               CTarget.nPageClickCounter++;\r
+               CEngine.AdjustPageClickCounter();\r
+               CEngine.SendEventToAllTarget( "bsscpageclick" );\r
+       }\r
+}      \r
+\r
+CEngine.OnMouseOver = function()\r
+{ // to invoke all target's onpageload handler\r
+       var src = CCSSP.GetEventElement( arguments[0] );\r
+       if( src == null )\r
+               return;\r
+               \r
+       var strHoveredTargetID = null;\r
+       for( var strTargetID in CEngine.objTarget )\r
+       { // to detect which Target is hovering on\r
+               if( CCSSP.IsDescendant( CEngine.objTarget[strTargetID].eleTarget, src ) )\r
+           {\r
+                       strHoveredTargetID = strTargetID;\r
+                       break;\r
+           }\r
+       }\r
+       \r
+       if( strHoveredTargetID != null ) // the hovered target found\r
+               CEngine.SendEventToOneTarget( strHoveredTargetID, "bsschover" );\r
+}\r
+\r
+CEngine.BuildTargetObject = function(target_ID,event_type,action_type,\r
+                       action_setting, event_additional)\r
+{// to build target object \r
+       // to get the target object\r
+       if( typeof( CEngine.objTarget[target_ID] ) != "object" )\r
+               return false;// the engine's AddOneTarget function might have failed.\r
+       var TargetObject = CEngine.objTarget[target_ID];\r
+       \r
+       // to prepare the parameters for the event manager\r
+       var arrEvent = event_type.split("|"); // to split the combined event_type string\r
+       var arrAction = action_type.split("|");//to split the combined action_type string\r
+       for( var trim = 0; trim < arrEvent.length; trim++ )\r
+               arrEvent[trim] = CCSSP.TrimSpace(arrEvent[trim]);\r
+       \r
+       for( trim = 0; trim < arrAction.length; trim++ )\r
+               arrAction[trim] = CCSSP.TrimSpace(arrAction[trim]);\r
+       \r
+       var arrSetting = new Array(); \r
+       if( typeof(action_setting) == "string" )\r
+               arrSetting = action_setting.split("|");// to split the combined action_setting string\r
+       // to calibrate the arrays\r
+       for( var i = arrSetting.length; i < arrAction.length; i++ )\r
+       {\r
+               if( typeof(arrSetting[i]) != "string" )\r
+                        arrSetting[i] = "";\r
+       }                                \r
+\r
+       // to prepare for dealing with the absolute posioning element\r
+       TargetObject.eleTarget.ABSX = CCSSP.GetObjectLeft( TargetObject.eleTarget );\r
+       TargetObject.eleTarget.ABSY = CCSSP.GetObjectTop( TargetObject.eleTarget );\r
+\r
+       if( arrEvent.length > 1 )\r
+       {// if event is combined, it must be : "bssctrigger1 | bssctrigger2"\r
+               if( arrAction.length != 2 )\r
+                       return false; // if event is combined, there must be 2 actions\r
+               for( i = 0 ; i < 2; i++ )\r
+               {\r
+                       if( TargetObject.SetEventManager(arrEvent[i], arrAction[i], \r
+                               arrSetting[i], event_additional) == false )\r
+                               return false; // the event manager has not been set up\r
+               }\r
+       }\r
+       else // the event_type string is not combined\r
+       {\r
+               for( i = 0 ; i < arrAction.length; i++ )\r
+               {\r
+                       TargetObject.SetEventManager(event_type, arrAction[i], arrSetting[i], event_additional);\r
+                       // to validate the event manager\r
+                       if( typeof(TargetObject.objManager[event_type]) != "object" ||\r
+                                       typeof(TargetObject.objManager[event_type][i]) != "object" )\r
+                               return false; // the event manager has not been set up\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+CEngine.BuildTriggerObject = function(trigger_ID, target_ID)\r
+{// to build the trigger object\r
+       var arrTrigger = trigger_ID.split("|"); // to split the combined trigger_ID string\r
+       for( var i = 0; i < arrTrigger.length; i ++ )\r
+       {// to get the trigger element then add it to the trigger list\r
+               arrTrigger[i] = CCSSP.TrimSpace( arrTrigger[i] );\r
+               var eleTrigger = CCSSP.GetObject( arrTrigger[i] );\r
+               if( eleTrigger == null )\r
+                       continue; // the trigger_ID string in the HTML code maybe wrong\r
+               CEngine.AddOneTrigger( arrTrigger[i], eleTrigger );\r
+\r
+               // to get the target object\r
+               if( typeof( this.objTrigger[arrTrigger[i]] ) != "object" )\r
+                       continue;// the engine's AddOneTarget function might have failed.\r
+               CEngine.objTrigger[arrTrigger[i]].AddTargetID( target_ID );\r
+       }\r
+}\r
+//End the definition of CEngine class\r
+\r
+/// Section End  - CCSSP DHTM 1 (JavaScript 1.2)\r
+\r
+/// Section Begin  - CCSSP DHTM 2 (JavaScript 1.2)\r
+\r
+//Begin the definition of CAgencyXXXX classes\r
+\r
+//Begin of the CAgencyShow definition\r
+function CAgencyShow( element, bIsShow )\r
+{\r
+       this.ele = element;\r
+       this.bIsShow = bIsShow;\r
+}\r
+\r
+CAgencyShow.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject( this.ele, !this.bIsShow );\r
+}\r
+\r
+CAgencyShow.prototype.UpdateEffect = function()\r
+{\r
+       CCSSP.ShowObject( this.ele, this.bIsShow );\r
+}\r
+\r
+CAgencyShow.prototype.EndEffect = function()\r
+{\r
+       CCSSP.ShowObject( this.ele, !this.bIsShow );\r
+}\r
+// End of the CAgencyShow definition\r
+\r
+// Begin of CAgencyFly definition\r
+function CAgencyFly( element, settings, bIsIn )\r
+{\r
+       this.ele = element;\r
+       this.bIsIn = bIsIn;\r
+       this.duration = 1000; // default\r
+       this.direction = "right";\r
+\r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
+               case "direction" : this.direction = arrOneSet[1]; break;\r
+               }\r
+       }\r
+               \r
+       if( gbBsIE5 && this.ele.style.position != "absolute" )\r
+               this.ele.style.position = "relative";\r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencyFly.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, !this.bIsIn );\r
+}\r
+\r
+CAgencyFly.prototype.UpdateEffect = function()\r
+{\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+\r
+       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+       if( percent >= 1.0 )\r
+               this.EndEffect();\r
+       else\r
+       {\r
+               var newX = this.startX*(1.0-percent) +  this.finalX*percent;\r
+               var newY = this.startY*(1.0-percent) +  this.finalY*percent;\r
+               CCSSP.MoveObjectTo(this.ele, newX, newY);\r
+               if( this.timer == null )\r
+                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
+       }\r
+}\r
+\r
+CAgencyFly.prototype.EndEffect = function()\r
+{\r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+\r
+       if( this.bIsIn ) // FlyIn\r
+               CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
+       else // FlyOut\r
+               CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
+       CCSSP.ShowObject(this.ele, this.bIsIn );\r
+}\r
+\r
+CAgencyFly.prototype.ResetParameters = function()\r
+{\r
+       this.PrepareEffect();\r
+       CCSSP.ShowObject(this.ele, true );\r
+\r
+       this.startX = 0;\r
+       this.startY = 0;\r
+       this.finalX = 0;\r
+       this.finalY = 0; \r
+       \r
+       var offsetLeft = CCSSP.GetObjectWindowLeft(this.ele) + this.ele.offsetWidth;\r
+       var offsetTop = CCSSP.GetObjectWindowTop(this.ele) + this.ele.offsetHeight;\r
+       var offsetRight = CCSSP.GetWindowRight();\r
+       var offsetBottom = CCSSP.GetWindowBottom();\r
+\r
+       if( this.bIsIn )\r
+       { // FlyIn\r
+               this.finalX = this.ele.ABSX;\r
+               this.finalY = this.ele.ABSY;\r
+\r
+               switch( this.direction )\r
+               {\r
+               case "right": this.startX = offsetRight; this.startY = this.finalY; break;\r
+               case "left": this.startX = -offsetLeft;  this.startY = this.finalY; break;\r
+               case "down": this.startY = offsetBottom; this.startX = this.finalX; break;\r
+               case "up":  this.startY = -offsetTop;    this.startX = this.finalX; break;\r
+               case "downright":\r
+                       this.startX = ( offsetBottom < offsetRight) ? offsetBottom : offsetRight;\r
+                       this.startY = this.startX;              break;\r
+               case "upright":\r
+                       this.startX = (offsetTop < offsetRight)? offsetTop : offsetRight;\r
+                       this.startY = -this.startX;             break;\r
+               case "upleft":\r
+                       this.startX = -((offsetTop < offsetRight)? offsetTop : offsetRight);\r
+                       this.startY = this.startX;              break;\r
+               case "downleft":\r
+                       this.startX = -(( offsetBottom < offsetRight) ? offsetBottom : offsetRight);\r
+                       this.startY = -this.startX;     break;\r
+               }\r
+       }\r
+       else\r
+       { // FlyOut\r
+               this.startX = this.ele.ABSX;\r
+               this.startY = this.ele.ABSY;\r
+\r
+               switch( this.direction )\r
+               {\r
+               case "right": this.finalX = offsetRight;  this.finalY = this.startY; break;\r
+               case "left": this.finalX = -offsetLeft;   this.finalY = this.startY;  break;\r
+               case "down": this.finalY = offsetBottom;  this.finalX = this.startX; break;\r
+               case "up":  this.finalY = -offsetTop;     this.finalX = this.startX; break;\r
+               case "downright":\r
+                       this.finalX = ( offsetBottom < offsetRight) ? offsetBottom : offsetRight;\r
+                       this.finalY = this.finalX;              break;\r
+               case "upright":\r
+                       this.finalX = (offsetTop < offsetRight)? offsetTop : offsetRight;\r
+                       this.finalY = -this.finalX;             break;\r
+               case "upleft":\r
+                       this.finalX = -((offsetTop < offsetRight)? offsetTop : offsetRight);\r
+                       this.finalY = this.finalX;              break;\r
+               case "downleft":\r
+                       this.finalX = -(( offsetBottom < offsetRight) ? offsetBottom : offsetRight);\r
+                       this.finalY = -this.finalX;     break;\r
+               }\r
+       }\r
+       CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
+       this.startTime = (new Date()).getTime();\r
+}\r
+// End of the CAgencyFly definition\r
+\r
+// Begin of CAgencySpiral\r
+function CAgencySpiral( element, settings, bIsIn )\r
+{\r
+       this.ele = element;\r
+       this.bIsIn = bIsIn;\r
+       this.duration = 1000; // default\r
+\r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
+               }\r
+       }\r
+\r
+       if( gbBsIE5 && this.ele.style.position != "absolute" )\r
+               this.ele.style.position = "relative";\r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencySpiral.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, !this.bIsIn );\r
+}\r
+\r
+CAgencySpiral.prototype.UpdateEffect = function()\r
+{\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+\r
+       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+       if( percent >= 1.0 )\r
+               this.EndEffect();\r
+       else\r
+       {\r
+               var rf = (this.bIsIn)? (1.0 - percent) : percent; \r
+               var t = (1.0-rf) * 4.0 * Math.PI\r
+               var rxP = (this.bIsIn)? this.startX : this.finalX; \r
+               var ryP = (this.bIsIn)? this.startY : this.finalY; \r
+               var rx = (Math.abs(rxP) < 200) ? Math.abs(rxP) : 200;\r
+               var ry = (Math.abs(ryP) < 200) ? Math.abs(ryP) : 200;\r
+\r
+               var newX = Math.ceil(-rf*Math.cos(t)*rx) + this.ele.ABSX;\r
+               var newY = Math.ceil(-rf*Math.sin(t)*ry) + this.ele.ABSY;\r
+               CCSSP.MoveObjectTo(this.ele, newX, newY);\r
+               if( this.timer == null )\r
+                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
+       }\r
+}\r
+\r
+CAgencySpiral.prototype.EndEffect = function()\r
+{\r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+       \r
+       if( this.bIsIn ) // In\r
+               CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
+       else // Out\r
+               CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
+       CCSSP.ShowObject(this.ele, this.bIsIn );\r
+}\r
+\r
+CAgencySpiral.prototype.ResetParameters = function()\r
+{\r
+       this.PrepareEffect();\r
+       CCSSP.ShowObject(this.ele, true );\r
+       this.startX = (this.bIsIn)? CCSSP.GetWindowRight() : this.ele.ABSX;\r
+       this.startY = (this.bIsIn)? CCSSP.GetWindowBottom() : this.ele.ABSY;\r
+       this.finalX = (this.bIsIn)? this.ele.ABSX : CCSSP.GetWindowRight();\r
+       this.finalY = (this.bIsIn)? this.ele.ABSY : CCSSP.GetWindowBottom(); \r
+       \r
+       CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
+       this.startTime = (new Date()).getTime();\r
+}\r
+// End of CAgencySpiral\r
+\r
+// Begin of CAgencyElastic\r
+function CAgencyElastic( element, settings)\r
+{\r
+       this.ele = element;\r
+       this.duration = 1000; // default\r
+       this.direction = "right";\r
+\r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
+               case "direction" : this.direction = arrOneSet[1]; break;\r
+               }\r
+       }\r
+               \r
+       if( gbBsIE5 && this.ele.style.position != "absolute" )\r
+               this.ele.style.position = "relative";\r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencyElastic.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, false );\r
+}\r
+\r
+CAgencyElastic.prototype.UpdateEffect = function()\r
+{\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+\r
+       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+       if( percent >= 1.0 )\r
+               this.EndEffect();\r
+       else\r
+       {\r
+               var newX = this.startX;\r
+               var newY = this.startY;\r
+               var rf = Math.exp(-percent*3);\r
+               var t = percent * 1.5 * Math.PI\r
+               var rx = (Math.abs(this.startX) > Math.abs(this.startY)) ? this.startX : this.startY;\r
+               switch (this.direction )\r
+               {\r
+               case "left":   \r
+               case "right" : newX = rf*Math.cos(t)*rx + this.ele.ABSX; break;\r
+               case "up":         \r
+               case "down" :  newY = rf*Math.cos(t)*rx + this.ele.ABSX; break;\r
+               }\r
+               CCSSP.MoveObjectTo(this.ele, newX, newY);\r
+               if( this.timer == null )\r
+                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
+       }\r
+}\r
+\r
+CAgencyElastic.prototype.EndEffect = function()\r
+{\r
+       CCSSP.MoveObjectTo(this.ele, this.finalX, this.finalY);\r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+}\r
+\r
+CAgencyElastic.prototype.ResetParameters = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, true );\r
+       this.startX = this.ele.ABSX;\r
+       this.finalX = this.ele.ABSX;\r
+       this.startY = this.ele.ABSY;\r
+       this.finalY = this.ele.ABSY;\r
+       \r
+       switch (this.direction)\r
+       { \r
+       case "left":  this.startX = -this.ele.offsetWidth; break;\r
+       case "right": this.startX = this.ele.offsetWidth;  break;\r
+       case "up":    this.startY = -this.ele.offsetHeight;break;\r
+       case "down":  this.startY = this.ele.offsetHeight; break;\r
+       }\r
+       CCSSP.MoveObjectTo(this.ele, this.startX, this.startY);\r
+       this.startTime = (new Date()).getTime();\r
+}\r
+// End of CAgencyElastic\r
+\r
+// Begin of CAgencyZoom\r
+function CAgencyZoom( element, settings, bIsIn)\r
+{\r
+       this.ele = element;\r
+       this.duration = 1000; // default\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
+               }\r
+       }\r
+\r
+       this.bIsIn = bIsIn;\r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencyZoom.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, false);\r
+}\r
+\r
+CAgencyZoom.prototype.UpdateEffect = function()\r
+{\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+\r
+       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+       if( percent >= 1.0 )\r
+               this.EndEffect();\r
+       else\r
+       {\r
+               var nFactorIn = Math.ceil(50+50*percent);\r
+               var nFactorOut = Math.ceil(100+200*(1-percent));\r
+               var AlterFontsize = ((this.bIsIn)? nFactorIn : nFactorOut) + "%";\r
+               var AlterFactor = ((this.bIsIn)? nFactorIn : nFactorOut) / 100;\r
+               \r
+               this.UpdateEffectAllChildren(this.ele, AlterFontsize, AlterFactor);\r
+               for(var index = 0; index < this.ele.all.length; index++)\r
+                       this.UpdateEffectAllChildren(this.ele.all[index], AlterFontsize, AlterFactor);\r
+                       \r
+               if( this.timer == null )\r
+                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
+       }\r
+}\r
+\r
+CAgencyZoom.prototype.UpdateEffectAllChildren = function(child, FontSize, Factor)\r
+{\r
+       if( CCSSP.IsTextTag(child) )\r
+               child.style.fontSize = FontSize;\r
+       else\r
+       {\r
+               if( typeof(child.orgWidth) == "number" )\r
+                       child.style.width = Factor * child.orgWidth;\r
+               if( typeof(child.orgHeight) == "number" )\r
+                       child.style.height = Factor * child.orgHeight;\r
+       }\r
+}\r
+\r
+CAgencyZoom.prototype.EndEffect = function()\r
+{\r
+       this.EndEffectAllChildren(this.ele);\r
+       for(var index = 0; index < this.ele.all.length; index++)\r
+               this.EndEffectAllChildren(this.ele.all[index]);\r
+       \r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+}\r
+\r
+CAgencyZoom.prototype.EndEffectAllChildren = function( child )\r
+{      \r
+       if( CCSSP.IsTextTag(child) )\r
+               child.style.fontSize = child.orgFontSize;\r
+       else\r
+       {\r
+               if( typeof(child.intactWidth) != "undefined" )\r
+               {\r
+                       child.width = child.intactWidth;\r
+                       child.height = child.intactHeight;\r
+               }\r
+               else if( typeof(child.style.intactPixelWidth) != "undefined" )\r
+               {\r
+                       child.style.pixelWidth = child.style.intactPixelWidth;\r
+                       child.style.pixelHeight = child.style.intactPixelHeight;\r
+               }\r
+       }\r
+}\r
+\r
+CAgencyZoom.prototype.ResetParameters = function()\r
+{\r
+       this.PrepareEffect();\r
+       this.ResetParametersAllChildren( this.ele );\r
+       for(var index = 0; index < this.ele.all.length; index++)\r
+               this.ResetParametersAllChildren(this.ele.all[index]);\r
+               \r
+       this.startTime = (new Date()).getTime();\r
+}\r
+\r
+CAgencyZoom.prototype.ResetParametersAllChildren = function( child )\r
+{\r
+       CCSSP.ShowObject(child, true );\r
+       if( (child.tagName == "DIV") && (getParentNode(child).tagName == "TD") )\r
+               child.width = "100%";// if the div is inside a cell of table, we need the this hack\r
+       \r
+       if( CCSSP.IsTextTag(child) )\r
+               child.orgFontSize = child.style.fontSize;\r
+       else\r
+       {\r
+               if( child.width > "" || child.height > "" )\r
+               {\r
+                       child.orgWidth = child.intactWidth = child.width;\r
+                       child.orgHeight = child.intactHeight = child.height;\r
+               }\r
+               else if( ( typeof(child.orgWidth) != "number" ) && (typeof(child.orgHeight) != "number") )\r
+               {\r
+                       child.orgWidth = child.style.intactPixelWidth = child.style.pixelWidth;\r
+                       child.orgHeight = child.style.intactPixelHeight = child.style.pixelHeight;\r
+               }\r
+       }\r
+}\r
+// End of CAgencyZoom\r
+\r
+//// the following effects will use IE's exclusive "filter" function ////\r
+// Begin of CAgencyAlpha definition\r
+function CAgencyAlpha( element, settings, bIsIn )\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+       this.bIsIn = bIsIn;\r
+\r
+       // to set the default value\r
+       this.startOpacity = (this.bIsIn) ? 0 : 100;\r
+       this.endOpacity = (this.bIsIn) ? 100 : 0;\r
+       \r
+       this.duration = 1000; // default\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "speed" : this.duration = 100000/arrOneSet[1]; break;\r
+               }\r
+       }\r
+       \r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencyAlpha.prototype.PrepareEffect = function()\r
+{// to set the visual filter function\r
+       // the visual filter ONLY work when set by "Width and Height" or\r
+       // absolute position for DIV, SPAN and normal tag ( such as p )\r
+       // but, "absolute" cause the following elements overlap, so:\r
+       CCSSP.PrepareFilter( this.ele );\r
+       CCSSP.ShowObject(this.ele, !this.bIsIn );\r
+}\r
+\r
+CAgencyAlpha.prototype.UpdateEffect = function()\r
+{// to set the visual filter function\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+       if( typeof(this.ele.filters.alpha) != "object" )\r
+       {\r
+               this.EndEffect();\r
+               return;\r
+       }\r
+\r
+       var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+       if( percent >= 1.0 )\r
+               this.EndEffect();\r
+       else if( typeof(this.ele.filters.alpha) == "object" )\r
+       {\r
+               this.ele.filters.alpha.opacity = this.startOpacity*(1.0-percent) + this.endOpacity*percent;\r
+               if( this.timer == null )\r
+                       this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 20 );\r
+       }\r
+}\r
+\r
+CAgencyAlpha.prototype.EndEffect = function()\r
+{// to remove the visual filter function\r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+       this.ele.style.filter = "";\r
+       CCSSP.ShowObject(this.ele, this.bIsIn );\r
+}\r
+\r
+CAgencyAlpha.prototype.ResetParameters = function()\r
+{\r
+       this.PrepareEffect();\r
+       CCSSP.ShowObject(this.ele, true );\r
+       this.ele.style.filter = "alpha(opacity=" + this.startOpacity + ")";\r
+       this.startTime = (new Date()).getTime();\r
+}\r
+// End of the CAgencyAlpha definition\r
+\r
+// Begin of CAgencyWave definition\r
+function CAgencyWave( element, settings )\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+\r
+       this.duration = 0; // default\r
+       this.strength = 10;\r
+       this.freq = 1;\r
+       this.lightstrength = 1;\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "duration" : this.duration = 100000/arrOneSet[1]; break;\r
+               case "strength" : this.strength = arrOneSet[1]; break;\r
+               case "freq" : this.freq = arrOneSet[1]; break;\r
+               case "lightstrength" : this.lightstrength = arrOneSet[1]; break;\r
+               }\r
+       }\r
+\r
+       this.timer = null;\r
+       this.aniIndex = CEngine.arrAnimation.length;\r
+       CEngine.arrAnimation[this.aniIndex] = this;\r
+}\r
+\r
+CAgencyWave.prototype.PrepareEffect = function()\r
+{// to set the visual filter function\r
+       CCSSP.PrepareFilter(this.ele);\r
+\r
+       CCSSP.ShowObject(this.ele, true );\r
+}\r
+\r
+CAgencyWave.prototype.UpdateEffect = function()\r
+{// to set the visual filter function\r
+       if( this.timer == null )\r
+               this.ResetParameters();\r
+       if( typeof(this.ele.filters.wave) != "object" )\r
+       {\r
+               this.EndEffect();\r
+               return;\r
+       }\r
+\r
+       if( this.duration > 0 )\r
+       {\r
+               var percent = ((new Date()).getTime() - this.startTime)/this.duration;\r
+               if( percent >= 1.0 )\r
+               {\r
+                       this.EndEffect();\r
+                       return;\r
+               }\r
+       }\r
+       \r
+       this.ele.filters.wave.phase += 5;\r
+       this.ele.filters.wave.phase %= 100;\r
+       if( this.timer == null )\r
+               this.timer = setInterval("CEngine.PerformAnimation(" + this.aniIndex + ")", 50 );\r
+}\r
+\r
+CAgencyWave.prototype.EndEffect = function()\r
+{// to remove the visual filter function\r
+       this.ele.style.filter = "";\r
+       clearInterval( this.timer );\r
+       this.timer = null;\r
+}\r
+\r
+CAgencyWave.prototype.ResetParameters = function()\r
+{\r
+       this.PrepareEffect();\r
+       this.ele.style.filter = "wave(strength=" + this.strength + ",freq=" + \r
+        this.freq +", lightstrength=" + this.lightstrength +",phase=0);";\r
+       this.startTime = (new Date()).getTime();\r
+}\r
+// End of the CAgencyWave definition\r
+\r
+// Begin of CAgencyGlow definition\r
+function CAgencyGlow( element, settings )\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+\r
+       // to set the default value\r
+       this.glowColor = "green";\r
+       this.glowStrength = "3";\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "color" : this.glowColor = arrOneSet[1]; break;\r
+               case "strength" : this.glowStrength = arrOneSet[1]; break;\r
+               }\r
+       }\r
+}\r
+\r
+CAgencyGlow.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.PrepareFilter(this.ele);\r
+       CCSSP.ShowObject(this.ele, true );\r
+       if( this.ele.style.backgroundColor != "" )\r
+       {//style.backgroundColor somehow stop the visual filter\r
+               this.ele.intactBackgroundColor = this.ele.style.backgroundColor;\r
+               this.ele.style.backgroundColor = "";\r
+       }\r
+}\r
+\r
+CAgencyGlow.prototype.UpdateEffect = function()\r
+{// to set the visual filter function\r
+       this.PrepareEffect();\r
+       this.ele.style.filter = "glow(Color=" + this.glowColor + ", Strength=" + \r
+               this.glowStrength + ", enabled=true" +")";\r
+}\r
+\r
+CAgencyGlow.prototype.EndEffect = function()\r
+{// to remove the visual filter function\r
+       this.ele.style.filter = "";\r
+       if( typeof(this.ele.intactBackgroundColor) != "undefined" )\r
+               this.ele.style.backgroundColor = this.ele.intactBackgroundColor;\r
+}\r
+// End of the CAgencyGlow definition\r
+\r
+// Begin of CAgencyDropShadow definition\r
+function CAgencyDropShadow( element, settings )\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+\r
+       // to set the default value\r
+       this.shadowColor = "black"; \r
+       this.shadowOffx = "1";\r
+       this.shadowOffy = "1";\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "color" : this.shadowColor = arrOneSet[1]; break;\r
+               case "offx" : this.shadowOffx = arrOneSet[1]; break;\r
+               case "offy" : this.shadowOffy = arrOneSet[1]; break;\r
+               }\r
+       }\r
+}\r
+\r
+CAgencyDropShadow.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.PrepareFilter(this.ele);\r
+       CCSSP.ShowObject(this.ele, true );\r
+       \r
+       if( this.ele.style.backgroundColor != "" )\r
+       {//style.backgroundColor somehow stop the visual filter\r
+               this.ele.intactBackgroundColor = this.ele.style.backgroundColor;\r
+               this.ele.style.backgroundColor = "";\r
+       }\r
+}\r
+\r
+CAgencyDropShadow.prototype.UpdateEffect = function()\r
+{// to set the visual filter function\r
+       this.PrepareEffect();\r
+       this.ele.style.filter = "dropshadow(color=" + this.shadowColor + ", offx=" + \r
+               this.shadowOffx + ", offy=" + this.shadowOffy + ")";\r
+}\r
+\r
+CAgencyDropShadow.prototype.EndEffect = function()\r
+{// to remove the visual filter function\r
+       this.ele.style.filter = "";\r
+       if( typeof(this.ele.intactBackgroundColor) != "undefined" )\r
+               this.ele.style.backgroundColor = this.ele.intactBackgroundColor;\r
+}\r
+// End of the CAgencyDropShadow definition\r
+\r
+// Begin of CAgencyRevealTrans definition\r
+function CAgencyRevealTrans( element, settings )\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+\r
+       // to set the default value\r
+       this.duration = 1.0; //The value is specified in seconds.milliseconds format (0.0000).\r
+       this.transition = 0;\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "type" : this.transition = arrOneSet[1]; break;\r
+               case "duration" : this.duration = 100/arrOneSet[1];     break;\r
+               }\r
+       }\r
+}\r
+\r
+CAgencyRevealTrans.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.PrepareFilter(this.ele);\r
+       CCSSP.ShowObject( this.ele, false);\r
+}\r
+\r
+CAgencyRevealTrans.prototype.UpdateEffect = function()\r
+{// to set the visual filter function\r
+       if( typeof( this.ele.filters.RevealTrans ) == "object" )\r
+       {\r
+               if( this.ele.filters.RevealTrans.status == 2 )\r
+                       this.ele.filters.RevealTrans.stop();  \r
+       }\r
+\r
+       this.PrepareEffect();\r
+       \r
+       this.ele.style.filter = "RevealTrans(duration=" + this.duration + \r
+               ", transition=" + this.transition + ")";\r
+       \r
+    if( typeof( this.ele.filters.RevealTrans ) == "object" )\r
+    {\r
+               this.ele.filters.RevealTrans.apply();\r
+               CCSSP.ShowObject( this.ele, true);\r
+               this.ele.filters.RevealTrans.play();  \r
+       }\r
+       else\r
+               CCSSP.ShowObject( this.ele, true);\r
+}\r
+\r
+CAgencyRevealTrans.prototype.EndEffect = function()\r
+{\r
+    if( typeof( this.ele.filters.RevealTrans ) == "object" )\r
+               this.ele.filters.RevealTrans.stop();  \r
+       this.ele.style.filter = "";\r
+}\r
+// End of the CAgencyRevealTrans definition\r
+\r
+// Begin of CAgencyBlur definition\r
+function CAgencyBlur( element, settings )\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+\r
+       // to set the default value\r
+       this.strength = "5";\r
+       this.direction = "90";\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "strength" : this.strength = arrOneSet[1]; break;\r
+               case "direction" : this.direction = arrOneSet[1]; break;\r
+               }\r
+       }\r
+}\r
+\r
+CAgencyBlur.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.PrepareFilter(this.ele);\r
+       CCSSP.ShowObject(this.ele, true );\r
+}\r
+\r
+CAgencyBlur.prototype.UpdateEffect = function()\r
+{// to set the visual filter function\r
+       CCSSP.PrepareFilter(this.ele);\r
+       this.ele.style.filter = "blur(strength=" + this.strength + \r
+               ", direction=" + this.direction + ")";\r
+}\r
+\r
+CAgencyBlur.prototype.EndEffect = function()\r
+{// to remove the visual filter function\r
+       this.ele.style.filter = "";\r
+}\r
+// End of the CAgencyBlur definition\r
+\r
+// Begin of CAgencyChangeFilter definition\r
+function CAgencyChangeFilter( element, settings ) // flipH, flipV, invert, grey,\r
+{// because of "visual filter" style, this won't work in Navigator\r
+       this.ele = element;\r
+\r
+       // to set the default value\r
+       this.filterFunction = settings;\r
+}\r
+\r
+CAgencyChangeFilter.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.PrepareFilter(this.ele);\r
+       CCSSP.ShowObject(this.ele, true );\r
+}\r
+\r
+CAgencyChangeFilter.prototype.UpdateEffect = function()\r
+{// to set the visual filter function\r
+       CCSSP.PrepareFilter(this.ele);\r
+       this.ele.style.filter = this.filterFunction;\r
+}\r
+\r
+CAgencyChangeFilter.prototype.EndEffect = function()\r
+{// to remove the visual filter function\r
+       this.ele.style.filter = "";\r
+}\r
+// End of the CAgencyChangeFilter definition\r
+\r
+// The effects below change the style on the fly, so they won't work in Navigator\r
+\r
+// Begin of CAgencyFontChange definition, \r
+function CAgencyFontChange( element, settings )\r
+{//this class can be replace by CAgencyChangeStyle,provided the "settings" is standard CSS string.\r
+       this.ele = element;\r
+       \r
+       // to retrieve the original font style\r
+       this.RetrieveOldFont( this.ele );\r
+       \r
+       // to set the default font to change\r
+       this.newfontFamily = this.ele.oldFontFamily;\r
+       this.newfColor = this.ele.oldColor;\r
+       this.newtextDecoration = this.ele.oldTextDecoration;\r
+       this.newfontWeight = this.ele.oldFontWeight;\r
+       this.newfontStyle = this.ele.oldFontStyle;\r
+       this.newfontSize = this.ele.oldFontSize;\r
+       this.newBackgroundColor = this.ele.oldBackgroundColor;\r
+       \r
+       var arrAllSet = settings.split(",");\r
+       for( var i = 0; i < arrAllSet.length; i ++ )\r
+       {// to retrieve the setting\r
+               arrAllSet[i] = CCSSP.TrimSpace(arrAllSet[i]);\r
+               var arrOneSet = arrAllSet[i].split("=");\r
+               for( var j = 0; j < arrOneSet.length; j++ )\r
+                       arrOneSet[j] = CCSSP.TrimSpace(arrOneSet[j]);\r
+               switch( arrOneSet[0] )\r
+               {\r
+               case "font-family" : this.newfontFamily = arrOneSet[1]; break;\r
+               case "color" : this.newfColor = arrOneSet[1]; break;\r
+               case "underline" : this.newtextDecoration = (arrOneSet[1]=="on")? "underline" : "none"; break;\r
+               case "bold" : this.newfontWeight = (arrOneSet[1]=="on")? "bold" : "normal"; break;\r
+               case "italic" : this.newfontStyle = (arrOneSet[1]=="on")? "italic" : "normal"; break;\r
+               case "size" : this.newfontSize = arrOneSet[1]; break;\r
+               case "background-color" : this.newBackgroundColor = arrOneSet[1]; break;\r
+               }\r
+       }\r
+}\r
+\r
+CAgencyFontChange.prototype.RetrieveOldFont = function(objChild)\r
+{\r
+       if( typeof(objChild.oldFontFamily) == "undefined" )\r
+               objChild.oldFontFamily = objChild.style.fontFamily;\r
+       if( typeof(objChild.oldColor) == "undefined" )\r
+               objChild.oldColor = objChild.style.color;\r
+       if( typeof(objChild.oldTextDecoration) == "undefined" )\r
+               objChild.oldTextDecoration = objChild.style.textDecoration;\r
+       if( typeof(objChild.oldFontWeight) == "undefined" )\r
+               objChild.oldFontWeight = objChild.style.fontWeight;\r
+       if( typeof(objChild.oldFontStyle) == "undefined" )\r
+               objChild.oldFontStyle = objChild.style.fontStyle;\r
+       if( typeof(objChild.oldFontSize) == "undefined" )\r
+               objChild.oldFontSize = objChild.style.fontSize;\r
+       if( typeof(objChild.oldBackgroundColor) == "undefined" )\r
+               objChild.oldBackgroundColor = objChild.style.backgroundColor;\r
+}\r
+\r
+CAgencyFontChange.prototype.PrepareEffect = function()\r
+{\r
+       // as for expanding text, the child is created after the constructor called\r
+       for(var index = 0; index < this.ele.all.length; index++)\r
+               this.RetrieveOldFont(this.ele.all[index]);\r
+       CCSSP.ShowObject(this.ele, true );\r
+}\r
+\r
+CAgencyFontChange.prototype.UpdateEffect = function()\r
+{// to change the font\r
+       this.PrepareEffect();\r
+       this.UpdateEffectAllChildren( this.ele );\r
+       for( var index = 0; index < this.ele.all.length; index++)\r
+               this.UpdateEffectAllChildren(this.ele.all[index]);\r
+}\r
+\r
+CAgencyFontChange.prototype.UpdateEffectAllChildren = function(objChild)\r
+{\r
+       objChild.style.fontFamily = this.newfontFamily;\r
+       objChild.style.color = this.newfColor;\r
+       objChild.style.textDecoration = this.newtextDecoration;\r
+       objChild.style.fontWeight = this.newfontWeight;\r
+       objChild.style.fontStyle = this.newfontStyle;\r
+       objChild.style.fontSize = this.newfontSize;\r
+       objChild.style.backgroundColor = this.newBackgroundColor;\r
+}\r
+\r
+CAgencyFontChange.prototype.EndEffect = function()\r
+{// to reinstate the original font style\r
+       this.EndEffectAllChildren( this.ele );\r
+       for( var index = 0; index < this.ele.all.length; index++)\r
+               this.EndEffectAllChildren(this.ele.all[index]);\r
+}\r
+\r
+CAgencyFontChange.prototype.EndEffectAllChildren = function( objChild )\r
+{\r
+       if( typeof(objChild.oldFontFamily) != "undefined" )\r
+               objChild.style.fontFamily = objChild.oldFontFamily;\r
+       if( typeof(objChild.oldColor) != "undefined" )\r
+               objChild.style.color = objChild.oldColor;\r
+       if( typeof(objChild.oldFontWeight) != "undefined" )\r
+               objChild.style.fontWeight = objChild.oldFontWeight;\r
+       if( typeof(objChild.oldFontStyle) != "undefined" )\r
+               objChild.style.fontStyle = objChild.oldFontStyle;\r
+       if( typeof(objChild.oldFontSize) != "undefined" )\r
+               objChild.style.fontSize = objChild.oldFontSize;\r
+       if( typeof(objChild.oldTextDecoration) != "undefined" )\r
+               objChild.style.textDecoration = objChild.oldTextDecoration;\r
+       if( typeof(objChild.oldBackgroundColor) != "undefined" )\r
+               objChild.style.backgroundColor = objChild.oldBackgroundColor;\r
+}\r
+// End of the CAgencyFontChange definition\r
+\r
+// Begin of the CAgencyChangeStyle definition\r
+function CAgencyChangeStyle( element, settings )\r
+{//this class can be replace by CAgencyChangeStyle,provided the "settings" is standard CSS string.\r
+       this.ele = element;\r
+       \r
+       // to retrieve the original style\r
+       this.oldstyle = this.ele.style.cssText;\r
+       \r
+       // to set the default style\r
+       this.newStyle = this.oldstyle;\r
+       \r
+       if( typeof(settings) == "string" && settings.length > 1 )\r
+               this.newStyle = this.oldstyle + " " + settings;\r
+}\r
+\r
+CAgencyChangeStyle.prototype.PrepareEffect = function()\r
+{\r
+       CCSSP.ShowObject(this.ele, true );\r
+}\r
+\r
+CAgencyChangeStyle.prototype.UpdateEffect = function()\r
+{// to change the style\r
+       this.ele.style.cssText = this.newStyle;\r
+}\r
+\r
+CAgencyChangeStyle.prototype.EndEffect = function()\r
+{// to reinstate the original style\r
+       this.ele.style.cssText = this.oldStyle;\r
+}\r
+// End of the CAgencyChangeStyle definition\r
+\r
+//End the definition of CAgencyXXXX classes\r
+\r
+//Begin to collaborate with other event handler settings \r
+CCSSP.RegisterEventHandler( window, "onload", "CEngine.OnPageLoad();BSSCOnLoad();kadovInitTriggersInHead();");\r
+CCSSP.RegisterEventHandler( document, "onclick", "CEngine.OnPageClick();BSSCOnClick();");\r
+CCSSP.RegisterEventHandler( document, "onmouseover", "CEngine.OnMouseOver();BSSCOnMouseOver();" );\r
+CCSSP.RegisterEventHandler( document, "onmouseout", "CEngine.OnMouseOver();BSSCOnMouseOut();" );\r
+CCSSP.RegisterEventHandler( window, "onunload", "BSSCOnUnload();");\r
+//End to collaborate with other event handler settings\r
+\r
+/// Section End  - CCSSP DHTM 2 (JavaScript 1.2)\r
+\r
+//// Segment End -- (JavaScript 1.2)
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/ex_green.jpg b/doc/salome/gui/GAUSS/ex_green.jpg
new file mode 100644 (file)
index 0000000..101a74e
Binary files /dev/null and b/doc/salome/gui/GAUSS/ex_green.jpg differ
diff --git a/doc/salome/gui/GAUSS/gauss points viewer.log b/doc/salome/gui/GAUSS/gauss points viewer.log
new file mode 100644 (file)
index 0000000..c4f72e3
--- /dev/null
@@ -0,0 +1,341 @@
+|SourceProjectName:Gauss Points Viewer.hpr\r
+|DestinationProjectName:gauss_points_viewer.htm\r
+whhost.js\r
+whmsg.js\r
+whmozemu.js\r
+whproxy.js\r
+whstub.js\r
+whutils.js\r
+whver.js\r
+whform.js\r
+whphost.js\r
+whstart.js\r
+whtopic.js\r
+whframes.js\r
+whlang.js\r
+whskin_info.htm\r
+whskin_blank.htm\r
+whskin_pickup.htm\r
+whskin_homepage.htm\r
+whskin_tw.htm\r
+whnjs.htm\r
+whthost.js\r
+whtdhtml.htm\r
+whihost.js\r
+whibody.htm\r
+whiform.htm\r
+whfhost.js\r
+whfbody.htm\r
+whfform.htm\r
+whghost.js\r
+whgbody.htm\r
+whgdhtml.htm\r
+whgdef.htm\r
+whproj.js\r
+whproj.xml\r
+whproj.htm\r
+whxdata\whtoc.xml\r
+whxdata\whidx.xml\r
+whxdata\whfts.xml\r
+whxdata\whglo.xml\r
+whdata\whtoc.js\r
+whdata\whtoc.htm\r
+whdata\whtdata.js\r
+whdata\whidx.js\r
+whdata\whidx.htm\r
+whdata\whidata.js\r
+whdata\whfts.js\r
+whdata\whfts.htm\r
+whdata\whglo.js\r
+whdata\whglo.htm\r
+whdata\whgdata.js\r
+whdata\whftdata.js\r
+whdata\whfwdata.js\r
+whres.xml\r
+webhelp.jar\r
+webhelp.cab\r
+whgdata\whnvp30.htm\r
+whgdata\whnvp31.htm\r
+whgdata\whnvp32.htm\r
+whgdata\whnvp33.htm\r
+whgdata\whnvt30.htm\r
+whgdata\whnvt31.htm\r
+whgdata\whnvt32.htm\r
+whgdata\whnvt33.htm\r
+whgdata\whnvf30.htm\r
+whgdata\whnvf31.htm\r
+whgdata\whnvf32.htm\r
+whgdata\whnvf33.htm\r
+whgdata\whnvl31.htm\r
+whgdata\whnvl32.htm\r
+whgdata\whnvl33.htm\r
+whgdata\whexpbar.gif\r
+cshdat_webhelp.htm\r
+whcsh_home.htm\r
+whcshdata.htm\r
+cshdat_robohelp.htm\r
+wht_tab0.gif\r
+wht_tab1.gif\r
+wht_tab2.gif\r
+wht_tab3.gif\r
+wht_tab4.gif\r
+wht_tab5.gif\r
+wht_tab6.gif\r
+wht_tab7.gif\r
+wht_tab8.gif\r
+wht_glo_h.gif\r
+wht_glo_n.gif\r
+wht_fts_h.gif\r
+wht_fts_n.gif\r
+wht_idx_h.gif\r
+wht_idx_n.gif\r
+wht_toc_h.gif\r
+wht_toc_n.gif\r
+wht_ws.gif\r
+wht_ws_g.gif\r
+wht_logo1.gif\r
+wht_logo2.gif\r
+wht_abgw.jpg\r
+wht_abgi.jpg\r
+wht_abge.jpg\r
+wht_abtw.jpg\r
+wht_abte.jpg\r
+wht_abti.jpg\r
+wht_spac.gif\r
+wht_next.gif\r
+wht_next_g.gif\r
+wht_prev.gif\r
+wht_prev_g.gif\r
+wht_sync.gif\r
+wht_hide.gif\r
+wht_go.gif\r
+whstart.ico\r
+whestart.ico\r
+whrstart.ico\r
+whidhtml.htm\r
+whfdhtml.htm\r
+whskin_banner.htm\r
+whtbar.js\r
+whskin_pdhtml.htm\r
+whskin_papplet.htm\r
+whskin_plist.htm\r
+whskin_tbars.htm\r
+whskin_mbars.htm\r
+wht_toc4.gif\r
+wht_toc1.gif\r
+wht_toc2.gif\r
+wht_toc3.gif\r
+whskin_frmset010.htm\r
+whst_topics.xml\r
+whskin_frmset01.htm\r
+gauss_points_viewer_hha.hhk\r
+gauss_points_viewer.hhc\r
+gauss_points_viewer.hhk\r
+activation_of_commands_display_results.htm\r
+animation_function.htm\r
+cameras.htm\r
+command_activation.htm\r
+command_activation_in_display_meshes.htm\r
+command_activation_picking.htm\r
+command_activation_segmentation.htm\r
+command_activation_timestamps_animation.htm\r
+command_deactivation.htm\r
+command_description_in_display_meshes.htm\r
+command_description_segmentation.htm\r
+command_description_timestamps_animation.htm\r
+command_result.htm\r
+description_of_commands_display_results.htm\r
+description_of_the_picking_functionality.htm\r
+display_meshes_general.htm\r
+display_results_at_gauss_points_general.htm\r
+general.htm\r
+general_navigation_within_the_scene.htm\r
+general_storage_of_produced_data.htm\r
+general_timestamps_animation.htm\r
+index.htm\r
+loading_of_previously_saved_data.htm\r
+making_an_avi_clip.htm\r
+managing_configurations.htm\r
+navigation_using_the_keyboard.htm\r
+navigation_using_the_mouse.htm\r
+navigation_using_the_spacemouse.htm\r
+picking_general.htm\r
+salome-visu_preferences_display_results.htm\r
+salome_visu_preferences.htm\r
+salome_visu_preferences_navigation_within_the_scene.htm\r
+salome_visu_preferences_picking.htm\r
+segmentation_general.htm\r
+specific_additional_commands_for_fields_items.htm\r
+ehelp.xml\r
+robohhre.lng\r
+gauss_points_viewer.glo\r
+default.css\r
+image114.gif\r
+image103.gif\r
+image97.gif\r
+image86.gif\r
+image64.gif\r
+image53.gif\r
+image42.gif\r
+image31.gif\r
+image9.gif\r
+image115.gif\r
+image104.gif\r
+image98.gif\r
+image87.gif\r
+image76.gif\r
+image65.gif\r
+image54.gif\r
+blue_down.jpg\r
+image32.gif\r
+image10.gif\r
+image116.gif\r
+image105.gif\r
+image99.gif\r
+image88.gif\r
+image77.gif\r
+image66.gif\r
+image55.gif\r
+image33.gif\r
+image11.gif\r
+image117.gif\r
+image106.gif\r
+image89.gif\r
+image78.gif\r
+image67.gif\r
+image56.gif\r
+image45.gif\r
+image34.gif\r
+image12.gif\r
+image107.gif\r
+image79.gif\r
+image68.gif\r
+image57.gif\r
+image46.gif\r
+image35.gif\r
+image13.gif\r
+image108.gif\r
+image69.gif\r
+image58.gif\r
+image47.gif\r
+image36.gif\r
+image109.gif\r
+image59.gif\r
+image48.gif\r
+image37.gif\r
+image49.gif\r
+image38.gif\r
+image39.gif\r
+image28.gif\r
+info_blue.jpg\r
+image29.gif\r
+image1.gif\r
+image90.gif\r
+blue_up.jpg\r
+image91.gif\r
+ex_green.jpg\r
+image80.gif\r
+image3.gif\r
+image92.gif\r
+image81.gif\r
+image70.gif\r
+image4.gif\r
+image110.gif\r
+image93.gif\r
+image82.gif\r
+purple_right_sm.jpg\r
+image71.gif\r
+image60.gif\r
+image5.gif\r
+image111.gif\r
+image100.gif\r
+image94.gif\r
+image83.gif\r
+image72.gif\r
+image61.gif\r
+image50.gif\r
+image6.gif\r
+image112.gif\r
+image101.gif\r
+image95.gif\r
+image73.gif\r
+image62.gif\r
+image51.gif\r
+blue_left.jpg\r
+image40.gif\r
+image7.gif\r
+image113.gif\r
+image102.gif\r
+image96.gif\r
+image85.gif\r
+image74.gif\r
+image63.gif\r
+image52.gif\r
+blue_right.jpg\r
+image30.gif\r
+image8.gif\r
+ehlpdhtm.js\r
+gauss_points_viewer.ppf\r
+default_ns.css\r
+whxdata\whtdata0.xml\r
+whxdata\whftdata0.xml\r
+whxdata\whfwdata0.xml\r
+whxdata\whfwdata1.xml\r
+whxdata\whfwdata2.xml\r
+whxdata\whfwdata3.xml\r
+whdata\whtdata0.htm\r
+whdata\whftdata0.htm\r
+whdata\whfwdata0.htm\r
+whdata\whfwdata1.htm\r
+whdata\whfwdata2.htm\r
+whdata\whfwdata3.htm\r
+whgdata\whlstt0.htm\r
+whgdata\whlstt1.htm\r
+whgdata\whlstt2.htm\r
+whgdata\whlstt3.htm\r
+whgdata\whlstt4.htm\r
+whgdata\whlstt5.htm\r
+whgdata\whlstt6.htm\r
+whgdata\whlstt7.htm\r
+whgdata\whlstt8.htm\r
+whgdata\whlstt9.htm\r
+whgdata\whlstt10.htm\r
+whgdata\whlstt11.htm\r
+whgdata\whlsti0.htm\r
+whgdata\whlstfl0.htm\r
+whgdata\whlstfl1.htm\r
+whgdata\whlstfl2.htm\r
+whgdata\whlstfl3.htm\r
+whgdata\whlstfl4.htm\r
+whgdata\whlstfl5.htm\r
+whgdata\whlstfl6.htm\r
+whgdata\whlstfl7.htm\r
+whgdata\whlstfl8.htm\r
+whgdata\whlstfl9.htm\r
+whgdata\whlstfl10.htm\r
+whgdata\whlstfl11.htm\r
+whgdata\whlstfl12.htm\r
+whgdata\whlstfl13.htm\r
+whgdata\whlstfl14.htm\r
+whgdata\whlstfl15.htm\r
+whgdata\whlstfl16.htm\r
+whgdata\whlstfl17.htm\r
+whgdata\whlstfl18.htm\r
+whgdata\whlstfl19.htm\r
+whgdata\whlstfl20.htm\r
+whgdata\whlstfl21.htm\r
+whgdata\whlstfl22.htm\r
+whgdata\whlstfl23.htm\r
+whgdata\whlstf0.htm\r
+whgdata\whlstf1.htm\r
+whgdata\whlstf2.htm\r
+whgdata\whlstf3.htm\r
+whgdata\whlstf4.htm\r
+whgdata\whlstf5.htm\r
+whgdata\whlstf6.htm\r
+whgdata\whlstf7.htm\r
+whgdata\whlstf8.htm\r
+whgdata\whlstg0.htm\r
+gauss_points_viewer.htm\r
+gauss_points_viewer_csh.htm\r
+gauss_points_viewer_rhc.htm\r
diff --git a/doc/salome/gui/GAUSS/gauss_points_viewer.htm b/doc/salome/gui/GAUSS/gauss_points_viewer.htm
new file mode 100644 (file)
index 0000000..138b4ed
--- /dev/null
@@ -0,0 +1,139 @@
+\r
+<html>\r
+<head><script language="javascript">\r
+<!--\r
+var sIcon="whstart.ico";\r
+var sPath=document.location.href;\r
+if (sPath.indexOf("http")!= -1)\r
+       document.write("<link REL=\"SHORTCUT ICON\" href=\""+ sIcon +"\">");\r
+//-->\r
+</script>\r
+ <title>Gauss Points Viewer</title>\r
+ <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+ <meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" >\r
+<!--\r
+if (!window.gbWhVer||!window.gbWhUtil||!window.gbWhMsg)\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+\r
+<script type="text/javascript" language="javascript" src="whstub.js"></script>\r
+<script language="javascript">\r
+<!--\r
+var nWebhelpNavPaneMode = 1;                   //1: DHTML 2:Applet 3:PureHTML 4:NoframeAt all\r
+var strPaneDHTML  = "whskin_pdhtml.htm";               //whd_nvp10.htm  if tab enabled, whnframe.htm if tab disabled.\r
+var strPaneApplet = "whskin_papplet.htm";\r
+var strPaneList   = "whskin_plist.htm";\r
+var bNoApplet  = false;\r
+\r
+var strPane = "";\r
+\r
+var nViewFrameType = -1;\r
+\r
+if (!window.gAgent)\r
+{\r
+       // low end browser, we don't even try to determine it.\r
+       document.location = "whnjs.htm";\r
+}\r
+else\r
+{\r
+       if (!gbNav4&&!gbIE4&&!gbOpera7&&!gbSafari)                              \r
+               document.location = "whnjs.htm";\r
+       else if (gbNav4 && !gbNav6 && ((gnVerMinor <= 4.06)))\r
+               document.location = "whnjs.htm";\r
+       else if (gbMac && gbIE4 && !gbIE5)              \r
+               document.location = "whnjs.htm";\r
+       //figure out which mode is the best\r
+       else\r
+       {\r
+               nViewFrameType=nWebhelpNavPaneMode;\r
+               if (nWebhelpNavPaneMode==1||nWebhelpNavPaneMode == 2)\r
+               {\r
+                       var gbDHTML=(nWebhelpNavPaneMode==1);\r
+                       if (gbNav4)                                                                             nViewFrameType = 2;\r
+                       if (gbNav4&&(gnVerMinor < 4.1))                                         nViewFrameType = 3;\r
+                       if (gbNav4&&(gnVerMinor == 4.6))                                        nViewFrameType = 3;\r
+                       if (gbIE4&&gbDHTML)                                                                     nViewFrameType = 1;\r
+                       if (gbIE4&&gbSunOS&&nWebhelpNavPaneMode==2)                     nViewFrameType = 3;\r
+                       if (gbNav4&&gbSunOS&&nViewFrameType==2)                 nViewFrameType = 3;\r
+                       if (gbNav6&&gbDHTML)                                                            nViewFrameType = 1;\r
+                       if (gbNav6&&!gbNav61&&nWebhelpNavPaneMode == 2)         nViewFrameType = 3;\r
+                       if (gbMac)                                                                                      nViewFrameType = 3;\r
+                       if (gbOpera7&&nViewFrameType == 2)                                      nViewFrameType = 3;\r
+                       if ((bNoApplet)&&(nViewFrameType == 2))                         nViewFrameType = 3;\r
+               }\r
+       }\r
+}\r
+\r
+if (nViewFrameType!=-1)\r
+{\r
+       var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
+       //The colordepth of the 16 color on Windows is 1. \r
+       if ((gbWindows) && (gbNav4) && (window.screen) && (window.screen.colorDepth <= 4))\r
+       {\r
+          alert("WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.");\r
+          nViewFrameType = 3;\r
+       }\r
+\r
+       //figure out which one is navpane\r
+       // ReplaceMark:nViewFrameType = 1\r
+       if (nViewFrameType == 1)\r
+       {\r
+               if (gbNav4 && !gbNav6)\r
+                       strPane = strPaneList;\r
+               else\r
+                       strPane = strPaneDHTML;\r
+       }\r
+       else if (nViewFrameType == 2)\r
+               strPane = strPaneApplet;\r
+       else\r
+               strPane = strPaneList;\r
+}\r
+//-->\r
+</script>\r
+<script type="text/javascript" language="javascript" src="whstart.js"></script>\r
+<script type="text/javascript" language="javascript">\r
+<!--\r
+if (!gbIE4&&!gbNav4&&!gbOpera7&&!gbSafari)\r
+       document.location = "whnjs.htm";\r
+\r
+function CMRAgent( strID, strURL, strLabel, strFrameAttr )\r
+{\r
+  this.m_strID = strID;\r
+  this.m_strURL = strURL;\r
+  this.m_strLabel = strLabel;\r
+  this.m_strFrameAttr = strFrameAttr;\r
+}\r
+\r
+function CMRServer()\r
+{\r
+  this.m_cAgents = new Array;\r
+}\r
+var cMRServer = new CMRServer;\r
+// GetServerInfo\r
+// Registry the agent array handled by webhelp\r
+// ReplaceMark:MRServer.strServerData\r
+//-->\r
+</script>\r
+\r
+<script type="text/javascript" language="javascript">\r
+<!--\r
+if (nViewFrameType!=-1)\r
+{\r
+       var strHTML = "<frameset rows=\"32,*\" hostof=\"parent:toolbar!startpage:yes\" frameborder=\"0\" border=\"0\"><frame src=\"whskin_tbars.htm\" id=\"toolbar\" frameborder=\"0\" border=\"0\" scrolling=\"no\" noresize marginheight=\"0\" marginwidth=\"0\" title=\"Toolbar\"></frame><frame src=\"whskin_frmset01.htm\"  frameborder=\"1\" border=\"1\" scrolling=\"auto\" marginheight=\"0\" marginwidth=\"0\"></frame></frameset>";\r
+       document.write(strHTML);\r
+}\r
+//-->\r
+</script>\r
+\r
+<frameset cols="100%,*" frameborder=no border=0>\r
+  <frame src="whnjs.htm">\r
+  <frame src="whskin_blank.htm" noresize>\r
+</frameset>\r
+\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/gauss_points_viewer_csh.htm b/doc/salome/gui/GAUSS/gauss_points_viewer_csh.htm
new file mode 100644 (file)
index 0000000..c616213
--- /dev/null
@@ -0,0 +1,106 @@
+<html>\r
+<head>\r
+<title>Gauss Points Viewer</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<script language="javascript" src="whutils.js"></script>\r
+<script language="javascript">\r
+<!--\r
+var gCSHFileName   = "whc_data.htm";\r
+var gCSHSuffixName1 = "_csh.html";\r
+var gCSHSuffixName2 = "_csh.htm";\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+gCSHFileName="cshdat_webhelp.htm";\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+var gasProj = new Array();\r
+gasProj[0] = _getPath(document.location.href);\r
+var gCurrent = 0;\r
+\r
+function addProject(strProj)\r
+{\r
+       var len  = gasProj.length;\r
+       if (strProj)\r
+       {\r
+               strProj = _replaceSlash(strProj);\r
+               if (strProj.lastIndexOf("/") != strProj.length - 1)\r
+                       strProj += "/";\r
+               var strPPath = _getFullPath(_getPath(document.location.href), strProj);\r
+               var bFound = false;\r
+               for (var i = 0; i < len; i ++)\r
+               {\r
+                       if (isSamePath(gasProj[i], strPPath))\r
+                       {\r
+                               bFound = true;\r
+                               break;\r
+                       }\r
+               }\r
+               if (!bFound)\r
+                       gasProj[len] = strPPath;\r
+       }\r
+}\r
+\r
+function isSamePath(strPath1, strPath2)\r
+{\r
+       return strPath1.toLowerCase() == strPath2.toLowerCase();\r
+}\r
+\r
+function goNext()\r
+{\r
+       gCurrent ++;\r
+       var len = gasProj.length;\r
+       if (gCurrent >= len)\r
+               return getHomePage()\r
+       else\r
+               frames["csh"].location = gasProj[gCurrent] + gCSHFileName;\r
+       return "";\r
+}\r
+\r
+function getRelHomePage(strLocation)\r
+{\r
+       var strCurPPath = _getPath(strLocation);\r
+       var strOriPPath = _getPath(getHomePage());\r
+       var strRelPath = _getRelativeFileName(strOriPPath, strCurPPath);\r
+       var strURL = getHomePage() + "#" + strRelPath;\r
+       return strURL;\r
+}\r
+\r
+function getHomePage()\r
+{\r
+       var strHomePage;\r
+       var strTmp = location.toString();\r
+       var nPos = strTmp.indexOf("#");\r
+       if (nPos != -1)\r
+       {\r
+          strHomePage = strTmp.substring(0, nPos);\r
+       }\r
+       else\r
+       {\r
+          strHomePage = strTmp;\r
+       }\r
+       var nPos1 = strHomePage.indexOf(gCSHSuffixName1);\r
+       var nPos = strHomePage.indexOf(gCSHSuffixName2);\r
+       if (nPos != -1)\r
+       {\r
+          strHomePage = strHomePage.substring(0,nPos);\r
+          if (nPos1 != -1)\r
+            strHomePage += ".html";\r
+          else\r
+            strHomePage += ".htm";\r
+       }\r
+       return strHomePage;\r
+}\r
+//-->\r
+</script>\r
+</head>\r
+<frameset rows="1,*">\r
+<frame name="dumb" src="about:blank"></frame>\r
+<frame name="csh" src="cshdat_webhelp.htm"></frame>            \r
+</frameset>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/gauss_points_viewer_rhc.htm b/doc/salome/gui/GAUSS/gauss_points_viewer_rhc.htm
new file mode 100644 (file)
index 0000000..25bc79e
--- /dev/null
@@ -0,0 +1,106 @@
+<html>\r
+<head>\r
+<title>Gauss Points Viewer</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<script language="javascript" src="whutils.js"></script>\r
+<script language="javascript">\r
+<!--\r
+var gCSHFileName   = "whc_data.htm";\r
+var gCSHSuffixName1 = "_rhc.html";\r
+var gCSHSuffixName2 = "_rhc.htm";\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+gCSHFileName="cshdat_robohelp.htm";\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+var gasProj = new Array();\r
+gasProj[0] = _getPath(document.location.href);\r
+var gCurrent = 0;\r
+\r
+function addProject(strProj)\r
+{\r
+       var len  = gasProj.length;\r
+       if (strProj)\r
+       {\r
+               strProj = _replaceSlash(strProj);\r
+               if (strProj.lastIndexOf("/") != strProj.length - 1)\r
+                       strProj += "/";\r
+               var strPPath = _getFullPath(_getPath(document.location.href), strProj);\r
+               var bFound = false;\r
+               for (var i = 0; i < len; i ++)\r
+               {\r
+                       if (isSamePath(gasProj[i], strPPath))\r
+                       {\r
+                               bFound = true;\r
+                               break;\r
+                       }\r
+               }\r
+               if (!bFound)\r
+                       gasProj[len] = strPPath;\r
+       }\r
+}\r
+\r
+function isSamePath(strPath1, strPath2)\r
+{\r
+       return strPath1.toLowerCase() == strPath2.toLowerCase();\r
+}\r
+\r
+function goNext()\r
+{\r
+       gCurrent ++;\r
+       var len = gasProj.length;\r
+       if (gCurrent >= len)\r
+               return getHomePage()\r
+       else\r
+               frames["csh"].location = gasProj[gCurrent] + gCSHFileName;\r
+       return "";\r
+}\r
+\r
+function getRelHomePage(strLocation)\r
+{\r
+       var strCurPPath = _getPath(strLocation);\r
+       var strOriPPath = _getPath(getHomePage());\r
+       var strRelPath = _getRelativeFileName(strOriPPath, strCurPPath);\r
+       var strURL = getHomePage() + "#" + strRelPath;\r
+       return strURL;\r
+}\r
+\r
+function getHomePage()\r
+{\r
+       var strHomePage;\r
+       var strTmp = location.toString();\r
+       var nPos = strTmp.indexOf("#");\r
+       if (nPos != -1)\r
+       {\r
+          strHomePage = strTmp.substring(0, nPos);\r
+       }\r
+       else\r
+       {\r
+          strHomePage = strTmp;\r
+       }\r
+       var nPos1 = strHomePage.indexOf(gCSHSuffixName1);\r
+       var nPos = strHomePage.indexOf(gCSHSuffixName2);\r
+       if (nPos != -1)\r
+       {\r
+          strHomePage = strHomePage.substring(0,nPos);\r
+          if (nPos1 != -1)\r
+            strHomePage += ".html";\r
+          else\r
+            strHomePage += ".htm";\r
+       }\r
+       return strHomePage;\r
+}\r
+//-->\r
+</script>\r
+</head>\r
+<frameset rows="1,*">\r
+<frame name="dumb" src="about:blank"></frame>\r
+<frame name="csh" src="cshdat_robohelp.htm"></frame>           \r
+</frameset>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/general.htm b/doc/salome/gui/GAUSS/general.htm
new file mode 100644 (file)
index 0000000..4a6d09e
--- /dev/null
@@ -0,0 +1,91 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Data Loading General</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo(" Loading of data\nGeneral");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>General</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> This standard behaviour already exists in Salome and \r
+ does not need to be modified here. The objective consists in handling \r
+ a Gauss point as an enhancement of the VISU module capabilities.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>We will first briefly remind here how the standard behaviour works. \r
+ Secondly, we will explain how Gauss points will be supported.</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/general_navigation_within_the_scene.htm b/doc/salome/gui/GAUSS/general_navigation_within_the_scene.htm
new file mode 100644 (file)
index 0000000..195c37a
--- /dev/null
@@ -0,0 +1,87 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>General Navigation within the scene</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Navigation within the scene\nGeneral");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>General</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> This section describes how to navigate within a 3D graphic \r
+ scene using a mouse, the keyboard or a spacemouse. It also describes the \r
+ type of movement for a camera to go from one point of view to another \r
+ one.</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/general_storage_of_produced_data.htm b/doc/salome/gui/GAUSS/general_storage_of_produced_data.htm
new file mode 100644 (file)
index 0000000..72f2dd6
--- /dev/null
@@ -0,0 +1,158 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>General Storage of produced data</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+ul.whs2 { list-style:disc; }\r
+ul.whs3 { list-style:circle; }\r
+p.whs4 { text-align:center; }\r
+img_whs5 { border:none; width:150px; height:132px; float:none; border-style:none; }\r
+p.whs6 { text-align:center; font-size:8pt; }\r
+img_whs7 { border:none; border-style:none; width:400px; height:273px; float:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Storage of produced data\nSaving data");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Saving data</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Information created during a session:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>Cameras</p></li>\r
+       \r
+       <li class=kadov-p><p>Configurations</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>have been published within the Study document and are visible in the \r
+ tree browser of the Study.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Salome provides a standard way to store this Study document \96 Mesh, \r
+ Results, Cameras and Segmentation cursors \96 in the form of an HDF file. \r
+ This behaviour will be used without modification.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The storage of the Study document is accessed from:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs3">\r
+       \r
+       <li class=kadov-p><p>The menu bar: <span style="font-weight: bold;"><B>File \r
+ &#9658; Save or File &#9658; Save As</B></span></p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs4"><img src="image78.gif" x-maintain-ratio="FALSE" width="150px" height="132px" border="0" class="img_whs5"></p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p align="center" class="whs6">Fig. 61 : Salome \91File\92 menu</p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p>The \91Save\92 option automatically updates the file on disk by keeping \r
+ its name. When this command is run for the first time on a new document, \r
+ then the \91Save As\92 command is executed. The \91Save As\92 command opens a \r
+ dialog that allows user:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>To define the location of the file (pathname)</p></li>\r
+       \r
+       <li class=kadov-p><p>To rename the file</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs4"><img src="image79.gif" x-maintain-ratio="FALSE" width="400px" height="273px" border="0" class="img_whs7"></p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p align="center" class="whs6">Fig. 62 : Salome \91Save As\92 dialog</p>\r
+\r
+<p align="center" class="whs6">&nbsp;</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/general_timestamps_animation.htm b/doc/salome/gui/GAUSS/general_timestamps_animation.htm
new file mode 100644 (file)
index 0000000..02ca52b
--- /dev/null
@@ -0,0 +1,91 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>General timestamps animation</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Timestamps animation\nGeneral");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>General</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Salome defines a standard way to show a timestamps animation. \r
+ This functionality will be extended to Results Gauss points.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The general behaviour of this command will not be changed in the frame \r
+ of this project. The following sections explain briefly how the animation \r
+ function of Salome is running.</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/image1.gif b/doc/salome/gui/GAUSS/image1.gif
new file mode 100644 (file)
index 0000000..fcece82
Binary files /dev/null and b/doc/salome/gui/GAUSS/image1.gif differ
diff --git a/doc/salome/gui/GAUSS/image10.gif b/doc/salome/gui/GAUSS/image10.gif
new file mode 100644 (file)
index 0000000..c005ebf
Binary files /dev/null and b/doc/salome/gui/GAUSS/image10.gif differ
diff --git a/doc/salome/gui/GAUSS/image100.gif b/doc/salome/gui/GAUSS/image100.gif
new file mode 100644 (file)
index 0000000..1193d85
Binary files /dev/null and b/doc/salome/gui/GAUSS/image100.gif differ
diff --git a/doc/salome/gui/GAUSS/image101.gif b/doc/salome/gui/GAUSS/image101.gif
new file mode 100644 (file)
index 0000000..ace2106
Binary files /dev/null and b/doc/salome/gui/GAUSS/image101.gif differ
diff --git a/doc/salome/gui/GAUSS/image102.gif b/doc/salome/gui/GAUSS/image102.gif
new file mode 100644 (file)
index 0000000..4a4900f
Binary files /dev/null and b/doc/salome/gui/GAUSS/image102.gif differ
diff --git a/doc/salome/gui/GAUSS/image103.gif b/doc/salome/gui/GAUSS/image103.gif
new file mode 100644 (file)
index 0000000..147612d
Binary files /dev/null and b/doc/salome/gui/GAUSS/image103.gif differ
diff --git a/doc/salome/gui/GAUSS/image104.gif b/doc/salome/gui/GAUSS/image104.gif
new file mode 100644 (file)
index 0000000..584b367
Binary files /dev/null and b/doc/salome/gui/GAUSS/image104.gif differ
diff --git a/doc/salome/gui/GAUSS/image105.gif b/doc/salome/gui/GAUSS/image105.gif
new file mode 100644 (file)
index 0000000..9d74786
Binary files /dev/null and b/doc/salome/gui/GAUSS/image105.gif differ
diff --git a/doc/salome/gui/GAUSS/image106.gif b/doc/salome/gui/GAUSS/image106.gif
new file mode 100644 (file)
index 0000000..b492636
Binary files /dev/null and b/doc/salome/gui/GAUSS/image106.gif differ
diff --git a/doc/salome/gui/GAUSS/image107.gif b/doc/salome/gui/GAUSS/image107.gif
new file mode 100644 (file)
index 0000000..ed09489
Binary files /dev/null and b/doc/salome/gui/GAUSS/image107.gif differ
diff --git a/doc/salome/gui/GAUSS/image108.gif b/doc/salome/gui/GAUSS/image108.gif
new file mode 100644 (file)
index 0000000..a1874ca
Binary files /dev/null and b/doc/salome/gui/GAUSS/image108.gif differ
diff --git a/doc/salome/gui/GAUSS/image109.gif b/doc/salome/gui/GAUSS/image109.gif
new file mode 100644 (file)
index 0000000..4a4900f
Binary files /dev/null and b/doc/salome/gui/GAUSS/image109.gif differ
diff --git a/doc/salome/gui/GAUSS/image11.gif b/doc/salome/gui/GAUSS/image11.gif
new file mode 100644 (file)
index 0000000..9db7337
Binary files /dev/null and b/doc/salome/gui/GAUSS/image11.gif differ
diff --git a/doc/salome/gui/GAUSS/image110.gif b/doc/salome/gui/GAUSS/image110.gif
new file mode 100644 (file)
index 0000000..584b367
Binary files /dev/null and b/doc/salome/gui/GAUSS/image110.gif differ
diff --git a/doc/salome/gui/GAUSS/image111.gif b/doc/salome/gui/GAUSS/image111.gif
new file mode 100644 (file)
index 0000000..9d74786
Binary files /dev/null and b/doc/salome/gui/GAUSS/image111.gif differ
diff --git a/doc/salome/gui/GAUSS/image112.gif b/doc/salome/gui/GAUSS/image112.gif
new file mode 100644 (file)
index 0000000..147612d
Binary files /dev/null and b/doc/salome/gui/GAUSS/image112.gif differ
diff --git a/doc/salome/gui/GAUSS/image113.gif b/doc/salome/gui/GAUSS/image113.gif
new file mode 100644 (file)
index 0000000..9d74786
Binary files /dev/null and b/doc/salome/gui/GAUSS/image113.gif differ
diff --git a/doc/salome/gui/GAUSS/image114.gif b/doc/salome/gui/GAUSS/image114.gif
new file mode 100644 (file)
index 0000000..12fe200
Binary files /dev/null and b/doc/salome/gui/GAUSS/image114.gif differ
diff --git a/doc/salome/gui/GAUSS/image115.gif b/doc/salome/gui/GAUSS/image115.gif
new file mode 100644 (file)
index 0000000..ac02dbf
Binary files /dev/null and b/doc/salome/gui/GAUSS/image115.gif differ
diff --git a/doc/salome/gui/GAUSS/image116.gif b/doc/salome/gui/GAUSS/image116.gif
new file mode 100644 (file)
index 0000000..289665a
Binary files /dev/null and b/doc/salome/gui/GAUSS/image116.gif differ
diff --git a/doc/salome/gui/GAUSS/image117.gif b/doc/salome/gui/GAUSS/image117.gif
new file mode 100644 (file)
index 0000000..c0e2715
Binary files /dev/null and b/doc/salome/gui/GAUSS/image117.gif differ
diff --git a/doc/salome/gui/GAUSS/image12.gif b/doc/salome/gui/GAUSS/image12.gif
new file mode 100644 (file)
index 0000000..876f656
Binary files /dev/null and b/doc/salome/gui/GAUSS/image12.gif differ
diff --git a/doc/salome/gui/GAUSS/image13.gif b/doc/salome/gui/GAUSS/image13.gif
new file mode 100644 (file)
index 0000000..948e0ab
Binary files /dev/null and b/doc/salome/gui/GAUSS/image13.gif differ
diff --git a/doc/salome/gui/GAUSS/image28.gif b/doc/salome/gui/GAUSS/image28.gif
new file mode 100644 (file)
index 0000000..cac7cd7
Binary files /dev/null and b/doc/salome/gui/GAUSS/image28.gif differ
diff --git a/doc/salome/gui/GAUSS/image29.gif b/doc/salome/gui/GAUSS/image29.gif
new file mode 100644 (file)
index 0000000..5aa238a
Binary files /dev/null and b/doc/salome/gui/GAUSS/image29.gif differ
diff --git a/doc/salome/gui/GAUSS/image3.gif b/doc/salome/gui/GAUSS/image3.gif
new file mode 100644 (file)
index 0000000..2d37f24
Binary files /dev/null and b/doc/salome/gui/GAUSS/image3.gif differ
diff --git a/doc/salome/gui/GAUSS/image30.gif b/doc/salome/gui/GAUSS/image30.gif
new file mode 100644 (file)
index 0000000..f78b7c2
Binary files /dev/null and b/doc/salome/gui/GAUSS/image30.gif differ
diff --git a/doc/salome/gui/GAUSS/image31.gif b/doc/salome/gui/GAUSS/image31.gif
new file mode 100644 (file)
index 0000000..440dd6e
Binary files /dev/null and b/doc/salome/gui/GAUSS/image31.gif differ
diff --git a/doc/salome/gui/GAUSS/image32.gif b/doc/salome/gui/GAUSS/image32.gif
new file mode 100644 (file)
index 0000000..ac13a4f
Binary files /dev/null and b/doc/salome/gui/GAUSS/image32.gif differ
diff --git a/doc/salome/gui/GAUSS/image33.gif b/doc/salome/gui/GAUSS/image33.gif
new file mode 100644 (file)
index 0000000..a2eedf5
Binary files /dev/null and b/doc/salome/gui/GAUSS/image33.gif differ
diff --git a/doc/salome/gui/GAUSS/image34.gif b/doc/salome/gui/GAUSS/image34.gif
new file mode 100644 (file)
index 0000000..dbdc5a1
Binary files /dev/null and b/doc/salome/gui/GAUSS/image34.gif differ
diff --git a/doc/salome/gui/GAUSS/image35.gif b/doc/salome/gui/GAUSS/image35.gif
new file mode 100644 (file)
index 0000000..c9f1f55
Binary files /dev/null and b/doc/salome/gui/GAUSS/image35.gif differ
diff --git a/doc/salome/gui/GAUSS/image36.gif b/doc/salome/gui/GAUSS/image36.gif
new file mode 100644 (file)
index 0000000..5673d52
Binary files /dev/null and b/doc/salome/gui/GAUSS/image36.gif differ
diff --git a/doc/salome/gui/GAUSS/image37.gif b/doc/salome/gui/GAUSS/image37.gif
new file mode 100644 (file)
index 0000000..2689532
Binary files /dev/null and b/doc/salome/gui/GAUSS/image37.gif differ
diff --git a/doc/salome/gui/GAUSS/image38.gif b/doc/salome/gui/GAUSS/image38.gif
new file mode 100644 (file)
index 0000000..eb7faa5
Binary files /dev/null and b/doc/salome/gui/GAUSS/image38.gif differ
diff --git a/doc/salome/gui/GAUSS/image39.gif b/doc/salome/gui/GAUSS/image39.gif
new file mode 100644 (file)
index 0000000..ed16fd4
Binary files /dev/null and b/doc/salome/gui/GAUSS/image39.gif differ
diff --git a/doc/salome/gui/GAUSS/image4.gif b/doc/salome/gui/GAUSS/image4.gif
new file mode 100644 (file)
index 0000000..87712a2
Binary files /dev/null and b/doc/salome/gui/GAUSS/image4.gif differ
diff --git a/doc/salome/gui/GAUSS/image40.gif b/doc/salome/gui/GAUSS/image40.gif
new file mode 100644 (file)
index 0000000..2dc41a9
Binary files /dev/null and b/doc/salome/gui/GAUSS/image40.gif differ
diff --git a/doc/salome/gui/GAUSS/image41.gif b/doc/salome/gui/GAUSS/image41.gif
new file mode 100644 (file)
index 0000000..7bd333a
Binary files /dev/null and b/doc/salome/gui/GAUSS/image41.gif differ
diff --git a/doc/salome/gui/GAUSS/image42.gif b/doc/salome/gui/GAUSS/image42.gif
new file mode 100644 (file)
index 0000000..79395f6
Binary files /dev/null and b/doc/salome/gui/GAUSS/image42.gif differ
diff --git a/doc/salome/gui/GAUSS/image45.gif b/doc/salome/gui/GAUSS/image45.gif
new file mode 100644 (file)
index 0000000..d96fcb1
Binary files /dev/null and b/doc/salome/gui/GAUSS/image45.gif differ
diff --git a/doc/salome/gui/GAUSS/image46.gif b/doc/salome/gui/GAUSS/image46.gif
new file mode 100644 (file)
index 0000000..0fe311c
Binary files /dev/null and b/doc/salome/gui/GAUSS/image46.gif differ
diff --git a/doc/salome/gui/GAUSS/image47.gif b/doc/salome/gui/GAUSS/image47.gif
new file mode 100644 (file)
index 0000000..57011e0
Binary files /dev/null and b/doc/salome/gui/GAUSS/image47.gif differ
diff --git a/doc/salome/gui/GAUSS/image48.gif b/doc/salome/gui/GAUSS/image48.gif
new file mode 100644 (file)
index 0000000..4733090
Binary files /dev/null and b/doc/salome/gui/GAUSS/image48.gif differ
diff --git a/doc/salome/gui/GAUSS/image49.gif b/doc/salome/gui/GAUSS/image49.gif
new file mode 100644 (file)
index 0000000..94df647
Binary files /dev/null and b/doc/salome/gui/GAUSS/image49.gif differ
diff --git a/doc/salome/gui/GAUSS/image5.gif b/doc/salome/gui/GAUSS/image5.gif
new file mode 100644 (file)
index 0000000..55cb8f4
Binary files /dev/null and b/doc/salome/gui/GAUSS/image5.gif differ
diff --git a/doc/salome/gui/GAUSS/image50.gif b/doc/salome/gui/GAUSS/image50.gif
new file mode 100644 (file)
index 0000000..d86bc15
Binary files /dev/null and b/doc/salome/gui/GAUSS/image50.gif differ
diff --git a/doc/salome/gui/GAUSS/image51.gif b/doc/salome/gui/GAUSS/image51.gif
new file mode 100644 (file)
index 0000000..e568a49
Binary files /dev/null and b/doc/salome/gui/GAUSS/image51.gif differ
diff --git a/doc/salome/gui/GAUSS/image52.gif b/doc/salome/gui/GAUSS/image52.gif
new file mode 100644 (file)
index 0000000..d376407
Binary files /dev/null and b/doc/salome/gui/GAUSS/image52.gif differ
diff --git a/doc/salome/gui/GAUSS/image53.gif b/doc/salome/gui/GAUSS/image53.gif
new file mode 100644 (file)
index 0000000..139f9ee
Binary files /dev/null and b/doc/salome/gui/GAUSS/image53.gif differ
diff --git a/doc/salome/gui/GAUSS/image54.gif b/doc/salome/gui/GAUSS/image54.gif
new file mode 100644 (file)
index 0000000..7391fdd
Binary files /dev/null and b/doc/salome/gui/GAUSS/image54.gif differ
diff --git a/doc/salome/gui/GAUSS/image55.gif b/doc/salome/gui/GAUSS/image55.gif
new file mode 100644 (file)
index 0000000..f11da80
Binary files /dev/null and b/doc/salome/gui/GAUSS/image55.gif differ
diff --git a/doc/salome/gui/GAUSS/image56.gif b/doc/salome/gui/GAUSS/image56.gif
new file mode 100644 (file)
index 0000000..3249022
Binary files /dev/null and b/doc/salome/gui/GAUSS/image56.gif differ
diff --git a/doc/salome/gui/GAUSS/image57.gif b/doc/salome/gui/GAUSS/image57.gif
new file mode 100644 (file)
index 0000000..8feab1b
Binary files /dev/null and b/doc/salome/gui/GAUSS/image57.gif differ
diff --git a/doc/salome/gui/GAUSS/image58.gif b/doc/salome/gui/GAUSS/image58.gif
new file mode 100644 (file)
index 0000000..0acbd99
Binary files /dev/null and b/doc/salome/gui/GAUSS/image58.gif differ
diff --git a/doc/salome/gui/GAUSS/image59.gif b/doc/salome/gui/GAUSS/image59.gif
new file mode 100644 (file)
index 0000000..72ff634
Binary files /dev/null and b/doc/salome/gui/GAUSS/image59.gif differ
diff --git a/doc/salome/gui/GAUSS/image6.gif b/doc/salome/gui/GAUSS/image6.gif
new file mode 100644 (file)
index 0000000..79395f6
Binary files /dev/null and b/doc/salome/gui/GAUSS/image6.gif differ
diff --git a/doc/salome/gui/GAUSS/image60.gif b/doc/salome/gui/GAUSS/image60.gif
new file mode 100644 (file)
index 0000000..e5d60d7
Binary files /dev/null and b/doc/salome/gui/GAUSS/image60.gif differ
diff --git a/doc/salome/gui/GAUSS/image61.gif b/doc/salome/gui/GAUSS/image61.gif
new file mode 100644 (file)
index 0000000..a6ae4a1
Binary files /dev/null and b/doc/salome/gui/GAUSS/image61.gif differ
diff --git a/doc/salome/gui/GAUSS/image62.gif b/doc/salome/gui/GAUSS/image62.gif
new file mode 100644 (file)
index 0000000..841037e
Binary files /dev/null and b/doc/salome/gui/GAUSS/image62.gif differ
diff --git a/doc/salome/gui/GAUSS/image63.gif b/doc/salome/gui/GAUSS/image63.gif
new file mode 100644 (file)
index 0000000..cd17dea
Binary files /dev/null and b/doc/salome/gui/GAUSS/image63.gif differ
diff --git a/doc/salome/gui/GAUSS/image64.gif b/doc/salome/gui/GAUSS/image64.gif
new file mode 100644 (file)
index 0000000..6725916
Binary files /dev/null and b/doc/salome/gui/GAUSS/image64.gif differ
diff --git a/doc/salome/gui/GAUSS/image65.gif b/doc/salome/gui/GAUSS/image65.gif
new file mode 100644 (file)
index 0000000..e32c3ba
Binary files /dev/null and b/doc/salome/gui/GAUSS/image65.gif differ
diff --git a/doc/salome/gui/GAUSS/image66.gif b/doc/salome/gui/GAUSS/image66.gif
new file mode 100644 (file)
index 0000000..afbb92e
Binary files /dev/null and b/doc/salome/gui/GAUSS/image66.gif differ
diff --git a/doc/salome/gui/GAUSS/image67.gif b/doc/salome/gui/GAUSS/image67.gif
new file mode 100644 (file)
index 0000000..78aa93f
Binary files /dev/null and b/doc/salome/gui/GAUSS/image67.gif differ
diff --git a/doc/salome/gui/GAUSS/image68.gif b/doc/salome/gui/GAUSS/image68.gif
new file mode 100644 (file)
index 0000000..a6f5987
Binary files /dev/null and b/doc/salome/gui/GAUSS/image68.gif differ
diff --git a/doc/salome/gui/GAUSS/image69.gif b/doc/salome/gui/GAUSS/image69.gif
new file mode 100644 (file)
index 0000000..36f5760
Binary files /dev/null and b/doc/salome/gui/GAUSS/image69.gif differ
diff --git a/doc/salome/gui/GAUSS/image7.gif b/doc/salome/gui/GAUSS/image7.gif
new file mode 100644 (file)
index 0000000..918e9fd
Binary files /dev/null and b/doc/salome/gui/GAUSS/image7.gif differ
diff --git a/doc/salome/gui/GAUSS/image70.gif b/doc/salome/gui/GAUSS/image70.gif
new file mode 100644 (file)
index 0000000..0bdda8d
Binary files /dev/null and b/doc/salome/gui/GAUSS/image70.gif differ
diff --git a/doc/salome/gui/GAUSS/image71.gif b/doc/salome/gui/GAUSS/image71.gif
new file mode 100644 (file)
index 0000000..b7bea0d
Binary files /dev/null and b/doc/salome/gui/GAUSS/image71.gif differ
diff --git a/doc/salome/gui/GAUSS/image72.gif b/doc/salome/gui/GAUSS/image72.gif
new file mode 100644 (file)
index 0000000..aa84120
Binary files /dev/null and b/doc/salome/gui/GAUSS/image72.gif differ
diff --git a/doc/salome/gui/GAUSS/image73.gif b/doc/salome/gui/GAUSS/image73.gif
new file mode 100644 (file)
index 0000000..689ebf4
Binary files /dev/null and b/doc/salome/gui/GAUSS/image73.gif differ
diff --git a/doc/salome/gui/GAUSS/image74.gif b/doc/salome/gui/GAUSS/image74.gif
new file mode 100644 (file)
index 0000000..85713fa
Binary files /dev/null and b/doc/salome/gui/GAUSS/image74.gif differ
diff --git a/doc/salome/gui/GAUSS/image75.gif b/doc/salome/gui/GAUSS/image75.gif
new file mode 100644 (file)
index 0000000..5ba8835
Binary files /dev/null and b/doc/salome/gui/GAUSS/image75.gif differ
diff --git a/doc/salome/gui/GAUSS/image76.gif b/doc/salome/gui/GAUSS/image76.gif
new file mode 100644 (file)
index 0000000..79395f6
Binary files /dev/null and b/doc/salome/gui/GAUSS/image76.gif differ
diff --git a/doc/salome/gui/GAUSS/image77.gif b/doc/salome/gui/GAUSS/image77.gif
new file mode 100644 (file)
index 0000000..f9a9eb6
Binary files /dev/null and b/doc/salome/gui/GAUSS/image77.gif differ
diff --git a/doc/salome/gui/GAUSS/image78.gif b/doc/salome/gui/GAUSS/image78.gif
new file mode 100644 (file)
index 0000000..2b64381
Binary files /dev/null and b/doc/salome/gui/GAUSS/image78.gif differ
diff --git a/doc/salome/gui/GAUSS/image79.gif b/doc/salome/gui/GAUSS/image79.gif
new file mode 100644 (file)
index 0000000..23fc83b
Binary files /dev/null and b/doc/salome/gui/GAUSS/image79.gif differ
diff --git a/doc/salome/gui/GAUSS/image8.gif b/doc/salome/gui/GAUSS/image8.gif
new file mode 100644 (file)
index 0000000..4485327
Binary files /dev/null and b/doc/salome/gui/GAUSS/image8.gif differ
diff --git a/doc/salome/gui/GAUSS/image80.gif b/doc/salome/gui/GAUSS/image80.gif
new file mode 100644 (file)
index 0000000..441197f
Binary files /dev/null and b/doc/salome/gui/GAUSS/image80.gif differ
diff --git a/doc/salome/gui/GAUSS/image81.gif b/doc/salome/gui/GAUSS/image81.gif
new file mode 100644 (file)
index 0000000..ae508b4
Binary files /dev/null and b/doc/salome/gui/GAUSS/image81.gif differ
diff --git a/doc/salome/gui/GAUSS/image82.gif b/doc/salome/gui/GAUSS/image82.gif
new file mode 100644 (file)
index 0000000..e9a0d67
Binary files /dev/null and b/doc/salome/gui/GAUSS/image82.gif differ
diff --git a/doc/salome/gui/GAUSS/image83.gif b/doc/salome/gui/GAUSS/image83.gif
new file mode 100644 (file)
index 0000000..f38f696
Binary files /dev/null and b/doc/salome/gui/GAUSS/image83.gif differ
diff --git a/doc/salome/gui/GAUSS/image84.gif b/doc/salome/gui/GAUSS/image84.gif
new file mode 100644 (file)
index 0000000..8dffd8f
Binary files /dev/null and b/doc/salome/gui/GAUSS/image84.gif differ
diff --git a/doc/salome/gui/GAUSS/image85.gif b/doc/salome/gui/GAUSS/image85.gif
new file mode 100644 (file)
index 0000000..2675bcb
Binary files /dev/null and b/doc/salome/gui/GAUSS/image85.gif differ
diff --git a/doc/salome/gui/GAUSS/image86.gif b/doc/salome/gui/GAUSS/image86.gif
new file mode 100644 (file)
index 0000000..76080ca
Binary files /dev/null and b/doc/salome/gui/GAUSS/image86.gif differ
diff --git a/doc/salome/gui/GAUSS/image87.gif b/doc/salome/gui/GAUSS/image87.gif
new file mode 100644 (file)
index 0000000..61e26b2
Binary files /dev/null and b/doc/salome/gui/GAUSS/image87.gif differ
diff --git a/doc/salome/gui/GAUSS/image88.gif b/doc/salome/gui/GAUSS/image88.gif
new file mode 100644 (file)
index 0000000..16cdbf7
Binary files /dev/null and b/doc/salome/gui/GAUSS/image88.gif differ
diff --git a/doc/salome/gui/GAUSS/image89.gif b/doc/salome/gui/GAUSS/image89.gif
new file mode 100644 (file)
index 0000000..0d16c9e
Binary files /dev/null and b/doc/salome/gui/GAUSS/image89.gif differ
diff --git a/doc/salome/gui/GAUSS/image9.gif b/doc/salome/gui/GAUSS/image9.gif
new file mode 100644 (file)
index 0000000..80a7fd8
Binary files /dev/null and b/doc/salome/gui/GAUSS/image9.gif differ
diff --git a/doc/salome/gui/GAUSS/image90.gif b/doc/salome/gui/GAUSS/image90.gif
new file mode 100644 (file)
index 0000000..46b4000
Binary files /dev/null and b/doc/salome/gui/GAUSS/image90.gif differ
diff --git a/doc/salome/gui/GAUSS/image91.gif b/doc/salome/gui/GAUSS/image91.gif
new file mode 100644 (file)
index 0000000..0a72a69
Binary files /dev/null and b/doc/salome/gui/GAUSS/image91.gif differ
diff --git a/doc/salome/gui/GAUSS/image92.gif b/doc/salome/gui/GAUSS/image92.gif
new file mode 100644 (file)
index 0000000..fc4dc52
Binary files /dev/null and b/doc/salome/gui/GAUSS/image92.gif differ
diff --git a/doc/salome/gui/GAUSS/image93.gif b/doc/salome/gui/GAUSS/image93.gif
new file mode 100644 (file)
index 0000000..861d8ff
Binary files /dev/null and b/doc/salome/gui/GAUSS/image93.gif differ
diff --git a/doc/salome/gui/GAUSS/image94.gif b/doc/salome/gui/GAUSS/image94.gif
new file mode 100644 (file)
index 0000000..3022835
Binary files /dev/null and b/doc/salome/gui/GAUSS/image94.gif differ
diff --git a/doc/salome/gui/GAUSS/image95.gif b/doc/salome/gui/GAUSS/image95.gif
new file mode 100644 (file)
index 0000000..56bf92a
Binary files /dev/null and b/doc/salome/gui/GAUSS/image95.gif differ
diff --git a/doc/salome/gui/GAUSS/image96.gif b/doc/salome/gui/GAUSS/image96.gif
new file mode 100644 (file)
index 0000000..181a21a
Binary files /dev/null and b/doc/salome/gui/GAUSS/image96.gif differ
diff --git a/doc/salome/gui/GAUSS/image97.gif b/doc/salome/gui/GAUSS/image97.gif
new file mode 100644 (file)
index 0000000..87f6d19
Binary files /dev/null and b/doc/salome/gui/GAUSS/image97.gif differ
diff --git a/doc/salome/gui/GAUSS/image98.gif b/doc/salome/gui/GAUSS/image98.gif
new file mode 100644 (file)
index 0000000..4caa44c
Binary files /dev/null and b/doc/salome/gui/GAUSS/image98.gif differ
diff --git a/doc/salome/gui/GAUSS/image99.gif b/doc/salome/gui/GAUSS/image99.gif
new file mode 100644 (file)
index 0000000..d72c527
Binary files /dev/null and b/doc/salome/gui/GAUSS/image99.gif differ
diff --git a/doc/salome/gui/GAUSS/index.htm b/doc/salome/gui/GAUSS/index.htm
new file mode 100644 (file)
index 0000000..bc365df
--- /dev/null
@@ -0,0 +1,86 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Introduction</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; float:none; width:32px; height:37px; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Introduction to Gauss Points Viewer\nIntroduction");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Introduction</h1>\r
+\r
+<p><img src="info_blue.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="32px" height="37px" border="0" class="img_whs1"> This documentation describes the graphical user interface \r
\96 GUI \96 for each functionality concerned by the Code_Aster data viewer \r
+ at Gauss points in Salome.</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/info_blue.jpg b/doc/salome/gui/GAUSS/info_blue.jpg
new file mode 100644 (file)
index 0000000..5a58a70
Binary files /dev/null and b/doc/salome/gui/GAUSS/info_blue.jpg differ
diff --git a/doc/salome/gui/GAUSS/loading_of_previously_saved_data.htm b/doc/salome/gui/GAUSS/loading_of_previously_saved_data.htm
new file mode 100644 (file)
index 0000000..5652022
--- /dev/null
@@ -0,0 +1,118 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Loading of previously saved data</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+ul.whs1 { list-style:circle; }\r
+p.whs2 { text-align:center; }\r
+img_whs3 { border:none; border-style:none; width:400px; height:273px; float:none; }\r
+p.whs4 { text-align:center; font-size:8pt; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Loading of previously saved data\nLoading previously saved data");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Loading previously saved data</h1>\r
+\r
+<p>Mutually, Salome provides an open command from:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs1">\r
+       \r
+       <li class=kadov-p><p>The menu bar:<span style="font-weight: bold;"><B> \r
+ File &#9658; Open</B></span></p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>It opens up a dialog to browse the directory structure and to select \r
+ an HDF Study file.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image80.gif" x-maintain-ratio="FALSE" width="400px" height="273px" border="0" class="img_whs3"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 63 : Salome \91Open\92 dialog</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p>Once selected, user presses the \91Open\92 button to load the Study in the \r
+ Salome session.</p>\r
+\r
+<p>A new document is created and the Study is loaded within this clear \r
+ document.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/making_an_avi_clip.htm b/doc/salome/gui/GAUSS/making_an_avi_clip.htm
new file mode 100644 (file)
index 0000000..c30992f
--- /dev/null
@@ -0,0 +1,213 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Making an AVI clip</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+table.whs2 { x-cell-content-align:top; width:100%; border-spacing:0px; }\r
+col.whs3 { width:6.335%; }\r
+col.whs4 { width:93.665%; }\r
+tr.whs5 { x-cell-content-align:top; }\r
+td.whs6 { width:6.335%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+p.whs7 { text-align:center; }\r
+img_whs8 { border:none; width:28px; height:27px; border-style:none; }\r
+td.whs9 { width:93.665%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+td.whs10 { width:6.335%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+img_whs11 { border:none; width:28px; height:28px; border-style:none; }\r
+td.whs12 { width:93.665%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+img_whs13 { border:none; width:27px; height:25px; border-style:none; }\r
+p.whs14 { font-size:8pt; }\r
+p.whs15 { text-align:center; font-size:8pt; }\r
+col.whs16 { width:10.633%; }\r
+col.whs17 { width:89.367%; }\r
+td.whs18 { width:10.633%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+img_whs19 { border:none; width:66px; height:29px; border-style:none; }\r
+td.whs20 { width:89.367%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+td.whs21 { width:10.633%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+img_whs22 { border:none; width:66px; height:28px; border-style:none; }\r
+td.whs23 { width:89.367%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Making an AVI clip\nMaking an AVI clip");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Making an AVI clip</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> In order to satisfy all possible requests for video recording, \r
+ the functionality should be implemented as a background task. In this \r
+ case, user can start the video recording and manage it as he want. The \r
+ functionality will be available at any time for all contents of the 3D \r
+ scene. So, video recording of animation or segmentation will be performed \r
+ in the same way.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>User can manage the video recording by using the following GUI controls:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="100%" class="whs2">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='100%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs3">\r
+<col class="whs4">\r
+\r
+<tr valign="top" class="whs5">\r
+<td valign="middle" width="6.335%" class="whs6">\r
+<p align="center" class="whs7"><img src="image102.gif" width="28px" height="27px" border="0" class="img_whs8"></td>\r
+<td width="93.665%" class="whs9">\r
+<p>Start button \96 starts the video recording session into the defined output \r
+ file. Corresponding file dialog will be proposed first in order to define \r
+ the output file.</td></tr>\r
+\r
+<tr valign="top" class="whs5">\r
+<td valign="middle" width="6.335%" class="whs10">\r
+<p align="center" class="whs7"><img src="image103.gif" width="28px" height="28px" border="0" class="img_whs11"></td>\r
+<td width="93.665%" class="whs12">\r
+<p>Play button &nbsp;\96 \r
+ continue the video recording into previously defined output file.</td></tr>\r
+\r
+<tr valign="top" class="whs5">\r
+<td valign="middle" width="6.335%" class="whs10">\r
+<p align="center" class="whs7"><img src="image104.gif" width="27px" height="25px" border="0" class="img_whs13"></td>\r
+<td width="93.665%" class="whs12">\r
+<p>Pause button \96 pause the video recording.</td></tr>\r
+\r
+<tr valign="top" class="whs5">\r
+<td valign="middle" width="6.335%" class="whs10">\r
+<p align="center" class="whs7"><img src="image105.gif" width="28px" height="28px" border="0" class="img_whs11"></td>\r
+<td width="93.665%" class="whs12">\r
+<p>Stop button \96 stop the video recording.</td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p class="whs14">&nbsp;</p>\r
+\r
+<p align="center" class="whs15">Fig. 32 : Video recording GUI controls</p>\r
+\r
+<p align="center" class="whs7">&nbsp;</p>\r
+\r
+<p>Those video recording buttons will be grouped into one corresponding \r
+ toolbar. The toolbar will have three following sates.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="100%" class="whs2">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='100%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs16">\r
+<col class="whs17">\r
+\r
+<tr valign="top" class="whs5">\r
+<td valign="middle" width="10.633%" class="whs18">\r
+<p align="center" class="whs7"><img src="image106.gif" width="66px" height="29px" border="0" class="img_whs19"></td>\r
+<td width="89.367%" class="whs20">\r
+<p>Disable video recording state. The animation is not active.</p>\r
+<p>In order to start the video recording, button <img src="image109.gif" width="28px" height="27px" border="0" class="img_whs8"> should \r
+ be pressed.</td></tr>\r
+\r
+<tr valign="top" class="whs5">\r
+<td valign="middle" width="10.633%" class="whs21">\r
+<p align="center" class="whs7"><img src="image107.gif" width="66px" height="28px" border="0" class="img_whs22"></td>\r
+<td width="89.367%" class="whs23">\r
+<p>Play video recording state. The animation is activated and all content \r
+ of the VTK view is recorded into defined video file.</p>\r
+<p>It is possible to pause the video recording by pushing the button <img src="image110.gif" width="27px" height="25px" border="0" class="img_whs13"> .</p>\r
+<p>Button <img src="image111.gif" width="28px" height="28px" border="0" class="img_whs11"> stops the session of the video recording.</td></tr>\r
+\r
+<tr valign="top" class="whs5">\r
+<td valign="middle" width="10.633%" class="whs21">\r
+<p align="center" class="whs7"><img src="image108.gif" width="66px" height="28px" border="0" class="img_whs22"></td>\r
+<td width="89.367%" class="whs23">\r
+<p>Pause animation state. The animation is active but the video recording \r
+ is paused.</p>\r
+<p>In order to continue the video recording button <img src="image112.gif" width="28px" height="28px" border="0" class="img_whs11"> should \r
+ be pushed.</p>\r
+<p>Button <img src="image113.gif" width="28px" height="28px" border="0" class="img_whs11"> stops the session of the video recording.</td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs15">Fig. 33 : Video recording toolbar states.</p>\r
+\r
+<p align="center" class="whs7">&nbsp;</p>\r
+\r
+<p>Each VTK view will have its own video recording toolbar. So, in segmentation \r
+ mode video recording of main view and segmented view will be managed separately.</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/managing_configurations.htm b/doc/salome/gui/GAUSS/managing_configurations.htm
new file mode 100644 (file)
index 0000000..1f4e1b9
--- /dev/null
@@ -0,0 +1,257 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Managing configurations</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+ul.whs2 { list-style:disc; }\r
+p.whs3 { text-align:center; }\r
+img_whs4 { border:none; width:177px; height:62px; border-style:none; }\r
+p.whs5 { text-align:center; font-size:8pt; }\r
+ul.whs6 { list-style:circle; }\r
+img_whs7 { border:none; width:250px; height:294px; float:none; border-style:none; }\r
+p.whs8 { font-style:italic; margin-left:40px; }\r
+img_whs9 { border:none; border-style:none; float:none; width:147px; height:80px; }\r
+table.whs10 { x-cell-content-align:top; width:87.443%; margin-left:40px; border-spacing:0px; }\r
+col.whs11 { width:15.783%; }\r
+col.whs12 { width:84.217%; }\r
+tr.whs13 { x-cell-content-align:top; }\r
+td.whs14 { width:15.783%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+p.whs15 { font-weight:bold; }\r
+td.whs16 { width:84.217%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs17 { width:15.783%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+td.whs18 { width:84.217%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Navigation within the scene\nManaging configurations");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Managing configurations</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> A new command is introduced, in the frame of this project, \r
+ to allow the user to memorize the current configuration and to be able \r
+ to restore it later on, even in another session.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>From a 3D view, the popup menu proposes to \91<span \r
+ style="font-weight: bold;"><B>Store current configuration</B></span>\92.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs3"><img src="image58.gif" width="177px" height="62px" border="0" class="img_whs4"></p>\r
+\r
+<p align="center" class="whs3">&nbsp;</p>\r
+\r
+<p align="center" class="whs5">Fig. 39 : 3D View popup menu</p>\r
+\r
+<p align="center" class="whs3">&nbsp;</p>\r
+\r
+<p>If not already existing, this action creates a new entry \91<span style="font-weight: bold;"><B>Configurations</B></span>\92\r
+ as a child of root \91<span style="font-weight: bold;"><B>Post-Pro</B></span>\92 \r
+ node, in the tree browser of the study to store all current parameters.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Then a new child is added, with an automatic name in the form of \91<span \r
+ style="font-weight: bold;"><B>Config:X</B></span>\92 where X is an incremental \r
+ integer. All parameters of the current configuration are stored at this \r
+ node</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs2">\r
+       \r
+       <li class=kadov-p><p>Camera:</p></li>\r
+       \r
+       <ul type="circle" class="whs6">\r
+               \r
+               <li class=kadov-p><p>Position</p></li>\r
+               \r
+               <li class=kadov-p><p>View point</p></li>\r
+               \r
+               <li class=kadov-p><p>Focal distance</p></li>\r
+       </ul>\r
+       \r
+       <li class=kadov-p><p>Segmentation cursor: (if defined \96 see <a href="segmentation_general.htm">Segmentation</a>)</p></li>\r
+       \r
+       <ul type="circle" class="whs6">\r
+               \r
+               <li class=kadov-p><p>Origin</p></li>\r
+               \r
+               <li class=kadov-p><p>Direction</p></li>\r
+               \r
+               <li class=kadov-p><p>Depth</p></li>\r
+       </ul>\r
+       \r
+       <li class=kadov-p><p>All presentations that are displayed in the 3D \r
+ view</p></li>\r
+       \r
+       <li class=kadov-p><p>Current selected point (if defined \96 see the <a href="picking_general.htm">Picking</a> command)</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs3"><img src="image59.gif" x-maintain-ratio="FALSE" width="250px" height="294px" border="0" class="img_whs7"></p>\r
+\r
+<p align="center" class="whs3">&nbsp;</p>\r
+\r
+<p align="center" class="whs5">Fig. 40 : Study browser with \91Configurations\92 node</p>\r
+\r
+<p align="center" class="whs3">&nbsp;</p>\r
+\r
+<p>This new \91Configurations\92 node will be stored (resp. retrieved) within \r
+ (from) the Study document by the use of standard SALOMEDS attribute. Persistence \r
+ will be managed in the same way as for Cameras.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p><img src="ex_green.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> <span style="font-weight: bold;"><B>Note:</B></span></p>\r
+\r
+<p class="whs8">Configurations are independent \r
+ from Segmentation cursors and Cameras. Therefore, applying a registered \r
+ configuration will apply configuration parameters in terms of Camera, \r
+ Segmentation cursor and Gauss point presentation. From this time, user \r
+ can freely navigate within the browser to display another timestamp or \r
+ variable. The view will be updated accordingly without changing the Camera \r
+ and the Segmentation cursor. This navigation within the tree will also \r
+ not affect the registered parameters of the configuration until user decides \r
+ to store them.</p>\r
+\r
+<p class="whs8">&nbsp;</p>\r
+\r
+<p>Edition of this last item \96 \91<span style="font-weight: bold;"><B>Config:X</B></span>\92 \r
\96 through a right-mouse button click opens the following popup menu:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs3"><img src="image60.gif" x-maintain-ratio="FALSE" width="147px" height="80px" border="0" class="img_whs9"></p>\r
+\r
+<p align="center" class="whs3">&nbsp;</p>\r
+\r
+<p align="center" class="whs5">Fig. 41 : \91Config\92 entry popup menu</p>\r
+\r
+<p align="center" class="whs3">&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="87.443%" class="whs10">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='87.443%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs11">\r
+<col class="whs12">\r
+\r
+<tr valign="top" class="whs13">\r
+<td bgcolor="#008080" width="15.783%" class="whs14">\r
+<p class="whs15">Command</td>\r
+<td bgcolor="#008080" width="84.217%" class="whs16">\r
+<p class="whs15">Purpose</td></tr>\r
+\r
+<tr valign="top" class="whs13">\r
+<td valign="middle" width="15.783%" class="whs17">\r
+<p class="whs15">Rename</td>\r
+<td width="84.217%" class="whs18">\r
+<p>Allows the user to redefine the name of the element. A standard dialog \r
+ in Salome is opened to realize the input.</td></tr>\r
+\r
+<tr valign="top" class="whs13">\r
+<td valign="middle" width="15.783%" class="whs17">\r
+<p class="whs15">Edit / Apply</td>\r
+<td width="84.217%" class="whs18">\r
+<p>Restore all registered parameters: camera and presentations in the current \r
+ main 3D view.</p>\r
+<p>If a cursor is stored, then the \91Segmentation\92 command (see <a href="command_activation_segmentation.htm">Segmentation</a>) \r
+ is activated with the cursor parameters defined in the configuration (open \r
+ a segmentation viewer and display the segmentation dialog box for edition).</p>\r
+<p>If a selection is active, then the \91Picking\92 command (see <a href="command_activation_picking.htm">Picking</a>) \r
+ is activated and the selected point defined in the configuration is highlighted.</td></tr>\r
+\r
+<tr valign="top" class="whs13">\r
+<td valign="middle" width="15.783%" class="whs17">\r
+<p class="whs15">Erase</td>\r
+<td width="84.217%" class="whs18">\r
+<p>Erase the elements from the 3D view.</td></tr>\r
+\r
+<tr valign="top" class="whs13">\r
+<td valign="middle" width="15.783%" class="whs17">\r
+<p class="whs15">Delete</td>\r
+<td width="84.217%" class="whs18">\r
+<p>Erase the elements from the 3D view and remove it from the study browser.</td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/navigation_using_the_keyboard.htm b/doc/salome/gui/GAUSS/navigation_using_the_keyboard.htm
new file mode 100644 (file)
index 0000000..c6e990a
--- /dev/null
@@ -0,0 +1,177 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Navigation using the keyboard</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+p.whs1 { font-weight:normal; }\r
+img_whs2 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+table.whs3 { x-cell-content-align:top; width:75.751%; margin-left:40px; border-spacing:0px; }\r
+col.whs4 { width:23.119%; }\r
+col.whs5 { width:24.645%; }\r
+col.whs6 { width:52.235%; }\r
+tr.whs7 { x-cell-content-align:top; }\r
+td.whs8 { width:23.119%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+p.whs9 { font-weight:bold; }\r
+td.whs10 { width:24.645%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs11 { width:52.235%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs12 { width:23.119%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+td.whs13 { width:24.645%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+p.whs14 { font-weight:bold; text-align:center; }\r
+img_whs15 { border:none; float:none; width:24px; height:19px; border-style:none; }\r
+img_whs16 { border:none; float:none; width:20px; height:23px; border-style:none; }\r
+td.whs17 { width:52.235%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+img_whs18 { border:none; width:51px; height:52px; border-style:none; }\r
+img_whs19 { border:none; border-style:none; width:50px; height:50px; float:none; }\r
+ul.whs20 { list-style:circle; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Navigation within the scene\nNavigation using the keyboard");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Navigation using the keyboard</h1>\r
+\r
+<p class="whs1"><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs2"> Salome does not provide any \r
+ way to navigate within the scene using certain keys of the keyboard. Thus \r
+ the following actions will be created.</p>\r
+\r
+<p class="whs1">&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="75.751%" class="whs3">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='75.751%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs4">\r
+<col class="whs5">\r
+<col class="whs6">\r
+\r
+<tr valign="top" class="whs7">\r
+<td bgcolor="#008080" width="23.119%" class="whs8">\r
+<p class="whs9">Action</td>\r
+<td bgcolor="#008080" width="24.645%" class="whs10">\r
+<p class="whs9">Key</td>\r
+<td bgcolor="#008080" width="52.235%" class="whs11">\r
+<p class="whs9">Movement</td></tr>\r
+\r
+<tr valign="top" class="whs7">\r
+<td valign="middle" width="23.119%" class="whs12">\r
+<p>Dynamic rotation</td>\r
+<td valign="middle" width="24.645%" class="whs13">\r
+<p align="center" class="whs14">[CTRL] key +</p>\r
+<p align="center" class="whs14">[ <img src="blue_left.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="24px" height="19px" border="0" class="img_whs15"> ], [ <img src="blue_right.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="24px" height="19px" border="0" class="img_whs15"> ],</p>\r
+<p align="center" class="whs14">[ <img src="blue_up.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="20px" height="23px" border="0" class="img_whs16"> ], [ <img src="blue_down.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="20px" height="23px" border="0" class="img_whs16"> ]</td>\r
+<td width="52.235%" class="whs17">\r
+<p><img src="image46.gif" width="51px" height="52px" border="0" class="img_whs18">Rotation centred on the focal point</td></tr>\r
+\r
+<tr valign="top" class="whs7">\r
+<td valign="middle" width="23.119%" class="whs12">\r
+<p>Dynamic panning</td>\r
+<td valign="middle" width="24.645%" class="whs13">\r
+<p align="center" class="whs14">[ <img src="blue_left.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="24px" height="19px" border="0" class="img_whs15"> ], [ <img src="blue_right.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="24px" height="19px" border="0" class="img_whs15"> ],</p>\r
+<p align="center" class="whs14">[ <img src="blue_up.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="20px" height="23px" border="0" class="img_whs16"> ], [ <img src="blue_down.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="20px" height="23px" border="0" class="img_whs16"> ]</td>\r
+<td width="52.235%" class="whs17">\r
+<p><img src="image47.gif" x-maintain-ratio="FALSE" width="50px" height="50px" border="0" class="img_whs19"></p>\r
+<p>Translation in any direction</td></tr>\r
+\r
+<tr valign="top" class="whs7">\r
+<td colspan="1" rowspan="1" valign="middle" width="23.119%" class="whs12">\r
+<p>Dynamic zoom</td>\r
+<td colspan="1" rowspan="1" valign="middle" width="24.645%" class="whs13">\r
+<p align="center" class="whs14">[PageUp],</p>\r
+<p align="center" class="whs14">[PageDn]</td>\r
+<td colspan="1" rowspan="1" width="52.235%" class="whs17">\r
+<p>&nbsp;&nbsp;Increase \r
+ or decrease the zoom ratio</td></tr>\r
+\r
+<tr valign="top" class="whs7">\r
+<td valign="middle" width="23.119%" class="whs12">\r
+<p>Speed increment</td>\r
+<td valign="middle" width="24.645%" class="whs13">\r
+<p align="center" class="whs14">[ + ],</p>\r
+<p align="center" class="whs14">[ - ]</td>\r
+<td width="52.235%" class="whs17">\r
+<p>Increase (resp. decrease) by 1 the speed increment used for the movement \r
+ previously defined</td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs20">\r
+       \r
+       <li class=kadov-p><p>This support will be active at any time during \r
+ a VISU session.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/navigation_using_the_mouse.htm b/doc/salome/gui/GAUSS/navigation_using_the_mouse.htm
new file mode 100644 (file)
index 0000000..7a1d35a
--- /dev/null
@@ -0,0 +1,230 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Navigation using the mouse</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+p.whs2 { text-align:center; }\r
+img_whs3 { border:none; width:128px; height:173px; border-style:none; }\r
+p.whs4 { text-align:center; font-size:8pt; }\r
+p.whs5 { font-weight:bold; }\r
+table.whs6 { x-cell-content-align:top; width:75.751%; margin-left:40px; border-spacing:0px; }\r
+col.whs7 { width:23.119%; }\r
+col.whs8 { width:24.645%; }\r
+col.whs9 { width:52.235%; }\r
+tr.whs10 { x-cell-content-align:top; }\r
+td.whs11 { width:23.119%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs12 { width:24.645%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs13 { width:52.235%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs14 { width:23.119%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+td.whs15 { width:24.645%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+td.whs16 { width:52.235%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+img_whs17 { border:none; width:51px; height:52px; border-style:none; }\r
+img_whs18 { border:none; border-style:none; width:50px; height:50px; float:none; }\r
+img_whs19 { border:none; width:50px; height:50px; border-style:none; }\r
+p.whs20 { font-weight:normal; }\r
+p.whs21 { text-align:center; font-weight:bold; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Navigation within the scene\nNavigation using the mouse");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Navigation using the mouse</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> To simplify the explanation of actions connected to the \r
+ mouse, we define the following conventions:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image45.gif" width="128px" height="173px" border="0" class="img_whs3"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 34 : Mouse buttons convention</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p class="whs5">Salome standard</p>\r
+\r
+<p>The mouse is supported as a standard pointer in Salome. Default actions, \r
+ for a 3 mouse buttons are connected as follows:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="75.751%" class="whs6">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='75.751%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs7">\r
+<col class="whs8">\r
+<col class="whs9">\r
+\r
+<tr valign="top" class="whs10">\r
+<td bgcolor="#008080" width="23.119%" class="whs11">\r
+<p>Action</td>\r
+<td bgcolor="#008080" width="24.645%" class="whs12">\r
+<p>Command</td>\r
+<td bgcolor="#008080" width="52.235%" class="whs13">\r
+<p>Movement</td></tr>\r
+\r
+<tr valign="top" class="whs10">\r
+<td valign="middle" width="23.119%" class="whs14">\r
+<p>Dynamic rotation</td>\r
+<td valign="middle" width="24.645%" class="whs15">\r
+<p class="whs5">[CTRL] key + MB3</td>\r
+<td width="52.235%" class="whs16">\r
+<p><img src="image46.gif" width="51px" height="52px" border="0" class="img_whs17">Rotation centred on the focal point</td></tr>\r
+\r
+<tr valign="top" class="whs10">\r
+<td valign="middle" width="23.119%" class="whs14">\r
+<p>Dynamic panning</td>\r
+<td valign="middle" width="24.645%" class="whs15">\r
+<p class="whs5">[CTRL] key + MB2</td>\r
+<td width="52.235%" class="whs16">\r
+<p><img src="image47.gif" x-maintain-ratio="FALSE" width="50px" height="50px" border="0" class="img_whs18"></p>\r
+<p>Translation in any direction</td></tr>\r
+\r
+<tr valign="top" class="whs10">\r
+<td valign="middle" width="23.119%" class="whs14">\r
+<p>Dynamic zoom</td>\r
+<td valign="middle" width="24.645%" class="whs15">\r
+<p class="whs5">[CTRL] key + MB1</td>\r
+<td width="52.235%" class="whs16">\r
+<p><img src="image48.gif" width="50px" height="50px" border="0" class="img_whs19"> &nbsp;Increase \r
+ or decrease the zoom ratio</td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs5">New capability</p>\r
+\r
+<p class="whs20">A new connectivity <span style="font-weight: bold;"><B>free \r
+ of extra keyboard keys</B></span> is introduced in the frame of this project \r
+ and will be defined as \91Mouse only\92 convention:</p>\r
+\r
+<p class="whs20">&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="75.751%" class="whs6">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='75.751%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs7">\r
+<col class="whs8">\r
+<col class="whs9">\r
+\r
+<tr valign="top" class="whs10">\r
+<td bgcolor="#008080" width="23.119%" class="whs11">\r
+<p class="whs5">Action</td>\r
+<td bgcolor="#008080" width="24.645%" class="whs12">\r
+<p class="whs5">Command</td>\r
+<td bgcolor="#008080" width="52.235%" class="whs13">\r
+<p class="whs5">Movement</td></tr>\r
+\r
+<tr valign="top" class="whs10">\r
+<td valign="middle" width="23.119%" class="whs14">\r
+<p>Dynamic rotation</td>\r
+<td valign="middle" width="24.645%" class="whs15">\r
+<p align="center" class="whs21">MB1</td>\r
+<td width="52.235%" class="whs16">\r
+<p><img src="image46.gif" width="51px" height="52px" border="0" class="img_whs17">Rotation centred on the focal point</td></tr>\r
+\r
+<tr valign="top" class="whs10">\r
+<td valign="middle" width="23.119%" class="whs14">\r
+<p>Dynamic panning</td>\r
+<td valign="middle" width="24.645%" class="whs15">\r
+<p align="center" class="whs21">MB2</td>\r
+<td width="52.235%" class="whs16">\r
+<p><img src="image47.gif" x-maintain-ratio="FALSE" width="50px" height="50px" border="0" class="img_whs18"></p>\r
+<p>Translation in any direction</td></tr>\r
+\r
+<tr valign="top" class="whs10">\r
+<td valign="middle" width="23.119%" class="whs14">\r
+<p>Dynamic zoom</td>\r
+<td valign="middle" width="24.645%" class="whs15">\r
+<p align="center" class="whs21">MB1 + MB2</td>\r
+<td width="52.235%" class="whs16">\r
+<p><img src="image49.gif" width="50px" height="50px" border="0" class="img_whs19"> &nbsp;Increase \r
+ or decrease the zoom ratio</td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs20">&nbsp;</p>\r
+\r
+<p class="whs20">&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/navigation_using_the_spacemouse.htm b/doc/salome/gui/GAUSS/navigation_using_the_spacemouse.htm
new file mode 100644 (file)
index 0000000..27d0536
--- /dev/null
@@ -0,0 +1,272 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Navigation using the spacemouse</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+p.whs2 { text-align:center; }\r
+img_whs3 { border:none; width:250px; height:255px; float:none; border-style:none; }\r
+p.whs4 { text-align:center; font-size:8pt; }\r
+table.whs5 { x-cell-content-align:top; width:83.032%; margin-left:40px; border-spacing:0px; }\r
+col.whs6 { width:22.707%; }\r
+col.whs7 { width:35.785%; }\r
+col.whs8 { width:41.508%; }\r
+tr.whs9 { x-cell-content-align:top; }\r
+td.whs10 { width:22.707%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+p.whs11 { font-weight:bold; text-align:center; }\r
+td.whs12 { width:35.785%; padding-right:10px; padding-left:10px; border-top-width:1px; border-top-color:#000000; border-top-style:Solid; border-right-style:Solid; border-right-color:#000000; border-right-width:1px; border-bottom-width:1px; border-bottom-color:#000000; border-bottom-style:Solid; background-color:#008080; }\r
+td.whs13 { width:41.508%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs14 { width:22.707%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; x-cell-content-align:center; }\r
+td.whs15 { width:35.785%; padding-right:10px; padding-left:10px; border-right-style:Solid; border-right-color:#000000; border-right-width:1px; border-bottom-width:1px; border-bottom-color:#000000; border-bottom-style:Solid; }\r
+img_whs16 { border:none; width:191px; height:152px; border-style:none; }\r
+td.whs17 { width:41.508%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+p.whs18 { font-style:italic; font-weight:bold; }\r
+img_whs19 { border:none; width:190px; height:157px; border-style:none; }\r
+img_whs20 { border:none; width:216px; height:189px; border-style:none; }\r
+img_whs21 { border:none; width:198px; height:158px; border-style:none; }\r
+ul.whs22 { list-style:circle; }\r
+img_whs23 { border:none; width:257px; height:254px; border-style:none; }\r
+table.whs24 { x-cell-content-align:top; width:72.748%; margin-left:40px; border-spacing:0px; }\r
+col.whs25 { width:22.381%; }\r
+col.whs26 { width:77.619%; }\r
+td.whs27 { width:22.381%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs28 { width:77.619%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs29 { width:22.381%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+td.whs30 { width:77.619%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Navigation within the scene\nNavigation using the spacemouse");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1><a name=Navigation_using_the_spacemouse></a>Navigation using the spacemouse</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Salome does not provide any way to navigate within the \r
+ scene using a spacemouse. Thus the support of this new pointer will be \r
+ added and managed as defined below.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The spacemouse introduces a local coordinate system, and 6 degrees of \r
+ freedom, which are independent from the 3D view coordinate system. They \r
+ are defined as follows:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image50.gif" x-maintain-ratio="TRUE" width="250px" height="255px" border="0" class="img_whs3"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 35 : Spacemouse local co-ordinate system</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Move 3D models and scenes on screen based on the corresponding direction \r
+ the user moves the cap on the controller.</p>\r
+\r
+<p>The commands available using the spacemouse are then defined as follows:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="83.032%" class="whs5">\r
+<col class="whs6">\r
+<col class="whs7">\r
+<col class="whs8">\r
+\r
+<tr valign="top" class="whs9">\r
+<td bgcolor="#008080" width="22.707%" class="whs10">\r
+<p align="center" class="whs11">Action</td>\r
+<td bgcolor="#008080" width="35.785%" class="whs12">\r
+<p align="center" class="whs11">Move</td>\r
+<td bgcolor="#008080" width="41.508%" class="whs13">\r
+<p align="center" class="whs11">Description</td></tr>\r
+\r
+<tr valign="top" class="whs9">\r
+<td rowspan="2" colspan="1" valign="middle" width="22.707%" class="whs14">\r
+<p align="center" class="whs2">Dynamic rotation</td>\r
+<td width="35.785%" class="whs15">\r
+<p><img src="image51.gif" width="191px" height="152px" border="0" class="img_whs16"></td>\r
+<td width="41.508%" class="whs17">\r
+<p><span style="font-weight: bold;"><B>Tilt</B></span> the controller head left \r
+ and right or forward and backward to rotate accordingly (X-Z axis).</p>\r
+<p>&nbsp;</p>\r
+<p class="whs18"><img src="ex_green.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> Note: \r
+ Left/right capability will be disabled.</td></tr>\r
+\r
+<tr valign="top" class="whs9">\r
+<td width="35.785%" class="whs15">\r
+<p><img src="image52.gif" width="190px" height="157px" border="0" class="img_whs19"></td>\r
+<td width="41.508%" class="whs17">\r
+<p><span style="font-weight: bold;"><B>Twist</B></span> clockwise and counterclockwise \r
+ to rotate the model accordingly (Y-axis)</td></tr>\r
+\r
+<tr valign="top" class="whs9">\r
+<td valign="middle" width="22.707%" class="whs14">\r
+<p align="center" class="whs2">Dynamic panning</td>\r
+<td width="35.785%" class="whs15">\r
+<p><img src="image53.gif" width="216px" height="189px" border="0" class="img_whs20"></td>\r
+<td width="41.508%" class="whs17">\r
+<p><span style="font-weight: bold;"><B>Pull</B></span> up and<span style="font-weight: bold;"><B> \r
+ push</B></span> down to move the model up and down.</p>\r
+<p><span style="font-weight: bold;"><B>Move left</B></span> and <span style="font-weight: bold;"><B>right</B></span> \r
+ to move the model left and right.</td></tr>\r
+\r
+<tr valign="top" class="whs9">\r
+<td valign="middle" width="22.707%" class="whs14">\r
+<p align="center" class="whs2">Dynamic zoom</td>\r
+<td width="35.785%" class="whs15">\r
+<p><img src="image54.gif" width="198px" height="158px" border="0" class="img_whs21"></td>\r
+<td width="41.508%" class="whs17">\r
+<p><span style="font-weight: bold;"><B>Push forward</B></span> or <span style="font-weight: bold;"><B>pull \r
+ backwards</B></span> to respectively decrease or increase the zoom ratio.</td></tr>\r
+</table>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs22">\r
+       \r
+       <li class=kadov-p><p>This support will be active at any time during \r
+ a VISU session.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Buttons of the spacemouse are also used to change the magnification \r
+ for Gauss points:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image55.gif" width="257px" height="254px" border="0" class="img_whs23"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 36 : Spacemouse buttons control</p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p>By default, buttons are defined as follow, but user can change them \r
+ in the preferences:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="72.748%" class="whs24">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='72.748%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs25">\r
+<col class="whs26">\r
+\r
+<tr valign="top" class="whs9">\r
+<td bgcolor="#008080" width="22.381%" class="whs27">\r
+<p align="center" class="whs11">Button</td>\r
+<td bgcolor="#008080" width="77.619%" class="whs28">\r
+<p align="center" class="whs11">Description</td></tr>\r
+\r
+<tr valign="top" class="whs9">\r
+<td width="22.381%" class="whs29">\r
+<p align="center" class="whs2">Button 1</td>\r
+<td width="77.619%" class="whs30">\r
+<p>Decrease by 1 the speed increment used for the keyboard (same as [-] \r
+ key)</td></tr>\r
+\r
+<tr valign="top" class="whs9">\r
+<td width="22.381%" class="whs29">\r
+<p align="center" class="whs2">Button 2</td>\r
+<td width="77.619%" class="whs30">\r
+<p>Increase by 1 the speed increment used for the keyboard (same as [+] \r
+ key)</td></tr>\r
+\r
+<tr valign="top" class="whs9">\r
+<td width="22.381%" class="whs29">\r
+<p align="center" class="whs2">Button 10</td>\r
+<td width="77.619%" class="whs30">\r
+<p>Divide the current magnification by the magnification ratio</td></tr>\r
+\r
+<tr valign="top" class="whs9">\r
+<td width="22.381%" class="whs29">\r
+<p align="center" class="whs2">Button 11</td>\r
+<td width="77.619%" class="whs30">\r
+<p>Multiply the current magnification by the magnification ratio</td></tr>\r
+\r
+<tr valign="top" class="whs9">\r
+<td width="22.381%" class="whs29">\r
+<p align="center" class="whs2">Button Star</td>\r
+<td width="77.619%" class="whs30">\r
+<p>Toggle button to switch to dominant or combined movements</td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/picking_general.htm b/doc/salome/gui/GAUSS/picking_general.htm
new file mode 100644 (file)
index 0000000..0c69963
--- /dev/null
@@ -0,0 +1,166 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Picking General</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+ul.whs2 { list-style:circle; }\r
+p.whs3 { text-align:center; }\r
+img_whs4 { border:none; width:600px; height:412px; float:none; border-style:none; }\r
+p.whs5 { text-align:center; font-size:8pt; }\r
+img_whs6 { border:none; width:450px; height:263px; float:none; border-style:none; }\r
+ul.whs7 { list-style:disc; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Picking\nGeneral");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>General</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> <a name=Selection_Info></a>The existing picking functionality \r
+ in Salome is available on both meshes element and time stamps. It can \r
+ be activated either from:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs2">\r
+       \r
+       <li class=kadov-p><p>The menu bar: <span style="font-weight: bold;"><B>Selection \r
+ &#9658; Selection Info</B></span></p></li>\r
+       \r
+       <li class=kadov-p><p>The popup menu opened on a time stamp of the browser \r
+ (see <a href="description_of_commands_display_results.htm#Gauss_Points___Geometry__new_presentation_">Gauss \r
+ Points \96 Geometry (new presentation)</a>), item \91<span style="font-weight: bold;"><B>Selection \r
+ Info</B></span>\92</p></li>\r
+       \r
+       <li class=kadov-p><p>The popup menu opened on a presentation in the \r
+ 3D view, item \91<span style="font-weight: bold;"><B>Selection Info</B></span>\92</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>All these actions open a dialog box that drives the functionality.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs3"><img src="image63.gif" x-maintain-ratio="FALSE" width="600px" height="412px" border="0" class="img_whs4"></p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs5">Fig. 44 : Standard Salome picking on a field</p>\r
+\r
+<p align="center" class="whs3">&nbsp;</p>\r
+\r
+<p>The dialog allows user to graphically select an element and displays \r
+ its corresponding information.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs3"><img src="image64.gif" x-maintain-ratio="FALSE" width="450px" height="263px" border="0" class="img_whs6"></p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs5">Fig. 45 : Standard Salome picking on a mesh</p>\r
+\r
+<p align="center" class="whs3">&nbsp;</p>\r
+\r
+<p>Selection is possible on:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p>Mesh element: node, edge, face and volume</p></li>\r
+       \r
+       <li class=kadov-p><p>Fields elements: cell, edge of cell</p></li>\r
+       \r
+       <li class=kadov-p><p>Graphic presentation of an object (actor)</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>When moving the mouse in the graphic area, any suitable element \96 that \r
+ is, corresponding to the defined \91filter\92 \96 is pre-highlighted (or detected) \r
+ and displayed in shading for more convenience to the end user. When user \r
+ presses the left-mouse button to select the detected element, it is redisplayed \r
+ in another color, and the information related to the selection is refreshed \r
+ in the dialog box, in the form of an array of data.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Since this behaviour does not fully correspond to EDF expectation, the \r
+ picking function <span style="font-weight: bold;"><B>for results at Gauss \r
+ point</B></span> and <span style="font-weight: bold;"><B>Gauss point (geometry)</B></span> \r
+ will be redefined as described in the following paragraphs.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/purple_right_sm.jpg b/doc/salome/gui/GAUSS/purple_right_sm.jpg
new file mode 100644 (file)
index 0000000..cef046c
Binary files /dev/null and b/doc/salome/gui/GAUSS/purple_right_sm.jpg differ
diff --git a/doc/salome/gui/GAUSS/robohhre.lng b/doc/salome/gui/GAUSS/robohhre.lng
new file mode 100644 (file)
index 0000000..297538b
--- /dev/null
@@ -0,0 +1,101 @@
+[GlossaryTab]\r
+TabCaption=&Glossary\r
+TermCaption=&Term\r
+DefinitionCaption=&Definition For:\r
+\r
+[BrowseSequence]\r
+PreCaption=Previous\r
+PreTooltip=Previous Topic\r
+NextCaption=Next\r
+NextTooltip=Next Topic\r
+BlockTooltip=Select Block\r
+\r
+[Common]\r
+Contents=Contents\r
+Index=Index\r
+Search=Search\r
+Glossary=Glossary\r
+Logo/Author=Powered By\r
+Show=Show\r
+Hide=Hide\r
+SyncToc=SyncToc\r
+Prev=<<\r
+Next=>>\r
+Disabled Prev=<<\r
+Disabled Next=>>\r
+Seperate = |\r
+\r
+[WebHelp]\r
+Cancel=Cancel\r
+CantOpenURLorFile=Can't open URL or file\r
+CompletingContents=Completing Contents...\r
+Display=Display\r
+Term=Term:\r
+Definition=Definition:\r
+Done=Done\r
+Find=Find\r
+IndexInputPrompt=Type in the keyword to find:\r
+RelateTopicListPrompt=Click a topic, then click Display.\r
+LoadingData=Loading data, please wait...\r
+LoadingContents=Loading contents, please wait...\r
+LoadingContentsData=Loading, click here to cancel...\r
+LoadingFTS=Reading Search Data...\r
+LoadingIndex=Loading Index...\r
+LoadingTOCItem=Loading Table of Contents:\r
+Searching=Searching...\r
+FtsInputPrompt=Type in the word(s) to search for:\r
+TopicsFound=Topics Found\r
+BrowserLimitedMessage=Your browser does not support frames. We recommend that you update your browser to a version that supports frames.\r
+SuggestViewNoFrameMessage=To view the Help system without frames click on this\r
+SuggestViewNoFrameMsg2=hyperlink.\r
+TopicsNotFound=No Topics Found.\r
+CantSearch=Cannot search for that phrase.\r
+JS_alert_appletNotLoad = Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited.\r
+JS_alert_colorlimitation=WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.\r
+Blank_topic_text=This topic was created by WinHelp Project Conversion Wizard, and is the destination of a missing topic or broken hyperlink.\r
+JS_alert_ProjectLoadingFail=Could not load correctly, please click Refresh.\r
+JS_alert_cantLoadProject=Can't load project:\r
+JS_alert_ErrorInLoading=Error in Loading navigation component. Please regenerate WebHelp.\r
+IndexBtnText=Go\r
+FtsBtnText=Go\r
+ToolBarSearchBtnText=Go\r
+InTopicSearchBtnText=Go\r
+SearchLabel=Search\r
+SearchPrompt=- Search -\r
+PreTooltip=Previous Topic\r
+NextTooltip=Next Topic\r
+WebSearch=WebSearch\r
+SyncTocTooltip=Sync TOC\r
+Book=Book\r
+Page=Page\r
+Remote_Page=Remote Page\r
+Show_Navigation_Component=Show Navigation Component\r
+Hide_Navigation_Component=Hide Navigation Component\r
+nls_edit_label=Type in your question:\r
+nls_button_go_hint=Go Search\r
+nls_button_go_text=Go\r
+nls_body_instruction=Enter your question in the text box above, then click GO.\r
+nls_body_empty=Sorry, we were unable to find a good answer for your question.\r
+IndexSelectTopicTitle=Select a Topic\r
+IndexSelectTopicLabel=Select a topic, then click Display\r
+IndexSelectTopicError=Please select a topic.\r
+IndexAlphabetBookmarks=ABCDEFGHIJKLMNOPQRSTUVWXYZ\r
+MergeError1=The merged Help system\r
+MergeError2=is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system.\r
+PoweredBy=Powered by\r
+GeneratedBy=Generated by\r
+Author=Author\r
+About=About\r
+Print=Print\r
+\r
+[PrintedDoc]\r
+TableOfContents=Table Of Contents\r
+TitlePage=Title Page\r
+ChapterFileNamePrefix=Chapter_\r
+TitlePageFileName=Chapter__Title_Page.doc\r
+CrossReferencePrefix=See\r
+GlossaryHeadingStyleName=Glossary Heading\r
+GlossaryTermStyleName=Glossary Term\r
+GlossaryDefinitionStyleName=Glossary Definition\r
+TitlePageTitleStyleName=Title Page Title\r
+TocPageTitleStyleName=Table of Contents Page Title\r
diff --git a/doc/salome/gui/GAUSS/salome-visu_preferences_display_results.htm b/doc/salome/gui/GAUSS/salome-visu_preferences_display_results.htm
new file mode 100644 (file)
index 0000000..d4cbfc9
--- /dev/null
@@ -0,0 +1,135 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>SALOME-VISU preferences display results</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+ul.whs2 { list-style:circle; }\r
+img_whs3 { border:none; width:8px; height:9px; float:none; border-style:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Display results at Gauss points\nSalome-Visu preferences");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>SALOME-VISU preferences</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> VISU defines a few additional parameters to define default \r
+ display modes.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Commands are defined in the \91<span style="font-weight: bold;"><B>Preferences</B></span> \r
+ &#9658; <span style="font-weight: bold;"><B>Post-pro</B></span>\92 menu of the \r
+ VISU module:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs2">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Post-pro &#9658; \r
+ Scalar Bar</B></span> &nbsp;<img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> &nbsp;<span style="font-style: italic;"><I>Displays \r
+ a dialog to customize default scalar bar presentation</I></span></p></li>\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Post-pro &#9658; \r
+ Sweeping</B></span> &nbsp;&nbsp;<img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> &nbsp;<span style="font-style: italic;"><I>Displays \r
+ a dialog to customize default sweeping parameters</I></span></p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>New options will be added to refine default mode applicable for results \r
+ at Gauss points:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs2">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Post-pro &#9658; \r
+ Gauss Points &#9658; Primitive</B></span> <img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> &nbsp;<span \r
+ style="font-style: italic;"><I>Displays a dialog \r
+ to customize default display mode for results at Gauss points. It is the \r
+ same dialog as the one defined on <a href="description_of_commands_display_results.htm#Fig__10___Results_at_Gauss_points_primitive_configuration_dialog">Fig. \r
+ 10 : Results at Gauss points primitive configuration dialog</a>.</I></span></p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs2">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Post-pro &#9658; \r
+ Gauss Points &#9658; Scalar Bar</B></span> <img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> &nbsp;<span \r
+ style="font-style: italic;"><I>Displays a dialog \r
+ to customize default parameters for scalar bars used for display of results \r
+ at Gauss points. It is the same dialog as the one defined on <a href="description_of_commands_display_results.htm#Fig__18___Scalar_bar_configuration">Fig. \r
+ 18 : Scalar bar configuration</a></I></span></p></li>\r
+</ul>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/salome_visu_preferences.htm b/doc/salome/gui/GAUSS/salome_visu_preferences.htm
new file mode 100644 (file)
index 0000000..63b3520
--- /dev/null
@@ -0,0 +1,109 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>SALOME-VISU preferences</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+img_whs2 { border:none; width:8px; height:9px; float:none; border-style:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo(" Loading of data\nSalome-Visu preferences");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Salome-Visu preferences</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> VISU defines a few additional parameters to define default \r
+ parameters.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The command is defined in the \91<span style="font-weight: bold;"><B>Preferences \r
+ &#9658; Post-pro</B></span>\92 menu of VISU module:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Click <span style="font-weight: bold;"><B>Post-pro &#9658; Full MED loading</B></span> \r
+ <img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs2"> <span style="font-style: italic;"><I>Toggle option: load \r
+ MED file at once or when needed</I></span></p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>When this option is checked, the MED file is fully loaded in the study, \r
+ so that no additional physical access to the MED file are needed to go \r
+ on the session.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Reversibly, when unchecked, the MED file is loaded on demand. This is \r
+ the default behaviour in SALOME and recommended for big files to optimize \r
+ memory usage.</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/salome_visu_preferences_navigation_within_the_scene.htm b/doc/salome/gui/GAUSS/salome_visu_preferences_navigation_within_the_scene.htm
new file mode 100644 (file)
index 0000000..f559c04
--- /dev/null
@@ -0,0 +1,191 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Salome-Visu preferences Navigation within the scene</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+ul.whs2 { list-style:circle; }\r
+img_whs3 { border:none; width:8px; height:9px; float:none; border-style:none; }\r
+p.whs4 { text-align:center; }\r
+img_whs5 { border:none; border-style:none; width:450px; height:340px; float:none; }\r
+p.whs6 { text-align:center; font-size:8pt; }\r
+ul.whs7 { list-style:disc; }\r
+ul.whs8 { list-style:inside circle; }\r
+img_whs9 { border:none; border-style:none; width:150px; height:106px; float:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Navigation within the scene\nSalome-Visu preferences");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Salome-Visu preferences</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> The VISU preferences are modified as follow:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="circle" class="whs2">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Post-pro &#9658; \r
+ Navigation &#9658; Pointer</B></span> &nbsp;<img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> &nbsp;<span style="font-style: italic;"><I>Displays \r
+ a dialog to configure the pointer to use.</I></span></p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs4"><img src="image61.gif" x-maintain-ratio="FALSE" width="450px" height="340px" border="0" class="img_whs5"></p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p align="center" class="whs6">Fig. 42 : Navigation pointers configuration dialog</p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Mouse:</B></span> \r
+ allows defining type of navigation provided by the mouse.</p></li>\r
+       \r
+       <ul type="circle" class="whs8">\r
+               \r
+               <li class=kadov-p><p>Salome Standard (default)</p></li>\r
+               \r
+               <li class=kadov-p><p>Keyboard free</p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Keyboard:</B></span> \r
+ defines the value of the increment applied when user uses keyboard keys \r
+ to navigate within the 3D scene. Only one value is defined for all kind \r
+ of movement.</p></li>\r
+       \r
+       <ul type="circle" class="whs2">\r
+               \r
+               <li class=kadov-p><p>Translation (panning): value understood in \r
+ millimetres.</p></li>\r
+               \r
+               <li class=kadov-p><p>Rotation: value understood in degrees.</p></li>\r
+               \r
+               <li class=kadov-p><p>Zoom: value understood in millimetres (focal \r
+ distance).</p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Spacemouse:</B></span> \r
+ defines buttons for:</p></li>\r
+       \r
+       <ul type="circle" class="whs2">\r
+               \r
+               <li class=kadov-p><p>Changing the speed increment when keyboard \r
+ navigation is used</p></li>\r
+               \r
+               <li class=kadov-p><p>Changing the Gauss points magnification</p></li>\r
+               \r
+               <li class=kadov-p><p>Filter the spacemouse movement (dominant or \r
+ combined)</p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Choose<span style="font-weight: bold;"><B> Post-pro &#9658; Navigation \r
+ &#9658; Camera movement </B></span>&nbsp;<img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> &nbsp;<span style="font-style: italic;"><I>Displays \r
+ a dialog to customize the displacement between 2 cameras.</I></span></p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs4"><img src="image62.gif" x-maintain-ratio="FALSE" width="150px" height="106px" border="0" class="img_whs9"></p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<p align="center" class="whs6">Fig. 43 : Camera movement configuration dialog</p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs7">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Angular step:</B></span> \r
+ allows user to define the angular step (in degree \96 2 by default) used \r
+ to compute the number of intermediary positions for the camera during \r
+ a move (this number of intermediary positions corresponds to the parameter \r
+ to give to vtkRenderWindowInteractor::FlyTo() VTK function).</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/salome_visu_preferences_picking.htm b/doc/salome/gui/GAUSS/salome_visu_preferences_picking.htm
new file mode 100644 (file)
index 0000000..52b718d
--- /dev/null
@@ -0,0 +1,178 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Salome-Visu preferences picking</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+img_whs2 { border:none; width:8px; height:9px; float:none; border-style:none; }\r
+p.whs3 { font-style:normal; x-text-underline:normal; text-decoration:underline; }\r
+ul.whs4 { list-style:disc; }\r
+p.whs5 { text-align:center; }\r
+img_whs6 { border:none; width:207px; height:192px; border-style:none; }\r
+p.whs7 { text-align:center; font-size:8pt; }\r
+img_whs8 { border:none; width:300px; height:392px; float:none; border-style:none; }\r
+ul.whs9 { list-style:circle; }\r
+p.whs10 { font-style:italic; }\r
+p.whs11 { margin-left:40px; font-style:italic; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Picking\nSalome-Visu preferences");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Salome-Visu preferences</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> The \91<span style="font-weight: bold;"><B>Preferences</B></span>\91 \r
+ menu of VISU is modified as follow:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Choose <span style="font-weight: bold;"><B>Post-pro &#9658; Gauss Points \r
+ &#9658; Picking</B></span> &nbsp;<img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs2"> &nbsp;<span style="font-style: italic;"><I>Displays \r
+ a dialog to customize the picking parameters.</I></span></p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs3">Description \r
+ of the dialog and associated parameters:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs4">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Height of the \r
+ pyramid:</B></span> define the length of each of the 6 pyramids of the cursor. \r
+ The cursor is dynamically generated so that apexes of each pyramid touch \r
+ the point sprite boundary, and height of pyramid is fixed.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs5"><img src="image69.gif" width="207px" height="192px" border="0" class="img_whs6"></p>\r
+\r
+<p align="center" class="whs5">&nbsp;</p>\r
+\r
+<p align="center" class="whs7">Fig. 49 : Definition of the picking cursor \91height\92 parameter</p>\r
+\r
+<p align="center" class="whs5">&nbsp;</p>\r
+\r
+<p align="center" class="whs5"><img src="image70.gif" x-maintain-ratio="FALSE" width="300px" height="392px" border="0" class="img_whs8"></p>\r
+\r
+<p align="center" class="whs7">&nbsp;</p>\r
+\r
+<p align="center" class="whs7">Fig. 50 : Picking configuration dialog</p>\r
+\r
+<p align="center" class="whs5">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs4">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Information window:</B></span> \r
+ allows defining the<span style="font-weight: bold;"><B> transparency</B></span> \r
+ (from 0% = opaque to 100% = transparent) and <span style="font-weight: bold;"><B>position</B></span> \r
+ of the windows. Possible values for position are:</p></li>\r
+       \r
+       <ul type="circle" class="whs9">\r
+               \r
+               <li class=kadov-p><p>Centred below the point</p></li>\r
+               \r
+               <li class=kadov-p><p>Top-left corner of the 3D view</p></li>\r
+       </ul>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs4">\r
+       \r
+       <li class=kadov-p><p><span style="font-weight: bold;"><B>Zoom at first \r
+ selected point:</B></span> This value is used to define the focal distance \r
+ at the first selected point (at the end of the movement of the camera). \r
+ This value is a ratio that will be multiplied by the current zoom value.</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<ul type="disc" class="whs4">\r
+       \r
+       <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Picking \r
+ optimisation:</B></span> This section will be implemented only if the implementation \r
+ of the picking function is based on <span style="font-weight: bold;"><B>vtkPointLocator</B></span> \r
+ functions. No parameters are needed if implementation is based on <span \r
+ style="font-weight: bold;"><B>vtkPointPicker</B></span>. (see <a href="picking_general.htm">Picking</a> \r
+ for more details).</p></li>\r
+</ul>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p class="whs11">Both parameters are used \r
+ to customize the data structure of the searching underlying functionality.</p>\r
+\r
+<p class="whs11">&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/segmentation_general.htm b/doc/salome/gui/GAUSS/segmentation_general.htm
new file mode 100644 (file)
index 0000000..8398b6a
--- /dev/null
@@ -0,0 +1,109 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Segmentation General</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Segmentation\nGeneral");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>General</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> In Salome, the SMESH module defines a function to inspect \r
+ the mesh quality by cutting the mesh by a plane that cuts the space in \r
+ 2 half-spaces.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Besides, VISU does not define such a function so that the segmentation \r
+ for results at Gauss points consists in defining a new behaviour.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> <span style="font-weight: bold;"><B>Naming convention</B></span></p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>The following naming convention for segmentation cursors has been established:</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Simple segmentation (box) is named: \91<span style="font-weight: bold;"><B>Plane \r
+ Segmentation</B></span>\92</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p>Advanced segmentation (sphere) is named: \91<span style="font-weight: bold;"><B>Sphere \r
+ Segmentation</B></span>\92</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/specific_additional_commands_for_fields_items.htm b/doc/salome/gui/GAUSS/specific_additional_commands_for_fields_items.htm
new file mode 100644 (file)
index 0000000..cc5c696
--- /dev/null
@@ -0,0 +1,232 @@
+<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
+\r
+<html>\r
+\r
+<head>\r
+<title>Specific additional commands for Fields items</title>\r
+<meta http-equiv="content-type" content="text/html; charset=windows-1252">\r
+<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
+<link rel="stylesheet" href="default_ns.css"><script type="text/javascript" language="JavaScript" title="WebHelpSplitCss">\r
+<!--\r
+if (navigator.appName !="Netscape")\r
+{   document.write("<link rel='stylesheet' href='default.css'>");}\r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+img_whs1 { border:none; width:32px; height:37px; float:none; border-style:none; }\r
+p.whs2 { text-align:center; }\r
+img_whs3 { border:none; width:147px; height:193px; border-style:none; }\r
+p.whs4 { text-align:center; font-size:8pt; }\r
+table.whs5 { x-cell-content-align:top; width:73.095%; margin-left:40px; border-spacing:0px; }\r
+col.whs6 { width:24.961%; }\r
+col.whs7 { width:75.039%; }\r
+tr.whs8 { x-cell-content-align:top; }\r
+td.whs9 { width:24.961%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+p.whs10 { font-weight:bold; }\r
+td.whs11 { width:75.039%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs12 { width:24.961%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+td.whs13 { width:75.039%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+p.whs14 { font-style:italic; }\r
+p.whs15 { font-size:10pt; }\r
+p.whs16 { font-size:12pt; }\r
+p.whs17 { font-size:10pt; text-align:center; }\r
+img_whs18 { border:none; width:147px; height:158px; border-style:none; }\r
+table.whs19 { x-cell-content-align:top; width:78.059%; margin-left:40px; border-spacing:0px; }\r
+col.whs20 { width:22.929%; }\r
+col.whs21 { width:77.071%; }\r
+td.whs22 { width:22.929%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+p.whs23 { font-size:12pt; font-weight:bold; }\r
+td.whs24 { width:77.071%; border-top-style:Solid; border-top-color:#000000; border-top-width:1px; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; background-color:#008080; }\r
+td.whs25 { width:22.929%; border-left-width:1px; border-left-color:#000000; border-left-style:Solid; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+td.whs26 { width:77.071%; border-right-width:1px; border-right-color:#000000; border-right-style:Solid; border-bottom-style:Solid; border-bottom-color:#000000; border-bottom-width:1px; padding-right:10px; padding-left:10px; }\r
+p.whs27 { font-size:8pt; }\r
+ul.whs28 { list-style:disc; }\r
+-->\r
+</style><script type="text/javascript" language="JavaScript" title="WebHelpInlineScript">\r
+<!--\r
+function reDo() {\r
+  if (innerWidth != origWidth || innerHeight != origHeight)\r
+     location.reload();\r
+}\r
+if ((parseInt(navigator.appVersion) == 4) && (navigator.appName == "Netscape")) {\r
+       origWidth = innerWidth;\r
+       origHeight = innerHeight;\r
+       onresize = reDo;\r
+}\r
+onerror = null; \r
+//-->\r
+</script>\r
+<style type="text/css">\r
+<!--\r
+div.WebHelpPopupMenu { position:absolute; left:0px; top:0px; z-index:4; visibility:hidden; }\r
+-->\r
+</style><script type="text/javascript" language="javascript1.2" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript1.2" src="whtopic.js"></script>\r
+</head>\r
+<body><script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       addTocInfo("Display results at Gauss points\nSpecific additional commands for Fields items");\r
+addButton("show",BTN_TEXT,"Show","","","","",0,0,"","","");\r
+\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(1);\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       setRelStartPage("gauss_points_viewer.htm");\r
+\r
+               autoSync(1);\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>\r
+<h1>Specific additional commands for Fields items</h1>\r
+\r
+<p><img src="info_blue.jpg" x-maintain-ratio="TRUE" width="32px" height="37px" border="0" class="img_whs1"> In <span style="font-style: italic;"><I>Description of commands</I></span>, \r
+ we introduced a number of possible actions applicable on <span style="font-weight: bold;"><B>Families</B></span> \r
+ or <span style="font-weight: bold;"><B>Groups</B></span> items of the tree. When \r
+ applied to a Fields presentation, 4 additional options are possible.</p>\r
+\r
+<p>&nbsp;</p>\r
+\r
+<p align="center" class="whs2"><img src="image81.gif" width="147px" height="193px" border="0" class="img_whs3"></p>\r
+\r
+<p align="center" class="whs2">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 27 : VISU standard fields presentation popup menu</p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="73.095%" class="whs5">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='73.095%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs6">\r
+<col class="whs7">\r
+\r
+<tr valign="top" class="whs8">\r
+<td bgcolor="#008080" width="24.961%" class="whs9">\r
+<p class="whs10">Command</td>\r
+<td bgcolor="#008080" width="75.039%" class="whs11">\r
+<p class="whs10">Purpose</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="24.961%" class="whs12">\r
+<p class="whs10">Edit</td>\r
+<td width="75.039%" class="whs13">\r
+<p>Edition of presentation display mode.</p>\r
+<p><span style="font-style: italic;"><I>This option will be extended to the \r
+ new Gauss point mode</I></span>.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="24.961%" class="whs12">\r
+<p class="whs10">Sweep</td>\r
+<td width="75.039%" class="whs13">\r
+<p>Displays a pseudo-animation of field presentation at a given time.</p>\r
+<p class="whs14">This option will <span style="font-weight: bold;"><B>not</B></span> \r
+ be extended to the new Gauss point mode.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="24.961%" class="whs12">\r
+<p class="whs10">Selection Info</td>\r
+<td width="75.039%" class="whs13">\r
+<p>Display a dialog to analyse the value of certain data picked in the \r
+ 3D view.</p>\r
+<p class="whs14">This option will be extended to the new \r
+ Gauss point mode but in a different way.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="24.961%" class="whs12">\r
+<p class="whs10">Same As</td>\r
+<td width="75.039%" class="whs13">\r
+<p>Duplicate the presentation of the selected field at the same level of \r
+ the tree</p>\r
+<p class="whs14">This option will <span style="font-weight: bold;"><B>not</B></span> \r
+ be extended to the new Gauss point mode.</td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p class="whs15">&nbsp;</p>\r
+\r
+<p class="whs16">In case of results at Gauss points fields, \r
+ the popup will have the following items:</p>\r
+\r
+<p class="whs15">&nbsp;</p>\r
+\r
+<p align="center" class="whs17"><img src="image82.gif" width="147px" height="158px" border="0" class="img_whs18"></p>\r
+\r
+<p align="center" class="whs17">&nbsp;</p>\r
+\r
+<p align="center" class="whs4">Fig. 28 : Results at Gauss point popup menu</p>\r
+\r
+<p align="center" class="whs4">&nbsp;</p>\r
+\r
+<table x-use-null-cells cellspacing="0" width="78.059%" class="whs19">\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table><table x-use-null-cells cellspacing='0' width='78.059%' border='1' bordercolor='black' bordercolorlight='black' bordercolordark='black'>");\r
+//--></script>\r
+<col class="whs20">\r
+<col class="whs21">\r
+\r
+<tr valign="top" class="whs8">\r
+<td bgcolor="#008080" width="22.929%" class="whs22">\r
+<p class="whs23">Command</td>\r
+<td bgcolor="#008080" width="77.071%" class="whs24">\r
+<p class="whs10">Purpose</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="22.929%" class="whs25">\r
+<p class="whs10">Edit</td>\r
+<td width="77.071%" class="whs26">\r
+<p>Activate the dialog corresponding to the results at Gauss points presentation \r
+ and allows user to modify current parameters.</td></tr>\r
+\r
+<tr valign="top" class="whs8">\r
+<td width="22.929%" class="whs25">\r
+<p class="whs10">Same As</td>\r
+<td width="77.071%" class="whs26">\r
+<p class="whs14">This option will be <span style="font-weight: bold;"><B>disabled \r
+ in the case of results at Gauss points.</B></span></td></tr>\r
+<script language='JavaScript'><!--\r
+if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4)) document.write("</table></table><table>");\r
+//--></script>\r
+</table>\r
+\r
+<p class="whs27">&nbsp;</p>\r
+\r
+<ul type="disc" class="whs28">\r
+       \r
+       <li class=kadov-p><p class="whs16">The \91Selection Info\92 \r
+ equivalent function will be described in the <a href="picking_general.htm#Selection_Info">Picking \r
+ chapter</a>.</p></li>\r
+</ul>\r
+\r
+<p class="whs16">&nbsp;</p>\r
+\r
+<script type="text/javascript" language="javascript1.2">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(0);\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/webhelp.cab b/doc/salome/gui/GAUSS/webhelp.cab
new file mode 100644 (file)
index 0000000..b942f64
Binary files /dev/null and b/doc/salome/gui/GAUSS/webhelp.cab differ
diff --git a/doc/salome/gui/GAUSS/webhelp.jar b/doc/salome/gui/GAUSS/webhelp.jar
new file mode 100644 (file)
index 0000000..53b2666
Binary files /dev/null and b/doc/salome/gui/GAUSS/webhelp.jar differ
diff --git a/doc/salome/gui/GAUSS/whcsh_home.htm b/doc/salome/gui/GAUSS/whcsh_home.htm
new file mode 100644 (file)
index 0000000..7a1ac9d
--- /dev/null
@@ -0,0 +1,600 @@
+<html>\r
+<script language="javascript1.2" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmozemu.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+if(gbIE4||gbNav61)\r
+{\r
+       document.write("<body></body>");\r
+}\r
+else\r
+{\r
+       document.write("<frameset rows=\"100%,*\"><frame name=\"data_frm\" src=\"about:blank\"><frame name=\"dumb_frm\" src=\"about:blank\"></frameset>");\r
+}\r
+var gCSHFileName="whcshdata.htm";\r
+\r
+var gHomePage="gauss_points_viewer.htm";\r
+var gaProj=new Array();\r
+gaProj[0]=new Object();\r
+gaProj[0].sProjPath=_replaceSlash(_getPath(document.location.href));\r
+gaProj[0].nLoadState=0;\r
+var gCurrent=0;\r
+\r
+var gsTopicURL="";\r
+var gnCurProj=0;\r
+var gnCommand=-1;\r
+var CMD_SHOWTOC=1;\r
+var CMD_SHOWINDEX=2;\r
+var CMD_SHOWSEARCH=3;\r
+var CMD_SHOWGLOSSARY=4;\r
+var CMD_SHOWNONE=0;\r
+\r
+var RHWO_LOCATION=0x01;                /*need location bar?*/\r
+var RHWO_MENUBAR=0x02;         /*need menubar?*/               \r
+var RHWO_RESIZABLE=0x04;       /*resizable window?*/\r
+var RHWO_TOOLBAR=0x08;         /*need toolbar?*/\r
+var RHWO_STATUS=0x10;          /*need statusbar?*/\r
+var RHWO_SCROLLBARS=0x20;      /*need scrollbars?*/\r
+\r
+var gsStr="";\r
+var gnId=-1;\r
+var gsWindow="";\r
+var gsJava="false";\r
+var gbUseStr=false;\r
+var gbURLReady=false;\r
+var goWnd=new Object();\r
+goWnd.sName="whCshDefault";\r
+goWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;\r
+goWnd.sBLeft="49%";\r
+goWnd.sBTop="0";\r
+goWnd.sBWidth="49%";\r
+goWnd.sBHeight="49%";\r
+goWnd.nPanes=1;\r
+var goFullWnd=new Object();\r
+goFullWnd.sName="whDefault";\r
+goFullWnd.nBOptions=RHWO_RESIZABLE|RHWO_SCROLLBARS;\r
+goFullWnd.sBLeft="20%";\r
+goFullWnd.sBTop="0";\r
+goFullWnd.sBWidth="79%";\r
+goFullWnd.sBHeight="79%";\r
+goFullWnd.nPanes=2;\r
+\r
+var goNewWnd=null;\r
+var gbLoadWnd=false;\r
+var gsURL="";\r
+\r
+function showCSH(sParam)\r
+{\r
+       //id=\r
+       //str=\r
+       //url=\r
+       //cmd=\r
+       //with the format #<a=xxx>>b=xxx>>c=xxx...\r
+       parseParam(sParam);\r
+       SwitchURL();\r
+}\r
+\r
+function IsWndReady()\r
+{\r
+       if(gaProj[0].nLoadState==0)\r
+       {\r
+               var sCshFile=_getFullPath(gaProj[0].sProjPath,gCSHFileName);\r
+               gaProj[0].nLoadState=1;\r
+               setTimeout("loadFail("+0+");",3000);\r
+               loadDataCsh(sCshFile);\r
+               gbLoadWnd=true;\r
+               return false;\r
+       }\r
+       else\r
+               return true;\r
+}\r
+\r
+function SwitchURL()\r
+{\r
+       if(gbURLReady)\r
+       {\r
+               var sURL="";\r
+               var oWnd=null;\r
+               if(gsTopicURL)\r
+               {\r
+                       sURL=_getPath(document.location.href)+gHomePage+"#"+gsTopicURL;\r
+                       oWnd=goWnd;\r
+               }\r
+               else\r
+               {\r
+                       if(gnCommand!=-1)\r
+                               sURL=_getPath(document.location.href)+gHomePage+"#>>cmd="+gnCommand;\r
+                       else\r
+                               sURL=_getPath(document.location.href)+gHomePage;\r
+                       oWnd=goFullWnd;\r
+               }\r
+               if(gsWindow)\r
+               {\r
+                       if(!IsWndReady())\r
+                               return false;\r
+                       if(gaProj[gnCurProj].aWnd)\r
+                       {\r
+                               var aWnd=gaProj[gnCurProj].aWnd;\r
+                               var bFound=false;\r
+                               for(var i=0;i<aWnd.length;i++)\r
+                               {\r
+                                       if(aWnd[i].sName.toLowerCase()==gsWindow.toLowerCase())\r
+                                       {\r
+                                               oWnd=aWnd[i];\r
+                                               bFound=true;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                               if(!bFound&&gnCurProj!=0)\r
+                               {\r
+                                       var aWnd=gaProj[0].aWnd;\r
+                                       for(var j=0;j<aWnd.length;j++)\r
+                                       {\r
+                                               if(aWnd[j].sName.toLowerCase()==gsWindow.toLowerCase())\r
+                                               {\r
+                                                       oWnd=aWnd[j];\r
+                                                       break;\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+\r
+               if(sURL&&oWnd)\r
+               {\r
+                       strURLOpt="";\r
+                       if(oWnd.sCaption)\r
+                               strURLOpt+=">>cap="+oWnd.sCaption;\r
+                       if(oWnd.nPanes==1)\r
+                               strURLOpt+=">>pan="+oWnd.nPanes;\r
+                       else if(oWnd.nPanes==2)\r
+                       {\r
+                               strURLOpt+=">>pan="+oWnd.nPanes;\r
+                               if(oWnd.nPOptions)\r
+                                       strURLOpt+=">>pot="+oWnd.nPOptions;\r
+                               if(oWnd.sPButtons)\r
+                                       strURLOpt+=">>pbs="+oWnd.sPButtons;\r
+                               if(oWnd.sPDefBtn)\r
+                                       strURLOpt+=">>pdb="+oWnd.sPDefBtn;\r
+                       }\r
+                       if(strURLOpt)\r
+                       {\r
+                               if(sURL.indexOf("#")==-1)\r
+                                       sURL+="#";\r
+                               sURL+=strURLOpt;\r
+                       }\r
+                       if(gsJava=="false")\r
+                       {\r
+                               var strOpt=getBrowserOptionString(oWnd);\r
+                               var sNewName=convertWindowName(oWnd.sName);\r
+                               if(gbNav4)\r
+                               {\r
+                                       if (gbNav6)\r
+                                       {\r
+                                               gsURL = sURL;\r
+                                               goNewWnd=window.open("about:blank",sNewName,strOpt);\r
+                                               setTimeout("postWindowNSOpen();",100);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               window.open("about:blank",sNewName,strOpt);\r
+                                               var oNewWnd=window.open(sURL,sNewName);\r
+                                               window.close();\r
+                                               oNewWnd.focus();\r
+                                       }\r
+                               }\r
+                               else\r
+                               {\r
+                                       if(gbIE5)\r
+                                       {\r
+                                               window.open("about:blank",sNewName,strOpt);\r
+                                               goNewWnd=window.open(sURL,sNewName);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               gsURL = sURL; // IE4 had hard time to handle bookmark.\r
+                                               goNewWnd=window.open("about:blank",sNewName,strOpt);\r
+                                       }\r
+                                       setTimeout("postWindowOpen();",100);\r
+                               }\r
+                       }\r
+                       else\r
+                               document.location=sURL;\r
+               }\r
+       }\r
+}\r
+\r
+function convertWindowName(strName)\r
+{\r
+       var strNewName = strName;\r
+       var strResultName = "";\r
+       var re=new RegExp("_","g");\r
+       strNewName = strName.replace(re,"__");\r
+       for (var i=0;i<strNewName.length;i++)\r
+               if (!(strNewName[i] == '_' ||\r
+                       (strNewName[i] <= '9' && strNewName[i] >= '0') ||\r
+                       (strNewName[i] <= 'z' && strNewName[i] >= 'a') ||\r
+                       (strNewName[i] <= 'Z' && strNewName[i] >= 'A')))\r
+               {\r
+                       strResultName += "_" + strNewName.charCodeAt(i);\r
+               }\r
+               else\r
+                       strResultName += strNewName[i];\r
+       return strResultName;\r
+}\r
+\r
+function postWindowNSOpen()\r
+{\r
+       if(goNewWnd)\r
+       {\r
+               if (gsURL)\r
+                       goNewWnd.document.location.href=gsURL;\r
+               window.close();\r
+               goNewWnd.focus();\r
+       }\r
+}\r
+\r
+function postWindowOpen()\r
+{\r
+       if(goNewWnd)\r
+       {\r
+               if (gsURL&&!gbIE5&&gbIE4)\r
+                       goNewWnd.document.location.href=gsURL;\r
+               goNewWnd.focus();\r
+       }\r
+}\r
+\r
+function parseParam(sParam)\r
+{\r
+       if(sParam)\r
+       {\r
+               var nBPos=0;\r
+               do\r
+               {\r
+                       var nPos=sParam.indexOf(">>",nBPos);\r
+                       if(nPos!=-1)\r
+                       {\r
+                               if(nPos>0)\r
+                               {\r
+                                       var sPart=sParam.substring(nBPos,nPos);\r
+                                       parsePart(sPart);\r
+                               }\r
+                               nBPos=nPos+2;\r
+                       }\r
+                       else\r
+                       {\r
+                               var sPart=sParam.substring(nBPos);\r
+                               parsePart(sPart);\r
+                               break;\r
+                       }\r
+               }while(nBPos<sParam.length);\r
+       }\r
+}\r
+\r
+function parsePart(sPart)\r
+{\r
+       if(sPart.toLowerCase().indexOf("id=")==0)\r
+       {\r
+               fetchURLById(sPart.substring(3));\r
+               gbURLReady=false;\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("str=")==0)\r
+       {\r
+               fetchURLByStr(sPart.substring(4));\r
+               gbURLReady=false;\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("url=")==0)\r
+       {\r
+               gsTopicURL=sPart.substring(4);\r
+               gbURLReady=true;\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("cmd=")==0)\r
+       {\r
+               var sCmd=sPart.substring(4);\r
+               if(sCmd.toLowerCase()=="toc")\r
+               {\r
+                       gnCommand=CMD_SHOWTOC;\r
+               }\r
+               else if(sCmd.toLowerCase()=="idx")\r
+               {\r
+                       gnCommand=CMD_SHOWINDEX;\r
+               }\r
+               else if(sCmd.toLowerCase()=="fts")\r
+               {\r
+                       gnCommand=CMD_SHOWSEARCH;\r
+               }\r
+               else if(sCmd.toLowerCase()=="glo")\r
+               {\r
+                       gnCommand=CMD_SHOWGLOSSARY;\r
+               }\r
+               else if(sCmd.toLowerCase()=="none")\r
+               {\r
+                       gnCommand=CMD_SHOWNONE;\r
+               }\r
+               gbURLReady=true;\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("wnd=")==0)\r
+       {\r
+               gsWindow=_browserStringToText(sPart.substring(4));\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("java=")==0)\r
+       {\r
+               gsJava=sPart.substring(5);\r
+       }\r
+}\r
+\r
+function fetchURLById(sId)\r
+{\r
+       var nId=parseInt(sId);\r
+       gsTopicURL="";\r
+       fetchURL("",nId,false);\r
+}\r
+\r
+function fetchURLByStr(sStr)\r
+{\r
+       gsTopicURL="";\r
+       fetchURL(sStr,0,true);\r
+}\r
+\r
+function fetchURL(sStr,nId,bUseStr)\r
+{\r
+       var bNeedLoad=false;\r
+       var bFound=false;\r
+       for(var i=0;i<gaProj.length;i++)\r
+       {\r
+               if(gaProj[i].nLoadState==3)\r
+               {\r
+                       if(gaProj[i].aCsh)\r
+                       {\r
+                               for(var j=0;j<gaProj[i].aCsh.length;j++)\r
+                               {\r
+                                       var sTopicURL="";\r
+                                       if(bUseStr)\r
+                                       {\r
+                                               if(gaProj[i].aCsh[j].strAliasId.toLowerCase()==sStr.toLowerCase())\r
+                                                       sTopicURL=gaProj[i].aCsh[j].strUrl;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               if(gaProj[i].aCsh[j].nTopicNum==nId)\r
+                                                       sTopicURL=gaProj[i].aCsh[j].strUrl;\r
+                                       }\r
+                                       if(sTopicURL)\r
+                                       {\r
+                                               if(i!=0)\r
+                                               {\r
+                                                       gnCurProj=i;\r
+                                                       if(gaProj[i].sProjPath.indexOf(gaProj[0].sProjPath)==0)\r
+                                                       {\r
+                                                               var sRelPath=gaProj[i].sProjPath.substring(gaProj[0].sProjPath.length);\r
+                                                               gsTopicURL=sRelPath+sTopicURL;\r
+                                                       }\r
+                                                       else\r
+                                                               gsTopicURL=gaProj[i].sProjPath+sTopicURL;\r
+                                               }\r
+                                               else\r
+                                                       gsTopicURL=sTopicURL;\r
+                                               bFound=true;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                       }\r
+                       \r
+               }\r
+               else if(gaProj[i].nLoadState==0)\r
+               {\r
+                       gsStr=sStr;\r
+                       gnId=nId;\r
+                       gbUseStr=bUseStr;\r
+                       var sCshFile=_getFullPath(gaProj[i].sProjPath,gCSHFileName);\r
+                       gaProj[i].nLoadState=1;\r
+                       setTimeout("loadFail("+i+");",3000);\r
+                       loadDataCsh(sCshFile);\r
+                       bNeedLoad=true;\r
+               }\r
+               if(bFound||bNeedLoad)\r
+                       break;\r
+       }\r
+       if(!bNeedLoad)\r
+       {\r
+               gbURLReady=true;\r
+               SwitchURL();\r
+       }\r
+}\r
+\r
+function loadDataCsh(sFile)\r
+{\r
+       if(gbIE4||gbNav61)\r
+               loadData(sFile);\r
+       else\r
+       {\r
+               window.frames[0].location=sFile;\r
+       }\r
+}\r
+\r
+function loadFail(nProj)\r
+{\r
+       if(gaProj[nProj].nLoadState==1)\r
+       {\r
+               gaProj[nProj].nLoadState=2;\r
+               if(!gbLoadWnd)\r
+                       fetchURL(gsStr,gnId,gbUseStr);\r
+               else\r
+                       SwitchURL();\r
+       }\r
+}\r
+\r
+function putCshData(strProj,aCsh,aWnd,aRmtProj)\r
+{\r
+       if(strProj)\r
+       {\r
+               strProj=_replaceSlash(strProj);\r
+               if(strProj.lastIndexOf("/")!=strProj.length-1)\r
+                       strProj+="/";\r
+               for(var i=0;i<gaProj.length;i++)\r
+               {\r
+                       if(gaProj[i].sProjPath)\r
+                       {\r
+                               if(isSamePath(gaProj[i].sProjPath,strProj))\r
+                               {\r
+                                       gaProj[i].nLoadState=3;\r
+                                       gaProj[i].aCsh=aCsh;\r
+                                       gaProj[i].aWnd=aWnd;\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+               if(aRmtProj&&aRmtProj.length)\r
+               {\r
+                       for(var j=0;j<aRmtProj.length;j++)\r
+                       {\r
+                               var strRPath=_getFullPath(strProj,aRmtProj[j]);\r
+                               var bFound=false;\r
+                               for (var k=0;k<gaProj.length;k++)\r
+                               {\r
+                                       if(gaProj[k].sProjPath)\r
+                                       {\r
+                                               if(isSamePath(gaProj[k].sProjPath,strRPath))\r
+                                               {\r
+                                                       bFound=true;\r
+                                                       break;\r
+                                               }\r
+                                       }\r
+                               }\r
+                               if(!bFound)\r
+                               {\r
+                                       var len=gaProj.length;\r
+                                       gaProj[len]=new Object();\r
+                                       gaProj[len].sProjPath=strRPath;\r
+                                       gaProj[len].nLoadState=0;\r
+                               }\r
+                       }\r
+               }\r
+               if(!gbLoadWnd)\r
+                       fetchURL(gsStr,gnId,gbUseStr);\r
+               else\r
+                       SwitchURL();\r
+                       \r
+       }\r
+}\r
+\r
+function isSamePath(strPath1,strPath2)\r
+{\r
+       return strPath1.toLowerCase()==strPath2.toLowerCase();\r
+}\r
+\r
+function getRelHomePage(strLocation)\r
+{\r
+       var strCurPPath=_getPath(strLocation);\r
+       var strOriPPath=_getPath(getHomePage());\r
+       var strRelPath=_getRelativeFileName(strOriPPath,strCurPPath);\r
+       var strURL=getHomePage()+"#"+strRelPath;\r
+       return strURL;\r
+}\r
+\r
+function getHomePage()\r
+{\r
+       var strHomePage;\r
+       var strTmp=location.toString();\r
+       var nPos=strTmp.indexOf("#");\r
+       if(nPos!=-1)\r
+       {\r
+               strHomePage=strTmp.substring(0,nPos);\r
+       }\r
+       else\r
+       {\r
+               strHomePage=strTmp;\r
+       }\r
+       return strHomePage;\r
+}\r
+\r
+function getBrowserOptionString(oWnd)\r
+{\r
+       var strOpts="";\r
+       if(oWnd.bUseDefault)\r
+               return strOpts;\r
+       if(oWnd.nBOptions&RHWO_LOCATION)\r
+               strOpts+="location=yes";\r
+       else\r
+               strOpts+="location=no";\r
+       if(oWnd.nBOptions&RHWO_TOOLBAR)\r
+               strOpts+=",toolbar=yes";                \r
+       else\r
+               strOpts+=",toolbar=no";         \r
+       if(oWnd.nBOptions&RHWO_MENUBAR)\r
+               strOpts+=",menubar=yes";                \r
+       else\r
+               strOpts+=",menubar=no";\r
+       if(oWnd.nBOptions&RHWO_STATUS)\r
+               strOpts+=",status=yes";         \r
+       else\r
+               strOpts+=",status=no";          \r
+       if(oWnd.nBOptions&RHWO_SCROLLBARS)\r
+               strOpts+=",scrollbars=yes";\r
+       else\r
+               strOpts+=",scrollbars=no";      \r
+       if(oWnd.nBOptions&RHWO_RESIZABLE)\r
+               strOpts+=",resizable=yes";\r
+       else\r
+               strOpts+=",resizable=no";\r
+       if(oWnd.sBTop)\r
+       {\r
+               var nTop=getSValue(oWnd.sBTop,screen.height);\r
+               strOpts+=",top="+nTop;\r
+               strOpts+=",screenY="+nTop;\r
+       }\r
+       if(oWnd.sBLeft)\r
+       {\r
+               var nLeft=getSValue(oWnd.sBLeft,screen.width);\r
+               strOpts+=",left="+nLeft;\r
+               strOpts+=",screenX="+nLeft;\r
+       }\r
+       if(oWnd.sBWidth)\r
+       {\r
+               var nWidth=getSValue(oWnd.sBWidth,screen.width);\r
+               strOpts+=",width="+nWidth;\r
+               strOpts+=",outerWidth="+nWidth;\r
+       }\r
+       if(oWnd.sBHeight)\r
+       {\r
+               var nHeight=getSValue(oWnd.sBHeight,screen.height);\r
+               strOpts+=",height="+nHeight;\r
+               strOpts+=",outerHeight="+nHeight;\r
+       }\r
+       return strOpts;\r
+}\r
+\r
+function getSValue(sValue,nLength)\r
+{\r
+       var nValue=0;\r
+       var nPos=sValue.indexOf("%");\r
+       if(nPos!=-1)\r
+       {\r
+               if(nPos>0)\r
+               {\r
+                       var nPart=parseInt(sValue.substring(0,nPos));\r
+                       nValue=nLength*nPart/100;\r
+               }\r
+       }\r
+       else\r
+               nValue=parseInt(sValue);\r
+       return nValue;\r
+}\r
+\r
+\r
+window.onload=window_OnLoad;\r
+\r
+function window_OnLoad()\r
+{\r
+       if(document.location.hash.length>0)\r
+       {\r
+               showCSH(document.location.hash.substring(1));\r
+       }\r
+\r
+       if(gsJava=="false")\r
+               window.moveTo(screen.width,screen.height);\r
+}\r
+//-->\r
+</script>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whcshdata.htm b/doc/salome/gui/GAUSS/whcshdata.htm
new file mode 100644 (file)
index 0000000..c50f91c
--- /dev/null
@@ -0,0 +1,88 @@
+<html>\r
+<head>\r
+<title>Gauss Points Viewer</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript1.2" src="whver.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="JavaScript">\r
+<!--\r
+var gaCsh=new Array();\r
+\r
+var gaWindow=new Array();\r
+\r
+var gaRmtProj=new Array();\r
+\r
+var gsProjPath=_getPath(document.location.href);\r
+\r
+function CshEntityItem(strAliasId,nTopicNum,strUrl)\r
+{\r
+       this.strAliasId=strAliasId;\r
+       this.nTopicNum=nTopicNum;\r
+       this.strUrl=strUrl;\r
+}\r
+\r
+function CshWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn)\r
+{\r
+       this.sName=sWName;\r
+       this.bUseDefault=bBUseDefault;\r
+       if(!this.bUseDefault)\r
+       {\r
+               this.nBOptions=nWBOptions;\r
+               this.sBLeft=sWBLeft;\r
+               this.sBTop=sWBTop;\r
+               this.sBWidth=sWBWidth;\r
+               this.sBHeight=sWBHeight;\r
+       }\r
+       this.sCaption=sWCaption;\r
+       this.nPanes=nWPanes;\r
+       if(this.nPanes==2)\r
+       {\r
+               this.nPOptions=nWPOptions;\r
+               this.sPButtons=sWPButtons;\r
+               this.sPDefBtn=sWPDefBtn;\r
+       }\r
+}\r
+\r
+function addRemoteProject(sPath)\r
+{\r
+       if(sPath.length!=0)\r
+       {\r
+               if(sPath.lastIndexOf("/")!=sPath.length-1)\r
+                       sPath+="/";\r
+               gaRmtProj[gaRmtProj.length]=sPath;      \r
+       }\r
+}\r
+\r
+//Set Context-sensitive help entity...\r
+function SetCsh(n,strAliasId,nTopicNum,strUrl)\r
+{\r
+       gaCsh[n]=new CshEntityItem(strAliasId,nTopicNum,strUrl);\r
+}\r
+\r
+function addWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn)\r
+{\r
+       gaWindow[gaWindow.length]=new CshWindow(sWName,bBUseDefault,nWBOptions,sWBLeft,sWBTop,sWBWidth,sWBHeight,sWCaption,nWPanes,nWPOptions,sWPButtons,sWPDefBtn);\r
+}\r
+\r
+\r
+addWindow("NewWindow",true,0,"","","","","NewWindow",2,2,"toc|ndx|nls|gls","toc");\r
+\r
+\r
+\r
+window.onload=window_OnLoad;\r
+\r
+function window_OnLoad()\r
+{\r
+       if(parent&&parent!=this&&parent.putCshData)\r
+       {\r
+               parent.putCshData(gsProjPath,gaCsh,gaWindow,gaRmtProj);\r
+       }\r
+}\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whdata/whftdata.js b/doc/salome/gui/GAUSS/whdata/whftdata.js
new file mode 100644 (file)
index 0000000..071ae6f
--- /dev/null
@@ -0,0 +1,25 @@
+//     WebHelp 5.10.001\r
+var gTEA = new Array();\r
+function aTE(sTopicTitle, sTopicURL)\r
+{\r
+       var len = gTEA.length;\r
+       gTEA[len] = new topicEntry(sTopicTitle, sTopicURL);\r
+}\r
+\r
+function topicEntry(sTopicTitle, sTopicURL)\r
+{\r
+       this.sTopicTitle = sTopicTitle;\r
+       this.sTopicURL = sTopicURL;\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if (parent && parent != this) {\r
+               if (parent.putFtsTData) \r
+               {\r
+                       parent.putFtsTData(gTEA);\r
+               }\r
+       }\r
+}\r
+\r
+window.onload = window_OnLoad;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whdata/whftdata0.htm b/doc/salome/gui/GAUSS/whdata/whftdata0.htm
new file mode 100644 (file)
index 0000000..47a0318
--- /dev/null
@@ -0,0 +1,53 @@
+<html>\r
+<head>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whftdata.js"></script>\r
+<script language="javascript">\r
+<!--\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+aTE("Activation of commands display results","activation_of_commands_display_results.htm");\r
+aTE("Animation function","animation_function.htm");\r
+aTE("Cameras","cameras.htm");\r
+aTE("Command Activation","command_activation.htm");\r
+aTE("Command Activation in Display Meshes","command_activation_in_display_meshes.htm");\r
+aTE("Command Activation picking","command_activation_picking.htm");\r
+aTE("Command Activation Segmentation","command_activation_segmentation.htm");\r
+aTE("Command activation timestamps animation","command_activation_timestamps_animation.htm");\r
+aTE("Command deactivation","command_deactivation.htm");\r
+aTE("Command Description in Display Meshes","command_description_in_display_meshes.htm");\r
+aTE("Command description segmentation","command_description_segmentation.htm");\r
+aTE("Command description timestamps animation","command_description_timestamps_animation.htm");\r
+aTE("Command Result","command_result.htm");\r
+aTE("Description of commands display results","description_of_commands_display_results.htm");\r
+aTE("Description of the picking functionality","description_of_the_picking_functionality.htm");\r
+aTE("Display Meshes General","display_meshes_general.htm");\r
+aTE("Display results at Gauss Points_General","display_results_at_gauss_points_general.htm");\r
+aTE("Data Loading General","general.htm");\r
+aTE("General Navigation within the scene","general_navigation_within_the_scene.htm");\r
+aTE("General Storage of produced data","general_storage_of_produced_data.htm");\r
+aTE("General timestamps animation","general_timestamps_animation.htm");\r
+aTE("Introduction","index.htm");\r
+aTE("Loading of previously saved data","loading_of_previously_saved_data.htm");\r
+aTE("Making an AVI clip","making_an_avi_clip.htm");\r
+aTE("Managing configurations","managing_configurations.htm");\r
+aTE("Navigation using the keyboard","navigation_using_the_keyboard.htm");\r
+aTE("Navigation using the mouse","navigation_using_the_mouse.htm");\r
+aTE("Navigation using the spacemouse","navigation_using_the_spacemouse.htm");\r
+aTE("Picking General","picking_general.htm");\r
+aTE("SALOME-VISU preferences display results","salome-visu_preferences_display_results.htm");\r
+aTE("SALOME-VISU preferences","salome_visu_preferences.htm");\r
+aTE("Salome-Visu preferences Navigation within the scene","salome_visu_preferences_navigation_within_the_scene.htm");\r
+aTE("Salome-Visu preferences picking","salome_visu_preferences_picking.htm");\r
+aTE("Segmentation General","segmentation_general.htm");\r
+aTE("Specific additional commands for Fields items","specific_additional_commands_for_fields_items.htm");\r
+\r
+//-->\r
+</script>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whdata/whfts.htm b/doc/salome/gui/GAUSS/whdata/whfts.htm
new file mode 100644 (file)
index 0000000..d89f173
--- /dev/null
@@ -0,0 +1,21 @@
+<html>\r
+<head>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whfts.js"></script>\r
+<script language="javascript">\r
+<!--\r
+iWM("0","detection","whfwdata0.htm");\r
+iWM("development","nb","whfwdata1.htm");\r
+iWM("nbrfac","task","whfwdata2.htm");\r
+iWM("technical","zoom","whfwdata3.htm");\r
+\r
+iTM(0,34,"whftdata0.htm");\r
+\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whdata/whfts.js b/doc/salome/gui/GAUSS/whdata/whfts.js
new file mode 100644 (file)
index 0000000..2b66786
--- /dev/null
@@ -0,0 +1,40 @@
+//     WebHelp 5.10.001\r
+var gaFileMapping = new Array();\r
+var gaFileTopicMapping = new Array();\r
+\r
+function fileMapping(sStartKey, sEndKey, sFileName)\r
+{\r
+       this.sStartKey = sStartKey;\r
+       this.sEndKey = sEndKey;\r
+       this.sFileName = sFileName;\r
+       this.aFtsKeys = null;\r
+}\r
+\r
+function fileTopicMapping(nIdBegin, nIdEnd, sFileName)\r
+{\r
+       this.nBegin = nIdBegin;\r
+       this.nEnd = nIdEnd;\r
+       this.sFileName = sFileName;\r
+       this.aTopics = null;\r
+}\r
+\r
+\r
+function iWM(sStartKey, sEndKey, sFileName)\r
+{\r
+       gaFileMapping[gaFileMapping.length] = new fileMapping(sStartKey, sEndKey, sFileName);   \r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if (parent && parent != this && parent.ftsReady)\r
+       {\r
+               parent.ftsReady(gaFileMapping, gaFileTopicMapping);\r
+       }               \r
+}\r
+\r
+function iTM(nIdBegin, nIdEnd, sFileName)\r
+{\r
+       gaFileTopicMapping[gaFileTopicMapping.length] = new fileTopicMapping(nIdBegin, nIdEnd, sFileName);      \r
+}\r
+\r
+window.onload = window_OnLoad;\r
diff --git a/doc/salome/gui/GAUSS/whdata/whfwdata.js b/doc/salome/gui/GAUSS/whdata/whfwdata.js
new file mode 100644 (file)
index 0000000..e9e8bc6
--- /dev/null
@@ -0,0 +1,37 @@
+//     WebHelp 5.10.001\r
+var gWEA = new Array();\r
+function aWE()\r
+{\r
+       var len = gWEA.length;\r
+       gWEA[len] = new ftsEntry(aWE.arguments);\r
+}\r
+\r
+function ftsEntry(fn_arguments) \r
+{\r
+       if (fn_arguments.length && fn_arguments.length >= 1) \r
+       {\r
+               this.sItemName = fn_arguments[0];\r
+               this.aTopics = null;\r
+               var nLen = fn_arguments.length;\r
+               if (nLen > 1) \r
+               {\r
+                       this.aTopics = new Array();\r
+                       for (var i = 0; i < nLen - 1; i ++ )\r
+                       {\r
+                               this.aTopics[i] = fn_arguments[i + 1];\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if (parent && parent != this) {\r
+               if (parent.putFtsWData) \r
+               {\r
+                       parent.putFtsWData(gWEA);\r
+               }\r
+       }\r
+}\r
+\r
+window.onload = window_OnLoad;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whdata/whfwdata0.htm b/doc/salome/gui/GAUSS/whdata/whfwdata0.htm
new file mode 100644 (file)
index 0000000..a4f6334
--- /dev/null
@@ -0,0 +1,267 @@
+<html>\r
+<head>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whfwdata.js"></script>\r
+<script language="javascript">\r
+<!--\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+aWE("0",10,13,32);\r
+aWE("01",13);\r
+aWE("1",3,9,11,13,14,25,27);\r
+aWE("10",9,10,13,27,29);\r
+aWE("100",13,32);\r
+aWE("11",13,27);\r
+aWE("12",13);\r
+aWE("13",13);\r
+aWE("14",13);\r
+aWE("15",13);\r
+aWE("16",13);\r
+aWE("16x16",13);\r
+aWE("17",13);\r
+aWE("18",13,29);\r
+aWE("19",13);\r
+aWE("2",1,2,9,10,12,13,14,27,31,33);\r
+aWE("20",13);\r
+aWE("200",13);\r
+aWE("21",13);\r
+aWE("22",13);\r
+aWE("23",13);\r
+aWE("24",13);\r
+aWE("25",13);\r
+aWE("256",13);\r
+aWE("26",13);\r
+aWE("27",34);\r
+aWE("28",34);\r
+aWE("29",7);\r
+aWE("2d",13);\r
+aWE("3",1,9,11,13,26);\r
+aWE("30",11);\r
+aWE("31",11);\r
+aWE("32",23);\r
+aWE("33",13,23);\r
+aWE("34",26);\r
+aWE("35",27);\r
+aWE("36",27);\r
+aWE("37",2);\r
+aWE("38",2);\r
+aWE("39",24);\r
+aWE("3d",0,2,5,6,9,10,12,13,14,15,16,18,23,24,27,28,31,32,34);\r
+aWE("4",0,2,9,34);\r
+aWE("40",24);\r
+aWE("41",24);\r
+aWE("42",31);\r
+aWE("43",31);\r
+aWE("44",28);\r
+aWE("45",28);\r
+aWE("46",5,6);\r
+aWE("47",14);\r
+aWE("48",14);\r
+aWE("49",32);\r
+aWE("5",0,10,14);\r
+aWE("50",13,32);\r
+aWE("51",10);\r
+aWE("512",13);\r
+aWE("52",10);\r
+aWE("53",10);\r
+aWE("54",10);\r
+aWE("55",10);\r
+aWE("56",10);\r
+aWE("57",10);\r
+aWE("58",10);\r
+aWE("59",10);\r
+aWE("6",0,13,27,32);\r
+aWE("60",10);\r
+aWE("61",19);\r
+aWE("62",19);\r
+aWE("63",22);\r
+aWE("7",0);\r
+aWE("8",13);\r
+aWE("9",13);\r
+aWE("ability",10);\r
+aWE("abl",24);\r
+aWE("abscissa",13);\r
+aWE("absolut",13);\r
+aWE("acceptabl",13);\r
+aWE("acces",16,19,30);\r
+aWE("accessibl",0,2,3,4,15);\r
+aWE("accord",2,10,13,24,27);\r
+aWE("act",5,6,11);\r
+aWE("action",4,9,24,25,26,27,28,34);\r
+aWE("activ",5,6,10,13,14,23,24,25,27);\r
+aWE("activat",2,5,6,7,9,10,13,23,24,28,34);\r
+aWE("activation",0,3,4,5,6,7,8);\r
+aWE("actor",28);\r
+aWE("ad",0,5,6,10,16,24,27,29);\r
+aWE("adapt",14);\r
+aWE("adaptabl",13);\r
+aWE("addition",9,10,14);\r
+aWE("additional",30,29,34);\r
+aWE("adjust",10);\r
+aWE("advanc",1,33);\r
+aWE("affect",9,24);\r
+aWE("algorithm",0);\r
+aWE("allow",1,2,3,9,11,13,15,16,19,24,28,31,32,34);\r
+aWE("alon",9);\r
+aWE("along",10);\r
+aWE("alpha",13);\r
+aWE("already",4,9,11,17,13,14,24);\r
+aWE("amplify",13);\r
+aWE("analys",14,34);\r
+aWE("angular",2,31);\r
+aWE("animat",11);\r
+aWE("animation",1,7,11,20,23,34);\r
+aWE("anoth",2,5,6,11,14,18,24,28);\r
+aWE("any",2,8,23,25,26,27,28);\r
+aWE("anyway",0);\r
+aWE("ap",2,9,13,24);\r
+aWE("apex",32);\r
+aWE("appli",0,4,9,10,13,31,34);\r
+aWE("applicabl",10,13,14,29,34);\r
+aWE("application",9);\r
+aWE("apply",24);\r
+aWE("area",11,28);\r
+aWE("around",10);\r
+aWE("array",28);\r
+aWE("assign",0);\r
+aWE("associat",12,13,32);\r
+aWE("attribut",2,5,6,24);\r
+aWE("auto",13);\r
+aWE("automatic",24);\r
+aWE("automatical",10,14,19);\r
+aWE("availabl",10,11,13,23,27,28);\r
+aWE("averag",13);\r
+aWE("avi",23);\r
+aWE("axi",10,27);\r
+aWE("axo",2);\r
+aWE("back",2,10);\r
+aWE("background",23);\r
+aWE("backward",11,27);\r
+aWE("bar",0,4,5,6,8,10,13,14,15,16,19,22,28,29);\r
+aWE("bas",9,27,32);\r
+aWE("be",14);\r
+aWE("becom",14);\r
+aWE("behavior",2);\r
+aWE("behaviour",2,5,9,17,13,16,19,20,28,30,33);\r
+aWE("below",10,27,32);\r
+aWE("besid",13,33);\r
+aWE("bicolor",13);\r
+aWE("big",13,30);\r
+aWE("bitmap",11);\r
+aWE("black",13,14);\r
+aWE("block",13);\r
+aWE("blu",13);\r
+aWE("both",9,10,13,14,28,32);\r
+aWE("bottom",10,13);\r
+aWE("bound",10);\r
+aWE("boundari",9);\r
+aWE("boundary",10,32);\r
+aWE("box",3,6,10,13,24,28,33);\r
+aWE("brief",17,16,20);\r
+aWE("brightnes",13);\r
+aWE("brows",0,2,3,4,7,9,12,19,22,24,28);\r
+aWE("button",0,1,3,4,5,6,7,9,10,11,13,14,22,23,24,26,27,28,31);\r
+aWE("cad",10);\r
+aWE("cal",10);\r
+aWE("calculation",16);\r
+aWE("camera",2,13,14,18,19,24,31,32);\r
+aWE("cancel",0,9,10,13);\r
+aWE("cannot",13);\r
+aWE("cap",27);\r
+aWE("capabiliti",10,17);\r
+aWE("capability",16,26,27);\r
+aWE("car",2);\r
+aWE("cas",0,2,5,6,8,9,10,13,14,23,34);\r
+aWE("cel",13);\r
+aWE("cell",9,28);\r
+aWE("cent",2,14);\r
+aWE("centr",10,14,25,26,32);\r
+aWE("certain",2,10,25,34);\r
+aWE("chang",2,9,10,13,14,20,24,27,31);\r
+aWE("channel",13);\r
+aWE("chapt",10,11,34);\r
+aWE("characteristic",13);\r
+aWE("check",0,5,6,11,13,14,30);\r
+aWE("child",2,24);\r
+aWE("choic",3,9,13);\r
+aWE("choos",10,13,31,32);\r
+aWE("chosen",13);\r
+aWE("clamp",13);\r
+aWE("clear",9,11,22);\r
+aWE("click",0,1,2,3,4,7,14,24,30);\r
+aWE("clip",23);\r
+aWE("clockwis",27);\r
+aWE("clos",9,11);\r
+aWE("co",27);\r
+aWE("code_ast",21);\r
+aWE("collaps",12);\r
+aWE("color",9,10,13,14,28);\r
+aWE("colour",13);\r
+aWE("combin",27,31);\r
+aWE("command",0,2,3,4,5,6,7,8,9,10,11,12,13,15,16,19,20,22,24,26,27,30,29,34);\r
+aWE("component",13,14);\r
+aWE("comput",0,2,4,11,13,31);\r
+aWE("computation",0,13);\r
+aWE("concern",0,2,4,21);\r
+aWE("config",24);\r
+aWE("configur",10,31);\r
+aWE("configuration",10,11,13,19,24,29,31,32);\r
+aWE("connect",5,26);\r
+aWE("connectivity",26);\r
+aWE("consid",11,16);\r
+aWE("consider",11,13);\r
+aWE("consist",2,17,33);\r
+aWE("contain",0,10);\r
+aWE("content",10,13,23);\r
+aWE("contextual",0,2,4,15,16);\r
+aWE("continu",13,23);\r
+aWE("control",10,13,23,27);\r
+aWE("convenienc",14,28);\r
+aWE("convention",26,33);\r
+aWE("coordinat",0,10,14,27);\r
+aWE("corn",32);\r
+aWE("correct",0);\r
+aWE("correspond",2,4,5,6,10,11,12,13,14,15,16,23,27,28,31,34);\r
+aWE("could",0);\r
+aWE("counterclockwis",27);\r
+aWE("creat",2,4,10,19,22,24,25);\r
+aWE("ctrl",25,26);\r
+aWE("current",0,2,4,8,9,12,13,14,16,24,27,32,34);\r
+aWE("cursor",10,13,14,19,24,32,33);\r
+aWE("customiz",13,29,31,32);\r
+aWE("cut",33);\r
+aWE("d",10);\r
+aWE("dat",1);\r
+aWE("data",0,4,12,19,21,22,28,32,34);\r
+aWE("deactivation",5,6,8);\r
+aWE("debug",0);\r
+aWE("decid",24);\r
+aWE("decreas",25,26,27);\r
+aWE("dedicat",0,13);\r
+aWE("default",4,10,13,14,26,27,30,29,31);\r
+aWE("defin",1,2,3,4,5,9,10,11,13,14,15,16,19,20,23,24,25,26,27,28,30,29,31,32,33);\r
+aWE("definition",10,13,32);\r
+aWE("deform",13);\r
+aWE("deformation",13);\r
+aWE("degre",27,31);\r
+aWE("delet",2,9,24);\r
+aWE("demand",30);\r
+aWE("depend",0,10,13);\r
+aWE("depth",10,24);\r
+aWE("describ",2,10,11,16,18,21,28,34);\r
+aWE("description",2,9,10,11,13,14,27,32,34);\r
+aWE("design",13);\r
+aWE("desktop",10);\r
+aWE("detail",32);\r
+aWE("detect",14,28);\r
+aWE("detection",14);\r
+\r
+//-->\r
+</script>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whdata/whfwdata1.htm b/doc/salome/gui/GAUSS/whdata/whfwdata1.htm
new file mode 100644 (file)
index 0000000..c843a0a
--- /dev/null
@@ -0,0 +1,259 @@
+<html>\r
+<head>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whfwdata.js"></script>\r
+<script language="javascript">\r
+<!--\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+aWE("development",13);\r
+aWE("diagonal",10);\r
+aWE("dialog",2,3,9,10,11,13,19,22,23,24,28,29,31,32,34);\r
+aWE("diamet",10);\r
+aWE("differenc",13);\r
+aWE("different",0,10,13,14,34);\r
+aWE("dimension",13);\r
+aWE("direct",10);\r
+aWE("direction",10,24,25,26,27);\r
+aWE("directory",13,22);\r
+aWE("disabl",13,23,27,34);\r
+aWE("discus",13);\r
+aWE("disk",11,13,19);\r
+aWE("displacement",2,31);\r
+aWE("display",0,1,3,4,5,6,8,9,10,12,13,14,15,16,24,28,29,31,32,34);\r
+aWE("distanc",2,14,24,31,32);\r
+aWE("distinguish",9);\r
+aWE("divid",10,13,27);\r
+aWE("do",17,25,27,28,33);\r
+aWE("dock",10);\r
+aWE("document",19,22,24);\r
+aWE("documentation",21);\r
+aWE("dominant",27,31);\r
+aWE("don",5,6,9,13);\r
+aWE("down",2,27);\r
+aWE("drag",10);\r
+aWE("draw",9);\r
+aWE("driv",28);\r
+aWE("duplicat",34);\r
+aWE("dynamic",2,13,14,25,26,27);\r
+aWE("dynamical",13,32);\r
+aWE("e",2,9,10,12,13);\r
+aWE("edf",28);\r
+aWE("edg",9,28);\r
+aWE("edit",10,13,24,34);\r
+aWE("editabl",13);\r
+aWE("edition",10,13,24,34);\r
+aWE("effect",10,13);\r
+aWE("eith",5,6,9,12,13,28);\r
+aWE("element",0,2,4,8,9,10,14,16,24,28);\r
+aWE("els",13);\r
+aWE("embed",15);\r
+aWE("enabl",5,6);\r
+aWE("end",10,13,28,32);\r
+aWE("enhancement",17);\r
+aWE("ensur",2);\r
+aWE("entiti",0,12,15);\r
+aWE("entri",4);\r
+aWE("entry",0,2,24);\r
+aWE("environment",13);\r
+aWE("equal",10,13);\r
+aWE("equivalent",9,34);\r
+aWE("eras",5,6,8,9,10,14,24);\r
+aWE("establish",33);\r
+aWE("even",24);\r
+aWE("exampl",10);\r
+aWE("exceed",13);\r
+aWE("except",8);\r
+aWE("execut",19);\r
+aWE("exist",0,9,17,13,16,24,28);\r
+aWE("exit",8,9,10,11,13);\r
+aWE("expand",12);\r
+aWE("expect",10);\r
+aWE("expectation",28);\r
+aWE("explain",5,10,17,13,20);\r
+aWE("explanation",11,26);\r
+aWE("explod",9);\r
+aWE("extend",1,9,20,34);\r
+aWE("extension",13);\r
+aWE("extra",26);\r
+aWE("fac",13,28);\r
+aWE("factor",13);\r
+aWE("famili",0,4,9,34);\r
+aWE("far",13);\r
+aWE("featur",13);\r
+aWE("few",9,30,29);\r
+aWE("field",0,1,7,11,28,34);\r
+aWE("fig",0,2,3,5,6,7,9,10,11,12,13,14,19,22,23,24,26,27,28,29,31,32,34);\r
+aWE("figur",2);\r
+aWE("fil",0,2,3,4,11,12,13,19,22,23,30);\r
+aWE("filt",13,28,31);\r
+aWE("final",2,13);\r
+aWE("first",0,10,11,17,13,14,19,23,32);\r
+aWE("fix",13,32);\r
+aWE("flyto",31);\r
+aWE("focal",2,14,24,25,26,31,32);\r
+aWE("focu",2,14);\r
+aWE("follow",2,8,10,11,13,14,20,23,24,25,26,27,28,31,32,33,34);\r
+aWE("font",13);\r
+aWE("forth",13);\r
+aWE("forward",11,27);\r
+aWE("found",13);\r
+aWE("fram",1,9,10,11,13,20,24,26);\r
+aWE("fre",24,26,31);\r
+aWE("freedom",27);\r
+aWE("front",2,10);\r
+aWE("ful",16,28,30);\r
+aWE("full",30);\r
+aWE("function",1,8,10,13,20,28,31,32,33,34);\r
+aWE("functionality",2,5,6,9,10,14,15,16,20,21,23,28,32);\r
+aWE("futur",10);\r
+aWE("gaus",0,1,5,6,8,10,17,13,14,16,20,21,24,27,28,29,31,32,33,34);\r
+aWE("general",17,15,16,18,20,28,33);\r
+aWE("generat",11,32);\r
+aWE("geometrical",10,13);\r
+aWE("geometry",0,13,28);\r
+aWE("giv",0,31);\r
+aWE("given",13,34);\r
+aWE("global",13);\r
+aWE("glyph",10);\r
+aWE("go",0,11,18,30);\r
+aWE("graphic",13,14,18,28);\r
+aWE("graphical",4,10,21,28);\r
+aWE("great",13);\r
+aWE("grey",13);\r
+aWE("group",4,9,23,34);\r
+aWE("gui",11,16,21,23);\r
+aWE("half",13,33);\r
+aWE("handl",17);\r
+aWE("hardwar",13);\r
+aWE("hdf",19,22);\r
+aWE("head",27);\r
+aWE("height",13,32);\r
+aWE("her",17,13,16);\r
+aWE("hierarchical",12);\r
+aWE("hierarchy",3);\r
+aWE("high",13);\r
+aWE("highlight",10,14,24,28);\r
+aWE("him",0);\r
+aWE("homothetic",9);\r
+aWE("horizontal",13);\r
+aWE("how",17,18,20);\r
+aWE("i",2,9,10,12,13,14);\r
+aWE("icon",2,5,6);\r
+aWE("id",14);\r
+aWE("if",0,4,8,11,13,14,24,32);\r
+aWE("ii",14);\r
+aWE("immediate",10,13);\r
+aWE("implement",5,6,9,23,32);\r
+aWE("implementation",32);\r
+aWE("import",3);\r
+aWE("improvement",10);\r
+aWE("inactiv",13);\r
+aWE("includ",9,13);\r
+aWE("incorrect",0);\r
+aWE("increas",14,25,26,27);\r
+aWE("increment",25,27,31);\r
+aWE("incremental",24);\r
+aWE("independent",24,27);\r
+aWE("individual",14);\r
+aWE("info",5,28,34);\r
+aWE("inform",0,14);\r
+aWE("information",8,10,13,14,16,19,28,32);\r
+aWE("initial",2);\r
+aWE("input",2,9,24);\r
+aWE("insid",9,10);\r
+aWE("insidefram",9);\r
+aWE("inspect",10,13,14,33);\r
+aWE("integ",24);\r
+aWE("intend",10);\r
+aWE("intensity",13);\r
+aWE("interfac",21);\r
+aWE("intermediary",31);\r
+aWE("interpolat",2);\r
+aWE("introduc",24,26,27,34);\r
+aWE("introduction",21);\r
+aWE("item",0,2,4,5,6,9,14,24,28,34);\r
+aWE("keep",19);\r
+aWE("kept",2,9,11);\r
+aWE("key",10,13,14,25,26,27,31);\r
+aWE("keyboard",10,13,14,18,25,26,27,31);\r
+aWE("kind",31);\r
+aWE("known",16);\r
+aWE("label",13);\r
+aWE("largest",13);\r
+aWE("last",13,24);\r
+aWE("latest",0);\r
+aWE("latitud",13);\r
+aWE("launch",11);\r
+aWE("left",2,5,6,10,13,14,27,28,32);\r
+aWE("length",13,32);\r
+aWE("let",0);\r
+aWE("level",2,34);\r
+aWE("lik",0,9);\r
+aWE("limit",13);\r
+aWE("lin",9,13,14);\r
+aWE("linear",9,13);\r
+aWE("list",9,11);\r
+aWE("load",4,12,13,15,22,30);\r
+aWE("local",13,27);\r
+aWE("locat",2,10,13);\r
+aWE("location",10,13,19);\r
+aWE("logical",12);\r
+aWE("longitud",13);\r
+aWE("look",13);\r
+aWE("lot",1,11,13);\r
+aWE("low",10);\r
+aWE("m",13);\r
+aWE("magnification",13,27,31);\r
+aWE("main",2,5,9,10,13,23,24);\r
+aWE("mak",23);\r
+aWE("manag",23,24,27);\r
+aWE("manual",10);\r
+aWE("mark",5,6,8,14);\r
+aWE("marker",13);\r
+aWE("matrix",13);\r
+aWE("max",13);\r
+aWE("maximum",13);\r
+aWE("mb1",26);\r
+aWE("mb2",26);\r
+aWE("mb3",26);\r
+aWE("mean",13);\r
+aWE("memoriz",24);\r
+aWE("memory",11,30);\r
+aWE("menu",0,1,2,3,4,5,6,7,9,11,14,15,16,19,22,24,28,30,29,32,34);\r
+aWE("mesh",0,4,8,9,10,13,14,15,16,19,28,33);\r
+aWE("messag",0,13);\r
+aWE("millimetr",31);\r
+aWE("min",13);\r
+aWE("minimum",10,13);\r
+aWE("mm",10);\r
+aWE("mod",0,4,9,11,13,14,16,23,29,34);\r
+aWE("model",0,27);\r
+aWE("modeles",9,11);\r
+aWE("modifi",0,2,17,13,14,16,31,32);\r
+aWE("modification",13,14,19);\r
+aWE("modify",0,10,13,15,34);\r
+aWE("modul",3,9,17,15,16,30,29,33);\r
+aWE("modulu",13);\r
+aWE("mous",0,1,2,4,7,10,14,18,24,26,28,31);\r
+aWE("mov",0,10,11,13,14,27,28,31);\r
+aWE("movement",2,14,18,25,26,27,31,32);\r
+aWE("multip",10,13,27);\r
+aWE("multipli",10,13,32);\r
+aWE("mutual",22);\r
+aWE("my",10);\r
+aWE("n",13);\r
+aWE("nam",2,9,12,14,19,24,33);\r
+aWE("navigat",18,24,25,27,31);\r
+aWE("navigation",12,13,24,25,26,27,31);\r
+aWE("nb",13);\r
+\r
+//-->\r
+</script>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whdata/whfwdata2.htm b/doc/salome/gui/GAUSS/whdata/whfwdata2.htm
new file mode 100644 (file)
index 0000000..fbb15f8
--- /dev/null
@@ -0,0 +1,258 @@
+<html>\r
+<head>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whfwdata.js"></script>\r
+<script language="javascript">\r
+<!--\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+aWE("nbrfac",13);\r
+aWE("ne",17);\r
+aWE("necessity",13);\r
+aWE("need",30,32);\r
+aWE("negativ",13);\r
+aWE("nev",4,13);\r
+aWE("nevertheles",13);\r
+aWE("new",0,2,5,6,9,10,13,16,19,22,24,26,27,28,29,33,34);\r
+aWE("next",4,10,11,14,16);\r
+aWE("nod",2,9,12,16,24,28);\r
+aWE("normal",10);\r
+aWE("not",0,5,6,9,10,13,14,16,24,27);\r
+aWE("noth",12);\r
+aWE("notification",0,13);\r
+aWE("notify",13);\r
+aWE("nth",13,14);\r
+aWE("null",13);\r
+aWE("numb",2,10,13,31,34);\r
+aWE("object",28);\r
+aWE("objectiv",17);\r
+aWE("occur",14);\r
+aWE("ok",9,13);\r
+aWE("on",0,2,7,9,10,11,13,14,16,18,23,29,31);\r
+aWE("onc",9,10,13,14,22,30);\r
+aWE("opacity",9);\r
+aWE("opaqu",32);\r
+aWE("open",2,3,7,9,10,11,13,19,22,24,28);\r
+aWE("opengl",10,13);\r
+aWE("operation",0,13);\r
+aWE("optimisation",32);\r
+aWE("optimiz",30);\r
+aWE("option",0,1,2,4,5,6,7,9,13,14,19,30,29,34);\r
+aWE("ord",23);\r
+aWE("ordinat",13,27);\r
+aWE("orientation",2,10,13);\r
+aWE("origin",10,13,24);\r
+aWE("out",0,10);\r
+aWE("output",23);\r
+aWE("outsid",10);\r
+aWE("own",23);\r
+aWE("º",3,5,6,19,22,28,30,29,31,32);\r
+aWE("p",14);\r
+aWE("pagedn",25);\r
+aWE("pageup",25);\r
+aWE("palet",13);\r
+aWE("pan",25,26,27,31);\r
+aWE("paragraph",2,4,13,16,28);\r
+aWE("paramet",2,13,31,32);\r
+aWE("parameter",2,10,13,24,30,29,32,34);\r
+aWE("parameterisation",10);\r
+aWE("parameteriz",13);\r
+aWE("parent",8,14);\r
+aWE("part",10,13);\r
+aWE("path",2);\r
+aWE("pathnam",19);\r
+aWE("paus",23);\r
+aWE("pc",3);\r
+aWE("percentag",10);\r
+aWE("perfect",10);\r
+aWE("perform",8,13,23);\r
+aWE("persistenc",2,24);\r
+aWE("physical",30);\r
+aWE("pick",2,5,6,8,10,14,24,28,32,34);\r
+aWE("pictur",10);\r
+aWE("pixel",13);\r
+aWE("plan",6,10,33);\r
+aWE("play",11,23);\r
+aWE("plu",13);\r
+aWE("point",0,1,2,5,6,8,9,10,17,13,14,16,18,20,21,24,25,26,27,28,29,31,32,33,34);\r
+aWE("pointer",31);\r
+aWE("populat",12);\r
+aWE("popup",0,1,2,4,5,6,7,9,11,14,15,16,24,28,34);\r
+aWE("position",2,14,24,31,32);\r
+aWE("positiv",13);\r
+aWE("possib",14);\r
+aWE("possibility",0,10,13,14);\r
+aWE("possibl",0,4,5,6,10,12,13,14,23,28,32,34);\r
+aWE("post",2,24,30,29,31,32);\r
+aWE("pr",2,10,14,28);\r
+aWE("predefin",2,10);\r
+aWE("preferenc",2,13,27,30,29,31,32);\r
+aWE("pres",3,5,6,9,10,12,13,22,23,28);\r
+aWE("present",13,16);\r
+aWE("presentation",0,4,5,6,9,10,11,13,14,16,24,28,29,34);\r
+aWE("previou",2,10,13);\r
+aWE("previous",22,23,25);\r
+aWE("primitiv",10,13,14,29);\r
+aWE("pro",2,24,30,29,31,32);\r
+aWE("proces",12,13,16);\r
+aWE("produc",14);\r
+aWE("progres",13);\r
+aWE("progression",13);\r
+aWE("project",2,9,10,13,16,20,24,26);\r
+aWE("prompt",13);\r
+aWE("properti",9,11,13,15);\r
+aWE("property",9);\r
+aWE("propos",4,9,10,23,24);\r
+aWE("provid",2,5,6,10,19,22,25,27,31);\r
+aWE("pseudo",34);\r
+aWE("publish",19);\r
+aWE("pull",27);\r
+aWE("purpos",0,2,9,13,16,24,34);\r
+aWE("push",23,27);\r
+aWE("pyramid",14,32);\r
+aWE("quadrangular",9);\r
+aWE("quadratic",9);\r
+aWE("quality",33);\r
+aWE("quit",13);\r
+aWE("radiu",10);\r
+aWE("rainbow",13);\r
+aWE("rang",11,13);\r
+aWE("ratio",10,13,25,26,27,32);\r
+aWE("read",13);\r
+aWE("real",2,9,10,13);\r
+aWE("realiz",2,9,24);\r
+aWE("recommend",30);\r
+aWE("record",11,23);\r
+aWE("red",13);\r
+aWE("redefin",2,9,24,28);\r
+aWE("redisplay",28);\r
+aWE("referenc",13);\r
+aWE("refin",13,29);\r
+aWE("refresh",28);\r
+aWE("regard",13);\r
+aWE("register",2,24);\r
+aWE("regular",13);\r
+aWE("relat",9,28);\r
+aWE("releas",5,6);\r
+aWE("remain",2,5,6,13);\r
+aWE("remark",9);\r
+aWE("remind",5,6,17);\r
+aWE("remov",2,8,9,24);\r
+aWE("renam",2,9,19,24);\r
+aWE("rend",13);\r
+aWE("render",10,13);\r
+aWE("represent",9);\r
+aWE("representation",4,9);\r
+aWE("representativ",13);\r
+aWE("request",23);\r
+aWE("requir",0,13);\r
+aWE("resolution",13);\r
+aWE("resourc",15);\r
+aWE("resp",13,24,25);\r
+aWE("respective",10,13,27);\r
+aWE("restor",2,24);\r
+aWE("result",0,1,8,10,12,13,14,16,19,20,28,29,33,34);\r
+aWE("retriev",2,24);\r
+aWE("revers",14);\r
+aWE("reversib",5,6,16,30);\r
+aWE("right",0,1,2,4,7,10,13,24,27);\r
+aWE("root",24);\r
+aWE("rotat",10,27);\r
+aWE("rotation",2,14,25,26,27,31);\r
+aWE("rough",13);\r
+aWE("run",19,20);\r
+aWE("s",14);\r
+aWE("salom",2,3,17,14,15,16,19,20,21,22,24,25,26,27,28,30,29,31,32,33);\r
+aWE("salomed",2,24);\r
+aWE("sam",2,9,10,13,14,23,24,27,29,34);\r
+aWE("sampl",14);\r
+aWE("sat",23);\r
+aWE("satisfy",23);\r
+aWE("sav",2,11,19,22);\r
+aWE("scal",13);\r
+aWE("scalar",0,8,10,13,14,29);\r
+aWE("scen",2,10,13,18,23,25,27,31);\r
+aWE("scop",0,10);\r
+aWE("screen",27);\r
+aWE("se",2,6,8,10,11,12,13,24,28,32);\r
+aWE("search",32);\r
+aWE("second",0,5,10,11,17,13);\r
+aWE("section",13,18,20,32);\r
+aWE("seen",2,13);\r
+aWE("segment",23);\r
+aWE("segmentation",5,6,10,13,19,23,24,33);\r
+aWE("select",0,2,4,8,11,13,14,22,24,28,32,34);\r
+aWE("selection",2,3,4,5,6,10,11,14,24,28,34);\r
+aWE("semi",10,14);\r
+aWE("separate",23);\r
+aWE("session",19,22,23,24,25,27,30);\r
+aWE("set",9,10,13,14);\r
+aWE("setting",2);\r
+aWE("setup",11);\r
+aWE("shad",9,13,28);\r
+aWE("shap",13);\r
+aWE("should",0,23);\r
+aWE("show",10,11,13,14,20);\r
+aWE("shown",2);\r
+aWE("shrink",9);\r
+aWE("sid",5,6,13);\r
+aWE("similar",13,16);\r
+aWE("simpl",2,13,33);\r
+aWE("simplify",26);\r
+aWE("simultaneous",10,13);\r
+aWE("sinc",5,6,28);\r
+aWE("situation",2,14);\r
+aWE("six",14);\r
+aWE("siz",10,13);\r
+aWE("skin",9);\r
+aWE("slid",9);\r
+aWE("slow",2);\r
+aWE("smallest",13);\r
+aWE("smesh",9,33);\r
+aWE("smooth",2,14);\r
+aWE("so",9,11,13,23,30,32,33);\r
+aWE("spac",13,33);\r
+aWE("spacemous",13,18,27,31);\r
+aWE("spe",11,25,27,31);\r
+aWE("spec",11);\r
+aWE("specific",2,14,34);\r
+aWE("specification",0,13,16);\r
+aWE("spher",6,10,13,33);\r
+aWE("sprit",10,13,32);\r
+aWE("stamp",0,13,28);\r
+aWE("standard",2,9,10,17,13,15,19,20,24,26,28,31,34);\r
+aWE("star",27);\r
+aWE("start",12,23);\r
+aWE("stat",2,23);\r
+aWE("step",2,13,31);\r
+aWE("still",12);\r
+aWE("stop",11,23);\r
+aWE("stor",2,19,24);\r
+aWE("storag",19);\r
+aWE("structur",12,13,22,32);\r
+aWE("study",2,7,9,12,19,22,24,30);\r
+aWE("sub",0,4,9);\r
+aWE("suggest",13);\r
+aWE("suitabl",28);\r
+aWE("support",0,17,25,26,27);\r
+aWE("surfac",9);\r
+aWE("surfacefram",9);\r
+aWE("sweep",29,34);\r
+aWE("switch",27);\r
+aWE("synchroniz",13);\r
+aWE("system",0,2,8,13,27);\r
+aWE("systematical",13);\r
+aWE("tab",10,13);\r
+aWE("tak",2);\r
+aWE("taken",13);\r
+aWE("task",8,23);\r
+\r
+//-->\r
+</script>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whdata/whfwdata3.htm b/doc/salome/gui/GAUSS/whdata/whfwdata3.htm
new file mode 100644 (file)
index 0000000..2cb202a
--- /dev/null
@@ -0,0 +1,102 @@
+<html>\r
+<head>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whfwdata.js"></script>\r
+<script language="javascript">\r
+<!--\r
+//-->\r
+</script>\r
+<script language="javascript">\r
+<!--\r
+aWE("technical",13);\r
+aWE("tensor",13);\r
+aWE("term",24);\r
+aWE("text",13);\r
+aWE("textur",13);\r
+aWE("them",24,27);\r
+aWE("therefor",0,10,13,24);\r
+aWE("thos",23);\r
+aWE("thought",13);\r
+aWE("thre",10,13,23);\r
+aWE("threshold",13);\r
+aWE("thu",5,6,13,14,25,27);\r
+aWE("till",10);\r
+aWE("tilt",27);\r
+aWE("tim",0,9,10,12,13,14,19,23,24,25,27,28,34);\r
+aWE("timestamp",1,5,6,11,20,24);\r
+aWE("toggl",5,6,9,14,27,30);\r
+aWE("toolbar",0,4,5,6,10,15,16,23);\r
+aWE("top",2,10,32);\r
+aWE("total",13);\r
+aWE("touch",32);\r
+aWE("transformation",2,9);\r
+aWE("translation",0,10,25,26,31);\r
+aWE("transparency",9,13,32);\r
+aWE("transparent",10,14,32);\r
+aWE("tre",0,2,4,7,12,19,24,34);\r
+aWE("triangl",9);\r
+aWE("twic",13);\r
+aWE("twist",27);\r
+aWE("two",0,2,9,10,11,13,14);\r
+aWE("typ",18,31);\r
+aWE("unchang",13);\r
+aWE("uncheck",30);\r
+aWE("underly",32);\r
+aWE("understand",2,10,13);\r
+aWE("understood",0,31);\r
+aWE("uniqu",4,10,13);\r
+aWE("unit",9,13);\r
+aWE("unselect",8,14);\r
+aWE("unshrink",9);\r
+aWE("up",10,13,22,27);\r
+aWE("updat",6,10,12,13,14,19,24);\r
+aWE("us",0,1,2,3,4,5,6,8,9,10,11,13,14,15,16,18,19,21,22,23,24,25,26,27,28,29,31,32,34);\r
+aWE("usag",30);\r
+aWE("v",10);\r
+aWE("validat",3,13);\r
+aWE("validation",12);\r
+aWE("valu",0,9,10,13,14,31,32,34);\r
+aWE("variabl",10,11,13,24);\r
+aWE("vector",0,13);\r
+aWE("version",1);\r
+aWE("vertex",13);\r
+aWE("vertical",13);\r
+aWE("very",13);\r
+aWE("video",14,23);\r
+aWE("view",0,1,2,5,6,9,10,12,13,14,15,16,18,21,23,24,27,28,32,34);\r
+aWE("visibl",10,13,19);\r
+aWE("visu",0,3,17,13,14,15,16,25,27,30,29,31,32,33,34);\r
+aWE("visualiz",16);\r
+aWE("visualization",0);\r
+aWE("volum",28);\r
+aWE("vtk",13,23,31);\r
+aWE("vtkpointlocator",32);\r
+aWE("vtkpointpick",32);\r
+aWE("vtkrenderwindowinteractor",31);\r
+aWE("want",11,23);\r
+aWE("way",2,13,14,15,16,19,20,23,24,25,27,34);\r
+aWE("well",13);\r
+aWE("whatev",13);\r
+aWE("wheth",0);\r
+aWE("whol",0,13);\r
+aWE("width",9,13);\r
+aWE("will",0,1,2,5,6,9,10,17,13,16,19,20,23,24,25,26,27,28,29,32,34);\r
+aWE("window",8,10,14,32);\r
+aWE("wirefram",9,14);\r
+aWE("within",10,12,13,14,15,18,19,22,24,25,27,31);\r
+aWE("without",2,8,14,19,24);\r
+aWE("work",17);\r
+aWE("written",13);\r
+aWE("x",13,14,24,27);\r
+aWE("y",13,27);\r
+aWE("yet",4,12,14);\r
+aWE("z",27);\r
+aWE("zoom",13,14,25,26,27,31,32);\r
+\r
+//-->\r
+</script>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whdata/whgdata.js b/doc/salome/gui/GAUSS/whdata/whgdata.js
new file mode 100644 (file)
index 0000000..77e0107
--- /dev/null
@@ -0,0 +1,26 @@
+//     WebHelp 5.10.001\r
+var gIEA = new Array();\r
+function aGE(sName, sDef)\r
+{\r
+       var len = gIEA.length;\r
+       gIEA[len] = new gloEntry(sName, sDef);\r
+}\r
+\r
+function gloEntry(sName, sDef) \r
+{\r
+       this.sName = sName;\r
+       this.sDef = sDef;\r
+       this.nNKOff = 0;\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if (parent && parent != this) {\r
+               if (parent.putData) \r
+               {\r
+                       parent.putData(gIEA);\r
+               }\r
+       }\r
+}\r
+\r
+window.onload = window_OnLoad;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whdata/whglo.htm b/doc/salome/gui/GAUSS/whdata/whglo.htm
new file mode 100644 (file)
index 0000000..62e9449
--- /dev/null
@@ -0,0 +1,15 @@
+<html>\r
+<head>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whglo.js"></script>\r
+<script language="javascript">\r
+<!--\r
+\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whdata/whglo.js b/doc/salome/gui/GAUSS/whdata/whglo.js
new file mode 100644 (file)
index 0000000..e0519af
--- /dev/null
@@ -0,0 +1,34 @@
+//     WebHelp 5.10.001\r
+var gaFileMapping = new Array();\r
+function fileMapping(sBK, sEK, sFileName, nNum)\r
+{\r
+       this.sBK = sBK;\r
+       this.sEK = sEK;\r
+       this.sFileName = sFileName;\r
+       this.aKs = null;\r
+       this.nNum = nNum;\r
+       this.oUsedItems = null;\r
+}\r
+\r
+\r
+function iFM(sBK, sEK, sFileName, nNum)\r
+{\r
+       var i = gaFileMapping.length;\r
+       gaFileMapping[i] = new fileMapping(sBK, sEK, sFileName, nNum);  \r
+       if (i == 0) {\r
+               gaFileMapping[i].nTotal = nNum;\r
+       }\r
+       else {\r
+               gaFileMapping[i].nTotal = nNum + gaFileMapping[i - 1].nTotal;\r
+       }\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if (parent && parent != this && parent.projReady)\r
+       {\r
+               parent.projReady(gaFileMapping);\r
+       }               \r
+}\r
+\r
+window.onload = window_OnLoad;\r
diff --git a/doc/salome/gui/GAUSS/whdata/whidata.js b/doc/salome/gui/GAUSS/whdata/whidata.js
new file mode 100644 (file)
index 0000000..9f0eb15
--- /dev/null
@@ -0,0 +1,89 @@
+//     WebHelp 5.10.001\r
+// const strings\r
+var gIEA = new Array();\r
+function aIE()\r
+{\r
+       var len = gIEA.length;\r
+       gIEA[len] = new indexEntry(aIE.arguments);\r
+}\r
+\r
+function topic(sName, sURL)\r
+{\r
+       this.sName = sName;\r
+       this.sURL = sURL;\r
+}\r
+\r
+function indexEntry(fn_arguments) \r
+{\r
+       if (fn_arguments.length && fn_arguments.length >= 3) \r
+       {\r
+               this.nType = fn_arguments[0];\r
+               this.nPKOff = 0;\r
+               this.nNKOff = fn_arguments[1];\r
+               this.sName = fn_arguments[2];\r
+               this.aTopics = null;\r
+               var nLen = fn_arguments.length;\r
+               if (Math.floor(nLen / 2) * 2 == nLen)\r
+               {\r
+                       this.sTarget = fn_arguments[3];\r
+                       if (nLen > 5)\r
+                       {\r
+                               this.aTopics = new Array();\r
+                               for (var i = 0; i < (nLen - 5)/2; i++)\r
+                               {\r
+                                       this.aTopics[i] = new topic(fn_arguments[i * 2 + 4], fn_arguments[i * 2 + 5]);\r
+                               }\r
+                       }\r
+\r
+               }\r
+               else \r
+               {\r
+                       if (nLen > 4) \r
+                       {\r
+                               this.aTopics = new Array();\r
+                               for (var i = 0; i < (nLen - 4)/2; i++)\r
+                               {\r
+                                       this.aTopics[i] = new topic(fn_arguments[i * 2 + 3], fn_arguments[i * 2 + 4]);\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function getIndexTopicMappingList(nItemIndex)\r
+{\r
+       var sTopics = "";\r
+       if (gIEA.length > nItemIndex)\r
+       {\r
+               if (gIEA[nItemIndex].aTopics) \r
+               {\r
+                       var i = 0;\r
+                       var nLen = gIEA[nItemIndex].aTopics.length;\r
+                       for (i = 0; i < nLen; i ++) \r
+                       {\r
+                               sTopics += "," + gIEA[nItemIndex].aTopics[i];\r
+                       }\r
+               }\r
+       }\r
+       return sTopics;         \r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if (parent && parent != this) {\r
+               if (parent.putData) \r
+               {\r
+                       for (var i = 0; i < gIEA.length; i ++ )\r
+                       {\r
+                               if (gIEA[i].nNKOff != 0 && i + gIEA[i].nNKOff + 1 < gIEA.length)\r
+                               {\r
+                               \r
+                                       gIEA[i + gIEA[i].nNKOff + 1].nPKOff = gIEA[i].nNKOff;\r
+                               }\r
+                       }\r
+                       parent.putData(gIEA);\r
+               }\r
+       }\r
+}\r
+\r
+window.onload = window_OnLoad;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whdata/whidx.htm b/doc/salome/gui/GAUSS/whdata/whidx.htm
new file mode 100644 (file)
index 0000000..0a0deed
--- /dev/null
@@ -0,0 +1,15 @@
+<html>\r
+<head>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whidx.js"></script>\r
+<script language="javascript">\r
+<!--\r
+\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whdata/whidx.js b/doc/salome/gui/GAUSS/whdata/whidx.js
new file mode 100644 (file)
index 0000000..e0519af
--- /dev/null
@@ -0,0 +1,34 @@
+//     WebHelp 5.10.001\r
+var gaFileMapping = new Array();\r
+function fileMapping(sBK, sEK, sFileName, nNum)\r
+{\r
+       this.sBK = sBK;\r
+       this.sEK = sEK;\r
+       this.sFileName = sFileName;\r
+       this.aKs = null;\r
+       this.nNum = nNum;\r
+       this.oUsedItems = null;\r
+}\r
+\r
+\r
+function iFM(sBK, sEK, sFileName, nNum)\r
+{\r
+       var i = gaFileMapping.length;\r
+       gaFileMapping[i] = new fileMapping(sBK, sEK, sFileName, nNum);  \r
+       if (i == 0) {\r
+               gaFileMapping[i].nTotal = nNum;\r
+       }\r
+       else {\r
+               gaFileMapping[i].nTotal = nNum + gaFileMapping[i - 1].nTotal;\r
+       }\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if (parent && parent != this && parent.projReady)\r
+       {\r
+               parent.projReady(gaFileMapping);\r
+       }               \r
+}\r
+\r
+window.onload = window_OnLoad;\r
diff --git a/doc/salome/gui/GAUSS/whdata/whtdata.js b/doc/salome/gui/GAUSS/whdata/whtdata.js
new file mode 100644 (file)
index 0000000..d5428a7
--- /dev/null
@@ -0,0 +1,64 @@
+//     WebHelp 5.10.001\r
+var gTEA = new Array();\r
+function aTE()\r
+{\r
+       gTEA[gTEA.length] = new tocEntry(aTE.arguments);\r
+}\r
+\r
+function tocEntry(fn_arguments) \r
+{\r
+       if (fn_arguments.length < 3)    \r
+       {\r
+               alert ("data format wrong!!!");\r
+               return;\r
+       }\r
+       \r
+       this.nType = fn_arguments[0];\r
+       this.nContents = fn_arguments[1];\r
+       this.sItemName = fn_arguments[2];\r
+       \r
+       if (this.nType == 1 || this.nType == 2 || this.nType == 16)\r
+       {\r
+               if (fn_arguments.length > 3)\r
+               {\r
+                       this.sItemURL = fn_arguments[3];\r
+                       if (fn_arguments.length > 4)\r
+                       {\r
+                               this.sTarget = fn_arguments[4];\r
+                               if (fn_arguments.length > 5)\r
+                                       this.sIconRef = fn_arguments[5];\r
+                       }\r
+               }\r
+       }\r
+       if (this.nType == 4 || this.nType == 8)\r
+       {\r
+               if (fn_arguments.length > 3)\r
+               {\r
+                       this.sRefURL = fn_arguments[3];\r
+                       if (this.nType == 4)\r
+                       {\r
+                               if(this.sRefURL.lastIndexOf("/")!=this.sRefURL.length-1)\r
+                                       this.sRefURL+="/";\r
+                       }\r
+                       if (fn_arguments.length > 4)\r
+                       {\r
+                               this.sItemURL = fn_arguments[4];\r
+                               if (fn_arguments.length > 5)\r
+                               {\r
+                                       this.sTarget = fn_arguments[5];\r
+                                       if (fn_arguments.length > 6)\r
+                                               this.sIconRef = fn_arguments[6];\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+\r
+function window_OnLoad()\r
+{\r
+       if (parent && parent != this && parent.putData) {\r
+               parent.putData(gTEA);\r
+       }\r
+}\r
+window.onload = window_OnLoad;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whdata/whtdata0.htm b/doc/salome/gui/GAUSS/whdata/whtdata0.htm
new file mode 100644 (file)
index 0000000..5a5c4c6
--- /dev/null
@@ -0,0 +1,61 @@
+<html>\r
+<head>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whtdata.js"></script>\r
+<script language="javascript">\r
+<!--\r
+ aTE(1,1,"Introduction to Gauss Points Viewer");\r
+   aTE(2,0,"Introduction","index.htm");\r
+ aTE(1,4," Loading of data");\r
+   aTE(2,0,"General","general.htm");\r
+   aTE(2,0,"Command Activation","command_activation.htm");\r
+   aTE(2,0,"Command Result","command_result.htm");\r
+   aTE(2,0,"Salome-Visu preferences","salome_visu_preferences.htm");\r
+ aTE(1,3,"Display of meshes and mesh groups ");\r
+   aTE(2,0,"General","display_meshes_general.htm");\r
+   aTE(2,0,"Activation of commands","command_activation_in_display_meshes.htm");\r
+   aTE(2,0,"Description of commands","command_description_in_display_meshes.htm");\r
+ aTE(1,6,"Display results at Gauss points");\r
+   aTE(2,0,"General","display_results_at_gauss_points_general.htm");\r
+   aTE(2,0,"Activation of commands","activation_of_commands_display_results.htm");\r
+   aTE(2,0,"Description of commands","description_of_commands_display_results.htm");\r
+   aTE(2,0,"Specific additional commands for Fields items","specific_additional_commands_for_fields_items.htm");\r
+   aTE(2,0,"Animation function","animation_function.htm");\r
+   aTE(2,0,"Salome-Visu preferences","salome-visu_preferences_display_results.htm");\r
+ aTE(1,3,"Timestamps animation");\r
+   aTE(2,0,"General","general_timestamps_animation.htm");\r
+   aTE(2,0,"Command activation","command_activation_timestamps_animation.htm");\r
+   aTE(2,0,"Command description","command_description_timestamps_animation.htm");\r
+ aTE(1,1,"Making an AVI clip");\r
+   aTE(2,0,"Making an AVI clip","making_an_avi_clip.htm");\r
+ aTE(1,7,"Navigation within the scene");\r
+   aTE(2,0,"General","general_navigation_within_the_scene.htm");\r
+   aTE(2,0,"Navigation using the mouse","navigation_using_the_mouse.htm");\r
+   aTE(2,0,"Navigation using the keyboard","navigation_using_the_keyboard.htm");\r
+   aTE(2,0,"Navigation using the spacemouse","navigation_using_the_spacemouse.htm");\r
+   aTE(2,0,"Cameras","cameras.htm");\r
+   aTE(2,0,"Managing configurations","managing_configurations.htm");\r
+   aTE(2,0,"Salome-Visu preferences","salome_visu_preferences_navigation_within_the_scene.htm");\r
+ aTE(1,5,"Picking");\r
+   aTE(2,0,"General","picking_general.htm");\r
+   aTE(2,0,"Command activation","command_activation_picking.htm");\r
+   aTE(2,0,"Description of the picking functionality","description_of_the_picking_functionality.htm");\r
+   aTE(2,0,"Command deactivation","command_deactivation.htm");\r
+   aTE(2,0,"Salome-Visu preferences","salome_visu_preferences_picking.htm");\r
+ aTE(1,3,"Segmentation");\r
+   aTE(2,0,"General","segmentation_general.htm");\r
+   aTE(2,0,"Command Activation","command_activation_segmentation.htm");\r
+   aTE(2,0,"Command description","command_description_segmentation.htm");\r
+ aTE(1,1,"Storage of produced data");\r
+   aTE(2,0,"Saving data","general_storage_of_produced_data.htm");\r
+ aTE(1,1,"Loading of previously saved data");\r
+   aTE(2,0,"Loading previously saved data","loading_of_previously_saved_data.htm");\r
+\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whdata/whtoc.htm b/doc/salome/gui/GAUSS/whdata/whtoc.htm
new file mode 100644 (file)
index 0000000..54e0cbf
--- /dev/null
@@ -0,0 +1,16 @@
+<html>\r
+<head>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whtoc.js"></script>\r
+<script language="javascript">\r
+<!--\r
+  setRoot("whtdata0.htm");\r
+\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whdata/whtoc.js b/doc/salome/gui/GAUSS/whdata/whtoc.js
new file mode 100644 (file)
index 0000000..163d8cc
--- /dev/null
@@ -0,0 +1,31 @@
+//     WebHelp 5.10.001\r
+// const strings\r
+var gaProj = new Array();\r
+var gsRoot = "";\r
+\r
+function setRoot(sRoot)\r
+{\r
+       gsRoot = sRoot\r
+}\r
+\r
+function aPE(sProjPath, sRootPath)\r
+{\r
+       gaProj[gaProj.length] = new tocProjEntry(sProjPath, sRootPath);\r
+}\r
+\r
+function tocProjEntry(sProjPath, sRootPath) \r
+{\r
+       if(sProjPath.lastIndexOf("/")!=sProjPath.length-1)\r
+               sProjPath+="/"; \r
+       this.sPPath = sProjPath;\r
+       this.sRPath = sRootPath;\r
+}\r
+\r
+\r
+function window_OnLoad()\r
+{\r
+       if (parent && parent != this && parent.projReady) {\r
+               parent.projReady(gsRoot, gaProj);\r
+       }\r
+}\r
+window.onload = window_OnLoad;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whestart.ico b/doc/salome/gui/GAUSS/whestart.ico
new file mode 100644 (file)
index 0000000..110f183
Binary files /dev/null and b/doc/salome/gui/GAUSS/whestart.ico differ
diff --git a/doc/salome/gui/GAUSS/whfbody.htm b/doc/salome/gui/GAUSS/whfbody.htm
new file mode 100644 (file)
index 0000000..86d8e63
--- /dev/null
@@ -0,0 +1,37 @@
+<html>\r
+<head>\r
+<title>Search Result</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmozemu.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whlang.js"></script>\r
+<script language="javascript1.2" src="whfhost.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+if(window.gbWhFHost)\r
+{\r
+       setBackgroundcolor("White"); \r
+       \r
+       setFont("Normal", "Tahoma","8pt","Black","Normal","Normal","none");\r
+       setFont("Error", "Tahoma","8pt","Black","Normal","Normal","none");\r
+       setFont("Hover", "Tahoma","8pt","Navy","Normal","Normal","underline");\r
+       setActiveBgColor("Silver");\r
+       \r
+       \r
+       FtsWriteClassStyle();\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+</head>\r
+<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" scroll="auto" bgcolor="white">\r
+</body>\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whfdhtml.htm b/doc/salome/gui/GAUSS/whfdhtml.htm
new file mode 100644 (file)
index 0000000..236beec
--- /dev/null
@@ -0,0 +1,30 @@
+<html>\r
+<head>\r
+<title>Search Frame</TITLE>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script LANGUAGE="javascript1.2">\r
+<!--\r
+var gbIndexLayerInit = false;\r
+var strWrite="";\r
+if (window.gbWhVer&&window.gbWhProxy&&window.gbWhMsg)\r
+{\r
+       if (gbMac)\r
+               strWrite="<FRAMESET ROWS='45,100%' framespacing=0  frameborder=0>";\r
+       else\r
+               strWrite="<FRAMESET ROWS='60,100%' framespacing=0  frameborder=0>";\r
+       strWrite +="<FRAME SRC='whfform.htm' title='search form frame' name='ftsform' noresize='yes' scrolling='no'>";\r
+       strWrite +="<FRAME SRC='whfbody.htm' title='search result frame' name='ftsbody' scrolling='yes'>";\r
+       strWrite +="</FRAMESET>";\r
+       document.write(strWrite);\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whfform.htm b/doc/salome/gui/GAUSS/whfform.htm
new file mode 100644 (file)
index 0000000..f592a73
--- /dev/null
@@ -0,0 +1,136 @@
+<html>\r
+<head>\r
+<title>Search Form</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<style>\r
+<!--\r
+body {margin:0;}\r
+-->\r
+</style>\r
+<body bgcolor="#c0c0c0">\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whform.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+var gstrInput = "";\r
+function ftsLookup(bCR)\r
+{\r
+       if (bCR)\r
+       {\r
+               var strInput = document.FtsInputForm.keywordField.value.toUpperCase();\r
+               if (strInput != "") {\r
+                       var oMsg = new whMessage(WH_MSG_SEARCHFTSKEY, this, 1, strInput);\r
+                       if (!SendMessage(oMsg))\r
+                       {\r
+                               gstrInput = strInput;\r
+                       }\r
+                       else\r
+                               gstrInput = "";\r
+               }\r
+\r
+               if (gbMac) {\r
+                       document.FtsInputForm.keywordField.focus();\r
+               }\r
+       }\r
+       return;\r
+}\r
+\r
+function beforeInit()\r
+{\r
+       var oParam = new Object();\r
+       oParam.sValue = "";\r
+       var oMsg = new whMessage(WH_MSG_GETSEARCHS, this, 1, oParam);\r
+       if (SendMessage(oMsg))\r
+       {\r
+               if (oParam.sValue != "" && oParam.sValue != "- Search -")\r
+               {\r
+                       document.FtsInputForm.keywordField.value = oParam.sValue;\r
+                       gfunLookUp(true);\r
+               }\r
+       }\r
+       init(); \r
+}\r
+\r
+function window_unload()\r
+{\r
+       UnRegisterListener2(this, WH_MSG_SHOWTOC);\r
+       UnRegisterListener2(this, WH_MSG_SHOWIDX);\r
+       UnRegisterListener2(this, WH_MSG_SHOWFTS);\r
+       UnRegisterListener2(this, WH_MSG_SHOWGLO);\r
+       UnRegisterListener2(this, WH_MSG_SEARCHTHIS);\r
+       UnRegisterListener2(this, WH_MSG_BACKUPSEARCH);\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       if (oMsg.nMessageId == WH_MSG_SHOWFTS)\r
+       {\r
+               document.FtsInputForm.keywordField.focus();\r
+       }\r
+       else if (oMsg.nMessageId == WH_MSG_SHOWIDX ||\r
+               oMsg.nMessageId == WH_MSG_SHOWTOC || \r
+               oMsg.nMessageId == WH_MSG_SHOWGLO)\r
+       {\r
+               document.FtsInputForm.keywordField.blur();\r
+       }\r
+       else if (oMsg.nMessageId == WH_MSG_SEARCHTHIS)\r
+       {\r
+               if (oMsg.oParam != "- Search -")\r
+               {\r
+                       document.FtsInputForm.keywordField.value = oMsg.oParam;\r
+                       gfunLookUp(true);\r
+               }\r
+       }\r
+       else if (oMsg.nMessageId == WH_MSG_BACKUPSEARCH)\r
+       {\r
+               if (gstrInput)\r
+               {\r
+                       oMsg.oParam = gstrInput;\r
+                       gstrInput = "";\r
+                       return false;\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+if (window.gbWhForm)\r
+{\r
+       RegisterListener2(this, WH_MSG_SHOWTOC);\r
+       RegisterListener2(this, WH_MSG_SHOWIDX);\r
+       RegisterListener2(this, WH_MSG_SHOWFTS);\r
+       RegisterListener2(this, WH_MSG_SHOWGLO);\r
+       RegisterListener2(this, WH_MSG_SEARCHTHIS);\r
+       RegisterListener2(this, WH_MSG_BACKUPSEARCH);\r
+       gfunLookUp = ftsLookup;\r
+       gfunInit = null;\r
+       gstrFormName = "FtsInputForm"\r
+       gsTitle = "Type in the word(s) to search for:";\r
+       gsTitle = "Type in the word(s) to search for:";\r
+       setGoImage1("wht_go.gif");\r
+       setBackgroundcolor("White");\r
+       \r
+       setBtnType("image");\r
+       \r
+       \r
+       \r
+       setGoText("Go");\r
+       setFont("Title", "Tahoma","8pt","Navy","Normal","Normal","none");\r
+       \r
+       \r
+       document.write(getFormHTML());\r
+       writeFormStyle();\r
+       window.onload = beforeInit;\r
+       window.onunload=window_unload;\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whfhost.js b/doc/salome/gui/GAUSS/whfhost.js
new file mode 100644 (file)
index 0000000..167acc4
--- /dev/null
@@ -0,0 +1,945 @@
+//     WebHelp 5.10.003\r
+var gsSK2=null;\r
+var gsSK=null;\r
+var gsFtsBreakChars="\t\r\n\"\\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=\x85\x92\x93\x94\x95\x96\x97\x99\xA9\xAE\xB7";\r
+var gnCLF=0;\r
+var gsHelpCannotSearch="Cannot search for that phrase.";\r
+var gsNoTopics="No Topics Found.";\r
+var gsLoadingDivID="LoadingDiv";\r
+var gsLoadingMsg="Loading data, please wait...";\r
+var gsSearchMsg="Searching...";\r
+var gsResultDivID="ResultDiv";\r
+var gaaFCD=new Array();\r
+var gaaFTCD=new Array();\r
+var goCF=null;\r
+var goCTF=null;\r
+var gaTI=null;\r
+var gnCurrentOp=0;\r
+var gbNot=false;\r
+var gbReady=false;\r
+var gnLoadFts=1;\r
+var gnCacheLimits=5;\r
+var gaCCD=new Array();\r
+var gbXML=false;\r
+var gaData=new Array();\r
+var gsBgColor="#ffffff";\r
+var gsBgImage="";\r
+var gsMargin="0pt";\r
+var gsIndent="0pt";\r
+var gsCheckKey=null;\r
+var gnIndexNum=0;\r
+var gaFtsContentsCon=null;\r
+var gaTopicCheckInfo=null;\r
+var gnTopicCheck=0;\r
+var goFont=null;\r
+var goErrFont=null;\r
+var goHoverFont=null;\r
+var gsABgColor="#cccccc";\r
+var gbWhFHost=false;\r
+var gbFirst=false;\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       gsBgImage=sBgImage;\r
+}\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       gsBgColor=sBgColor;\r
+}\r
+\r
+function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
+{\r
+       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
+       if(sType=="Normal")\r
+               goFont=vFont;\r
+       else if(sType=="Error")\r
+               goErrFont=vFont;\r
+       else if(sType=="Hover")\r
+               goHoverFont=vFont;\r
+}\r
+\r
+function setActiveBgColor(sBgColor)\r
+{\r
+       gsABgColor=sBgColor;\r
+}\r
+\r
+function setMargin(sMargin)\r
+{\r
+       gsMargin=sMargin;\r
+}\r
+\r
+function setIndent(sIndent)\r
+{\r
+       gsIndent=sIndent;\r
+}\r
+\r
+function updateCache(oCF)\r
+{\r
+       var len=gaCCD.length;\r
+       if(len<gnCacheLimits*gnCLF)\r
+               gaCCD[len]=oCF;\r
+       else{\r
+               gaCCD[0].aTopics=null;\r
+               gaCCD[0].aFtsKeys=null;\r
+               removeItemFromArray(gaCCD,0);\r
+               gaCCD[len-1]=oCF;\r
+       }\r
+}\r
+\r
+function addFtsInfo(sPPath,sDPath,sFtsFile)\r
+{\r
+       gaData[gaData.length]=new ftsInfo(sPPath,sDPath,sFtsFile);\r
+}\r
+\r
+function onLoadXMLError()\r
+{\r
+       if(gnLoadFts==1)\r
+       {\r
+               var aFCD=new Array();\r
+               var aFTCD=new Array();\r
+               ftsReady(aFCD,aFTCD);\r
+       }\r
+       else if(gnLoadFts==3)\r
+       {\r
+               var aTopics=new Array();\r
+               putFtsTData(aTopics);\r
+       }\r
+       else if(gnLoadFts==2)\r
+       {\r
+               putFtsWData(aFtsContents);\r
+               var aFtsContents=new Array();\r
+       }\r
+}\r
+\r
+function putDataXML(xmlDoc,sDocPath)\r
+{\r
+       if(gnLoadFts==1)\r
+       {\r
+               var node=xmlDoc.lastChild;\r
+               if(node)\r
+               {\r
+                       var oChild=node.firstChild;\r
+                       var aFCD=new Array();\r
+                       var aFTCD=new Array();\r
+                       while(oChild)\r
+                       {\r
+                               if(oChild.nodeName=="chunkinfo")\r
+                               {\r
+                                       var sURL=oChild.getAttribute("url");\r
+                                       var sFirst=oChild.getAttribute("first");\r
+                                       var sLast=oChild.getAttribute("last");\r
+                                       if(sURL&&sFirst&&sLast)\r
+                                       {\r
+                                               item=new Object();\r
+                                               item.sStartKey=sFirst;\r
+                                               item.sEndKey=sLast;\r
+                                               item.sFileName=sURL;\r
+                                               aFCD[aFCD.length]=item;\r
+                                       }\r
+                               }\r
+                               else if(oChild.nodeName=="tchunkinfo")\r
+                               {\r
+                                       var sURL=oChild.getAttribute("url");\r
+                                       var nB=parseInt(oChild.getAttribute("first"));\r
+                                       var nE=parseInt(oChild.getAttribute("last"));\r
+                                       if(sURL&&sFirst&&sLast)\r
+                                       {\r
+                                               item=new Object();\r
+                                               item.nBegin=nB;\r
+                                               item.nEnd=nE;\r
+                                               item.sFileName=sURL;\r
+                                               aFTCD[aFTCD.length]=item;\r
+                                       }\r
+\r
+                               }\r
+                               oChild=oChild.nextSibling;\r
+                       }\r
+                       ftsReady(aFCD,aFTCD);\r
+               }\r
+       }\r
+       else if(gnLoadFts==3)\r
+       {\r
+               var node=xmlDoc.lastChild;\r
+               if(node)\r
+               {\r
+                       var oChild=node.firstChild;\r
+                       var aTopics=new Array();\r
+                       while(oChild)\r
+                       {\r
+                               if(oChild.nodeName=="topic")\r
+                               {\r
+                                       var name=oChild.getAttribute("name");\r
+                                       var sURL=oChild.getAttribute("url");\r
+                                       if(name&&name.length>0&&sURL)\r
+                                       {\r
+                                               var topic=new Object();\r
+                                               topic.sTopicTitle=name;\r
+                                               topic.sTopicURL=sURL;\r
+                                               aTopics[aTopics.length]=topic;\r
+                                       }\r
+                               }\r
+                               oChild=oChild.nextSibling;\r
+                       }\r
+                       putFtsTData(aTopics);\r
+               }\r
+       }\r
+       else if(gnLoadFts==2)\r
+       {\r
+               var node=xmlDoc.lastChild;\r
+               if(node)\r
+               {\r
+                       var oChild=node.firstChild;\r
+                       var aFtsContents=new Array();\r
+                       while(oChild)\r
+                       {\r
+                               if(oChild.nodeName=="key")\r
+                               {\r
+                                       var name=oChild.getAttribute("name");\r
+                                       if(name&&name.length>0)\r
+                                       {\r
+                                               var item=new Object();\r
+                                               item.sItemName=name;\r
+                                               aFtsContents[aFtsContents.length]=item;\r
+                                               var oChildChild=oChild.firstChild;\r
+                                               while(oChildChild)\r
+                                               {\r
+                                                       if(oChildChild.nodeName=="#text")\r
+                                                       {\r
+                                                               var sIDs=oChildChild.nodeValue;\r
+                                                               if(sIDs)\r
+                                                               {\r
+                                                                       var nBPos=0;\r
+                                                                       do\r
+                                                                       {\r
+                                                                               var nPos=sIDs.indexOf(",",nBPos);\r
+                                                                               var sID=null;\r
+                                                                               if(nPos!=-1)\r
+                                                                                       sID=sIDs.substring(nBPos,nPos);\r
+                                                                               else\r
+                                                                                       sID=sIDs.substring(nBPos);\r
+\r
+                                                                               if(sID)\r
+                                                                               {\r
+                                                                                       var id=parseInt(sID);\r
+                                                                                       if(!isNaN(id))\r
+                                                                                       {\r
+                                                                                               if(!item.aTopics)\r
+                                                                                                       item.aTopics=new Array();\r
+                                                                                               item.aTopics[item.aTopics.length]=id;\r
+                                                                                       }\r
+                                                                               }\r
+                                                                               nBPos=nPos+1;\r
+                                                                       }while(nBPos!=0&&nBPos<sIDs.length);\r
+                                                               }\r
+                                                       }\r
+                                                       oChildChild=oChildChild.nextSibling;\r
+                                               }\r
+                                       }\r
+                               }\r
+                               oChild=oChild.nextSibling;\r
+                       }\r
+                       putFtsWData(aFtsContents);\r
+               }\r
+       }\r
+}\r
+\r
+function ftsInfo(sPPath,sDPath,sFtsFile)\r
+{\r
+       this.sPPath=sPPath;\r
+       this.sDPath=sDPath;\r
+       this.sFtsFile=sFtsFile;\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if(gsBgImage&&gsBgImage.length>0)\r
+       {\r
+               document.body.background=gsBgImage;\r
+       }\r
+       if(gsBgColor&&gsBgColor.length>0)\r
+       {\r
+               document.body.bgColor=gsBgColor;\r
+       }\r
+       writeResultDiv();\r
+       loadFts();\r
+       var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function writeResultDiv()\r
+{\r
+       var sHTML="<div id=\""+gsResultDivID+"\" style=\"POSITION:absolute;\"></div>";\r
+       document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
+}\r
+\r
+function loadFts()\r
+{\r
+       if(!gbReady)\r
+       {\r
+               var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
+               if(SendMessage(oResMsg)&&oResMsg.oParam)\r
+               {\r
+                       gbReady=true;\r
+                       var oProj=oResMsg.oParam;\r
+                       var aProj=oProj.aProj;\r
+                       gbXML=oProj.bXML;\r
+                       if(aProj.length>0)\r
+                       {\r
+                               var sLangId=aProj[0].sLangId;\r
+                               for(var i=0;i<aProj.length;i++)\r
+                               {\r
+                                       if(aProj[i].sFts&&aProj[i].sLangId==sLangId)\r
+                                       {\r
+                                               addFtsInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sFts);\r
+                                       }\r
+                               }\r
+                       }\r
+                       loadFD();\r
+\r
+               }                               \r
+       }\r
+}\r
+\r
+function loadFD()\r
+{\r
+       if(gnCLF<gaData.length)\r
+       {\r
+               gnLoadFts=1;\r
+               loadData2(gaData[gnCLF].sPPath+gaData[gnCLF].sDPath+gaData[gnCLF].sFtsFile);\r
+       }\r
+       else \r
+       {\r
+               var oMsg = new whMessage(WH_MSG_BACKUPSEARCH, this, 1, null);\r
+               if (SendMessage(oMsg))\r
+               {\r
+                       if (oMsg.oParam)\r
+                       {\r
+                               gsSK=oMsg.oParam.toLowerCase();\r
+                               findFTSKey();\r
+                       }\r
+               }\r
+               RegisterListener2(this, WH_MSG_SEARCHFTSKEY);\r
+       }\r
+}\r
+\r
+function loadData2(sFile)\r
+{\r
+       if(gbXML)\r
+               loadDataXML(sFile);\r
+       else\r
+               loadData(sFile);\r
+}\r
+\r
+function findFTSKey()\r
+{\r
+       gaTI=new Array();\r
+       gnCurrentOp=1;\r
+       gbNot=false;\r
+       displayMsg(gsSearchMsg);\r
+       if(gsSK!="")\r
+       {\r
+               gbFirst=true;\r
+               findOneKey();\r
+       }\r
+}\r
+\r
+function findOneKey()\r
+{\r
+       if(gsSK && gsSK!="")\r
+       {\r
+               var sInput=gsSK;\r
+               var sCW="";\r
+               var nS=-1;\r
+               var nSep=-1;\r
+               for(var nChar=0;nChar<gsFtsBreakChars.length;nChar++){\r
+                       var nFound=sInput.indexOf(gsFtsBreakChars.charAt(nChar));\r
+                       if((nFound!=-1)&&((nS==-1)||(nFound<nS))){\r
+                               nS=nFound;\r
+                               nSep=nChar;\r
+                       }\r
+               }\r
+               if(nS==-1){\r
+                       sCW=sInput;\r
+                       sInput="";\r
+               }else{\r
+                       sCW=sInput.substring(0,nS);\r
+                       sInput=sInput.substring(nS+1);\r
+               }\r
+\r
+               gsSK=sInput;\r
+               \r
+               if((sCW=="or")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="|"))){\r
+                       gnCurrentOp=0;\r
+                       gbNot=false;\r
+               }else if((sCW=="and")||((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="&"))){\r
+                       gnCurrentOp=1;\r
+                       gbNot=false;\r
+               }else if((sCW=="not")||\r
+                       ((nSep>=0)&&(gsFtsBreakChars.charAt(nSep)=="~"))){\r
+                       gbNot=!gbNot;\r
+               }else if(sCW!=""&&!IsStopWord(sCW,gaFtsStop)){\r
+                       var sCurrentStem=GetStem(sCW);\r
+                       gsCW=sCurrentStem;\r
+                       ftsFindKeyword();\r
+                       return;\r
+               }\r
+               findOneKey();\r
+       }\r
+       else{\r
+               displayTopics();\r
+               checkAgain();\r
+       }\r
+}\r
+\r
+function checkAgain()\r
+{\r
+       gsCheckKey = "";\r
+       gnIndexNum = 0;\r
+       gsSK=gsSK2;\r
+       gsSK2=null;\r
+       if(gsSK!=null)\r
+               setTimeout("findFTSKey();",1);\r
+}\r
+\r
+function displayTopics()\r
+{\r
+       var sHTML="";\r
+       var sLine="";\r
+       for(var i=0;i<gaTI.length;i++){\r
+               sLine+="<dt><nobr><a href='"+gaTI[i].sTopicURL+"'>"+_textToHtml(gaTI[i].sTopicTitle)+"</a></nobr></dt>";\r
+               if(i>>4<<4==i)\r
+               {\r
+                       sHTML+=sLine;\r
+                       sLine="";\r
+               }\r
+       }\r
+       if(sLine.length>0)\r
+               sHTML+=sLine;\r
+\r
+       if(sHTML.length==0)\r
+               sHTML="<P>"+gsNoTopics+"</P>"\r
+       else\r
+               sHTML="<dl>"+sHTML+"</dl>";\r
+\r
+       var resultDiv=getElement(gsResultDivID);\r
+       if(resultDiv)\r
+               resultDiv.innerHTML=sHTML;\r
+}\r
+\r
+function displayMsg(sErrorMsg)\r
+{\r
+       var sHTML="<P>"+sErrorMsg+"</P>";\r
+\r
+       var resultDiv=getElement(gsResultDivID);\r
+       if(resultDiv)\r
+               resultDiv.innerHTML=sHTML;\r
+}\r
+\r
+function ftsFindKeyword()\r
+{\r
+       var sKey=gsCW;\r
+       var bNeedLoad=false;\r
+       var aFtsContentsCon=null;\r
+       var s=0;\r
+       if(sKey==null) return;\r
+       if(!gsCheckKey||sKey!=gsCheckKey||gnIndexNum==0)\r
+       {\r
+               aFtsContentsCon=new Array();\r
+               gnCheck=0;\r
+               gsCheckKey=sKey;\r
+               gnTopicCheck=0;\r
+               gaTopicCheckInfo=null;\r
+       }\r
+       else{\r
+               s=gnIndexNum;\r
+               aFtsContentsCon=gaFtsContentsCon;\r
+       }\r
+       for(var i=gnCheck;i<gaaFCD.length;i++)\r
+       {\r
+               var oCF=getChunkedFts(i,sKey);\r
+               if(oCF)\r
+               {\r
+                       if(!oCF.aFtsKeys&&oCF.sFileName!=null)\r
+                       {\r
+                               bNeedLoad=true;\r
+                               oCF.nProjId=i;\r
+                               goCF=oCF;\r
+                               gnIndexNum=s;\r
+                               gnCheck=i;\r
+                               gaFtsContentsCon=aFtsContentsCon;\r
+                               gnLoadFts=2;\r
+                               beginLoading();\r
+                               loadData2(gaData[i].sPPath+gaData[i].sDPath+oCF.sFileName);\r
+                               break;\r
+                       }\r
+                       else{\r
+                               aFtsContentsCon[s++]=oCF;\r
+                       }\r
+               }\r
+       }\r
+       if(!bNeedLoad)\r
+       {\r
+               var aTI=gaTopicCheckInfo;\r
+               for(var m=gnTopicCheck;m<aFtsContentsCon.length;m++)\r
+               {\r
+                       var aTIPart=getTopics(aFtsContentsCon[m],sKey);\r
+                       if(aTIPart==null)\r
+                       {\r
+                               gnCheck=gaaFCD.length;\r
+                               gnTopicCheck=m;\r
+                               gaTopicCheckInfo=aTI;\r
+                               gaFtsContentsCon=aFtsContentsCon;\r
+                               return;\r
+                       }\r
+                       if(m==0)\r
+                               aTI=aTIPart;\r
+                       else\r
+                               aTI=mergeTopics(aTI,aTIPart);\r
+               }\r
+               if(mergewithPreviousResult(aTI))\r
+               {\r
+                       gbFirst=false;\r
+                       findOneKey();\r
+               }\r
+               else\r
+                       checkAgain();\r
+       }\r
+}\r
+\r
+function mergewithPreviousResult(aTI)\r
+{\r
+       if(aTI!=null&&aTI.length!=0)\r
+       {\r
+               var nNumTopics=aTI.length;\r
+               if(gnCurrentOp==0||gbFirst){\r
+                       if(gbNot){\r
+                               displayMsg(gsHelpCannotSearch);\r
+                               return false;\r
+                       }else{\r
+                               var aLS,aSS;\r
+                               if(gaTI.length>=aTI.length)\r
+                               {\r
+                                       aLS=gaTI;\r
+                                       aSS=aTI;\r
+                               }\r
+                               else\r
+                               {\r
+                                       aLS=aTI;\r
+                                       aSS=gaTI;\r
+                               }\r
+                               var s=0;\r
+                               for(var i=0;i<aSS.length;i++)\r
+                               {\r
+                                       var bAlreadyThere=false;\r
+                                       for(var j=s;j<aLS.length;j++)\r
+                                       {\r
+                                               if(aSS[i].equalTo(aLS[j]))\r
+                                               {\r
+                                                       bAlreadyThere=true;\r
+                                                       s=j;\r
+                                                       break;\r
+                                               }\r
+                                       }\r
+                                       if(!bAlreadyThere)\r
+                                       {\r
+                                               insertTopic(aLS,aSS[i]);\r
+                                       }\r
+                               }\r
+                               gaTI=aLS;\r
+                       }\r
+               }else if(gnCurrentOp==1){\r
+                       if(gbNot){\r
+                               var s=0;\r
+                               for(var i=0;i<aTI.length;i++)\r
+                               {\r
+                                       for(var j=s;j<gaTI.length;j++)\r
+                                       {\r
+                                               if(aTI[i].equalTo(gaTI[j]))\r
+                                               {\r
+                                                       removeItemFromArray(gaTI,j);\r
+                                                       s=j;\r
+                                                       break;\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }else{\r
+                               var s=0;\r
+                               for(var i=0;i<gaTI.length;i++)\r
+                               {\r
+                                       var bFound=false;\r
+                                       for(var j=s;j<aTI.length;j++)\r
+                                       {\r
+                                               if(gaTI[i].equalTo(aTI[j]))\r
+                                               {\r
+                                                       bFound=true;\r
+                                                       s=j;\r
+                                               }\r
+                                       }\r
+                                       if(!bFound)\r
+                                       {\r
+                                               removeItemFromArray(gaTI,i);\r
+                                               i--;\r
+                                       }\r
+                               }                               \r
+                       }\r
+               }\r
+       }else{\r
+               if((gnCurrentOp==1)&&(!gbNot)){\r
+                       gaTI.length=0;\r
+               }else if((gnCurrentOp==0)&&(gbNot)){\r
+                       displayMsg(gsHelpCannotSearch);\r
+                       return false;\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+function insertTopic(aTI,oTI)\r
+{\r
+       var nB=0;\r
+       var nE=aTI.length-1;\r
+       if(nE>=0)\r
+       {\r
+               var nM;\r
+               var bFound=false;\r
+               do{\r
+                       nM=(nB+nE)>>1;\r
+                       if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)>0)\r
+                               nE=nM-1;\r
+                       else if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)\r
+                               nB=nM+1;\r
+                       else\r
+                       {\r
+                               bFound=true;\r
+                               break;\r
+                       }\r
+               }while(nB<=nE);\r
+               if(bFound)\r
+                       insertItemIntoArray(aTI,nM,oTI);\r
+               else\r
+               {\r
+                       if(compare(aTI[nM].sTopicTitle,oTI.sTopicTitle)<0)\r
+                               insertItemIntoArray(aTI,nM+1,oTI);\r
+                       else\r
+                               insertItemIntoArray(aTI,nM,oTI);\r
+               }\r
+       }\r
+       else\r
+               aTI[0]=oTI;\r
+}\r
+\r
+function mergeTopics(aTI1,aTI2)\r
+{\r
+       var i1=0;\r
+       var i2=0;\r
+       var len1=aTI1.length;\r
+       var len2=aTI2.length;\r
+       var aTopicNew=new Array();\r
+       var i=0;\r
+       while(i1<len1||i2<len2)\r
+       {\r
+               if(i1<len1&&i2<len2)\r
+               {\r
+                       if(compare(aTI1[i1].sTopicTitle,aTI2[i2].sTopicTitle)<0)\r
+                               aTopicNew[i++]=aTI1[i1++];\r
+                       else\r
+                               aTopicNew[i++]=aTI2[i2++];\r
+               }\r
+               else if(i1<len1)\r
+                       aTopicNew[i++]=aTI1[i1++];\r
+               else if(i2<len2)\r
+                       aTopicNew[i++]=aTI2[i2++];\r
+       }\r
+       return aTopicNew;\r
+}\r
+\r
+function getTopics(oCF,sKey)\r
+{\r
+       var aTIPart=new Array();\r
+       if(oCF&&oCF.aFtsKeys)\r
+       {\r
+               var keys=oCF.aFtsKeys;\r
+               var nB=0;\r
+               var nE=keys.length-1;\r
+               var nM=-1;\r
+               var bFound=false;\r
+               do{\r
+                       nM=(nB+nE)>>1;\r
+                       if(compare(keys[nM].sItemName,sKey)>0)\r
+                               nE=nM-1;\r
+                       else if(compare(keys[nM].sItemName,sKey)<0)\r
+                               nB=nM+1;\r
+                       else{\r
+                               bFound=true;\r
+                               break;\r
+                       }\r
+               }while(nB<=nE);\r
+               if(bFound)\r
+               {\r
+                       if(keys[nM].aTopics)\r
+                       {\r
+                               for(var i=0;i<keys[nM].aTopics.length;i++)\r
+                               {\r
+                                       var oTC=getTopicChunk(gaaFTCD[oCF.nProjId],keys[nM].aTopics[i]);\r
+                                       if(oTC.aTopics)\r
+                                       {\r
+                                               aTIPart[aTIPart.length]=\r
+                                                       new topicInfo(oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicTitle,\r
+                                                               gaData[oCF.nProjId].sPPath+oTC.aTopics[keys[nM].aTopics[i]-oTC.nBegin].sTopicURL);\r
+                                       }\r
+                                       else{\r
+                                               goCTF=oTC;\r
+                                               gnLoadFts=3;\r
+                                               beginLoading();\r
+                                               loadData2(gaData[oCF.nProjId].sPPath+gaData[oCF.nProjId].sDPath+oTC.sFileName);\r
+                                               return null;\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       return aTIPart;\r
+}\r
+\r
+function getTopicChunk(aFTCD,nTopicId)\r
+{\r
+       if(aFTCD&&aFTCD.length)\r
+       {\r
+               var nB=0;\r
+               var nE=aFTCD.length-1;\r
+               var nM=-1;\r
+               var bFound=false;\r
+               do{\r
+                       nM=(nB+nE)>>1;\r
+                       if(aFTCD[nM].nBegin>nTopicId)\r
+                               nE=nM-1;\r
+                       else if(aFTCD[nM].nEnd<nTopicId)\r
+                               nB=nM+1;\r
+                       else{\r
+                               bFound=true;\r
+                               break;\r
+                       }\r
+               }while(nB<=nE);\r
+               if(bFound)\r
+                       return aFTCD[nM];\r
+       }\r
+       return null;\r
+}\r
+\r
+function endLoading()\r
+{\r
+       var oDiv=getElement(gsLoadingDivID);\r
+       if(oDiv)\r
+               oDiv.style.visibility="hidden";\r
+}\r
+\r
+function beginLoading()\r
+{\r
+       var oDiv=getElement(gsLoadingDivID);\r
+       if(!oDiv)\r
+       {\r
+               document.body.insertAdjacentHTML("afterBegin",writeLoadingDiv());\r
+               oDiv=getElement(gsLoadingDivID);\r
+       }\r
+       \r
+       if(oDiv)\r
+       {\r
+               oDiv.style.top=document.body.scrollTop;\r
+               oDiv.style.visibility="visible";\r
+       }\r
+}\r
+\r
+function writeLoadingDiv(nIIdx)\r
+{\r
+       return "<div id=\""+gsLoadingDivID+"\" style=\"position:absolute;top:0;left:0;z-index:600;visibility:hidden;padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
+}\r
+\r
+function topicInfo(sTopicTitle,sTopicURL)\r
+{\r
+       this.sTopicTitle=sTopicTitle;\r
+       this.sTopicURL=sTopicURL;\r
+       this.equalTo=function(oTI)\r
+       {\r
+               return ((this.sTopicTitle==oTI.sTopicTitle)&&\r
+                       (this.sTopicURL==oTI.sTopicURL));\r
+       }\r
+}\r
+\r
+function getChunkedFts(nIndex,sKey)\r
+{\r
+       var oCF=null;\r
+       if(nIndex<gaaFCD.length)\r
+       {\r
+               var len=gaaFCD[nIndex].length;\r
+               if(len>0)\r
+               {\r
+                       var nB=0;\r
+                       var nE=len-1;\r
+                       var bFound=false;\r
+                       do{\r
+                               var nM=(nB+nE)>>1;\r
+                               if(compare(sKey,gaaFCD[nIndex][nM].sEndKey)>0)\r
+                               {\r
+                                       nB=nM+1;\r
+                               }\r
+                               else if(compare(sKey,gaaFCD[nIndex][nM].sStartKey)<0)\r
+                               {\r
+                                       nE=nM-1;\r
+                               }\r
+                               else{\r
+                                       bFound=true;\r
+                                       break;\r
+                               }\r
+                       }while(nE>=nB);\r
+                       if(bFound)\r
+                               oCF=gaaFCD[nIndex][nM];\r
+               }\r
+       }\r
+       return oCF;\r
+}\r
+\r
+function ftsReady(aFCD,aFTCD)\r
+{\r
+       endLoading();\r
+       gaaFTCD[gnCLF]=aFTCD;\r
+       gaaFCD[gnCLF++]=aFCD;\r
+       setTimeout("loadFD();",1);\r
+}\r
+\r
+function putFtsTData(aTopics)\r
+{\r
+       endLoading();\r
+       var oCTF=goCTF;\r
+       if(oCTF)\r
+       {\r
+               oCTF.aTopics=aTopics;\r
+               setTimeout("ftsFindKeyword();",1);\r
+       }\r
+}\r
+\r
+function putFtsWData(aFtsContents)\r
+{\r
+       endLoading();\r
+       var oCF=goCF;\r
+       if(oCF)\r
+       {\r
+               updateCache(oCF);\r
+               oCF.aFtsKeys=aFtsContents;\r
+               setTimeout("ftsFindKeyword();",1);\r
+       }\r
+}\r
+\r
+function IsStopWord(sCW,aFtsStopArray)\r
+{\r
+       var nStopArrayLen=aFtsStopArray.length;\r
+       var nB=0;\r
+       var nE=nStopArrayLen-1;\r
+       var nM=0;\r
+       var bFound=false;\r
+       var sStopWord="";\r
+       while(nB<=nE){\r
+               nM=(nB+nE);\r
+               nM>>=1;\r
+               sStopWord=aFtsStopArray[nM];\r
+               if(compare(sCW,sStopWord)>0){\r
+                       nB=(nB==nM)?nM+1:nM;\r
+               }else{\r
+                       if(compare(sCW,sStopWord)<0){\r
+                               nE=(nE==nM)?nM-1:nM;\r
+                       }else{\r
+                               bFound=true;\r
+                               break;\r
+                       }\r
+               }\r
+       }\r
+       return bFound;\r
+}\r
+\r
+function GetStem(szWord)\r
+{\r
+       if(gaFtsStem==null||gaFtsStem.length==0)return szWord;\r
+       var aStems=gaFtsStem;\r
+\r
+       var nStemPos=0;\r
+       var csStem="";\r
+       for(var iStem=0;iStem<aStems.length;iStem++){\r
+\r
+               if(aStems[iStem].length>=szWord.length-1)       continue;\r
+               nStemPos=szWord.lastIndexOf(aStems[iStem]);\r
+               if(nStemPos>0){\r
+                       var cssub=szWord.substring(nStemPos);\r
+                       if(cssub==aStems[iStem]){\r
+                               csStem=szWord;\r
+                               if(szWord.charAt(nStemPos-2)==szWord.charAt(nStemPos-1)){\r
+                                       csStem=csStem.substring(0,nStemPos-1);\r
+                               }else{\r
+                                       csStem=csStem.substring(0,nStemPos);\r
+                               }\r
+                               return csStem;\r
+                       }\r
+               }\r
+       }\r
+       return szWord;\r
+}\r
+\r
+function FtsWriteClassStyle()\r
+{\r
+       var sStyle="<STYLE TYPE='text/css'>\n";\r
+       if (gsBgImage)\r
+               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
+       else\r
+               sStyle+="body {border-top:black 1px solid;}\n";\r
+       sStyle+="P {"+getFontStyle(goErrFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
+       sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
+       sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
+       sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
+       sStyle+="</STYLE>";\r
+       document.write(sStyle);\r
+}\r
+\r
+function window_Unload()\r
+{\r
+       UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
+       UnRegisterListener2(this, WH_MSG_SEARCHFTSKEY);\r
+}\r
+\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       var nMsgId=oMsg.nMessageId;\r
+       if(nMsgId==WH_MSG_SEARCHFTSKEY)\r
+       {\r
+               if(oMsg.oParam)\r
+               {\r
+                       if(gsSK==null||gsSK=="")\r
+                       {\r
+                               gsSK=oMsg.oParam.toLowerCase();\r
+                               findFTSKey();\r
+                       }\r
+                       else\r
+                               gsSK2=oMsg.oParam.toLowerCase();\r
+               }\r
+       }\r
+       else if(nMsgId==WH_MSG_PROJECTREADY)\r
+       {\r
+               loadFts();\r
+       }\r
+       return true;\r
+}\r
+\r
+if (window.gbWhUtil&&window.gbWhLang&&window.gbWhProxy&&window.gbWhVer&&window.gbWhMsg)\r
+{\r
+       goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
+       goErrFont=new whFont("Verdana","8pt","#000000","normal","bold","none");\r
+       goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
+       window.onload=window_OnLoad;\r
+       window.onbeforeunload=window_BUnload;\r
+       window.onunload=window_Unload;\r
+       RegisterListener2(this,WH_MSG_PROJECTREADY);\r
+       gbWhFHost=true;\r
+}\r
+else\r
+       document.location.reload();
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whform.js b/doc/salome/gui/GAUSS/whform.js
new file mode 100644 (file)
index 0000000..323fe8e
--- /dev/null
@@ -0,0 +1,216 @@
+//     WebHelp 5.10.001\r
+var gfunLookUp;\r
+var gbInputEnable;\r
+var gfunInit;\r
+var gstrFormName= "";\r
+var gbWithButton = false;\r
+var gsTitle="";\r
+var gsOverImage = "";\r
+var gsOutImage = "";\r
+var gsClickImage = "";\r
+var gsText = "";\r
+var gsBgColor = "#c0c0c0";\r
+var gsBgImage = "";\r
+var gbInImage = 0;\r
+var gbInputEnable = 0;\r
+\r
+var goTitleFont=null;\r
+var goInputFont=null;\r
+var goNormalFont=null;\r
+var goHoverFont=null;\r
+var gnType=-1;\r
+var gbWhForm=false;\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       if (sBgImage != null && sBgImage.length > 0)\r
+               gsBgImage = sBgImage;\r
+\r
+       if  (gsBgImage  && gsBgImage .length > 0)\r
+       {\r
+               document.body.background = gsBgImage ;\r
+       }\r
+}\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       if (sBgColor != null && sBgColor.length > 0)\r
+               gsBgColor = sBgColor;\r
+\r
+       if (gsBgColor&& gsBgColor.length > 0)\r
+       {\r
+               document.body.bgColor = gsBgColor;\r
+       }\r
+}\r
+\r
+function setBtnType(sType)\r
+{\r
+       if (sType == "image")\r
+       {\r
+               gnType = 0;\r
+       }\r
+       else if (sType == "text")\r
+       {\r
+               gnType = 1;\r
+       }\r
+}\r
+\r
+function setGoImage1(sImage1)\r
+{\r
+       gsOutImage = sImage1;\r
+       if (gsOutImage && gsOutImage.length > 0)\r
+               gbWithButton = true;\r
+}\r
+\r
+function setGoImage2(sImage2)\r
+{\r
+       gsOverImage = sImage2;\r
+       if (gsOverImage && gsOverImage.length > 0)\r
+               gbWithButton = true;\r
+}\r
+\r
+function setGoImage3(sImage3)\r
+{\r
+       gsClickImage = sImage3;\r
+       if (gsClickImage && gsClickImage.length > 0)\r
+               gbWithButton = true;\r
+}\r
+\r
+function setGoText(sText)\r
+{\r
+       gsText = sText;\r
+       if (gsText.length > 0)\r
+               gbWithButton = true;\r
+}\r
+\r
+function setFont(sType, sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration)\r
+{\r
+       var vFont = new whFont(sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration);\r
+       if (sType == "Title")\r
+       {\r
+               goTitleFont = vFont;\r
+               var vFont1 = new whFont(sFontName, sFontSize, "black", sFontStyle, sFontWeight, sFontDecoration);\r
+               goInputFont=vFont1;             \r
+       }\r
+       else if (sType == "Normal")\r
+               goNormalFont = vFont;\r
+       else if (sType == "Hover")\r
+               goHoverFont = vFont;\r
+}\r
+\r
+function writeFormStyle()\r
+{\r
+       var sStyle = "<style type='text/css'>";\r
+       sStyle += "p.title {" + getFontStyle(goTitleFont) + "margin-top:0;margin-bottom:0}\n";\r
+       sStyle += ".inputfield {" + getFontStyle(goInputFont) +"width:100%; }\n";\r
+       sStyle+="A:link {"+getFontStyle(goNormalFont)+"}\n";\r
+       sStyle+="A:visited {"+getFontStyle(goNormalFont)+"}\n";\r
+       sStyle +="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
+       sStyle+=".clsFormBackground{\n";\r
+       if (gsBgImage)\r
+               sStyle+="border-top:"+gsBgColor+" 1px solid;}\n";\r
+       else\r
+               sStyle+="border-top:black 1px solid;}\n";\r
+\r
+       sStyle += "</style>";\r
+       document.write(sStyle);\r
+}\r
+\r
+function lookupKeyDown()\r
+{\r
+       if (gbInputEnable)\r
+       {\r
+               if (gbIE4)\r
+               {\r
+                       if (event.keyCode == 13)        //Enter key\r
+                               gfunLookUp(true);\r
+                       else\r
+                               gfunLookUp(false);\r
+               }                       \r
+               else\r
+                       gfunLookUp(false);\r
+       }\r
+}\r
+\r
+function init()\r
+{\r
+       if (gfunInit)\r
+               gfunInit();\r
+       if (!window.Array)  return;\r
+               document.onkeyup = lookupKeyDown;\r
+}\r
+\r
+function inputSubmit()\r
+{\r
+       if ((gbInputEnable && !gbIE4)|| gbInImage)\r
+               gfunLookUp(true);\r
+}\r
+\r
+function inputEnable(bEnable)\r
+{\r
+       gbInputEnable = bEnable;\r
+}\r
+\r
+function inImage(bImage)\r
+{\r
+       gbInImage = bImage;\r
+}\r
+\r
+function getFormHTML()\r
+{\r
+       var sForm = "";\r
+       sForm += "<table class=\"clsFormBackground\" width=\"100%\" cellspacing=\"0\" cellpadding=\"5\" border=\"0\">";\r
+       sForm += "<form name=\"" + gstrFormName + "\" method=\"POST\" action=\"javascript:inputSubmit()\" style=\"width:100%\">";\r
+       sForm += "<tr>";\r
+       sForm += "<td>";\r
+       sForm += "<p class=title><nobr>" + gsTitle + "</nobr><br><table width=\"100%\"><tr valign=\"middle\"><td width=\"100%\"><input class=\"inputfield\" type=\"text\" name=\"keywordField\" onfocus=\"inputEnable(1);\" onblur=\"inputEnable(0);\"></td>";\r
+       if (gbWithButton && gnType >= 0)\r
+       {\r
+               sForm += "<td><a title=\"submit button\" href=\"javascript:void(0);\" onclick=\"" + gstrFormName + ".submit(); return false;\" onfocus=\"inImage(1);\" onblur=\"inImage(0);\" onmouseup=\"onMouseUp();\" onmousedown=\"onMouseDown();\" onmouseover=\"onMouseOver();\" onmouseout=\"onMouseOut();\">"\r
+               if (gnType == 0)\r
+               {\r
+                       if (!gsText)\r
+                               gsText="Go";\r
+                       sForm += "<img alt=\""+gsText+"\" id=\"go\" border=\"0\" src=\"" + gsOutImage + "\">";\r
+               }\r
+               else\r
+                       sForm += gsText ;\r
+               sForm += "</a></td>";\r
+       }\r
+       sForm += "</tr></table></p></td></tr></form></table>";\r
+       return sForm;\r
+}\r
+\r
+function onMouseOver()\r
+{\r
+       if (getElement("go") && gsOverImage)\r
+               getElement("go").src = gsOverImage;\r
+}\r
+\r
+function onMouseDown()\r
+{\r
+       if (getElement("go") && gsClickImage)\r
+               getElement("go").src = gsClickImage;\r
+}\r
+\r
+function onMouseUp()\r
+{\r
+       if (getElement("go") && gsOutImage)\r
+               getElement("go").src = gsOutImage;\r
+}\r
+\r
+function onMouseOut()\r
+{\r
+       if (getElement("go") && gsOutImage)\r
+               getElement("go").src = gsOutImage;\r
+}\r
+\r
+if (window.gbWhUtil&&window.gbWhVer&&window.gbWhProxy&&window.gbWhMsg)\r
+{\r
+       goTitleFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "none");\r
+       goNormalFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "none");\r
+       goHoverFont=new whFont("Arial", "9pt", "#000000", "normal", "normal", "underline");\r
+       gbWhForm=true;\r
+}\r
+else\r
+       document.location.reload();
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whframes.js b/doc/salome/gui/GAUSS/whframes.js
new file mode 100644 (file)
index 0000000..2040f33
--- /dev/null
@@ -0,0 +1,79 @@
+//     WebHelp 5.10.001\r
+// this value should be identical to the value used in whproxy.js\r
+window.whname = "wh_stub";\r
+\r
+// this file will be used by Topic and NavBar and NavPane and other components\r
+// and this file is used in child frame html.\r
+// and the whstub.js will be used in the start page.\r
+// see reference in whstub.js.\r
+// Internal Area\r
+var gbInited = false;\r
+var gWndStubPage = null;\r
+function getStubPage()\r
+{\r
+       if (!gbInited)\r
+       {\r
+               gWndStubPage = getStubPage_inter(window);\r
+               gbInited = true;\r
+       }\r
+       return gWndStubPage;\r
+}\r
+\r
+function getStubPage_inter(wCurrent) {\r
+       if (null == wCurrent.parent || wCurrent.parent == wCurrent)\r
+               return null;\r
+\r
+       if (wCurrent.parent.whname && "wh_stub" == wCurrent.parent.whname) \r
+               return wCurrent.parent;\r
+       else\r
+               if (wCurrent.parent.frames.length != 0 && wCurrent.parent != wCurrent)\r
+                       return getStubPage_inter(wCurrent.parent);\r
+               else \r
+                       return null;\r
+}\r
+\r
+// Public interface begin here................\r
+function RegisterListener(framename, nMessageId)\r
+{\r
+       var wStartPage = getStubPage();\r
+       if (wStartPage && wStartPage != this) {\r
+               return wStartPage.RegisterListener(framename, nMessageId);\r
+       }\r
+       else \r
+               return false;\r
+}\r
+\r
+function RegisterListener2(oframe, nMessageId)\r
+{\r
+       var wStartPage = getStubPage();\r
+       if (wStartPage && wStartPage != this) {\r
+               return wStartPage.RegisterListener2(oframe, nMessageId);\r
+       }\r
+       else \r
+               return false;\r
+}\r
+\r
+function UnRegisterListener2(oframe, nMessageId)\r
+{\r
+       var wStartPage = getStubPage();\r
+       if (wStartPage && wStartPage != this && wStartPage.UnRegisterListener2) {\r
+               return wStartPage.UnRegisterListener2(oframe, nMessageId);\r
+       }\r
+       else \r
+               return false;\r
+}\r
+\r
+function SendMessage(oMessage)\r
+{\r
+       var nMsgId = oMessage.nMessageId;\r
+       if (nMsgId == WH_MSG_ISINFRAMESET && oMessage.wSender != this)\r
+               return true;\r
+       var wStartPage = getStubPage();\r
+       if (wStartPage && wStartPage != this && wStartPage.SendMessage) \r
+       {\r
+               return wStartPage.SendMessage(oMessage);\r
+       }\r
+       else \r
+               return false;\r
+}\r
+var gbWhProxy=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whgbody.htm b/doc/salome/gui/GAUSS/whgbody.htm
new file mode 100644 (file)
index 0000000..476ec2d
--- /dev/null
@@ -0,0 +1,35 @@
+<html>\r
+<head>\r
+<title>Glossary Term</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmozemu.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whlang.js"></script>\r
+<script language="javascript1.2" src="whhost.js"></script>\r
+<script language="javascript1.2" src="whghost.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+if(window.gbWhGHost)\r
+{\r
+       setBackgroundcolor("White"); \r
+       \r
+       setFont("Normal", "Tahoma","8pt","Black","Normal","Normal","none");\r
+       setFont("Hover", "Tahoma","8pt","Navy","Normal","Normal","underline");\r
+       setActiveBgColor("Silver");\r
+       \r
+       \r
+       GloWriteClassStyle();\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+</head>\r
+<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" bgcolor="white">\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whexpbar.gif b/doc/salome/gui/GAUSS/whgdata/whexpbar.gif
new file mode 100644 (file)
index 0000000..e677dc6
Binary files /dev/null and b/doc/salome/gui/GAUSS/whgdata/whexpbar.gif differ
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstf0.htm b/doc/salome/gui/GAUSS/whgdata/whlstf0.htm
new file mode 100644 (file)
index 0000000..40ff18e
--- /dev/null
@@ -0,0 +1,48 @@
+<html>\r
+<head>\r
+<title>Search Words List</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" >\r
+\r
+\r
+<a name="bm_{"></a><a name="subkey_{{"></a><a href="../description_of_commands_display_results.htm"><b>16x16</b></a> <br><a name="bms_{D"></a><a name="subkey_{D"></a><a href="../description_of_commands_display_results.htm"><b>2d</b></a> <br><nobr>3d <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../description_of_commands_display_results.htm"><b>3</b></a> <a href="../command_result.htm"><b>4</b></a> <a href="../command_description_segmentation.htm"><b>5</b></a> <a href="../command_description_in_display_meshes.htm"><b>6</b></a> <a href="../command_activation_segmentation.htm"><b>7</b></a> <a href="../command_activation_picking.htm"><b>8</b></a> <a href="../cameras.htm"><b>9</b></a> <a href="../activation_of_commands_display_results.htm"><b>10</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>11</b></a> <a href="../picking_general.htm"><b>12</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>13</b></a> <a href="../managing_configurations.htm"><b>14</b></a> <a href="../making_an_avi_clip.htm"><b>15</b></a> <a href="../general_navigation_within_the_scene.htm"><b>16</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>17</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>18</b></a> <a href="../salome_visu_preferences_picking.htm"><b>19</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_A"></a><a name="subkey_AB"></a><a href="../command_description_segmentation.htm"><b>ability</b></a> <br><a href="../managing_configurations.htm"><b>able</b></a> <br><a href="../description_of_commands_display_results.htm"><b>abscissa</b></a> <br><a href="../description_of_commands_display_results.htm"><b>absolute</b></a> <br><a name="bms_AC"></a><a name="subkey_AC"></a><a href="../description_of_commands_display_results.htm"><b>acceptable</b></a> <br><nobr>access <a href="../salome_visu_preferences.htm"><b>1</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>2</b></a> </nobr><br><a href="../general_storage_of_produced_data.htm"><b>accessed</b></a> <br><nobr>accessible <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../command_activation.htm"><b>3</b></a> <a href="../cameras.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> </nobr><br><nobr>according <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> </nobr><br><nobr>accordingly <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><nobr>action <a href="../command_activation_in_display_meshes.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_mouse.htm"><b>3</b></a> <a href="../navigation_using_the_keyboard.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> </nobr><br><nobr>actions <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> <a href="../navigation_using_the_mouse.htm"><b>4</b></a> <a href="../navigation_using_the_keyboard.htm"><b>5</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>6</b></a> </nobr><br><a href="../specific_additional_commands_for_fields_items.htm"><b>activate</b></a> <br><nobr>activated <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../command_activation_timestamps_animation.htm"><b>4</b></a> <a href="../command_activation_segmentation.htm"><b>5</b></a> <a href="../command_activation_picking.htm"><b>6</b></a> <a href="../cameras.htm"><b>7</b></a> <a href="../picking_general.htm"><b>8</b></a> <a href="../managing_configurations.htm"><b>9</b></a> <a href="../making_an_avi_clip.htm"><b>10</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>activates</b></a> <br><nobr>activation <a href="../command_deactivation.htm"><b>1</b></a> <a href="../command_activation_timestamps_animation.htm"><b>2</b></a> <a href="../command_activation_segmentation.htm"><b>3</b></a> <a href="../command_activation_picking.htm"><b>4</b></a> <a href="../command_activation_in_display_meshes.htm"><b>5</b></a> <a href="../command_activation.htm"><b>6</b></a> <a href="../activation_of_commands_display_results.htm"><b>7</b></a> </nobr><br><nobr>active <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_activation_segmentation.htm"><b>4</b></a> <a href="../command_activation_picking.htm"><b>5</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>6</b></a> <a href="../navigation_using_the_keyboard.htm"><b>7</b></a> <a href="../managing_configurations.htm"><b>8</b></a> <a href="../making_an_avi_clip.htm"><b>9</b></a> </nobr><br><a href="../picking_general.htm"><b>actor</b></a> <br><nobr>acts <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> </nobr><br><a name="bms_AD"></a><a name="subkey_AD"></a><a href="../description_of_commands_display_results.htm"><b>adaptable</b></a> <br><a href="../description_of_the_picking_functionality.htm"><b>adapted</b></a> <br><nobr>added <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>5</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>6</b></a> <a href="../managing_configurations.htm"><b>7</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>8</b></a> </nobr><br><nobr>addition <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> </nobr><br><nobr>additional <a href="../salome_visu_preferences.htm"><b>1</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>2</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>3</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>adjust</b></a> <br><nobr>advanced <a href="../animation_function.htm"><b>1</b></a> <a href="../segmentation_general.htm"><b>2</b></a> </nobr><br><a name="bms_AF"></a><a name="subkey_AF"></a><a href="../managing_configurations.htm"><b>affect</b></a> <br><a href="../command_description_in_display_meshes.htm"><b>affects</b></a> <br><a name="bms_AL"></a><a name="subkey_AL"></a><a href="../activation_of_commands_display_results.htm"><b>algorithms</b></a> <br><nobr>allow <a href="../cameras.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><nobr>allows <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_activation.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> <a href="../animation_function.htm"><b>7</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>8</b></a> <a href="../picking_general.htm"><b>9</b></a> <a href="../managing_configurations.htm"><b>10</b></a> <a href="../general_storage_of_produced_data.htm"><b>11</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>12</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>13</b></a> <a href="../salome_visu_preferences_picking.htm"><b>14</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>alone</b></a> <br><a href="../command_description_segmentation.htm"><b>along</b></a> <br><a href="../description_of_commands_display_results.htm"><b>alpha</b></a> <br><nobr>already <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_activation_in_display_meshes.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> <a href="../general.htm"><b>7</b></a> </nobr><br><a name="bms_AM"></a><a name="subkey_AM"></a><a href="../description_of_commands_display_results.htm"><b>amplify</b></a> <br><nobr><a name="bms_AN"></a><a name="subkey_AN"></a>analyse <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>2</b></a> </nobr><br><nobr>angular <a href="../cameras.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> </nobr><br><a href="../command_description_timestamps_animation.htm"><b>animate</b></a> <br><nobr>animation <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_activation_timestamps_animation.htm"><b>2</b></a> <a href="../animation_function.htm"><b>3</b></a> <a href="../making_an_avi_clip.htm"><b>4</b></a> <a href="../general_timestamps_animation.htm"><b>5</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>6</b></a> </nobr><br><nobr>another <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_activation_segmentation.htm"><b>3</b></a> <a href="../command_activation_picking.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> <a href="../picking_general.htm"><b>6</b></a> <a href="../managing_configurations.htm"><b>7</b></a> <a href="../general_navigation_within_the_scene.htm"><b>8</b></a> </nobr><br><nobr>any <a href="../command_deactivation.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>4</b></a> <a href="../navigation_using_the_mouse.htm"><b>5</b></a> <a href="../navigation_using_the_keyboard.htm"><b>6</b></a> <a href="../making_an_avi_clip.htm"><b>7</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>anyway</b></a> <br><a name="bms_AP"></a><a name="subkey_AP"></a><a href="../salome_visu_preferences_picking.htm"><b>apexes</b></a> <br><nobr>applicable <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>4</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>5</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>application</b></a> <br><nobr>applied <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../command_activation_in_display_meshes.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>6</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>7</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>applies</b></a> <br><nobr>apply <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> </nobr><br><a href="../managing_configurations.htm"><b>applying</b></a> <br><nobr><a name="bms_AR"></a><a name="subkey_AR"></a>area <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>around</b></a> <br><a href="../picking_general.htm"><b>array</b></a> <br><a name="bms_AS"></a><a name="subkey_AS"></a><a href="../activation_of_commands_display_results.htm"><b>assigned</b></a> <br><nobr>associated <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_AT"></a><a name="subkey_AT"></a>attribute <a href="../command_activation_segmentation.htm"><b>1</b></a> <a href="../command_activation_picking.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> </nobr><br><a name="bms_AU"></a><a name="subkey_AU"></a><a href="../description_of_commands_display_results.htm"><b>auto</b></a> <br><a href="../managing_configurations.htm"><b>automatic</b></a> <br><nobr>automatically <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../general_storage_of_produced_data.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_AV"></a><a name="subkey_AV"></a>available <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../picking_general.htm"><b>4</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>5</b></a> <a href="../making_an_avi_clip.htm"><b>6</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>average</b></a> <br><a href="../making_an_avi_clip.htm"><b>avi</b></a> <br><nobr><a name="bms_AX"></a><a name="subkey_AX"></a>axis <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><a href="../cameras.htm"><b>axo</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_B"></a><a name="subkey_BA"></a>back <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> </nobr><br><a href="../making_an_avi_clip.htm"><b>background</b></a> <br><nobr>backward <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><a href="../navigation_using_the_spacemouse.htm"><b>backwards</b></a> <br><nobr>bar <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../description_of_commands_display_results.htm"><b>3</b></a> <a href="../command_deactivation.htm"><b>4</b></a> <a href="../command_activation_segmentation.htm"><b>5</b></a> <a href="../command_activation_picking.htm"><b>6</b></a> <a href="../command_activation_in_display_meshes.htm"><b>7</b></a> <a href="../activation_of_commands_display_results.htm"><b>8</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>9</b></a> <a href="../picking_general.htm"><b>10</b></a> <a href="../loading_of_previously_saved_data.htm"><b>11</b></a> <a href="../general_storage_of_produced_data.htm"><b>12</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>13</b></a> </nobr><br><nobr>bars <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>3</b></a> </nobr><br><nobr>based <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><a name="bms_BE"></a><a name="subkey_BE"></a><a href="../description_of_the_picking_functionality.htm"><b>becomes</b></a> <br><a href="../cameras.htm"><b>behavior</b></a> <br><nobr>behaviour <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> <a href="../cameras.htm"><b>4</b></a> <a href="../salome_visu_preferences.htm"><b>5</b></a> <a href="../picking_general.htm"><b>6</b></a> <a href="../general_timestamps_animation.htm"><b>7</b></a> <a href="../general_storage_of_produced_data.htm"><b>8</b></a> <a href="../general.htm"><b>9</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>10</b></a> <a href="../segmentation_general.htm"><b>11</b></a> </nobr><br><a href="../description_of_the_picking_functionality.htm"><b>being</b></a> <br><nobr>below <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><nobr>besides <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../segmentation_general.htm"><b>2</b></a> </nobr><br><a name="bms_BI"></a><a name="subkey_BI"></a><a href="../description_of_commands_display_results.htm"><b>bicolor</b></a> <br><a href="../salome_visu_preferences.htm"><b>big</b></a> <br><a href="../description_of_commands_display_results.htm"><b>bigger</b></a> <br><a href="../command_description_timestamps_animation.htm"><b>bitmap</b></a> <br><nobr><a name="bms_BL"></a><a name="subkey_BL"></a>black <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>block</b></a> <br><a href="../description_of_commands_display_results.htm"><b>blue</b></a> <br><nobr><a name="bms_BO"></a><a name="subkey_BO"></a>both <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../picking_general.htm"><b>5</b></a> <a href="../salome_visu_preferences_picking.htm"><b>6</b></a> </nobr><br><nobr>bottom <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>boundaries</b></a> <br><nobr>boundary <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../salome_visu_preferences_picking.htm"><b>2</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>bounding</b></a> <br><nobr>box <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_activation_segmentation.htm"><b>3</b></a> <a href="../command_activation.htm"><b>4</b></a> <a href="../picking_general.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> <a href="../segmentation_general.htm"><b>7</b></a> </nobr><br><nobr><a name="bms_BR"></a><a name="subkey_BR"></a>briefly <a href="../general_timestamps_animation.htm"><b>1</b></a> <a href="../general.htm"><b>2</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>brightness</b></a> <br><nobr>browse <a href="../command_activation.htm"><b>1</b></a> <a href="../loading_of_previously_saved_data.htm"><b>2</b></a> </nobr><br><nobr>browser <a href="../command_result.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../command_activation_timestamps_animation.htm"><b>3</b></a> <a href="../command_activation_in_display_meshes.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> <a href="../activation_of_commands_display_results.htm"><b>6</b></a> <a href="../picking_general.htm"><b>7</b></a> <a href="../managing_configurations.htm"><b>8</b></a> <a href="../general_storage_of_produced_data.htm"><b>9</b></a> </nobr><br><nobr><a name="bms_BU"></a><a name="subkey_BU"></a>button <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_description_in_display_meshes.htm"><b>5</b></a> <a href="../command_activation_timestamps_animation.htm"><b>6</b></a> <a href="../command_activation_segmentation.htm"><b>7</b></a> <a href="../command_activation_picking.htm"><b>8</b></a> <a href="../command_activation_in_display_meshes.htm"><b>9</b></a> <a href="../command_activation.htm"><b>10</b></a> <a href="../animation_function.htm"><b>11</b></a> <a href="../activation_of_commands_display_results.htm"><b>12</b></a> <a href="../picking_general.htm"><b>13</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>14</b></a> <a href="../managing_configurations.htm"><b>15</b></a> <a href="../making_an_avi_clip.htm"><b>16</b></a> <a href="../loading_of_previously_saved_data.htm"><b>17</b></a> </nobr><br><nobr>buttons <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>4</b></a> <a href="../navigation_using_the_mouse.htm"><b>5</b></a> <a href="../making_an_avi_clip.htm"><b>6</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_C"></a><a name="subkey_CA"></a><a href="../command_description_segmentation.htm"><b>cad</b></a> <br><a href="../display_results_at_gauss_points_general.htm"><b>calculation</b></a> <br><a href="../command_description_segmentation.htm"><b>called</b></a> <br><nobr>camera <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> <a href="../general_navigation_within_the_scene.htm"><b>6</b></a> <a href="../salome_visu_preferences_picking.htm"><b>7</b></a> </nobr><br><nobr>cameras <a href="../cameras.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> <a href="../general_storage_of_produced_data.htm"><b>4</b></a> </nobr><br><nobr>cancel <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>cancelled</b></a> <br><a href="../command_description_in_display_meshes.htm"><b>cancels</b></a> <br><a href="../description_of_commands_display_results.htm"><b>cannot</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>cap</b></a> <br><nobr>capabilities <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../general.htm"><b>2</b></a> </nobr><br><nobr>capability <a href="../navigation_using_the_spacemouse.htm"><b>1</b></a> <a href="../navigation_using_the_mouse.htm"><b>2</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>3</b></a> </nobr><br><a href="../cameras.htm"><b>care</b></a> <br><nobr>case <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_deactivation.htm"><b>5</b></a> <a href="../command_activation_segmentation.htm"><b>6</b></a> <a href="../command_activation_picking.htm"><b>7</b></a> <a href="../cameras.htm"><b>8</b></a> <a href="../activation_of_commands_display_results.htm"><b>9</b></a> <a href="../making_an_avi_clip.htm"><b>10</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>11</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf1.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstf1.htm b/doc/salome/gui/GAUSS/whgdata/whlstf1.htm
new file mode 100644 (file)
index 0000000..815f74a
--- /dev/null
@@ -0,0 +1,43 @@
+<html>\r
+<head>\r
+<title>Search Words List</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" align="center"><a href="whlstf0.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
+<p class="ftsbody" >\r
+<nobr><a name="bms_CE"></a><a name="subkey_CE"></a>cell <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>cells</b></a> <br><nobr>center <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> </nobr><br><nobr>centre <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><nobr>centred <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../navigation_using_the_mouse.htm"><b>2</b></a> <a href="../navigation_using_the_keyboard.htm"><b>3</b></a> <a href="../salome_visu_preferences_picking.htm"><b>4</b></a> </nobr><br><nobr>certain <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../navigation_using_the_keyboard.htm"><b>3</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_CH"></a><a name="subkey_CH"></a>change <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>4</b></a> </nobr><br><nobr>changed <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../general_timestamps_animation.htm"><b>4</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>changes</b></a> <br><nobr>changing <a href="../cameras.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>channel</b></a> <br><nobr>chapter <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>characteristics</b></a> <br><nobr>check <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> </nobr><br><nobr>checked <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../salome_visu_preferences.htm"><b>3</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>checking</b></a> <br><nobr>child <a href="../cameras.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><nobr>choice <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../command_activation.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>choices</b></a> <br><nobr>choose <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../salome_visu_preferences_picking.htm"><b>4</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>chosen</b></a> <br><a name="bms_CL"></a><a name="subkey_CL"></a><a href="../description_of_commands_display_results.htm"><b>clamp</b></a> <br><nobr>clear <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../loading_of_previously_saved_data.htm"><b>3</b></a> </nobr><br><nobr>click <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_activation_timestamps_animation.htm"><b>2</b></a> <a href="../command_activation_in_display_meshes.htm"><b>3</b></a> <a href="../command_activation.htm"><b>4</b></a> <a href="../animation_function.htm"><b>5</b></a> <a href="../activation_of_commands_display_results.htm"><b>6</b></a> <a href="../salome_visu_preferences.htm"><b>7</b></a> <a href="../managing_configurations.htm"><b>8</b></a> </nobr><br><a href="../cameras.htm"><b>clicking</b></a> <br><a href="../making_an_avi_clip.htm"><b>clip</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>clockwise</b></a> <br><nobr>close <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><a name="bms_CO"></a><a name="subkey_CO"></a><a href="../navigation_using_the_spacemouse.htm"><b>co</b></a> <br><a href="../index.htm"><b>code_aster</b></a> <br><a href="../command_result.htm"><b>collapse</b></a> <br><nobr>color <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../picking_general.htm"><b>4</b></a> </nobr><br><nobr>colors <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>colours</b></a> <br><nobr>combined <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><nobr>command <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_description_in_display_meshes.htm"><b>5</b></a> <a href="../command_deactivation.htm"><b>6</b></a> <a href="../command_activation_timestamps_animation.htm"><b>7</b></a> <a href="../command_activation_segmentation.htm"><b>8</b></a> <a href="../command_activation_picking.htm"><b>9</b></a> <a href="../command_activation_in_display_meshes.htm"><b>10</b></a> <a href="../command_activation.htm"><b>11</b></a> <a href="../cameras.htm"><b>12</b></a> <a href="../activation_of_commands_display_results.htm"><b>13</b></a> <a href="../salome_visu_preferences.htm"><b>14</b></a> <a href="../navigation_using_the_mouse.htm"><b>15</b></a> <a href="../managing_configurations.htm"><b>16</b></a> <a href="../loading_of_previously_saved_data.htm"><b>17</b></a> <a href="../general_timestamps_animation.htm"><b>18</b></a> <a href="../general_storage_of_produced_data.htm"><b>19</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>20</b></a> </nobr><br><nobr>commands <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../command_activation_in_display_meshes.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>6</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>7</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>8</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>9</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>component</b></a> <br><a href="../description_of_the_picking_functionality.htm"><b>components</b></a> <br><nobr>computation <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><nobr>compute <a href="../command_activation_in_display_meshes.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> </nobr><br><nobr>computed <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> </nobr><br><a href="../command_description_timestamps_animation.htm"><b>computes</b></a> <br><nobr>concerned <a href="../command_activation_in_display_meshes.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> <a href="../index.htm"><b>4</b></a> </nobr><br><a href="../managing_configurations.htm"><b>config</b></a> <br><nobr>configuration <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>4</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> <a href="../salome_visu_preferences_picking.htm"><b>7</b></a> </nobr><br><nobr>configurations <a href="../managing_configurations.htm"><b>1</b></a> <a href="../general_storage_of_produced_data.htm"><b>2</b></a> </nobr><br><nobr>configure <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> </nobr><br><nobr>connected <a href="../command_activation_picking.htm"><b>1</b></a> <a href="../navigation_using_the_mouse.htm"><b>2</b></a> </nobr><br><a href="../navigation_using_the_mouse.htm"><b>connectivity</b></a> <br><nobr>consider <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>2</b></a> </nobr><br><nobr>considered <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> </nobr><br><nobr>consists <a href="../cameras.htm"><b>1</b></a> <a href="../general.htm"><b>2</b></a> <a href="../segmentation_general.htm"><b>3</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>contained</b></a> <br><a href="../activation_of_commands_display_results.htm"><b>containing</b></a> <br><a href="../activation_of_commands_display_results.htm"><b>contains</b></a> <br><nobr>content <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../making_an_avi_clip.htm"><b>3</b></a> </nobr><br><a href="../making_an_avi_clip.htm"><b>contents</b></a> <br><nobr>contextual <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>5</b></a> </nobr><br><nobr>continue <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> </nobr><br><nobr>control <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> </nobr><br><a href="../navigation_using_the_spacemouse.htm"><b>controller</b></a> <br><a href="../making_an_avi_clip.htm"><b>controls</b></a> <br><nobr>convenience <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> </nobr><br><nobr>convention <a href="../navigation_using_the_mouse.htm"><b>1</b></a> <a href="../segmentation_general.htm"><b>2</b></a> </nobr><br><a href="../navigation_using_the_mouse.htm"><b>conventions</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>coordinate</b></a> <br><nobr>coordinates <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> </nobr><br><a href="../salome_visu_preferences_picking.htm"><b>corner</b></a> <br><a href="../activation_of_commands_display_results.htm"><b>correctly</b></a> <br><nobr>correspond <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> </nobr><br><nobr>corresponding <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../command_result.htm"><b>3</b></a> <a href="../command_description_timestamps_animation.htm"><b>4</b></a> <a href="../command_activation_segmentation.htm"><b>5</b></a> <a href="../command_activation_picking.htm"><b>6</b></a> <a href="../command_activation_in_display_meshes.htm"><b>7</b></a> <a href="../cameras.htm"><b>8</b></a> <a href="../picking_general.htm"><b>9</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>10</b></a> <a href="../making_an_avi_clip.htm"><b>11</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>12</b></a> </nobr><br><nobr>corresponds <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>4</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>could</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>counterclockwise</b></a> <br><a name="bms_CR"></a><a name="subkey_CR"></a><a href="../command_activation_in_display_meshes.htm"><b>create</b></a> <br><nobr>created <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../navigation_using_the_keyboard.htm"><b>2</b></a> <a href="../loading_of_previously_saved_data.htm"><b>3</b></a> <a href="../general_storage_of_produced_data.htm"><b>4</b></a> </nobr><br><nobr>creates <a href="../cameras.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_CT"></a><a name="subkey_CT"></a>ctrl <a href="../navigation_using_the_mouse.htm"><b>1</b></a> <a href="../navigation_using_the_keyboard.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_CU"></a><a name="subkey_CU"></a>current <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_result.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_deactivation.htm"><b>5</b></a> <a href="../command_activation_in_display_meshes.htm"><b>6</b></a> <a href="../cameras.htm"><b>7</b></a> <a href="../activation_of_commands_display_results.htm"><b>8</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>9</b></a> <a href="../managing_configurations.htm"><b>10</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>11</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>12</b></a> <a href="../salome_visu_preferences_picking.htm"><b>13</b></a> </nobr><br><nobr>cursor <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> <a href="../salome_visu_preferences_picking.htm"><b>5</b></a> </nobr><br><nobr>cursors <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> <a href="../general_storage_of_produced_data.htm"><b>3</b></a> <a href="../segmentation_general.htm"><b>4</b></a> </nobr><br><nobr>customize <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>3</b></a> <a href="../salome_visu_preferences_picking.htm"><b>4</b></a> </nobr><br><a href="../segmentation_general.htm"><b>cuts</b></a> <br><a href="../segmentation_general.htm"><b>cutting</b></a> <br>\r
+<br><br>\r
+<a name="bm_D"></a><a name="subkey_D{"></a><a href="../command_description_segmentation.htm"><b>d</b></a> <br><nobr><a name="bms_DA"></a><a name="subkey_DA"></a>data <a href="../command_result.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> <a href="../picking_general.htm"><b>4</b></a> <a href="../loading_of_previously_saved_data.htm"><b>5</b></a> <a href="../index.htm"><b>6</b></a> <a href="../general_storage_of_produced_data.htm"><b>7</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>8</b></a> <a href="../salome_visu_preferences_picking.htm"><b>9</b></a> </nobr><br><a href="../animation_function.htm"><b>date</b></a> <br><nobr><a name="bms_DE"></a><a name="subkey_DE"></a>deactivation <a href="../command_deactivation.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>debug</b></a> <br><a href="../managing_configurations.htm"><b>decides</b></a> <br><nobr>decrease <a href="../navigation_using_the_spacemouse.htm"><b>1</b></a> <a href="../navigation_using_the_mouse.htm"><b>2</b></a> <a href="../navigation_using_the_keyboard.htm"><b>3</b></a> </nobr><br><nobr>dedicated <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><nobr>default <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_activation_in_display_meshes.htm"><b>4</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>5</b></a> <a href="../salome_visu_preferences.htm"><b>6</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>7</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>8</b></a> <a href="../navigation_using_the_mouse.htm"><b>9</b></a> </nobr><br><nobr>define <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../animation_function.htm"><b>5</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>6</b></a> <a href="../salome_visu_preferences.htm"><b>7</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>8</b></a> <a href="../navigation_using_the_mouse.htm"><b>9</b></a> <a href="../making_an_avi_clip.htm"><b>10</b></a> <a href="../general_storage_of_produced_data.htm"><b>11</b></a> <a href="../segmentation_general.htm"><b>12</b></a> <a href="../salome_visu_preferences_picking.htm"><b>13</b></a> </nobr><br><nobr>defined <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../description_of_commands_display_results.htm"><b>3</b></a> <a href="../command_description_timestamps_animation.htm"><b>4</b></a> <a href="../command_description_segmentation.htm"><b>5</b></a> <a href="../command_activation_picking.htm"><b>6</b></a> <a href="../command_activation_in_display_meshes.htm"><b>7</b></a> <a href="../command_activation.htm"><b>8</b></a> <a href="../cameras.htm"><b>9</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>10</b></a> <a href="../salome_visu_preferences.htm"><b>11</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>12</b></a> <a href="../picking_general.htm"><b>13</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>14</b></a> <a href="../navigation_using_the_mouse.htm"><b>15</b></a> <a href="../navigation_using_the_keyboard.htm"><b>16</b></a> <a href="../managing_configurations.htm"><b>17</b></a> <a href="../making_an_avi_clip.htm"><b>18</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>19</b></a> </nobr><br><nobr>defines <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../animation_function.htm"><b>3</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>4</b></a> <a href="../salome_visu_preferences.htm"><b>5</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>6</b></a> <a href="../general_timestamps_animation.htm"><b>7</b></a> <a href="../segmentation_general.htm"><b>8</b></a> </nobr><br><nobr>defining <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../segmentation_general.htm"><b>3</b></a> <a href="../salome_visu_preferences_picking.htm"><b>4</b></a> </nobr><br><nobr>definition <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>definitions</b></a> <br><a href="../description_of_commands_display_results.htm"><b>deformation</b></a> <br><a href="../description_of_commands_display_results.htm"><b>deformed</b></a> <br><a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>degree</b></a> <br><nobr>degrees <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><nobr>delete <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><a href="../salome_visu_preferences.htm"><b>demand</b></a> <br><a href="../description_of_commands_display_results.htm"><b>depend</b></a> <br><nobr>depending <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>depends</b></a> <br><nobr>depth <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><nobr>described <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../picking_general.htm"><b>4</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>5</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>6</b></a> </nobr><br><nobr>describes <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../index.htm"><b>2</b></a> <a href="../general_navigation_within_the_scene.htm"><b>3</b></a> </nobr><br><nobr>description <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_description_in_display_meshes.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>7</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>8</b></a> <a href="../salome_visu_preferences_picking.htm"><b>9</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>design</b></a> <br><a href="../command_description_segmentation.htm"><b>desktop</b></a> <br><a href="../salome_visu_preferences_picking.htm"><b>details</b></a> <br><nobr>detected <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> </nobr><br><a href="../description_of_the_picking_functionality.htm"><b>detection</b></a> <br><a href="../description_of_commands_display_results.htm"><b>development</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf2.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstf2.htm b/doc/salome/gui/GAUSS/whgdata/whlstf2.htm
new file mode 100644 (file)
index 0000000..149b885
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words List</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" align="center"><a href="whlstf1.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
+<p class="ftsbody" >\r
+<a name="bms_DI"></a><a name="subkey_DI"></a><a href="../command_description_segmentation.htm"><b>diagonal</b></a> <br><nobr>dialog <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_activation.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>7</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>8</b></a> <a href="../picking_general.htm"><b>9</b></a> <a href="../managing_configurations.htm"><b>10</b></a> <a href="../making_an_avi_clip.htm"><b>11</b></a> <a href="../loading_of_previously_saved_data.htm"><b>12</b></a> <a href="../general_storage_of_produced_data.htm"><b>13</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>14</b></a> <a href="../salome_visu_preferences_picking.htm"><b>15</b></a> </nobr><br><nobr>dialogs <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>diameter</b></a> <br><a href="../description_of_commands_display_results.htm"><b>differences</b></a> <br><nobr>different <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>5</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>dimension</b></a> <br><nobr>direction <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_mouse.htm"><b>3</b></a> <a href="../navigation_using_the_keyboard.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>directly</b></a> <br><nobr>directory <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../loading_of_previously_saved_data.htm"><b>2</b></a> </nobr><br><a href="../making_an_avi_clip.htm"><b>disable</b></a> <br><nobr>disabled <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>discussed</b></a> <br><nobr>disk <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../general_storage_of_produced_data.htm"><b>3</b></a> </nobr><br><nobr>displacement <a href="../cameras.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> </nobr><br><nobr>display <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../description_of_commands_display_results.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_description_in_display_meshes.htm"><b>5</b></a> <a href="../command_activation_in_display_meshes.htm"><b>6</b></a> <a href="../animation_function.htm"><b>7</b></a> <a href="../activation_of_commands_display_results.htm"><b>8</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>9</b></a> <a href="../managing_configurations.htm"><b>10</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>11</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>12</b></a> </nobr><br><nobr>displayed <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_result.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_description_in_display_meshes.htm"><b>5</b></a> <a href="../command_deactivation.htm"><b>6</b></a> <a href="../command_activation_segmentation.htm"><b>7</b></a> <a href="../command_activation_picking.htm"><b>8</b></a> <a href="../command_activation_in_display_meshes.htm"><b>9</b></a> <a href="../activation_of_commands_display_results.htm"><b>10</b></a> <a href="../picking_general.htm"><b>11</b></a> <a href="../managing_configurations.htm"><b>12</b></a> </nobr><br><a href="../display_results_at_gauss_points_general.htm"><b>displaying</b></a> <br><nobr>displays <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../command_activation.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>5</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>6</b></a> <a href="../picking_general.htm"><b>7</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>8</b></a> <a href="../salome_visu_preferences_picking.htm"><b>9</b></a> </nobr><br><nobr>distance <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> <a href="../salome_visu_preferences_picking.htm"><b>5</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>distinguish</b></a> <br><nobr>divide <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> </nobr><br><nobr>divided <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a name="bms_DO"></a><a name="subkey_DO"></a><a href="../command_description_segmentation.htm"><b>docked</b></a> <br><nobr>document <a href="../managing_configurations.htm"><b>1</b></a> <a href="../loading_of_previously_saved_data.htm"><b>2</b></a> <a href="../general_storage_of_produced_data.htm"><b>3</b></a> </nobr><br><a href="../index.htm"><b>documentation</b></a> <br><nobr>does <a href="../picking_general.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_keyboard.htm"><b>3</b></a> <a href="../general.htm"><b>4</b></a> <a href="../segmentation_general.htm"><b>5</b></a> </nobr><br><nobr>dominant <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><nobr>done <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../command_activation_segmentation.htm"><b>3</b></a> <a href="../command_activation_picking.htm"><b>4</b></a> </nobr><br><nobr>down <a href="../cameras.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><a name="bms_DR"></a><a name="subkey_DR"></a><a href="../command_description_segmentation.htm"><b>dragging</b></a> <br><a href="../command_description_in_display_meshes.htm"><b>drawing</b></a> <br><a href="../picking_general.htm"><b>drives</b></a> <br><a name="bms_DU"></a><a name="subkey_DU"></a><a href="../specific_additional_commands_for_fields_items.htm"><b>duplicate</b></a> <br><nobr><a name="bms_DY"></a><a name="subkey_DY"></a>dynamic <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>4</b></a> <a href="../navigation_using_the_mouse.htm"><b>5</b></a> <a href="../navigation_using_the_keyboard.htm"><b>6</b></a> </nobr><br><nobr>dynamically <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_picking.htm"><b>2</b></a> </nobr><br>\r
+<br><br>\r
+<nobr><a name="bm_E"></a><a name="subkey_E{"></a>e <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> </nobr><br><a name="bms_ED"></a><a name="subkey_ED"></a><a href="../picking_general.htm"><b>edf</b></a> <br><nobr>edge <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> </nobr><br><nobr>edit <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>4</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>editable</b></a> <br><nobr>edition <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>4</b></a> </nobr><br><nobr><a name="bms_EF"></a><a name="subkey_EF"></a>effect <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_EI"></a><a name="subkey_EI"></a>either <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../command_activation_segmentation.htm"><b>4</b></a> <a href="../command_activation_picking.htm"><b>5</b></a> <a href="../picking_general.htm"><b>6</b></a> </nobr><br><nobr><a name="bms_EL"></a><a name="subkey_EL"></a>element <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../command_deactivation.htm"><b>3</b></a> <a href="../command_activation_in_display_meshes.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> <a href="../activation_of_commands_display_results.htm"><b>6</b></a> <a href="../picking_general.htm"><b>7</b></a> <a href="../managing_configurations.htm"><b>8</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>9</b></a> </nobr><br><nobr>elements <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>5</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>else</b></a> <br><a name="bms_EM"></a><a name="subkey_EM"></a><a href="../display_meshes_general.htm"><b>embedded</b></a> <br><nobr><a name="bms_EN"></a><a name="subkey_EN"></a>enabled <a href="../command_activation_segmentation.htm"><b>1</b></a> <a href="../command_activation_picking.htm"><b>2</b></a> </nobr><br><nobr>end <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>ended</b></a> <br><a href="../general.htm"><b>enhancement</b></a> <br><a href="../cameras.htm"><b>ensured</b></a> <br><nobr>entities <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> </nobr><br><a href="../command_activation_in_display_meshes.htm"><b>entries</b></a> <br><nobr>entry <a href="../cameras.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>environment</b></a> <br><nobr><a name="bms_EQ"></a><a name="subkey_EQ"></a>equal <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><nobr>equivalent <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_ER"></a><a name="subkey_ER"></a>erase <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../command_deactivation.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> </nobr><br><nobr>erased <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> </nobr><br><a name="bms_ES"></a><a name="subkey_ES"></a><a href="../segmentation_general.htm"><b>established</b></a> <br><a name="bms_EV"></a><a name="subkey_EV"></a><a href="../managing_configurations.htm"><b>even</b></a> <br><a name="bms_EX"></a><a name="subkey_EX"></a><a href="../command_description_segmentation.htm"><b>example</b></a> <br><a href="../description_of_commands_display_results.htm"><b>exceeds</b></a> <br><a href="../command_deactivation.htm"><b>except</b></a> <br><a href="../general_storage_of_produced_data.htm"><b>executed</b></a> <br><nobr>existing <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> <a href="../picking_general.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>6</b></a> </nobr><br><a href="../general.htm"><b>exists</b></a> <br><nobr>exit <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><nobr>exits <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_deactivation.htm"><b>3</b></a> </nobr><br><a href="../command_result.htm"><b>expand</b></a> <br><a href="../picking_general.htm"><b>expectation</b></a> <br><a href="../command_description_segmentation.htm"><b>expected</b></a> <br><nobr>explain <a href="../general_timestamps_animation.htm"><b>1</b></a> <a href="../general.htm"><b>2</b></a> </nobr><br><nobr>explained <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> </nobr><br><nobr>explanation <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../navigation_using_the_mouse.htm"><b>2</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>explode</b></a> <br><nobr>extended <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../animation_function.htm"><b>2</b></a> <a href="../general_timestamps_animation.htm"><b>3</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>4</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>extension</b></a> <br><a href="../navigation_using_the_mouse.htm"><b>extra</b></a> <br>\r
+<br><br>\r
+<a name="bm_F"></a><a name="subkey_FA"></a><a href="../picking_general.htm"><b>face</b></a> <br><a href="../description_of_commands_display_results.htm"><b>faces</b></a> <br><a href="../description_of_commands_display_results.htm"><b>factor</b></a> <br><nobr>families <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>4</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>far</b></a> <br><a name="bms_FE"></a><a name="subkey_FE"></a><a href="../description_of_commands_display_results.htm"><b>feature</b></a> <br><nobr>few <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../salome_visu_preferences.htm"><b>2</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_FI"></a><a name="subkey_FI"></a>field <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_activation_timestamps_animation.htm"><b>2</b></a> <a href="../animation_function.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../picking_general.htm"><b>5</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>6</b></a> </nobr><br><nobr>fields <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>4</b></a> </nobr><br><nobr>fig <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_result.htm"><b>3</b></a> <a href="../command_description_timestamps_animation.htm"><b>4</b></a> <a href="../command_description_segmentation.htm"><b>5</b></a> <a href="../command_description_in_display_meshes.htm"><b>6</b></a> <a href="../command_activation_timestamps_animation.htm"><b>7</b></a> <a href="../command_activation_segmentation.htm"><b>8</b></a> <a href="../command_activation_picking.htm"><b>9</b></a> <a href="../command_activation.htm"><b>10</b></a> <a href="../cameras.htm"><b>11</b></a> <a href="../activation_of_commands_display_results.htm"><b>12</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>13</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>14</b></a> <a href="../picking_general.htm"><b>15</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>16</b></a> <a href="../navigation_using_the_mouse.htm"><b>17</b></a> <a href="../managing_configurations.htm"><b>18</b></a> <a href="../making_an_avi_clip.htm"><b>19</b></a> <a href="../loading_of_previously_saved_data.htm"><b>20</b></a> <a href="../general_storage_of_produced_data.htm"><b>21</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>22</b></a> <a href="../salome_visu_preferences_picking.htm"><b>23</b></a> </nobr><br><a href="../cameras.htm"><b>figure</b></a> <br><nobr>file <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_activation_in_display_meshes.htm"><b>4</b></a> <a href="../command_activation.htm"><b>5</b></a> <a href="../activation_of_commands_display_results.htm"><b>6</b></a> <a href="../salome_visu_preferences.htm"><b>7</b></a> <a href="../making_an_avi_clip.htm"><b>8</b></a> <a href="../loading_of_previously_saved_data.htm"><b>9</b></a> <a href="../general_storage_of_produced_data.htm"><b>10</b></a> </nobr><br><nobr>files <a href="../command_result.htm"><b>1</b></a> <a href="../command_activation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../salome_visu_preferences.htm"><b>4</b></a> </nobr><br><nobr>filter <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> </nobr><br><a href="../cameras.htm"><b>final</b></a> <br><a href="../description_of_commands_display_results.htm"><b>finally</b></a> <br><nobr>first <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> <a href="../making_an_avi_clip.htm"><b>6</b></a> <a href="../general_storage_of_produced_data.htm"><b>7</b></a> <a href="../general.htm"><b>8</b></a> <a href="../salome_visu_preferences_picking.htm"><b>9</b></a> </nobr><br><nobr>fixed <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_picking.htm"><b>2</b></a> </nobr><br><a name="bms_FL"></a><a name="subkey_FL"></a><a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>flyto</b></a> <br><nobr><a name="bms_FO"></a><a name="subkey_FO"></a>focal <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../navigation_using_the_mouse.htm"><b>4</b></a> <a href="../navigation_using_the_keyboard.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> <a href="../salome_visu_preferences_picking.htm"><b>7</b></a> </nobr><br><nobr>focus <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> </nobr><br><nobr>follow <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> <a href="../salome_visu_preferences_picking.htm"><b>4</b></a> </nobr><br><nobr>following <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_deactivation.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> <a href="../picking_general.htm"><b>7</b></a> <a href="../navigation_using_the_mouse.htm"><b>8</b></a> <a href="../navigation_using_the_keyboard.htm"><b>9</b></a> <a href="../managing_configurations.htm"><b>10</b></a> <a href="../making_an_avi_clip.htm"><b>11</b></a> <a href="../general_timestamps_animation.htm"><b>12</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>13</b></a> <a href="../segmentation_general.htm"><b>14</b></a> </nobr><br><nobr>follows <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> <a href="../navigation_using_the_mouse.htm"><b>4</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>font</b></a> <br><a href="../description_of_commands_display_results.htm"><b>forth</b></a> <br><nobr>forward <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>founded</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf3.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstf3.htm b/doc/salome/gui/GAUSS/whgdata/whlstf3.htm
new file mode 100644 (file)
index 0000000..1f94b9e
--- /dev/null
@@ -0,0 +1,51 @@
+<html>\r
+<head>\r
+<title>Search Words List</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" align="center"><a href="whlstf2.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
+<p class="ftsbody" >\r
+<nobr><a name="bms_FR"></a><a name="subkey_FR"></a>frame <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../animation_function.htm"><b>3</b></a> <a href="../navigation_using_the_mouse.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> <a href="../general_timestamps_animation.htm"><b>6</b></a> </nobr><br><nobr>frames <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><nobr>free <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>1</b></a> <a href="../navigation_using_the_mouse.htm"><b>2</b></a> </nobr><br><a href="../navigation_using_the_spacemouse.htm"><b>freedom</b></a> <br><a href="../managing_configurations.htm"><b>freely</b></a> <br><nobr>front <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> </nobr><br><a name="bms_FU"></a><a name="subkey_FU"></a><a href="../salome_visu_preferences.htm"><b>full</b></a> <br><nobr>fully <a href="../salome_visu_preferences.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>3</b></a> </nobr><br><nobr>function <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_deactivation.htm"><b>3</b></a> <a href="../animation_function.htm"><b>4</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>5</b></a> <a href="../picking_general.htm"><b>6</b></a> <a href="../general_timestamps_animation.htm"><b>7</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>8</b></a> <a href="../segmentation_general.htm"><b>9</b></a> <a href="../salome_visu_preferences_picking.htm"><b>10</b></a> </nobr><br><nobr>functionality <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_activation_segmentation.htm"><b>5</b></a> <a href="../command_activation_picking.htm"><b>6</b></a> <a href="../cameras.htm"><b>7</b></a> <a href="../picking_general.htm"><b>8</b></a> <a href="../making_an_avi_clip.htm"><b>9</b></a> <a href="../index.htm"><b>10</b></a> <a href="../general_timestamps_animation.htm"><b>11</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>12</b></a> <a href="../salome_visu_preferences_picking.htm"><b>13</b></a> </nobr><br><nobr>functions <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_picking.htm"><b>2</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>future</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_G"></a><a name="subkey_GA"></a>gauss <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_deactivation.htm"><b>4</b></a> <a href="../command_activation_segmentation.htm"><b>5</b></a> <a href="../command_activation_picking.htm"><b>6</b></a> <a href="../animation_function.htm"><b>7</b></a> <a href="../activation_of_commands_display_results.htm"><b>8</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>9</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>10</b></a> <a href="../picking_general.htm"><b>11</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>12</b></a> <a href="../managing_configurations.htm"><b>13</b></a> <a href="../index.htm"><b>14</b></a> <a href="../general_timestamps_animation.htm"><b>15</b></a> <a href="../general.htm"><b>16</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>17</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>18</b></a> <a href="../segmentation_general.htm"><b>19</b></a> <a href="../salome_visu_preferences_picking.htm"><b>20</b></a> </nobr><br><nobr><a name="bms_GE"></a><a name="subkey_GE"></a>general <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> <a href="../general_timestamps_animation.htm"><b>3</b></a> <a href="../general_navigation_within_the_scene.htm"><b>4</b></a> <a href="../general.htm"><b>5</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>6</b></a> <a href="../segmentation_general.htm"><b>7</b></a> </nobr><br><a href="../command_description_timestamps_animation.htm"><b>generate</b></a> <br><a href="../salome_visu_preferences_picking.htm"><b>generated</b></a> <br><nobr>geometrical <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><nobr>geometry <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_GI"></a><a name="subkey_GI"></a>give <a href="../activation_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> </nobr><br><nobr>given <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>2</b></a> </nobr><br><a name="bms_GL"></a><a name="subkey_GL"></a><a href="../description_of_commands_display_results.htm"><b>global</b></a> <br><a href="../command_description_segmentation.htm"><b>glyph</b></a> <br><nobr><a name="bms_GO"></a><a name="subkey_GO"></a>go <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> <a href="../salome_visu_preferences.htm"><b>3</b></a> <a href="../general_navigation_within_the_scene.htm"><b>4</b></a> </nobr><br><a href="../command_description_timestamps_animation.htm"><b>going</b></a> <br><nobr><a name="bms_GR"></a><a name="subkey_GR"></a>graphic <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> <a href="../general_navigation_within_the_scene.htm"><b>4</b></a> </nobr><br><nobr>graphical <a href="../command_activation_in_display_meshes.htm"><b>1</b></a> <a href="../index.htm"><b>2</b></a> </nobr><br><nobr>graphically <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>greater</b></a> <br><a href="../description_of_commands_display_results.htm"><b>greyed</b></a> <br><a href="../making_an_avi_clip.htm"><b>grouped</b></a> <br><nobr>groups <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_GU"></a><a name="subkey_GU"></a>gui <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> <a href="../index.htm"><b>3</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>4</b></a> </nobr><br>\r
+<br><br>\r
+<nobr><a name="bm_H"></a><a name="subkey_HA"></a>half <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../segmentation_general.htm"><b>2</b></a> </nobr><br><a href="../general.htm"><b>handling</b></a> <br><a href="../description_of_commands_display_results.htm"><b>hardware</b></a> <br><nobr><a name="bms_HD"></a><a name="subkey_HD"></a>hdf <a href="../loading_of_previously_saved_data.htm"><b>1</b></a> <a href="../general_storage_of_produced_data.htm"><b>2</b></a> </nobr><br><a name="bms_HE"></a><a name="subkey_HE"></a><a href="../navigation_using_the_spacemouse.htm"><b>head</b></a> <br><nobr>height <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_picking.htm"><b>2</b></a> </nobr><br><nobr>here <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../general.htm"><b>2</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>3</b></a> </nobr><br><a name="bms_HI"></a><a name="subkey_HI"></a><a href="../command_result.htm"><b>hierarchical</b></a> <br><a href="../command_activation.htm"><b>hierarchy</b></a> <br><a href="../description_of_commands_display_results.htm"><b>high</b></a> <br><a href="../description_of_the_picking_functionality.htm"><b>highlight</b></a> <br><nobr>highlighted <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>him</b></a> <br><a name="bms_HO"></a><a name="subkey_HO"></a><a href="../command_description_in_display_meshes.htm"><b>homothetic</b></a> <br><a href="../description_of_commands_display_results.htm"><b>horizontal</b></a> <br><nobr>how <a href="../general_timestamps_animation.htm"><b>1</b></a> <a href="../general_navigation_within_the_scene.htm"><b>2</b></a> <a href="../general.htm"><b>3</b></a> </nobr><br>\r
+<br><br>\r
+<nobr><a name="bm_I"></a><a name="subkey_I{"></a>i <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_result.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_description_in_display_meshes.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> </nobr><br><nobr><a name="bms_IC"></a><a name="subkey_IC"></a>icon <a href="../command_activation_segmentation.htm"><b>1</b></a> <a href="../command_activation_picking.htm"><b>2</b></a> </nobr><br><a href="../cameras.htm"><b>icons</b></a> <br><a name="bms_ID"></a><a name="subkey_ID"></a><a href="../description_of_the_picking_functionality.htm"><b>id</b></a> <br><nobr><a name="bms_IF"></a><a name="subkey_IF"></a>if <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_deactivation.htm"><b>4</b></a> <a href="../command_activation_in_display_meshes.htm"><b>5</b></a> <a href="../activation_of_commands_display_results.htm"><b>6</b></a> <a href="../managing_configurations.htm"><b>7</b></a> <a href="../salome_visu_preferences_picking.htm"><b>8</b></a> </nobr><br><a name="bms_II"></a><a name="subkey_II"></a><a href="../description_of_the_picking_functionality.htm"><b>ii</b></a> <br><nobr><a name="bms_IM"></a><a name="subkey_IM"></a>immediately <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a href="../salome_visu_preferences_picking.htm"><b>implementation</b></a> <br><nobr>implemented <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> <a href="../making_an_avi_clip.htm"><b>4</b></a> <a href="../salome_visu_preferences_picking.htm"><b>5</b></a> </nobr><br><a href="../command_activation.htm"><b>import</b></a> <br><a href="../command_description_segmentation.htm"><b>improvement</b></a> <br><a name="bms_IN"></a><a name="subkey_IN"></a><a href="../description_of_commands_display_results.htm"><b>inactive</b></a> <br><nobr>included <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>incorrect</b></a> <br><nobr>increase <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_mouse.htm"><b>3</b></a> <a href="../navigation_using_the_keyboard.htm"><b>4</b></a> </nobr><br><nobr>increment <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_keyboard.htm"><b>3</b></a> </nobr><br><a href="../managing_configurations.htm"><b>incremental</b></a> <br><nobr>independent <a href="../navigation_using_the_spacemouse.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><a href="../description_of_the_picking_functionality.htm"><b>individually</b></a> <br><nobr>info <a href="../command_activation_picking.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>3</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>inform</b></a> <br><nobr>information <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_deactivation.htm"><b>4</b></a> <a href="../picking_general.htm"><b>5</b></a> <a href="../general_storage_of_produced_data.htm"><b>6</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>7</b></a> <a href="../salome_visu_preferences_picking.htm"><b>8</b></a> </nobr><br><a href="../description_of_the_picking_functionality.htm"><b>informs</b></a> <br><a href="../cameras.htm"><b>initial</b></a> <br><nobr>input <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><nobr>inside <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>insideframe</b></a> <br><a href="../segmentation_general.htm"><b>inspect</b></a> <br><nobr>inspected <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> </nobr><br><a href="../managing_configurations.htm"><b>integer</b></a> <br><a href="../command_description_segmentation.htm"><b>intended</b></a> <br><a href="../description_of_commands_display_results.htm"><b>intensity</b></a> <br><a href="../index.htm"><b>interface</b></a> <br><a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>intermediary</b></a> <br><a href="../cameras.htm"><b>interpolated</b></a> <br><nobr>introduced <a href="../navigation_using_the_mouse.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>3</b></a> </nobr><br><a href="../navigation_using_the_spacemouse.htm"><b>introduces</b></a> <br><a href="../index.htm"><b>introduction</b></a> <br><nobr><a name="bms_IT"></a><a name="subkey_IT"></a>item <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../command_activation_segmentation.htm"><b>3</b></a> <a href="../command_activation_picking.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> <a href="../picking_general.htm"><b>6</b></a> <a href="../managing_configurations.htm"><b>7</b></a> </nobr><br><nobr>items <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>4</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_K"></a><a name="subkey_KE"></a><a href="../general_storage_of_produced_data.htm"><b>keeping</b></a> <br><nobr>kept <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> </nobr><br><nobr>key <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_mouse.htm"><b>3</b></a> <a href="../navigation_using_the_keyboard.htm"><b>4</b></a> </nobr><br><nobr>keyboard <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>4</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>5</b></a> <a href="../navigation_using_the_mouse.htm"><b>6</b></a> <a href="../navigation_using_the_keyboard.htm"><b>7</b></a> <a href="../general_navigation_within_the_scene.htm"><b>8</b></a> </nobr><br><nobr>keys <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../navigation_using_the_mouse.htm"><b>4</b></a> <a href="../navigation_using_the_keyboard.htm"><b>5</b></a> </nobr><br><a name="bms_KI"></a><a name="subkey_KI"></a><a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>kind</b></a> <br><a name="bms_KN"></a><a name="subkey_KN"></a><a href="../display_results_at_gauss_points_general.htm"><b>known</b></a> <br>\r
+<br><br>\r
+<a name="bm_L"></a><a name="subkey_LA"></a><a href="../description_of_commands_display_results.htm"><b>labels</b></a> <br><a href="../description_of_commands_display_results.htm"><b>largest</b></a> <br><nobr>last <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>latest</b></a> <br><a href="../description_of_commands_display_results.htm"><b>latitude</b></a> <br><a href="../command_description_timestamps_animation.htm"><b>launches</b></a> <br><nobr><a name="bms_LE"></a><a name="subkey_LE"></a>left <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_activation_segmentation.htm"><b>4</b></a> <a href="../command_activation_picking.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> <a href="../picking_general.htm"><b>7</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>8</b></a> <a href="../salome_visu_preferences_picking.htm"><b>9</b></a> </nobr><br><nobr>length <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_picking.htm"><b>2</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>let</b></a> <br><a href="../specific_additional_commands_for_fields_items.htm"><b>level</b></a> <br><a href="../cameras.htm"><b>levels</b></a> <br><nobr><a name="bms_LI"></a><a name="subkey_LI"></a>like <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>limited</b></a> <br><a href="../description_of_commands_display_results.htm"><b>limits</b></a> <br><nobr>line <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><nobr>linear <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><nobr>lines <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><a href="../command_description_timestamps_animation.htm"><b>list</b></a> <br><a href="../command_description_in_display_meshes.htm"><b>lists</b></a> <br><nobr><a name="bms_LO"></a><a name="subkey_LO"></a>load <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../salome_visu_preferences.htm"><b>3</b></a> <a href="../loading_of_previously_saved_data.htm"><b>4</b></a> </nobr><br><nobr>loaded <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../command_activation_in_display_meshes.htm"><b>3</b></a> <a href="../salome_visu_preferences.htm"><b>4</b></a> <a href="../loading_of_previously_saved_data.htm"><b>5</b></a> </nobr><br><nobr>loading <a href="../command_result.htm"><b>1</b></a> <a href="../salome_visu_preferences.htm"><b>2</b></a> <a href="../loading_of_previously_saved_data.htm"><b>3</b></a> </nobr><br><nobr>local <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><nobr>located <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> </nobr><br><nobr>location <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../general_storage_of_produced_data.htm"><b>3</b></a> </nobr><br><a href="../command_result.htm"><b>logical</b></a> <br><a href="../description_of_commands_display_results.htm"><b>longitude</b></a> <br><a href="../description_of_commands_display_results.htm"><b>look</b></a> <br><nobr>lot <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../animation_function.htm"><b>3</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>lower</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf4.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstf4.htm b/doc/salome/gui/GAUSS/whgdata/whlstf4.htm
new file mode 100644 (file)
index 0000000..5a061ec
--- /dev/null
@@ -0,0 +1,47 @@
+<html>\r
+<head>\r
+<title>Search Words List</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" align="center"><a href="whlstf3.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
+<p class="ftsbody" >\r
+\r
+\r
+<a name="bm_M"></a><a name="subkey_M{"></a><a href="../description_of_commands_display_results.htm"><b>m</b></a> <br><nobr><a name="bms_MA"></a><a name="subkey_MA"></a>magnification <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> </nobr><br><nobr>main <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../command_activation_picking.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> <a href="../making_an_avi_clip.htm"><b>7</b></a> </nobr><br><a href="../making_an_avi_clip.htm"><b>making</b></a> <br><a href="../making_an_avi_clip.htm"><b>manage</b></a> <br><nobr>managed <a href="../navigation_using_the_spacemouse.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> <a href="../making_an_avi_clip.htm"><b>3</b></a> </nobr><br><a href="../managing_configurations.htm"><b>managing</b></a> <br><a href="../command_description_segmentation.htm"><b>manually</b></a> <br><nobr>mark <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> </nobr><br><a href="../command_deactivation.htm"><b>marker</b></a> <br><a href="../description_of_commands_display_results.htm"><b>markers</b></a> <br><a href="../description_of_commands_display_results.htm"><b>matrix</b></a> <br><a href="../description_of_commands_display_results.htm"><b>max</b></a> <br><a href="../description_of_commands_display_results.htm"><b>maximum</b></a> <br><a name="bms_MB"></a><a name="subkey_MB"></a><a href="../navigation_using_the_mouse.htm"><b>mb1</b></a> <br><a href="../navigation_using_the_mouse.htm"><b>mb2</b></a> <br><a href="../navigation_using_the_mouse.htm"><b>mb3</b></a> <br><a name="bms_ME"></a><a name="subkey_ME"></a><a href="../description_of_commands_display_results.htm"><b>mean</b></a> <br><a href="../description_of_commands_display_results.htm"><b>meaning</b></a> <br><a href="../description_of_commands_display_results.htm"><b>means</b></a> <br><a href="../managing_configurations.htm"><b>memorize</b></a> <br><nobr>memory <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../salome_visu_preferences.htm"><b>2</b></a> </nobr><br><nobr>menu <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_activation_timestamps_animation.htm"><b>5</b></a> <a href="../command_activation_segmentation.htm"><b>6</b></a> <a href="../command_activation_picking.htm"><b>7</b></a> <a href="../command_activation_in_display_meshes.htm"><b>8</b></a> <a href="../command_activation.htm"><b>9</b></a> <a href="../cameras.htm"><b>10</b></a> <a href="../animation_function.htm"><b>11</b></a> <a href="../activation_of_commands_display_results.htm"><b>12</b></a> <a href="../salome_visu_preferences.htm"><b>13</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>14</b></a> <a href="../picking_general.htm"><b>15</b></a> <a href="../managing_configurations.htm"><b>16</b></a> <a href="../loading_of_previously_saved_data.htm"><b>17</b></a> <a href="../general_storage_of_produced_data.htm"><b>18</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>19</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>20</b></a> <a href="../salome_visu_preferences_picking.htm"><b>21</b></a> </nobr><br><nobr>menus <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><nobr>mesh <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_deactivation.htm"><b>3</b></a> <a href="../command_activation_in_display_meshes.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> <a href="../picking_general.htm"><b>6</b></a> <a href="../general_storage_of_produced_data.htm"><b>7</b></a> <a href="../segmentation_general.htm"><b>8</b></a> </nobr><br><nobr>meshes <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../picking_general.htm"><b>4</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>5</b></a> </nobr><br><nobr>message <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a name="bms_MI"></a><a name="subkey_MI"></a><a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>millimetres</b></a> <br><a href="../description_of_commands_display_results.htm"><b>min</b></a> <br><nobr>minimum <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a name="bms_MM"></a><a name="subkey_MM"></a><a href="../command_description_segmentation.htm"><b>mm</b></a> <br><nobr><a name="bms_MO"></a><a name="subkey_MO"></a>mode <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_activation_in_display_meshes.htm"><b>5</b></a> <a href="../activation_of_commands_display_results.htm"><b>6</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>7</b></a> <a href="../making_an_avi_clip.htm"><b>8</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>9</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>10</b></a> </nobr><br><nobr>model <a href="../activation_of_commands_display_results.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><nobr>modeless <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><a href="../navigation_using_the_spacemouse.htm"><b>models</b></a> <br><nobr>modes <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>4</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>5</b></a> </nobr><br><nobr>modification <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../general_storage_of_produced_data.htm"><b>3</b></a> </nobr><br><nobr>modified <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>5</b></a> <a href="../general.htm"><b>6</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>7</b></a> <a href="../salome_visu_preferences_picking.htm"><b>8</b></a> </nobr><br><nobr>modify <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>4</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>modifying</b></a> <br><nobr>module <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../command_activation.htm"><b>3</b></a> <a href="../salome_visu_preferences.htm"><b>4</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>5</b></a> <a href="../general.htm"><b>6</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>7</b></a> <a href="../segmentation_general.htm"><b>8</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>modulus</b></a> <br><nobr>mouse <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_activation_timestamps_animation.htm"><b>3</b></a> <a href="../command_activation_in_display_meshes.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> <a href="../animation_function.htm"><b>6</b></a> <a href="../activation_of_commands_display_results.htm"><b>7</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>8</b></a> <a href="../picking_general.htm"><b>9</b></a> <a href="../navigation_using_the_mouse.htm"><b>10</b></a> <a href="../managing_configurations.htm"><b>11</b></a> <a href="../general_navigation_within_the_scene.htm"><b>12</b></a> </nobr><br><nobr>move <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>4</b></a> </nobr><br><nobr>moved <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> </nobr><br><nobr>movement <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../navigation_using_the_mouse.htm"><b>4</b></a> <a href="../navigation_using_the_keyboard.htm"><b>5</b></a> <a href="../general_navigation_within_the_scene.htm"><b>6</b></a> <a href="../salome_visu_preferences_picking.htm"><b>7</b></a> </nobr><br><a href="../navigation_using_the_spacemouse.htm"><b>movements</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>moves</b></a> <br><nobr>moving <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_MU"></a><a name="subkey_MU"></a>multiplied <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><nobr>multiply <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> </nobr><br><a href="../loading_of_previously_saved_data.htm"><b>mutually</b></a> <br><a name="bms_MY"></a><a name="subkey_MY"></a><a href="../command_description_segmentation.htm"><b>my</b></a> <br>\r
+<br><br>\r
+<a name="bm_N"></a><a name="subkey_N{"></a><a href="../description_of_commands_display_results.htm"><b>n</b></a> <br><nobr><a name="bms_NA"></a><a name="subkey_NA"></a>name <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> <a href="../general_storage_of_produced_data.htm"><b>5</b></a> </nobr><br><a href="../segmentation_general.htm"><b>named</b></a> <br><a href="../command_result.htm"><b>names</b></a> <br><a href="../segmentation_general.htm"><b>naming</b></a> <br><nobr>navigate <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_keyboard.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> <a href="../general_navigation_within_the_scene.htm"><b>5</b></a> </nobr><br><nobr>navigation <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>4</b></a> <a href="../navigation_using_the_mouse.htm"><b>5</b></a> <a href="../navigation_using_the_keyboard.htm"><b>6</b></a> <a href="../managing_configurations.htm"><b>7</b></a> </nobr><br><a name="bms_NB"></a><a name="subkey_NB"></a><a href="../description_of_commands_display_results.htm"><b>nb</b></a> <br><a href="../description_of_commands_display_results.htm"><b>nbrfaces</b></a> <br><a name="bms_NE"></a><a name="subkey_NE"></a><a href="../description_of_commands_display_results.htm"><b>necessity</b></a> <br><a href="../general.htm"><b>need</b></a> <br><nobr>needed <a href="../salome_visu_preferences.htm"><b>1</b></a> <a href="../salome_visu_preferences_picking.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>negative</b></a> <br><nobr>never <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>nevertheless</b></a> <br><nobr>new <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../command_activation_segmentation.htm"><b>4</b></a> <a href="../command_activation_picking.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> <a href="../activation_of_commands_display_results.htm"><b>7</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>8</b></a> <a href="../picking_general.htm"><b>9</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>10</b></a> <a href="../navigation_using_the_mouse.htm"><b>11</b></a> <a href="../managing_configurations.htm"><b>12</b></a> <a href="../loading_of_previously_saved_data.htm"><b>13</b></a> <a href="../general_storage_of_produced_data.htm"><b>14</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>15</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>16</b></a> <a href="../segmentation_general.htm"><b>17</b></a> </nobr><br><nobr>next <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_activation_in_display_meshes.htm"><b>4</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_NO"></a><a name="subkey_NO"></a>node <a href="../command_result.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> </nobr><br><nobr>nodes <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>3</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>normal</b></a> <br><nobr>note <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_activation_segmentation.htm"><b>5</b></a> <a href="../command_activation_picking.htm"><b>6</b></a> <a href="../activation_of_commands_display_results.htm"><b>7</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>8</b></a> <a href="../managing_configurations.htm"><b>9</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>10</b></a> </nobr><br><a href="../command_result.htm"><b>nothing</b></a> <br><nobr>notification <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>notify</b></a> <br><nobr><a name="bms_NT"></a><a name="subkey_NT"></a>nth <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a name="bms_NU"></a><a name="subkey_NU"></a><a href="../description_of_commands_display_results.htm"><b>null</b></a> <br><nobr>number <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>4</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>5</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_O"></a><a name="subkey_OB"></a><a href="../picking_general.htm"><b>object</b></a> <br><a href="../general.htm"><b>objective</b></a> <br><a name="bms_OC"></a><a name="subkey_OC"></a><a href="../description_of_the_picking_functionality.htm"><b>occur</b></a> <br><nobr><a name="bms_OK"></a><a name="subkey_OK"></a>ok <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_ON"></a><a name="subkey_ON"></a>once <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../salome_visu_preferences.htm"><b>5</b></a> <a href="../loading_of_previously_saved_data.htm"><b>6</b></a> </nobr><br><nobr>one <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_activation_timestamps_animation.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> <a href="../activation_of_commands_display_results.htm"><b>7</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>8</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>9</b></a> <a href="../making_an_avi_clip.htm"><b>10</b></a> <a href="../general_navigation_within_the_scene.htm"><b>11</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>12</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>ones</b></a> <br><a name="bms_OP"></a><a name="subkey_OP"></a><a href="../command_description_in_display_meshes.htm"><b>opacity</b></a> <br><a href="../salome_visu_preferences_picking.htm"><b>opaque</b></a> <br><nobr>open <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_activation.htm"><b>3</b></a> <a href="../picking_general.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> <a href="../loading_of_previously_saved_data.htm"><b>6</b></a> </nobr><br><nobr>opened <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../picking_general.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> </nobr><br><nobr>opengl <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a href="../command_activation.htm"><b>opening</b></a> <br><nobr>opens <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_activation_timestamps_animation.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> <a href="../loading_of_previously_saved_data.htm"><b>4</b></a> <a href="../general_storage_of_produced_data.htm"><b>5</b></a> </nobr><br><nobr>operation <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a href="../salome_visu_preferences_picking.htm"><b>optimisation</b></a> <br><a href="../salome_visu_preferences.htm"><b>optimize</b></a> <br><nobr>option <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../command_activation_timestamps_animation.htm"><b>4</b></a> <a href="../command_activation_segmentation.htm"><b>5</b></a> <a href="../command_activation_picking.htm"><b>6</b></a> <a href="../animation_function.htm"><b>7</b></a> <a href="../activation_of_commands_display_results.htm"><b>8</b></a> <a href="../salome_visu_preferences.htm"><b>9</b></a> <a href="../general_storage_of_produced_data.htm"><b>10</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>11</b></a> </nobr><br><nobr>options <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>5</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>6</b></a> </nobr><br><a name="bms_OR"></a><a name="subkey_OR"></a><a href="../making_an_avi_clip.htm"><b>order</b></a> <br><nobr>ordinate <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><nobr>orientation <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a href="../cameras.htm"><b>orientations</b></a> <br><nobr>origin <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_OU"></a><a name="subkey_OU"></a>out <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a href="../making_an_avi_clip.htm"><b>output</b></a> <br><a href="../command_description_segmentation.htm"><b>outside</b></a> <br><a name="bms_OW"></a><a name="subkey_OW"></a><a href="../making_an_avi_clip.htm"><b>own</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf5.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstf5.htm b/doc/salome/gui/GAUSS/whgdata/whlstf5.htm
new file mode 100644 (file)
index 0000000..1c863fd
--- /dev/null
@@ -0,0 +1,47 @@
+<html>\r
+<head>\r
+<title>Search Words List</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" align="center"><a href="whlstf4.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
+<p class="ftsbody" >\r
+<nobr><a name="bms_O{"></a><a name="subkey_O{"></a>º <a href="../command_activation_segmentation.htm"><b>1</b></a> <a href="../command_activation_picking.htm"><b>2</b></a> <a href="../command_activation.htm"><b>3</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>4</b></a> <a href="../salome_visu_preferences.htm"><b>5</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>6</b></a> <a href="../picking_general.htm"><b>7</b></a> <a href="../loading_of_previously_saved_data.htm"><b>8</b></a> <a href="../general_storage_of_produced_data.htm"><b>9</b></a> <a href="../salome_visu_preferences_picking.htm"><b>10</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_P"></a><a name="subkey_P{"></a><a href="../description_of_the_picking_functionality.htm"><b>p</b></a> <br><a name="bms_PA"></a><a name="subkey_PA"></a><a href="../navigation_using_the_keyboard.htm"><b>pagedn</b></a> <br><a href="../navigation_using_the_keyboard.htm"><b>pageup</b></a> <br><a href="../description_of_commands_display_results.htm"><b>palette</b></a> <br><nobr>panning <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_mouse.htm"><b>3</b></a> <a href="../navigation_using_the_keyboard.htm"><b>4</b></a> </nobr><br><nobr>paragraph <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> </nobr><br><nobr>paragraphs <a href="../picking_general.htm"><b>1</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>2</b></a> </nobr><br><nobr>parameter <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../salome_visu_preferences_picking.htm"><b>4</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>parameterisation</b></a> <br><a href="../description_of_commands_display_results.htm"><b>parameterized</b></a> <br><nobr>parameters <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../salome_visu_preferences.htm"><b>4</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>7</b></a> <a href="../salome_visu_preferences_picking.htm"><b>8</b></a> </nobr><br><nobr>parent <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_deactivation.htm"><b>2</b></a> </nobr><br><nobr>part <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>parts</b></a> <br><a href="../cameras.htm"><b>path</b></a> <br><a href="../general_storage_of_produced_data.htm"><b>pathname</b></a> <br><a href="../making_an_avi_clip.htm"><b>pause</b></a> <br><a href="../making_an_avi_clip.htm"><b>paused</b></a> <br><a name="bms_PC"></a><a name="subkey_PC"></a><a href="../command_activation.htm"><b>pc</b></a> <br><a name="bms_PE"></a><a name="subkey_PE"></a><a href="../command_description_segmentation.htm"><b>percentage</b></a> <br><a href="../command_description_segmentation.htm"><b>perfect</b></a> <br><nobr>performed <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> </nobr><br><a href="../command_deactivation.htm"><b>performs</b></a> <br><nobr>persistence <a href="../cameras.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><a name="bms_PH"></a><a name="subkey_PH"></a><a href="../salome_visu_preferences.htm"><b>physical</b></a> <br><nobr><a name="bms_PI"></a><a name="subkey_PI"></a>picked <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>2</b></a> </nobr><br><nobr>picking <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_deactivation.htm"><b>3</b></a> <a href="../command_activation_segmentation.htm"><b>4</b></a> <a href="../command_activation_picking.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> <a href="../picking_general.htm"><b>7</b></a> <a href="../managing_configurations.htm"><b>8</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>9</b></a> <a href="../salome_visu_preferences_picking.htm"><b>10</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>picture</b></a> <br><a href="../description_of_commands_display_results.htm"><b>pixel</b></a> <br><a href="../description_of_commands_display_results.htm"><b>pixels</b></a> <br><nobr><a name="bms_PL"></a><a name="subkey_PL"></a>plane <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../segmentation_general.htm"><b>3</b></a> </nobr><br><nobr>play <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> </nobr><br><a href="../command_description_timestamps_animation.htm"><b>player</b></a> <br><a href="../description_of_commands_display_results.htm"><b>plus</b></a> <br><nobr><a name="bms_PO"></a><a name="subkey_PO"></a>point <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_deactivation.htm"><b>4</b></a> <a href="../command_activation_segmentation.htm"><b>5</b></a> <a href="../command_activation_picking.htm"><b>6</b></a> <a href="../cameras.htm"><b>7</b></a> <a href="../animation_function.htm"><b>8</b></a> <a href="../picking_general.htm"><b>9</b></a> <a href="../navigation_using_the_mouse.htm"><b>10</b></a> <a href="../navigation_using_the_keyboard.htm"><b>11</b></a> <a href="../managing_configurations.htm"><b>12</b></a> <a href="../general_navigation_within_the_scene.htm"><b>13</b></a> <a href="../general.htm"><b>14</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>15</b></a> <a href="../salome_visu_preferences_picking.htm"><b>16</b></a> </nobr><br><nobr>pointer <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_mouse.htm"><b>3</b></a> </nobr><br><a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>pointers</b></a> <br><nobr>points <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_activation_picking.htm"><b>5</b></a> <a href="../activation_of_commands_display_results.htm"><b>6</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>7</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>8</b></a> <a href="../picking_general.htm"><b>9</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>10</b></a> <a href="../index.htm"><b>11</b></a> <a href="../general_timestamps_animation.htm"><b>12</b></a> <a href="../general.htm"><b>13</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>14</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>15</b></a> <a href="../segmentation_general.htm"><b>16</b></a> <a href="../salome_visu_preferences_picking.htm"><b>17</b></a> </nobr><br><a href="../command_result.htm"><b>populated</b></a> <br><nobr>popup <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../command_activation_timestamps_animation.htm"><b>5</b></a> <a href="../command_activation_segmentation.htm"><b>6</b></a> <a href="../command_activation_picking.htm"><b>7</b></a> <a href="../command_activation_in_display_meshes.htm"><b>8</b></a> <a href="../cameras.htm"><b>9</b></a> <a href="../animation_function.htm"><b>10</b></a> <a href="../activation_of_commands_display_results.htm"><b>11</b></a> <a href="../picking_general.htm"><b>12</b></a> <a href="../managing_configurations.htm"><b>13</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>14</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>15</b></a> </nobr><br><nobr>position <a href="../cameras.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><nobr>positions <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>positive</b></a> <br><nobr>possibility <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> </nobr><br><nobr>possible <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_result.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_activation_segmentation.htm"><b>5</b></a> <a href="../command_activation_picking.htm"><b>6</b></a> <a href="../command_activation_in_display_meshes.htm"><b>7</b></a> <a href="../activation_of_commands_display_results.htm"><b>8</b></a> <a href="../picking_general.htm"><b>9</b></a> <a href="../making_an_avi_clip.htm"><b>10</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>11</b></a> <a href="../salome_visu_preferences_picking.htm"><b>12</b></a> </nobr><br><a href="../description_of_the_picking_functionality.htm"><b>possibly</b></a> <br><nobr>post <a href="../cameras.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../salome_visu_preferences.htm"><b>3</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> <a href="../salome_visu_preferences_picking.htm"><b>6</b></a> </nobr><br><nobr><a name="bms_PR"></a><a name="subkey_PR"></a>pre <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../picking_general.htm"><b>4</b></a> </nobr><br><nobr>predefined <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> </nobr><br><nobr>preferences <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../salome_visu_preferences.htm"><b>4</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>5</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>6</b></a> <a href="../salome_visu_preferences_picking.htm"><b>7</b></a> </nobr><br><nobr>presentation <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_description_in_display_meshes.htm"><b>5</b></a> <a href="../command_activation_segmentation.htm"><b>6</b></a> <a href="../command_activation_picking.htm"><b>7</b></a> <a href="../command_activation_in_display_meshes.htm"><b>8</b></a> <a href="../activation_of_commands_display_results.htm"><b>9</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>10</b></a> <a href="../picking_general.htm"><b>11</b></a> <a href="../managing_configurations.htm"><b>12</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>13</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>14</b></a> </nobr><br><nobr>presentations <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>6</b></a> </nobr><br><nobr>presented <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>2</b></a> </nobr><br><nobr>press <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> </nobr><br><nobr>pressed <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> <a href="../making_an_avi_clip.htm"><b>4</b></a> </nobr><br><nobr>presses <a href="../picking_general.htm"><b>1</b></a> <a href="../loading_of_previously_saved_data.htm"><b>2</b></a> </nobr><br><nobr>pressing <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../command_activation.htm"><b>4</b></a> </nobr><br><nobr>previous <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> </nobr><br><nobr>previously <a href="../navigation_using_the_keyboard.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> <a href="../loading_of_previously_saved_data.htm"><b>3</b></a> </nobr><br><nobr>primitive <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>4</b></a> </nobr><br><nobr>primitives <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><nobr>pro <a href="../cameras.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../salome_visu_preferences.htm"><b>3</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> <a href="../salome_visu_preferences_picking.htm"><b>6</b></a> </nobr><br><nobr>process <a href="../command_result.htm"><b>1</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>processed</b></a> <br><a href="../description_of_the_picking_functionality.htm"><b>produces</b></a> <br><a href="../description_of_commands_display_results.htm"><b>progress</b></a> <br><a href="../description_of_commands_display_results.htm"><b>progression</b></a> <br><nobr>project <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../cameras.htm"><b>4</b></a> <a href="../navigation_using_the_mouse.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> <a href="../general_timestamps_animation.htm"><b>7</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>8</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>prompted</b></a> <br><nobr>properties <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>property</b></a> <br><nobr>proposed <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../making_an_avi_clip.htm"><b>3</b></a> </nobr><br><nobr>proposes <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><nobr>provide <a href="../command_activation_segmentation.htm"><b>1</b></a> <a href="../command_activation_picking.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> <a href="../navigation_using_the_keyboard.htm"><b>4</b></a> </nobr><br><a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>provided</b></a> <br><nobr>provides <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../loading_of_previously_saved_data.htm"><b>3</b></a> <a href="../general_storage_of_produced_data.htm"><b>4</b></a> </nobr><br><a name="bms_PS"></a><a name="subkey_PS"></a><a href="../specific_additional_commands_for_fields_items.htm"><b>pseudo</b></a> <br><a name="bms_PU"></a><a name="subkey_PU"></a><a href="../general_storage_of_produced_data.htm"><b>published</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>pull</b></a> <br><nobr>purpose <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>6</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>7</b></a> </nobr><br><a href="../navigation_using_the_spacemouse.htm"><b>push</b></a> <br><a href="../making_an_avi_clip.htm"><b>pushed</b></a> <br><a href="../making_an_avi_clip.htm"><b>pushing</b></a> <br><a name="bms_PY"></a><a name="subkey_PY"></a><a href="../salome_visu_preferences_picking.htm"><b>pyramid</b></a> <br><nobr>pyramids <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../salome_visu_preferences_picking.htm"><b>2</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_Q"></a><a name="subkey_QU"></a><a href="../command_description_in_display_meshes.htm"><b>quadrangular</b></a> <br><a href="../command_description_in_display_meshes.htm"><b>quadratic</b></a> <br><a href="../segmentation_general.htm"><b>quality</b></a> <br><a href="../description_of_commands_display_results.htm"><b>quit</b></a> <br>\r
+<br><br>\r
+<a name="bm_R"></a><a name="subkey_RA"></a><a href="../command_description_segmentation.htm"><b>radius</b></a> <br><a href="../description_of_commands_display_results.htm"><b>rainbow</b></a> <br><nobr>range <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> </nobr><br><nobr>ratio <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> <a href="../navigation_using_the_mouse.htm"><b>4</b></a> <a href="../navigation_using_the_keyboard.htm"><b>5</b></a> <a href="../salome_visu_preferences_picking.htm"><b>6</b></a> </nobr><br><a name="bms_RE"></a><a name="subkey_RE"></a><a href="../description_of_commands_display_results.htm"><b>read</b></a> <br><nobr>real <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> </nobr><br><nobr>realize <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><a href="../cameras.htm"><b>really</b></a> <br><a href="../salome_visu_preferences.htm"><b>recommended</b></a> <br><a href="../command_description_timestamps_animation.htm"><b>record</b></a> <br><a href="../making_an_avi_clip.htm"><b>recorded</b></a> <br><a href="../making_an_avi_clip.htm"><b>recording</b></a> <br><a href="../description_of_commands_display_results.htm"><b>red</b></a> <br><nobr>redefine <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><a href="../picking_general.htm"><b>redefined</b></a> <br><a href="../picking_general.htm"><b>redisplayed</b></a> <br><a href="../description_of_commands_display_results.htm"><b>reference</b></a> <br><a href="../salome-visu_preferences_display_results.htm"><b>refine</b></a> <br><a href="../description_of_commands_display_results.htm"><b>refining</b></a> <br><a href="../picking_general.htm"><b>refreshed</b></a> <br><a href="../description_of_commands_display_results.htm"><b>regarding</b></a> <br><nobr>registered <a href="../cameras.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>regular</b></a> <br><nobr>related <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../picking_general.htm"><b>2</b></a> </nobr><br><nobr>released <a href="../command_activation_segmentation.htm"><b>1</b></a> <a href="../command_activation_picking.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>remain</b></a> <br><nobr>remains <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> <a href="../cameras.htm"><b>4</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>remark</b></a> <br><nobr>remind <a href="../command_activation_segmentation.htm"><b>1</b></a> <a href="../command_activation_picking.htm"><b>2</b></a> <a href="../general.htm"><b>3</b></a> </nobr><br><nobr>remove <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../command_deactivation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> </nobr><br><nobr>rename <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> <a href="../general_storage_of_produced_data.htm"><b>4</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>render</b></a> <br><nobr>rendering <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><nobr>representation <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>representative</b></a> <br><a href="../command_description_in_display_meshes.htm"><b>represented</b></a> <br><a href="../making_an_avi_clip.htm"><b>requests</b></a> <br><nobr>requires <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>resolution</b></a> <br><a href="../display_meshes_general.htm"><b>resources</b></a> <br><nobr>resp <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../navigation_using_the_keyboard.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><nobr>respectively <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> </nobr><br><nobr>restore <a href="../cameras.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><nobr>result <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_result.htm"><b>3</b></a> <a href="../command_deactivation.htm"><b>4</b></a> </nobr><br><nobr>results <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../animation_function.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>6</b></a> <a href="../picking_general.htm"><b>7</b></a> <a href="../general_timestamps_animation.htm"><b>8</b></a> <a href="../general_storage_of_produced_data.htm"><b>9</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>10</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>11</b></a> <a href="../segmentation_general.htm"><b>12</b></a> </nobr><br><a href="../cameras.htm"><b>retrieve</b></a> <br><a href="../managing_configurations.htm"><b>retrieved</b></a> <br><a href="../cameras.htm"><b>retrieving</b></a> <br><a href="../description_of_the_picking_functionality.htm"><b>reverse</b></a> <br><nobr>reversibly <a href="../command_activation_segmentation.htm"><b>1</b></a> <a href="../command_activation_picking.htm"><b>2</b></a> <a href="../salome_visu_preferences.htm"><b>3</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>4</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf6.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstf6.htm b/doc/salome/gui/GAUSS/whgdata/whlstf6.htm
new file mode 100644 (file)
index 0000000..5c6fbae
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words List</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" align="center"><a href="whlstf5.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
+<p class="ftsbody" >\r
+<nobr><a name="bms_RI"></a><a name="subkey_RI"></a>right <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_activation_timestamps_animation.htm"><b>3</b></a> <a href="../command_activation_in_display_meshes.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> <a href="../animation_function.htm"><b>6</b></a> <a href="../activation_of_commands_display_results.htm"><b>7</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>8</b></a> <a href="../managing_configurations.htm"><b>9</b></a> </nobr><br><a name="bms_RO"></a><a name="subkey_RO"></a><a href="../managing_configurations.htm"><b>root</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>rotate</b></a> <br><a href="../command_description_segmentation.htm"><b>rotating</b></a> <br><nobr>rotation <a href="../cameras.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> <a href="../navigation_using_the_mouse.htm"><b>4</b></a> <a href="../navigation_using_the_keyboard.htm"><b>5</b></a> </nobr><br><a href="../description_of_the_picking_functionality.htm"><b>rotations</b></a> <br><a href="../description_of_commands_display_results.htm"><b>roughly</b></a> <br><a name="bms_RU"></a><a name="subkey_RU"></a><a href="../general_storage_of_produced_data.htm"><b>run</b></a> <br><a href="../general_timestamps_animation.htm"><b>running</b></a> <br>\r
+<br><br>\r
+<a name="bm_S"></a><a name="subkey_S{"></a><a href="../description_of_the_picking_functionality.htm"><b>s</b></a> <br><nobr><a name="bms_SA"></a><a name="subkey_SA"></a>salome <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../command_activation.htm"><b>3</b></a> <a href="../cameras.htm"><b>4</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>5</b></a> <a href="../salome_visu_preferences.htm"><b>6</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>7</b></a> <a href="../picking_general.htm"><b>8</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>9</b></a> <a href="../navigation_using_the_mouse.htm"><b>10</b></a> <a href="../navigation_using_the_keyboard.htm"><b>11</b></a> <a href="../managing_configurations.htm"><b>12</b></a> <a href="../loading_of_previously_saved_data.htm"><b>13</b></a> <a href="../index.htm"><b>14</b></a> <a href="../general_timestamps_animation.htm"><b>15</b></a> <a href="../general_storage_of_produced_data.htm"><b>16</b></a> <a href="../general.htm"><b>17</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>18</b></a> <a href="../segmentation_general.htm"><b>19</b></a> <a href="../salome_visu_preferences_picking.htm"><b>20</b></a> </nobr><br><nobr>salomeds <a href="../cameras.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><nobr>same <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>6</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>7</b></a> <a href="../managing_configurations.htm"><b>8</b></a> <a href="../making_an_avi_clip.htm"><b>9</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>10</b></a> </nobr><br><a href="../description_of_the_picking_functionality.htm"><b>sample</b></a> <br><a href="../making_an_avi_clip.htm"><b>sates</b></a> <br><a href="../making_an_avi_clip.htm"><b>satisfy</b></a> <br><nobr>save <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../general_storage_of_produced_data.htm"><b>3</b></a> </nobr><br><a href="../loading_of_previously_saved_data.htm"><b>saved</b></a> <br><a href="../general_storage_of_produced_data.htm"><b>saving</b></a> <br><nobr><a name="bms_SC"></a><a name="subkey_SC"></a>scalar <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_deactivation.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>6</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>scalars</b></a> <br><a href="../description_of_commands_display_results.htm"><b>scale</b></a> <br><nobr>scene <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>4</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>5</b></a> <a href="../navigation_using_the_keyboard.htm"><b>6</b></a> <a href="../making_an_avi_clip.htm"><b>7</b></a> <a href="../general_navigation_within_the_scene.htm"><b>8</b></a> </nobr><br><a href="../navigation_using_the_spacemouse.htm"><b>scenes</b></a> <br><nobr>scope <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a href="../navigation_using_the_spacemouse.htm"><b>screen</b></a> <br><a name="bms_SE"></a><a name="subkey_SE"></a><a href="../salome_visu_preferences_picking.htm"><b>searching</b></a> <br><nobr>second <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_activation_picking.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> </nobr><br><a href="../general.htm"><b>secondly</b></a> <br><nobr>section <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../general_navigation_within_the_scene.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><a href="../general_timestamps_animation.htm"><b>sections</b></a> <br><nobr>see <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_deactivation.htm"><b>5</b></a> <a href="../command_activation_segmentation.htm"><b>6</b></a> <a href="../cameras.htm"><b>7</b></a> <a href="../picking_general.htm"><b>8</b></a> <a href="../managing_configurations.htm"><b>9</b></a> <a href="../salome_visu_preferences_picking.htm"><b>10</b></a> </nobr><br><nobr>seen <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> </nobr><br><nobr>segmentation <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_activation_segmentation.htm"><b>3</b></a> <a href="../command_activation_picking.htm"><b>4</b></a> <a href="../managing_configurations.htm"><b>5</b></a> <a href="../making_an_avi_clip.htm"><b>6</b></a> <a href="../general_storage_of_produced_data.htm"><b>7</b></a> <a href="../segmentation_general.htm"><b>8</b></a> </nobr><br><a href="../making_an_avi_clip.htm"><b>segmented</b></a> <br><nobr>select <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_activation_in_display_meshes.htm"><b>3</b></a> <a href="../cameras.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> <a href="../picking_general.htm"><b>6</b></a> <a href="../loading_of_previously_saved_data.htm"><b>7</b></a> </nobr><br><nobr>selected <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_deactivation.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> <a href="../activation_of_commands_display_results.htm"><b>6</b></a> <a href="../managing_configurations.htm"><b>7</b></a> <a href="../loading_of_previously_saved_data.htm"><b>8</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>9</b></a> <a href="../salome_visu_preferences_picking.htm"><b>10</b></a> </nobr><br><nobr>selection <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_activation_segmentation.htm"><b>4</b></a> <a href="../command_activation_picking.htm"><b>5</b></a> <a href="../command_activation_in_display_meshes.htm"><b>6</b></a> <a href="../command_activation.htm"><b>7</b></a> <a href="../cameras.htm"><b>8</b></a> <a href="../picking_general.htm"><b>9</b></a> <a href="../managing_configurations.htm"><b>10</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>11</b></a> </nobr><br><nobr>semi <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a href="../making_an_avi_clip.htm"><b>separately</b></a> <br><nobr>session <a href="../salome_visu_preferences.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_keyboard.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> <a href="../making_an_avi_clip.htm"><b>5</b></a> <a href="../loading_of_previously_saved_data.htm"><b>6</b></a> <a href="../general_storage_of_produced_data.htm"><b>7</b></a> </nobr><br><nobr>set <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>setting</b></a> <br><a href="../cameras.htm"><b>settings</b></a> <br><a href="../command_description_timestamps_animation.htm"><b>setup</b></a> <br><a name="bms_SH"></a><a name="subkey_SH"></a><a href="../command_description_in_display_meshes.htm"><b>shaded</b></a> <br><a href="../description_of_commands_display_results.htm"><b>shader</b></a> <br><a href="../picking_general.htm"><b>shading</b></a> <br><a href="../description_of_commands_display_results.htm"><b>shape</b></a> <br><nobr>should <a href="../activation_of_commands_display_results.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> </nobr><br><a href="../general_timestamps_animation.htm"><b>show</b></a> <br><a href="../cameras.htm"><b>shown</b></a> <br><nobr>shows <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>shrink</b></a> <br><nobr><a name="bms_SI"></a><a name="subkey_SI"></a>side <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> </nobr><br><nobr>similar <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>2</b></a> </nobr><br><nobr>simple <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../segmentation_general.htm"><b>3</b></a> </nobr><br><a href="../navigation_using_the_mouse.htm"><b>simplify</b></a> <br><nobr>simultaneously <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><nobr>since <a href="../command_activation_segmentation.htm"><b>1</b></a> <a href="../command_activation_picking.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> </nobr><br><a href="../cameras.htm"><b>situation</b></a> <br><a href="../description_of_the_picking_functionality.htm"><b>situations</b></a> <br><a href="../description_of_the_picking_functionality.htm"><b>six</b></a> <br><nobr>size <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>sizes</b></a> <br><a name="bms_SK"></a><a name="subkey_SK"></a><a href="../command_description_in_display_meshes.htm"><b>skin</b></a> <br><a name="bms_SL"></a><a name="subkey_SL"></a><a href="../command_description_in_display_meshes.htm"><b>slider</b></a> <br><a href="../cameras.htm"><b>slow</b></a> <br><a name="bms_SM"></a><a name="subkey_SM"></a><a href="../description_of_commands_display_results.htm"><b>smallest</b></a> <br><nobr>smesh <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../segmentation_general.htm"><b>2</b></a> </nobr><br><a href="../cameras.htm"><b>smooth</b></a> <br><nobr>smoothly <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_SO"></a><a name="subkey_SO"></a>so <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../salome_visu_preferences.htm"><b>4</b></a> <a href="../making_an_avi_clip.htm"><b>5</b></a> <a href="../segmentation_general.htm"><b>6</b></a> <a href="../salome_visu_preferences_picking.htm"><b>7</b></a> </nobr><br><nobr><a name="bms_SP"></a><a name="subkey_SP"></a>space <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../segmentation_general.htm"><b>2</b></a> </nobr><br><nobr>spacemouse <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> <a href="../general_navigation_within_the_scene.htm"><b>4</b></a> </nobr><br><a href="../segmentation_general.htm"><b>spaces</b></a> <br><a href="../description_of_commands_display_results.htm"><b>spacing</b></a> <br><nobr>specific <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>3</b></a> </nobr><br><nobr>specification <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>3</b></a> </nobr><br><a href="../command_description_timestamps_animation.htm"><b>specs</b></a> <br><nobr>speed <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> <a href="../navigation_using_the_keyboard.htm"><b>4</b></a> </nobr><br><nobr>sphere <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_activation_segmentation.htm"><b>3</b></a> <a href="../segmentation_general.htm"><b>4</b></a> </nobr><br><nobr>sprite <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>sprites</b></a> <br><nobr><a name="bms_ST"></a><a name="subkey_ST"></a>stamp <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> </nobr><br><nobr>stamps <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> <a href="../picking_general.htm"><b>3</b></a> </nobr><br><nobr>standard <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../cameras.htm"><b>5</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>6</b></a> <a href="../picking_general.htm"><b>7</b></a> <a href="../navigation_using_the_mouse.htm"><b>8</b></a> <a href="../managing_configurations.htm"><b>9</b></a> <a href="../general_timestamps_animation.htm"><b>10</b></a> <a href="../general_storage_of_produced_data.htm"><b>11</b></a> <a href="../general.htm"><b>12</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>13</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>standards</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>star</b></a> <br><a href="../making_an_avi_clip.htm"><b>start</b></a> <br><nobr>starts <a href="../command_result.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> </nobr><br><nobr>state <a href="../cameras.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> </nobr><br><a href="../making_an_avi_clip.htm"><b>states</b></a> <br><nobr>step <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> </nobr><br><a href="../cameras.htm"><b>steps</b></a> <br><a href="../command_result.htm"><b>still</b></a> <br><a href="../making_an_avi_clip.htm"><b>stop</b></a> <br><nobr>stops <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> </nobr><br><a href="../general_storage_of_produced_data.htm"><b>storage</b></a> <br><nobr>store <a href="../cameras.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> <a href="../general_storage_of_produced_data.htm"><b>3</b></a> </nobr><br><a href="../managing_configurations.htm"><b>stored</b></a> <br><a href="../cameras.htm"><b>storing</b></a> <br><nobr>structure <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../loading_of_previously_saved_data.htm"><b>3</b></a> <a href="../salome_visu_preferences_picking.htm"><b>4</b></a> </nobr><br><nobr>study <a href="../command_result.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../command_activation_timestamps_animation.htm"><b>3</b></a> <a href="../cameras.htm"><b>4</b></a> <a href="../salome_visu_preferences.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> <a href="../loading_of_previously_saved_data.htm"><b>7</b></a> <a href="../general_storage_of_produced_data.htm"><b>8</b></a> </nobr><br><nobr><a name="bms_SU"></a><a name="subkey_SU"></a>sub <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../command_activation_in_display_meshes.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>suggested</b></a> <br><a href="../picking_general.htm"><b>suitable</b></a> <br><nobr>support <a href="../activation_of_commands_display_results.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../navigation_using_the_keyboard.htm"><b>3</b></a> </nobr><br><nobr>supported <a href="../navigation_using_the_mouse.htm"><b>1</b></a> <a href="../general.htm"><b>2</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>surface</b></a> <br><a href="../command_description_in_display_meshes.htm"><b>surfaceframe</b></a> <br><a name="bms_SW"></a><a name="subkey_SW"></a><a href="../specific_additional_commands_for_fields_items.htm"><b>sweep</b></a> <br><a href="../salome-visu_preferences_display_results.htm"><b>sweeping</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>switch</b></a> <br><a name="bms_SY"></a><a name="subkey_SY"></a><a href="../description_of_commands_display_results.htm"><b>synchronized</b></a> <br><nobr>system <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_deactivation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>5</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>systematically</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_T"></a><a name="subkey_TA"></a>tab <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><nobr>tabs <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>taken</b></a> <br><a href="../cameras.htm"><b>takes</b></a> <br><a href="../making_an_avi_clip.htm"><b>task</b></a> <br><a href="../command_deactivation.htm"><b>tasks</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf7.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstf7.htm b/doc/salome/gui/GAUSS/whgdata/whlstf7.htm
new file mode 100644 (file)
index 0000000..96bc0b5
--- /dev/null
@@ -0,0 +1,53 @@
+<html>\r
+<head>\r
+<title>Search Words List</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" align="center"><a href="whlstf6.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
+<p class="ftsbody" >\r
+<a name="bms_TE"></a><a name="subkey_TE"></a><a href="../description_of_commands_display_results.htm"><b>technically</b></a> <br><a href="../description_of_commands_display_results.htm"><b>tensor</b></a> <br><a href="../managing_configurations.htm"><b>terms</b></a> <br><a href="../description_of_commands_display_results.htm"><b>text</b></a> <br><a href="../description_of_commands_display_results.htm"><b>texture</b></a> <br><a href="../description_of_commands_display_results.htm"><b>textures</b></a> <br><nobr><a name="bms_TH"></a><a name="subkey_TH"></a>them <a href="../navigation_using_the_spacemouse.htm"><b>1</b></a> <a href="../managing_configurations.htm"><b>2</b></a> </nobr><br><nobr>therefore <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> </nobr><br><a href="../making_an_avi_clip.htm"><b>those</b></a> <br><a href="../description_of_commands_display_results.htm"><b>thought</b></a> <br><nobr>three <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../making_an_avi_clip.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>threshold</b></a> <br><nobr>thus <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_activation_segmentation.htm"><b>3</b></a> <a href="../command_activation_picking.htm"><b>4</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>5</b></a> <a href="../navigation_using_the_keyboard.htm"><b>6</b></a> </nobr><br><a name="bms_TI"></a><a name="subkey_TI"></a><a href="../command_description_segmentation.htm"><b>till</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>tilt</b></a> <br><nobr>time <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_result.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_description_in_display_meshes.htm"><b>5</b></a> <a href="../activation_of_commands_display_results.htm"><b>6</b></a> <a href="../picking_general.htm"><b>7</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>8</b></a> <a href="../navigation_using_the_keyboard.htm"><b>9</b></a> <a href="../managing_configurations.htm"><b>10</b></a> <a href="../making_an_avi_clip.htm"><b>11</b></a> <a href="../general_storage_of_produced_data.htm"><b>12</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>13</b></a> </nobr><br><nobr>timestamp <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../command_activation_segmentation.htm"><b>2</b></a> <a href="../command_activation_picking.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> </nobr><br><nobr>timestamps <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../animation_function.htm"><b>2</b></a> <a href="../general_timestamps_animation.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_TO"></a><a name="subkey_TO"></a>toggle <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../command_activation_segmentation.htm"><b>3</b></a> <a href="../command_activation_picking.htm"><b>4</b></a> <a href="../salome_visu_preferences.htm"><b>5</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>6</b></a> </nobr><br><nobr>toolbar <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_activation_segmentation.htm"><b>3</b></a> <a href="../command_activation_picking.htm"><b>4</b></a> <a href="../command_activation_in_display_meshes.htm"><b>5</b></a> <a href="../activation_of_commands_display_results.htm"><b>6</b></a> <a href="../making_an_avi_clip.htm"><b>7</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>8</b></a> </nobr><br><nobr>top <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>total</b></a> <br><a href="../salome_visu_preferences_picking.htm"><b>touch</b></a> <br><nobr><a name="bms_TR"></a><a name="subkey_TR"></a>transformation <a href="../command_description_in_display_meshes.htm"><b>1</b></a> <a href="../cameras.htm"><b>2</b></a> </nobr><br><nobr>translation <a href="../command_description_segmentation.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../navigation_using_the_mouse.htm"><b>4</b></a> <a href="../navigation_using_the_keyboard.htm"><b>5</b></a> </nobr><br><nobr>transparency <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><nobr>transparent <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../salome_visu_preferences_picking.htm"><b>3</b></a> </nobr><br><nobr>tree <a href="../command_result.htm"><b>1</b></a> <a href="../command_activation_timestamps_animation.htm"><b>2</b></a> <a href="../command_activation_in_display_meshes.htm"><b>3</b></a> <a href="../cameras.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> <a href="../general_storage_of_produced_data.htm"><b>7</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>8</b></a> </nobr><br><a href="../command_description_in_display_meshes.htm"><b>triangles</b></a> <br><a name="bms_TW"></a><a name="subkey_TW"></a><a href="../description_of_commands_display_results.htm"><b>twice</b></a> <br><a href="../navigation_using_the_spacemouse.htm"><b>twist</b></a> <br><nobr>two <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_timestamps_animation.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_description_in_display_meshes.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> <a href="../activation_of_commands_display_results.htm"><b>7</b></a> </nobr><br><nobr><a name="bms_TY"></a><a name="subkey_TY"></a>type <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>1</b></a> <a href="../general_navigation_within_the_scene.htm"><b>2</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_U"></a><a name="subkey_UN"></a><a href="../description_of_commands_display_results.htm"><b>unchanged</b></a> <br><a href="../salome_visu_preferences.htm"><b>unchecked</b></a> <br><a href="../salome_visu_preferences_picking.htm"><b>underlying</b></a> <br><a href="../cameras.htm"><b>understand</b></a> <br><nobr>understanding <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> </nobr><br><nobr>understood <a href="../activation_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> </nobr><br><nobr>unique <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_activation_in_display_meshes.htm"><b>3</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>unit</b></a> <br><a href="../command_description_in_display_meshes.htm"><b>units</b></a> <br><a href="../command_deactivation.htm"><b>unselect</b></a> <br><a href="../description_of_the_picking_functionality.htm"><b>unselects</b></a> <br><a href="../command_description_in_display_meshes.htm"><b>unshrink</b></a> <br><nobr><a name="bms_UP"></a><a name="subkey_UP"></a>up <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> <a href="../loading_of_previously_saved_data.htm"><b>3</b></a> </nobr><br><nobr>updated <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_result.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_activation_segmentation.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> </nobr><br><a href="../general_storage_of_produced_data.htm"><b>updates</b></a> <br><a href="../command_description_segmentation.htm"><b>upper</b></a> <br><a name="bms_US"></a><a name="subkey_US"></a><a href="../salome_visu_preferences.htm"><b>usage</b></a> <br><nobr>used <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../activation_of_commands_display_results.htm"><b>4</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>5</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>6</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>7</b></a> <a href="../navigation_using_the_keyboard.htm"><b>8</b></a> <a href="../general_storage_of_produced_data.htm"><b>9</b></a> <a href="../salome_visu_preferences_picking.htm"><b>10</b></a> </nobr><br><nobr>user <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../description_of_commands_display_results.htm"><b>3</b></a> <a href="../command_description_timestamps_animation.htm"><b>4</b></a> <a href="../command_description_segmentation.htm"><b>5</b></a> <a href="../command_description_in_display_meshes.htm"><b>6</b></a> <a href="../command_deactivation.htm"><b>7</b></a> <a href="../command_activation_segmentation.htm"><b>8</b></a> <a href="../command_activation_picking.htm"><b>9</b></a> <a href="../command_activation_in_display_meshes.htm"><b>10</b></a> <a href="../command_activation.htm"><b>11</b></a> <a href="../cameras.htm"><b>12</b></a> <a href="../animation_function.htm"><b>13</b></a> <a href="../activation_of_commands_display_results.htm"><b>14</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>15</b></a> <a href="../picking_general.htm"><b>16</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>17</b></a> <a href="../managing_configurations.htm"><b>18</b></a> <a href="../making_an_avi_clip.htm"><b>19</b></a> <a href="../loading_of_previously_saved_data.htm"><b>20</b></a> <a href="../index.htm"><b>21</b></a> <a href="../general_storage_of_produced_data.htm"><b>22</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>23</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>24</b></a> </nobr><br><nobr>uses <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> </nobr><br><nobr>using <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>5</b></a> <a href="../navigation_using_the_mouse.htm"><b>6</b></a> <a href="../navigation_using_the_keyboard.htm"><b>7</b></a> <a href="../making_an_avi_clip.htm"><b>8</b></a> <a href="../general_navigation_within_the_scene.htm"><b>9</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_V"></a><a name="subkey_V{"></a><a href="../command_description_segmentation.htm"><b>v</b></a> <br><nobr><a name="bms_VA"></a><a name="subkey_VA"></a>validates <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_activation.htm"><b>2</b></a> </nobr><br><a href="../command_result.htm"><b>validation</b></a> <br><nobr>value <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../command_description_segmentation.htm"><b>3</b></a> <a href="../command_description_in_display_meshes.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>6</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>7</b></a> <a href="../salome_visu_preferences_picking.htm"><b>8</b></a> </nobr><br><nobr>values <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> <a href="../activation_of_commands_display_results.htm"><b>3</b></a> <a href="../salome_visu_preferences_picking.htm"><b>4</b></a> </nobr><br><nobr>variable <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_timestamps_animation.htm"><b>2</b></a> <a href="../managing_configurations.htm"><b>3</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>variables</b></a> <br><nobr><a name="bms_VE"></a><a name="subkey_VE"></a>vector <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><a href="../description_of_commands_display_results.htm"><b>vectors</b></a> <br><a href="../animation_function.htm"><b>version</b></a> <br><a href="../description_of_commands_display_results.htm"><b>vertex</b></a> <br><a href="../description_of_commands_display_results.htm"><b>vertical</b></a> <br><a href="../description_of_commands_display_results.htm"><b>very</b></a> <br><nobr><a name="bms_VI"></a><a name="subkey_VI"></a>video <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> </nobr><br><nobr>view <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../description_of_commands_display_results.htm"><b>3</b></a> <a href="../command_description_segmentation.htm"><b>4</b></a> <a href="../command_description_in_display_meshes.htm"><b>5</b></a> <a href="../command_activation_segmentation.htm"><b>6</b></a> <a href="../command_activation_picking.htm"><b>7</b></a> <a href="../cameras.htm"><b>8</b></a> <a href="../activation_of_commands_display_results.htm"><b>9</b></a> <a href="../picking_general.htm"><b>10</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>11</b></a> <a href="../managing_configurations.htm"><b>12</b></a> <a href="../making_an_avi_clip.htm"><b>13</b></a> <a href="../general_navigation_within_the_scene.htm"><b>14</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>15</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>16</b></a> <a href="../salome_visu_preferences_picking.htm"><b>17</b></a> </nobr><br><nobr>viewer <a href="../command_result.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../animation_function.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> <a href="../index.htm"><b>5</b></a> </nobr><br><a href="../command_description_segmentation.htm"><b>views</b></a> <br><nobr>visible <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../general_storage_of_produced_data.htm"><b>3</b></a> </nobr><br><nobr>visu <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../description_of_commands_display_results.htm"><b>3</b></a> <a href="../command_activation.htm"><b>4</b></a> <a href="../activation_of_commands_display_results.htm"><b>5</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>6</b></a> <a href="../salome_visu_preferences.htm"><b>7</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>8</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>9</b></a> <a href="../navigation_using_the_keyboard.htm"><b>10</b></a> <a href="../general.htm"><b>11</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>12</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>13</b></a> <a href="../segmentation_general.htm"><b>14</b></a> <a href="../salome_visu_preferences_picking.htm"><b>15</b></a> </nobr><br><a href="../activation_of_commands_display_results.htm"><b>visualization</b></a> <br><a href="../display_results_at_gauss_points_general.htm"><b>visualize</b></a> <br><a name="bms_VO"></a><a name="subkey_VO"></a><a href="../picking_general.htm"><b>volume</b></a> <br><nobr><a name="bms_VT"></a><a name="subkey_VT"></a>vtk <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>2</b></a> <a href="../making_an_avi_clip.htm"><b>3</b></a> </nobr><br><a href="../salome_visu_preferences_picking.htm"><b>vtkpointlocator</b></a> <br><a href="../salome_visu_preferences_picking.htm"><b>vtkpointpicker</b></a> <br><a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>vtkrenderwindowinteractor</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_W"></a><a name="subkey_WA"></a>want <a href="../command_description_timestamps_animation.htm"><b>1</b></a> <a href="../making_an_avi_clip.htm"><b>2</b></a> </nobr><br><nobr>way <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>4</b></a> <a href="../navigation_using_the_keyboard.htm"><b>5</b></a> <a href="../managing_configurations.htm"><b>6</b></a> <a href="../making_an_avi_clip.htm"><b>7</b></a> <a href="../general_timestamps_animation.htm"><b>8</b></a> <a href="../general_storage_of_produced_data.htm"><b>9</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>10</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>11</b></a> </nobr><br><a href="../display_meshes_general.htm"><b>ways</b></a> <br><a name="bms_WE"></a><a name="subkey_WE"></a><a href="../description_of_commands_display_results.htm"><b>well</b></a> <br><a name="bms_WH"></a><a name="subkey_WH"></a><a href="../description_of_commands_display_results.htm"><b>whatever</b></a> <br><a href="../activation_of_commands_display_results.htm"><b>whether</b></a> <br><nobr>whole <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../activation_of_commands_display_results.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_WI"></a><a name="subkey_WI"></a>width <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><nobr>will <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_description_in_display_meshes.htm"><b>3</b></a> <a href="../command_activation_segmentation.htm"><b>4</b></a> <a href="../command_activation_picking.htm"><b>5</b></a> <a href="../cameras.htm"><b>6</b></a> <a href="../animation_function.htm"><b>7</b></a> <a href="../activation_of_commands_display_results.htm"><b>8</b></a> <a href="../salome-visu_preferences_display_results.htm"><b>9</b></a> <a href="../picking_general.htm"><b>10</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>11</b></a> <a href="../navigation_using_the_mouse.htm"><b>12</b></a> <a href="../navigation_using_the_keyboard.htm"><b>13</b></a> <a href="../managing_configurations.htm"><b>14</b></a> <a href="../making_an_avi_clip.htm"><b>15</b></a> <a href="../general_timestamps_animation.htm"><b>16</b></a> <a href="../general_storage_of_produced_data.htm"><b>17</b></a> <a href="../general.htm"><b>18</b></a> <a href="../display_results_at_gauss_points_general.htm"><b>19</b></a> <a href="../specific_additional_commands_for_fields_items.htm"><b>20</b></a> <a href="../salome_visu_preferences_picking.htm"><b>21</b></a> </nobr><br><nobr>window <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_segmentation.htm"><b>2</b></a> <a href="../command_deactivation.htm"><b>3</b></a> <a href="../salome_visu_preferences_picking.htm"><b>4</b></a> </nobr><br><a href="../salome_visu_preferences_picking.htm"><b>windows</b></a> <br><nobr>wireframe <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_description_in_display_meshes.htm"><b>2</b></a> </nobr><br><nobr>within <a href="../display_meshes_general.htm"><b>1</b></a> <a href="../description_of_the_picking_functionality.htm"><b>2</b></a> <a href="../description_of_commands_display_results.htm"><b>3</b></a> <a href="../command_result.htm"><b>4</b></a> <a href="../command_description_segmentation.htm"><b>5</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>6</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>7</b></a> <a href="../navigation_using_the_keyboard.htm"><b>8</b></a> <a href="../managing_configurations.htm"><b>9</b></a> <a href="../loading_of_previously_saved_data.htm"><b>10</b></a> <a href="../general_storage_of_produced_data.htm"><b>11</b></a> <a href="../general_navigation_within_the_scene.htm"><b>12</b></a> </nobr><br><nobr>without <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_deactivation.htm"><b>2</b></a> <a href="../cameras.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> <a href="../general_storage_of_produced_data.htm"><b>5</b></a> </nobr><br><a name="bms_WO"></a><a name="subkey_WO"></a><a href="../general.htm"><b>works</b></a> <br><a name="bms_WR"></a><a name="subkey_WR"></a><a href="../description_of_commands_display_results.htm"><b>written</b></a> <br>\r
+<br><br>\r
+<nobr><a name="bm_X"></a><a name="subkey_X{"></a>x <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>3</b></a> <a href="../managing_configurations.htm"><b>4</b></a> </nobr><br>\r
+<br><br>\r
+<nobr><a name="bm_Y"></a><a name="subkey_Y{"></a>y <a href="../description_of_commands_display_results.htm"><b>1</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_YE"></a><a name="subkey_YE"></a>yet <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../command_result.htm"><b>2</b></a> <a href="../command_activation_in_display_meshes.htm"><b>3</b></a> </nobr><br>\r
+<br><br>\r
+<a name="bm_Z"></a><a name="subkey_Z{"></a><a href="../navigation_using_the_spacemouse.htm"><b>z</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf8.htm" target="_self" title="previous search group"><b>&gt;&gt;</b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstf8.htm b/doc/salome/gui/GAUSS/whgdata/whlstf8.htm
new file mode 100644 (file)
index 0000000..740f3b2
--- /dev/null
@@ -0,0 +1,40 @@
+<html>\r
+<head>\r
+<title>Search Words List</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsbody" align="center"><a href="whlstf7.htm" target="_self" title="previous search group"><b>&lt;&lt;</b></a><br><br></p>\r
+<p class="ftsbody" >\r
+<nobr><a name="bms_ZO"></a><a name="subkey_ZO"></a>zoom <a href="../description_of_the_picking_functionality.htm"><b>1</b></a> <a href="../description_of_commands_display_results.htm"><b>2</b></a> <a href="../salome_visu_preferences_navigation_within_the_scene.htm"><b>3</b></a> <a href="../navigation_using_the_spacemouse.htm"><b>4</b></a> <a href="../navigation_using_the_mouse.htm"><b>5</b></a> <a href="../navigation_using_the_keyboard.htm"><b>6</b></a> <a href="../salome_visu_preferences_picking.htm"><b>7</b></a> </nobr><br><br><br></p>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl0.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl0.htm
new file mode 100644 (file)
index 0000000..5155540
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_{"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_{" target="ftslist" title="search letter { "><b>{ </b></a> <a href="whlstf0.htm#bms_{D" target="ftslist" title="search letter {D"><b>{D</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl1.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl1.htm
new file mode 100644 (file)
index 0000000..148e084
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_A"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_A" target="ftslist" title="search letter AB"><b>AB</b></a> <a href="whlstf0.htm#bms_AC" target="ftslist" title="search letter AC"><b>AC</b></a> <a href="whlstf0.htm#bms_AD" target="ftslist" title="search letter AD"><b>AD</b></a> <a href="whlstf0.htm#bms_AF" target="ftslist" title="search letter AF"><b>AF</b></a> <a href="whlstf0.htm#bms_AL" target="ftslist" title="search letter AL"><b>AL</b></a> <a href="whlstf0.htm#bms_AM" target="ftslist" title="search letter AM"><b>AM</b></a> <a href="whlstf0.htm#bms_AN" target="ftslist" title="search letter AN"><b>AN</b></a> <a href="whlstf0.htm#bms_AP" target="ftslist" title="search letter AP"><b>AP</b></a> <a href="whlstf0.htm#bms_AR" target="ftslist" title="search letter AR"><b>AR</b></a> <a href="whlstf0.htm#bms_AS" target="ftslist" title="search letter AS"><b>AS</b></a> <a href="whlstf0.htm#bms_AT" target="ftslist" title="search letter AT"><b>AT</b></a> <a href="whlstf0.htm#bms_AU" target="ftslist" title="search letter AU"><b>AU</b></a> <a href="whlstf0.htm#bms_AV" target="ftslist" title="search letter AV"><b>AV</b></a> <a href="whlstf0.htm#bms_AX" target="ftslist" title="search letter AX"><b>AX</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl10.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl10.htm
new file mode 100644 (file)
index 0000000..846cd67
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_K"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_K" target="ftslist" title="search letter KE"><b>KE</b></a> <a href="whlstf3.htm#bms_KI" target="ftslist" title="search letter KI"><b>KI</b></a> <a href="whlstf3.htm#bms_KN" target="ftslist" title="search letter KN"><b>KN</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl11.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl11.htm
new file mode 100644 (file)
index 0000000..85d4b17
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_L"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_L" target="ftslist" title="search letter LA"><b>LA</b></a> <a href="whlstf3.htm#bms_LE" target="ftslist" title="search letter LE"><b>LE</b></a> <a href="whlstf3.htm#bms_LI" target="ftslist" title="search letter LI"><b>LI</b></a> <a href="whlstf3.htm#bms_LO" target="ftslist" title="search letter LO"><b>LO</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl12.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl12.htm
new file mode 100644 (file)
index 0000000..aa78192
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_M"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_M" target="ftslist" title="search letter M "><b>M </b></a> <a href="whlstf4.htm#bms_MA" target="ftslist" title="search letter MA"><b>MA</b></a> <a href="whlstf4.htm#bms_MB" target="ftslist" title="search letter MB"><b>MB</b></a> <a href="whlstf4.htm#bms_ME" target="ftslist" title="search letter ME"><b>ME</b></a> <a href="whlstf4.htm#bms_MI" target="ftslist" title="search letter MI"><b>MI</b></a> <a href="whlstf4.htm#bms_MM" target="ftslist" title="search letter MM"><b>MM</b></a> <a href="whlstf4.htm#bms_MO" target="ftslist" title="search letter MO"><b>MO</b></a> <a href="whlstf4.htm#bms_MU" target="ftslist" title="search letter MU"><b>MU</b></a> <a href="whlstf4.htm#bms_MY" target="ftslist" title="search letter MY"><b>MY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl13.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl13.htm
new file mode 100644 (file)
index 0000000..acf24b5
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_N"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_N" target="ftslist" title="search letter N "><b>N </b></a> <a href="whlstf4.htm#bms_NA" target="ftslist" title="search letter NA"><b>NA</b></a> <a href="whlstf4.htm#bms_NB" target="ftslist" title="search letter NB"><b>NB</b></a> <a href="whlstf4.htm#bms_NE" target="ftslist" title="search letter NE"><b>NE</b></a> <a href="whlstf4.htm#bms_NO" target="ftslist" title="search letter NO"><b>NO</b></a> <a href="whlstf4.htm#bms_NT" target="ftslist" title="search letter NT"><b>NT</b></a> <a href="whlstf4.htm#bms_NU" target="ftslist" title="search letter NU"><b>NU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl14.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl14.htm
new file mode 100644 (file)
index 0000000..6f0617a
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_O"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf4.htm#bm_O" target="ftslist" title="search letter OB"><b>OB</b></a> <a href="whlstf4.htm#bms_OC" target="ftslist" title="search letter OC"><b>OC</b></a> <a href="whlstf4.htm#bms_OK" target="ftslist" title="search letter OK"><b>OK</b></a> <a href="whlstf4.htm#bms_ON" target="ftslist" title="search letter ON"><b>ON</b></a> <a href="whlstf4.htm#bms_OP" target="ftslist" title="search letter OP"><b>OP</b></a> <a href="whlstf4.htm#bms_OR" target="ftslist" title="search letter OR"><b>OR</b></a> <a href="whlstf4.htm#bms_OU" target="ftslist" title="search letter OU"><b>OU</b></a> <a href="whlstf4.htm#bms_OW" target="ftslist" title="search letter OW"><b>OW</b></a> <a href="whlstf5.htm#bms_O{" target="ftslist" title="search letter O "><b>O </b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl15.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl15.htm
new file mode 100644 (file)
index 0000000..b9e754d
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_P"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_P" target="ftslist" title="search letter P "><b>P </b></a> <a href="whlstf5.htm#bms_PA" target="ftslist" title="search letter PA"><b>PA</b></a> <a href="whlstf5.htm#bms_PC" target="ftslist" title="search letter PC"><b>PC</b></a> <a href="whlstf5.htm#bms_PE" target="ftslist" title="search letter PE"><b>PE</b></a> <a href="whlstf5.htm#bms_PH" target="ftslist" title="search letter PH"><b>PH</b></a> <a href="whlstf5.htm#bms_PI" target="ftslist" title="search letter PI"><b>PI</b></a> <a href="whlstf5.htm#bms_PL" target="ftslist" title="search letter PL"><b>PL</b></a> <a href="whlstf5.htm#bms_PO" target="ftslist" title="search letter PO"><b>PO</b></a> <a href="whlstf5.htm#bms_PR" target="ftslist" title="search letter PR"><b>PR</b></a> <a href="whlstf5.htm#bms_PS" target="ftslist" title="search letter PS"><b>PS</b></a> <a href="whlstf5.htm#bms_PU" target="ftslist" title="search letter PU"><b>PU</b></a> <a href="whlstf5.htm#bms_PY" target="ftslist" title="search letter PY"><b>PY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl16.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl16.htm
new file mode 100644 (file)
index 0000000..cf69684
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_R"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf5.htm#bm_R" target="ftslist" title="search letter RA"><b>RA</b></a> <a href="whlstf5.htm#bms_RE" target="ftslist" title="search letter RE"><b>RE</b></a> <a href="whlstf6.htm#bms_RI" target="ftslist" title="search letter RI"><b>RI</b></a> <a href="whlstf6.htm#bms_RO" target="ftslist" title="search letter RO"><b>RO</b></a> <a href="whlstf6.htm#bms_RU" target="ftslist" title="search letter RU"><b>RU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl17.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl17.htm
new file mode 100644 (file)
index 0000000..00fe9b2
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_S"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_S" target="ftslist" title="search letter S "><b>S </b></a> <a href="whlstf6.htm#bms_SA" target="ftslist" title="search letter SA"><b>SA</b></a> <a href="whlstf6.htm#bms_SC" target="ftslist" title="search letter SC"><b>SC</b></a> <a href="whlstf6.htm#bms_SE" target="ftslist" title="search letter SE"><b>SE</b></a> <a href="whlstf6.htm#bms_SH" target="ftslist" title="search letter SH"><b>SH</b></a> <a href="whlstf6.htm#bms_SI" target="ftslist" title="search letter SI"><b>SI</b></a> <a href="whlstf6.htm#bms_SK" target="ftslist" title="search letter SK"><b>SK</b></a> <a href="whlstf6.htm#bms_SL" target="ftslist" title="search letter SL"><b>SL</b></a> <a href="whlstf6.htm#bms_SM" target="ftslist" title="search letter SM"><b>SM</b></a> <a href="whlstf6.htm#bms_SO" target="ftslist" title="search letter SO"><b>SO</b></a> <a href="whlstf6.htm#bms_SP" target="ftslist" title="search letter SP"><b>SP</b></a> <a href="whlstf6.htm#bms_ST" target="ftslist" title="search letter ST"><b>ST</b></a> <a href="whlstf6.htm#bms_SU" target="ftslist" title="search letter SU"><b>SU</b></a> <a href="whlstf6.htm#bms_SW" target="ftslist" title="search letter SW"><b>SW</b></a> <a href="whlstf6.htm#bms_SY" target="ftslist" title="search letter SY"><b>SY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl18.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl18.htm
new file mode 100644 (file)
index 0000000..5015baa
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_T"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_T" target="ftslist" title="search letter TA"><b>TA</b></a> <a href="whlstf7.htm#bms_TE" target="ftslist" title="search letter TE"><b>TE</b></a> <a href="whlstf7.htm#bms_TH" target="ftslist" title="search letter TH"><b>TH</b></a> <a href="whlstf7.htm#bms_TI" target="ftslist" title="search letter TI"><b>TI</b></a> <a href="whlstf7.htm#bms_TO" target="ftslist" title="search letter TO"><b>TO</b></a> <a href="whlstf7.htm#bms_TR" target="ftslist" title="search letter TR"><b>TR</b></a> <a href="whlstf7.htm#bms_TW" target="ftslist" title="search letter TW"><b>TW</b></a> <a href="whlstf7.htm#bms_TY" target="ftslist" title="search letter TY"><b>TY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl19.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl19.htm
new file mode 100644 (file)
index 0000000..6115bdf
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_U"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_U" target="ftslist" title="search letter UN"><b>UN</b></a> <a href="whlstf7.htm#bms_UP" target="ftslist" title="search letter UP"><b>UP</b></a> <a href="whlstf7.htm#bms_US" target="ftslist" title="search letter US"><b>US</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl2.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl2.htm
new file mode 100644 (file)
index 0000000..652e060
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_B"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_B" target="ftslist" title="search letter BA"><b>BA</b></a> <a href="whlstf0.htm#bms_BE" target="ftslist" title="search letter BE"><b>BE</b></a> <a href="whlstf0.htm#bms_BI" target="ftslist" title="search letter BI"><b>BI</b></a> <a href="whlstf0.htm#bms_BL" target="ftslist" title="search letter BL"><b>BL</b></a> <a href="whlstf0.htm#bms_BO" target="ftslist" title="search letter BO"><b>BO</b></a> <a href="whlstf0.htm#bms_BR" target="ftslist" title="search letter BR"><b>BR</b></a> <a href="whlstf0.htm#bms_BU" target="ftslist" title="search letter BU"><b>BU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl20.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl20.htm
new file mode 100644 (file)
index 0000000..8ac83a3
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_V"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_V" target="ftslist" title="search letter V "><b>V </b></a> <a href="whlstf7.htm#bms_VA" target="ftslist" title="search letter VA"><b>VA</b></a> <a href="whlstf7.htm#bms_VE" target="ftslist" title="search letter VE"><b>VE</b></a> <a href="whlstf7.htm#bms_VI" target="ftslist" title="search letter VI"><b>VI</b></a> <a href="whlstf7.htm#bms_VO" target="ftslist" title="search letter VO"><b>VO</b></a> <a href="whlstf7.htm#bms_VT" target="ftslist" title="search letter VT"><b>VT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl21.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl21.htm
new file mode 100644 (file)
index 0000000..b6f17d3
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_W"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_W" target="ftslist" title="search letter WA"><b>WA</b></a> <a href="whlstf7.htm#bms_WE" target="ftslist" title="search letter WE"><b>WE</b></a> <a href="whlstf7.htm#bms_WH" target="ftslist" title="search letter WH"><b>WH</b></a> <a href="whlstf7.htm#bms_WI" target="ftslist" title="search letter WI"><b>WI</b></a> <a href="whlstf7.htm#bms_WO" target="ftslist" title="search letter WO"><b>WO</b></a> <a href="whlstf7.htm#bms_WR" target="ftslist" title="search letter WR"><b>WR</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl22.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl22.htm
new file mode 100644 (file)
index 0000000..63da667
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_Y"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_Y" target="ftslist" title="search letter Y "><b>Y </b></a> <a href="whlstf7.htm#bms_YE" target="ftslist" title="search letter YE"><b>YE</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl23.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl23.htm
new file mode 100644 (file)
index 0000000..06a8be2
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_Z"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf7.htm#bm_Z" target="ftslist" title="search letter Z "><b>Z </b></a> <a href="whlstf8.htm#bms_ZO" target="ftslist" title="search letter ZO"><b>ZO</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl3.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl3.htm
new file mode 100644 (file)
index 0000000..077669f
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_C"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf0.htm#bm_C" target="ftslist" title="search letter CA"><b>CA</b></a> <a href="whlstf1.htm#bms_CE" target="ftslist" title="search letter CE"><b>CE</b></a> <a href="whlstf1.htm#bms_CH" target="ftslist" title="search letter CH"><b>CH</b></a> <a href="whlstf1.htm#bms_CL" target="ftslist" title="search letter CL"><b>CL</b></a> <a href="whlstf1.htm#bms_CO" target="ftslist" title="search letter CO"><b>CO</b></a> <a href="whlstf1.htm#bms_CR" target="ftslist" title="search letter CR"><b>CR</b></a> <a href="whlstf1.htm#bms_CT" target="ftslist" title="search letter CT"><b>CT</b></a> <a href="whlstf1.htm#bms_CU" target="ftslist" title="search letter CU"><b>CU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl4.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl4.htm
new file mode 100644 (file)
index 0000000..b3e94b0
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_D"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf1.htm#bm_D" target="ftslist" title="search letter D "><b>D </b></a> <a href="whlstf1.htm#bms_DA" target="ftslist" title="search letter DA"><b>DA</b></a> <a href="whlstf1.htm#bms_DE" target="ftslist" title="search letter DE"><b>DE</b></a> <a href="whlstf2.htm#bms_DI" target="ftslist" title="search letter DI"><b>DI</b></a> <a href="whlstf2.htm#bms_DO" target="ftslist" title="search letter DO"><b>DO</b></a> <a href="whlstf2.htm#bms_DR" target="ftslist" title="search letter DR"><b>DR</b></a> <a href="whlstf2.htm#bms_DU" target="ftslist" title="search letter DU"><b>DU</b></a> <a href="whlstf2.htm#bms_DY" target="ftslist" title="search letter DY"><b>DY</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl5.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl5.htm
new file mode 100644 (file)
index 0000000..f29c4e2
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_E"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf2.htm#bm_E" target="ftslist" title="search letter E "><b>E </b></a> <a href="whlstf2.htm#bms_ED" target="ftslist" title="search letter ED"><b>ED</b></a> <a href="whlstf2.htm#bms_EF" target="ftslist" title="search letter EF"><b>EF</b></a> <a href="whlstf2.htm#bms_EI" target="ftslist" title="search letter EI"><b>EI</b></a> <a href="whlstf2.htm#bms_EL" target="ftslist" title="search letter EL"><b>EL</b></a> <a href="whlstf2.htm#bms_EM" target="ftslist" title="search letter EM"><b>EM</b></a> <a href="whlstf2.htm#bms_EN" target="ftslist" title="search letter EN"><b>EN</b></a> <a href="whlstf2.htm#bms_EQ" target="ftslist" title="search letter EQ"><b>EQ</b></a> <a href="whlstf2.htm#bms_ER" target="ftslist" title="search letter ER"><b>ER</b></a> <a href="whlstf2.htm#bms_ES" target="ftslist" title="search letter ES"><b>ES</b></a> <a href="whlstf2.htm#bms_EV" target="ftslist" title="search letter EV"><b>EV</b></a> <a href="whlstf2.htm#bms_EX" target="ftslist" title="search letter EX"><b>EX</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl6.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl6.htm
new file mode 100644 (file)
index 0000000..88b7054
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_F"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf2.htm#bm_F" target="ftslist" title="search letter FA"><b>FA</b></a> <a href="whlstf2.htm#bms_FE" target="ftslist" title="search letter FE"><b>FE</b></a> <a href="whlstf2.htm#bms_FI" target="ftslist" title="search letter FI"><b>FI</b></a> <a href="whlstf2.htm#bms_FL" target="ftslist" title="search letter FL"><b>FL</b></a> <a href="whlstf2.htm#bms_FO" target="ftslist" title="search letter FO"><b>FO</b></a> <a href="whlstf3.htm#bms_FR" target="ftslist" title="search letter FR"><b>FR</b></a> <a href="whlstf3.htm#bms_FU" target="ftslist" title="search letter FU"><b>FU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl7.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl7.htm
new file mode 100644 (file)
index 0000000..64c61ee
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_G"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_G" target="ftslist" title="search letter GA"><b>GA</b></a> <a href="whlstf3.htm#bms_GE" target="ftslist" title="search letter GE"><b>GE</b></a> <a href="whlstf3.htm#bms_GI" target="ftslist" title="search letter GI"><b>GI</b></a> <a href="whlstf3.htm#bms_GL" target="ftslist" title="search letter GL"><b>GL</b></a> <a href="whlstf3.htm#bms_GO" target="ftslist" title="search letter GO"><b>GO</b></a> <a href="whlstf3.htm#bms_GR" target="ftslist" title="search letter GR"><b>GR</b></a> <a href="whlstf3.htm#bms_GU" target="ftslist" title="search letter GU"><b>GU</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl8.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl8.htm
new file mode 100644 (file)
index 0000000..7ec0e20
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_H"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_H" target="ftslist" title="search letter HA"><b>HA</b></a> <a href="whlstf3.htm#bms_HD" target="ftslist" title="search letter HD"><b>HD</b></a> <a href="whlstf3.htm#bms_HE" target="ftslist" title="search letter HE"><b>HE</b></a> <a href="whlstf3.htm#bms_HI" target="ftslist" title="search letter HI"><b>HI</b></a> <a href="whlstf3.htm#bms_HO" target="ftslist" title="search letter HO"><b>HO</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstfl9.htm b/doc/salome/gui/GAUSS/whgdata/whlstfl9.htm
new file mode 100644 (file)
index 0000000..dd02ba5
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<title>Search Words letter</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<p class="ftsheader"><a name="subkey_I"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf3.htm#bm_I" target="ftslist" title="search letter I "><b>I </b></a> <a href="whlstf3.htm#bms_IC" target="ftslist" title="search letter IC"><b>IC</b></a> <a href="whlstf3.htm#bms_ID" target="ftslist" title="search letter ID"><b>ID</b></a> <a href="whlstf3.htm#bms_IF" target="ftslist" title="search letter IF"><b>IF</b></a> <a href="whlstf3.htm#bms_II" target="ftslist" title="search letter II"><b>II</b></a> <a href="whlstf3.htm#bms_IM" target="ftslist" title="search letter IM"><b>IM</b></a> <a href="whlstf3.htm#bms_IN" target="ftslist" title="search letter IN"><b>IN</b></a> <a href="whlstf3.htm#bms_IT" target="ftslist" title="search letter IT"><b>IT</b></a>  <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstg0.htm b/doc/salome/gui/GAUSS/whgdata/whlstg0.htm
new file mode 100644 (file)
index 0000000..03bf828
--- /dev/null
@@ -0,0 +1,38 @@
+<html>\r
+<head>\r
+<title>Glossary words list</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.glsheader {margin-left:10pt; margin-top:0pt;}\r
+.glsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.glsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; }A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlsti0.htm b/doc/salome/gui/GAUSS/whgdata/whlsti0.htm
new file mode 100644 (file)
index 0000000..48844c0
--- /dev/null
@@ -0,0 +1,41 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Index words list</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ndxheader {margin-left:10pt; margin-top:0pt;}\r
+.ndxbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ndxbody">\r
+<br><br></p>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt0.htm b/doc/salome/gui/GAUSS/whgdata/whlstt0.htm
new file mode 100644 (file)
index 0000000..8aa9cea
--- /dev/null
@@ -0,0 +1,61 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt1.htm b/doc/salome/gui/GAUSS/whgdata/whlstt1.htm
new file mode 100644 (file)
index 0000000..b5c9498
--- /dev/null
@@ -0,0 +1,62 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt0.htm#1" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../index.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Introduction</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt10.htm b/doc/salome/gui/GAUSS/whgdata/whlstt10.htm
new file mode 100644 (file)
index 0000000..1b69927
--- /dev/null
@@ -0,0 +1,62 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt0.htm#10" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../general_storage_of_produced_data.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Saving data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt11.htm b/doc/salome/gui/GAUSS/whgdata/whlstt11.htm
new file mode 100644 (file)
index 0000000..b15e863
--- /dev/null
@@ -0,0 +1,62 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt0.htm#11" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../loading_of_previously_saved_data.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Loading previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt2.htm b/doc/salome/gui/GAUSS/whgdata/whlstt2.htm
new file mode 100644 (file)
index 0000000..010924f
--- /dev/null
@@ -0,0 +1,65 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt0.htm#2" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../general.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../command_activation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command Activation</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../command_result.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command Result</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../salome_visu_preferences.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Salome-Visu preferences</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt3.htm b/doc/salome/gui/GAUSS/whgdata/whlstt3.htm
new file mode 100644 (file)
index 0000000..e372759
--- /dev/null
@@ -0,0 +1,64 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt0.htm#3" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../display_meshes_general.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../command_activation_in_display_meshes.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Activation of commands</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../command_description_in_display_meshes.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Description of commands</a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt4.htm b/doc/salome/gui/GAUSS/whgdata/whlstt4.htm
new file mode 100644 (file)
index 0000000..ec6ebec
--- /dev/null
@@ -0,0 +1,67 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt0.htm#4" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../display_results_at_gauss_points_general.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../activation_of_commands_display_results.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Activation of commands</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../description_of_commands_display_results.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Description of commands</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../specific_additional_commands_for_fields_items.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Specific additional commands for Fields items</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../animation_function.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Animation function</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../salome-visu_preferences_display_results.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Salome-Visu preferences</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt5.htm b/doc/salome/gui/GAUSS/whgdata/whlstt5.htm
new file mode 100644 (file)
index 0000000..4a3dd2e
--- /dev/null
@@ -0,0 +1,64 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt0.htm#5" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../general_timestamps_animation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../command_activation_timestamps_animation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command activation</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../command_description_timestamps_animation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command description</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt6.htm b/doc/salome/gui/GAUSS/whgdata/whlstt6.htm
new file mode 100644 (file)
index 0000000..6c6b474
--- /dev/null
@@ -0,0 +1,62 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt0.htm#6" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../making_an_avi_clip.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt7.htm b/doc/salome/gui/GAUSS/whgdata/whlstt7.htm
new file mode 100644 (file)
index 0000000..56b3a56
--- /dev/null
@@ -0,0 +1,68 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt0.htm#7" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../general_navigation_within_the_scene.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../navigation_using_the_mouse.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Navigation using the mouse</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../navigation_using_the_keyboard.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Navigation using the keyboard</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../navigation_using_the_spacemouse.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Navigation using the spacemouse</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../cameras.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Cameras</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../managing_configurations.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Managing configurations</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../salome_visu_preferences_navigation_within_the_scene.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Salome-Visu preferences</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt8.htm b/doc/salome/gui/GAUSS/whgdata/whlstt8.htm
new file mode 100644 (file)
index 0000000..d198533
--- /dev/null
@@ -0,0 +1,66 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt0.htm#8" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../picking_general.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../command_activation_picking.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command activation</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../description_of_the_picking_functionality.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Description of the picking functionality</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../command_deactivation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command deactivation</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../salome_visu_preferences_picking.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Salome-Visu preferences</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt9.htm#9" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whlstt9.htm b/doc/salome/gui/GAUSS/whgdata/whlstt9.htm
new file mode 100644 (file)
index 0000000..d2ce194
--- /dev/null
@@ -0,0 +1,64 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table border=0>\r
+<tr><td>\r
+<p class="tocbody">\r
+<nobr><a name="1"></a><a href="whlstt1.htm#1" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Introduction to Gauss Points Viewer</a></nobr><br>\r
+<nobr><a name="2"></a><a href="whlstt2.htm#2" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle">  Loading of data</a></nobr><br>\r
+<nobr><a name="3"></a><a href="whlstt3.htm#3" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display of meshes and mesh groups </a></nobr><br>\r
+<nobr><a name="4"></a><a href="whlstt4.htm#4" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Display results at Gauss points</a></nobr><br>\r
+<nobr><a name="5"></a><a href="whlstt5.htm#5" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Timestamps animation</a></nobr><br>\r
+<nobr><a name="6"></a><a href="whlstt6.htm#6" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Making an AVI clip</a></nobr><br>\r
+<nobr><a name="7"></a><a href="whlstt7.htm#7" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Navigation within the scene</a></nobr><br>\r
+<nobr><a name="8"></a><a href="whlstt8.htm#8" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Picking</a></nobr><br>\r
+<nobr><a name="9"></a><a href="whlstt0.htm#9" target="_self"><img src="../wht_toc2.gif" border="0" align="absmiddle"> Segmentation</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../segmentation_general.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../command_activation_segmentation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command Activation</a></nobr><br>\r
+&nbsp;&nbsp;&nbsp;<nobr><a href="../command_description_segmentation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command description</a></nobr><br>\r
+<nobr><a name="10"></a><a href="whlstt10.htm#10" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Storage of produced data</a></nobr><br>\r
+<nobr><a name="11"></a><a href="whlstt11.htm#11" target="_self" title="closed book"><img src="../wht_toc1.gif" border="0" align="absmiddle"> Loading of previously saved data</a></nobr><br>\r
+</p>\r
+\r
+</td></tr>\r
+<tr><td>\r
+<p><img src="whexpbar.gif" > <p>\r
+</td></tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvf30.htm b/doc/salome/gui/GAUSS/whgdata/whnvf30.htm
new file mode 100644 (file)
index 0000000..33dae3b
--- /dev/null
@@ -0,0 +1,13 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>toc frame</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<frameset rows="100%, *" border="0" frameborder="0">\r
+       <frame name="toctree" title="toc tree frame" src="whlstt0.htm"></frame>\r
+</frameset>\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvf31.htm b/doc/salome/gui/GAUSS/whgdata/whnvf31.htm
new file mode 100644 (file)
index 0000000..a9128b8
--- /dev/null
@@ -0,0 +1,15 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Index frame</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<frameset rows="40, *" border="0" frameborder="0">\r
+       <frame name="ndxletter" title="index letter frame" src="whnvl31.htm" noresize frameborder="1" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
+       <frame name="ndxlist" title="index list frame" src="whlsti0.htm"></frame>\r
+</frameset>\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvf32.htm b/doc/salome/gui/GAUSS/whgdata/whnvf32.htm
new file mode 100644 (file)
index 0000000..ae87273
--- /dev/null
@@ -0,0 +1,15 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>search frame</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<frameset rows="40, *" border="0" frameborder="0">\r
+       <frame name="ftsletter" title="search letter frame" src="whnvl32.htm" noresize frameborder="1" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
+       <frame name="ftslist" title="seach word frame" src="whlstf0.htm"></frame>\r
+</frameset>\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvf33.htm b/doc/salome/gui/GAUSS/whgdata/whnvf33.htm
new file mode 100644 (file)
index 0000000..9af2824
--- /dev/null
@@ -0,0 +1,15 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Glossary frame</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<frameset rows="40, *" border="0" frameborder="0">\r
+       <frame name="glsletter" title="glossary letter frame" src="whnvl33.htm" noresize frameborder="1" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
+       <frame name="glslist" title="glossary defination frame" src="whlstg0.htm"></frame>\r
+</frameset>\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvl31.htm b/doc/salome/gui/GAUSS/whgdata/whnvl31.htm
new file mode 100644 (file)
index 0000000..73da95b
--- /dev/null
@@ -0,0 +1,72 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Index Letters</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ndxheader {margin-left:10pt; margin-top:0pt;}\r
+.ndxbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ndxheader">\r
+ <font class="inactive">#</font> \r
+ <font class="inactive">A</font> \r
+ <font class="inactive">B</font> \r
+ <font class="inactive">C</font> \r
+ <font class="inactive">D</font> \r
+ <font class="inactive">E</font> \r
+ <font class="inactive">F</font> \r
+ <font class="inactive">G</font> \r
+ <font class="inactive">H</font> \r
+ <font class="inactive">I</font> \r
+ <font class="inactive">J</font> \r
+ <font class="inactive">K</font> \r
+ <font class="inactive">L</font> \r
+ <font class="inactive">M</font> \r
+ <font class="inactive">N</font> \r
+ <font class="inactive">O</font> \r
+ <font class="inactive">P</font> \r
+ <font class="inactive">Q</font> \r
+ <font class="inactive">R</font> \r
+ <font class="inactive">S</font> \r
+ <font class="inactive">T</font> \r
+ <font class="inactive">U</font> \r
+ <font class="inactive">V</font> \r
+ <font class="inactive">W</font> \r
+ <font class="inactive">X</font> \r
+ <font class="inactive">Y</font> \r
+ <font class="inactive">Z</font> \r
+</p>\r
+\r
+<body>\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvl32.htm b/doc/salome/gui/GAUSS/whgdata/whnvl32.htm
new file mode 100644 (file)
index 0000000..512b4db
--- /dev/null
@@ -0,0 +1,72 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Search Letters</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<p class="ftsheader">\r
+<a name="home"></a> <a href="whlstfl0.htm#subkey_{" target="_self"title="search non-alphabet letter"><b>#</b></a> \r
+ <a href="whlstfl1.htm#subkey_A" target="_self"title="search letter A"><b>A</b></a> \r
+ <a href="whlstfl2.htm#subkey_B" target="_self"title="search letter B"><b>B</b></a> \r
+ <a href="whlstfl3.htm#subkey_C" target="_self"title="search letter C"><b>C</b></a> \r
+ <a href="whlstfl4.htm#subkey_D" target="_self"title="search letter D"><b>D</b></a> \r
+ <a href="whlstfl5.htm#subkey_E" target="_self"title="search letter E"><b>E</b></a> \r
+ <a href="whlstfl6.htm#subkey_F" target="_self"title="search letter F"><b>F</b></a> \r
+ <a href="whlstfl7.htm#subkey_G" target="_self"title="search letter G"><b>G</b></a> \r
+ <a href="whlstfl8.htm#subkey_H" target="_self"title="search letter H"><b>H</b></a> \r
+ <a href="whlstfl9.htm#subkey_I" target="_self"title="search letter I"><b>I</b></a> \r
+ <font class="inactive">J</font> \r
+ <a href="whlstfl10.htm#subkey_K" target="_self"title="search letter K"><b>K</b></a> \r
+ <a href="whlstfl11.htm#subkey_L" target="_self"title="search letter L"><b>L</b></a> \r
+ <a href="whlstfl12.htm#subkey_M" target="_self"title="search letter M"><b>M</b></a> \r
+ <a href="whlstfl13.htm#subkey_N" target="_self"title="search letter N"><b>N</b></a> \r
+ <a href="whlstfl14.htm#subkey_O" target="_self"title="search letter O"><b>O</b></a> \r
+ <a href="whlstfl15.htm#subkey_P" target="_self"title="search letter P"><b>P</b></a> \r
+ <a href="whlstf5.htm#bm_Q" target="ftslist"title="search letter Q" ><b>Q</b></a> \r
+ <a href="whlstfl16.htm#subkey_R" target="_self"title="search letter R"><b>R</b></a> \r
+ <a href="whlstfl17.htm#subkey_S" target="_self"title="search letter S"><b>S</b></a> \r
+ <a href="whlstfl18.htm#subkey_T" target="_self"title="search letter T"><b>T</b></a> \r
+ <a href="whlstfl19.htm#subkey_U" target="_self"title="search letter U"><b>U</b></a> \r
+ <a href="whlstfl20.htm#subkey_V" target="_self"title="search letter V"><b>V</b></a> \r
+ <a href="whlstfl21.htm#subkey_W" target="_self"title="search letter W"><b>W</b></a> \r
+ <a href="whlstf7.htm#bm_X" target="ftslist"title="search letter X" ><b>X</b></a> \r
+ <a href="whlstfl22.htm#subkey_Y" target="_self"title="search letter Y"><b>Y</b></a> \r
+ <a href="whlstfl23.htm#subkey_Z" target="_self"title="search letter Z"><b>Z</b></a> \r
+</p>\r
+\r
+<body>\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvl33.htm b/doc/salome/gui/GAUSS/whgdata/whnvl33.htm
new file mode 100644 (file)
index 0000000..16320df
--- /dev/null
@@ -0,0 +1,43 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Glossary Letters</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.glsheader {margin-left:10pt; margin-top:0pt;}\r
+.glsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.glsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; }A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+<style>\r
+<!--\r
+body {background-color:White; } \r
+-->\r
+</style>\r
+</head>\r
+<body marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+\r
+<body>\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvp30.htm b/doc/salome/gui/GAUSS/whgdata/whnvp30.htm
new file mode 100644 (file)
index 0000000..1a8036d
--- /dev/null
@@ -0,0 +1,16 @@
+<!-- WebHelp version 5.10 -->\r
+<html>\r
+<head>\r
+<title> Content Navigation Pane </title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+\r
+</style>\r
+</head>\r
+<frameset rows="36, *" border="0" frameborder="0">\r
+       <frame name="toctabs" title="tab selection frame" src="whnvt30.htm" noresize frameborder="no" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
+       <frame name="toclist" title="content frame" src="whlstt0.htm"></frame>\r
+</frameset>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvp31.htm b/doc/salome/gui/GAUSS/whgdata/whnvp31.htm
new file mode 100644 (file)
index 0000000..fa146f1
--- /dev/null
@@ -0,0 +1,16 @@
+<!-- WebHelp version 5.10 -->\r
+<html>\r
+<head>\r
+<title> Index Navigation Pane </title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+\r
+</style>\r
+</head>\r
+<frameset rows="36, *" border="0" frameborder="0">\r
+       <frame name="ndxtabs" title="tab selection frame" src="whnvt31.htm" noresize frameborder="no" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
+       <frame name="ndxdata" title="index frame" src="whnvf31.htm"></frame>\r
+</frameset>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvp32.htm b/doc/salome/gui/GAUSS/whgdata/whnvp32.htm
new file mode 100644 (file)
index 0000000..c334807
--- /dev/null
@@ -0,0 +1,16 @@
+<!-- WebHelp version 5.10 -->\r
+<html>\r
+<head>\r
+<title> Search Navigation Pane </title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+\r
+</style>\r
+</head>\r
+<frameset rows="36, *" border="0" frameborder="0">\r
+       <frame name="ftstabs" title="tab selection frame" src="whnvt32.htm" noresize frameborder="no" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
+       <frame name="ftsdata" title="search frame" src="whnvf32.htm"></frame>\r
+</frameset>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvp33.htm b/doc/salome/gui/GAUSS/whgdata/whnvp33.htm
new file mode 100644 (file)
index 0000000..8fb4636
--- /dev/null
@@ -0,0 +1,16 @@
+<!-- WebHelp version 5.10 -->\r
+<html>\r
+<head>\r
+<title> Glossary Navigation Pane </title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+\r
+</style>\r
+</head>\r
+<frameset rows="36, *" border="0" frameborder="0">\r
+       <frame name="glstabs" title="tab selection frame" src="whnvt33.htm" noresize frameborder="no" scrolling="no" border="0" marginheight="0" marginwidth="0" ></frame>\r
+       <frame name="glsdata" title="glossary frame" src="whnvf33.htm"></frame>\r
+</frameset>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvt30.htm b/doc/salome/gui/GAUSS/whgdata/whnvt30.htm
new file mode 100644 (file)
index 0000000..b12886a
--- /dev/null
@@ -0,0 +1,47 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Content Navigation Tab</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.tocbody {margin-left:10pt; margin-top:0pt;}\r
+.bo {}\r
+.bc {}\r
+.pn {}\r
+.pr {}\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+img {vertial-align:middle;}\r
+-->\r
+</style>\r
+</head>\r
+<body class="tabs" marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table class="tabs" width="100%">\r
+ <tr> \r
+   <td class="tabs">\r
+   <nobr><a href="javascript:void(0)" title="Contents"><img src="../wht_tab1.gif" border="0"></a><a href="whnvp31.htm" target="_parent" title="Index"><img src="../wht_tab4.gif" border="0"></a><a href="whnvp32.htm" target="_parent" title="Search"><img src="../wht_tab6.gif" border="0"></a></nobr>\r
+   </td>\r
+ </tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvt31.htm b/doc/salome/gui/GAUSS/whgdata/whnvt31.htm
new file mode 100644 (file)
index 0000000..e20803c
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Index Navigation Tab</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ndxheader {margin-left:10pt; margin-top:0pt;}\r
+.ndxbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+\r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body class="tabs" marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table class="tabs" width="100%">\r
+ <tr> \r
+   <td class="tabs">\r
+   <nobr><a href="whnvp30.htm" target="_parent" title="Contents"><img src="../wht_tab2.gif" border="0"></a><a href="javascript:void(0)" title="Index"><img src="../wht_tab3.gif" border="0"></a><a href="whnvp32.htm" target="_parent" title="Search"><img src="../wht_tab6.gif" border="0"></a></nobr>\r
+   </td>\r
+ </tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvt32.htm b/doc/salome/gui/GAUSS/whgdata/whnvt32.htm
new file mode 100644 (file)
index 0000000..25598c2
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Search Navigation Tab</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.ftsheader {margin-left:10pt; margin-top:0pt;}\r
+.ftsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.ftsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; } A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body class="tabs" marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table class="tabs" width="100%">\r
+ <tr> \r
+   <td class="tabs">\r
+   <nobr><a href="whnvp30.htm" target="_parent" title="Contents"><img src="../wht_tab2.gif" border="0"></a><a href="whnvp31.htm" target="_parent" title="Index"><img src="../wht_tab4.gif" border="0"></a><a href="javascript:void(0)" title="Search"><img src="../wht_tab5.gif" border="0"></a></nobr>\r
+   </td>\r
+ </tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdata/whnvt33.htm b/doc/salome/gui/GAUSS/whgdata/whnvt33.htm
new file mode 100644 (file)
index 0000000..49348d3
--- /dev/null
@@ -0,0 +1,45 @@
+<html>\r
+<head>\r
+<!-- WebHelp version 5.10 -->\r
+<title>Glossary Navigation Tab</title>\r
+<base target="bsscright">\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<style>\r
+<!--\r
+body {margin-left:1pt; margin-top:1pt; margin-right:1pt;font-family:Arial; font-size:9pt;}\r
+\r
+A:link {font-family:Arial; font-size:9pt; color:#000000;  font-style:normal;  text-decoration:none; }\r
+A:visited {font-family:Arial; font-size:9pt; color:#000000; font-style:normal;  text-decoration:none; }\r
+A:active {background-color:#cccccc;}\r
+A:hover {font-family:Arial; font-size:9pt; color:#007f00; font-style:normal;  text-decoration:underline; }\r
+\r
+.tabs {background-color:#c0c0c0;}\r
+.glsheader {margin-left:10pt; margin-top:0pt;}\r
+.glsbody {margin-left:10pt; margin-top:0pt;}\r
+.inactive {color:#666666;}\r
+.glsheader {background-color:White; } \r
+\r
+body {background-color:White; } \r
+p {color:Black; } p {font-family:Tahoma; } p {font-size:8pt; } p {font-style:Normal; } p {text-decoration:none; } \r
+A:link {color:Black; } A:link {font-family:Tahoma; } A:link {font-size:8pt; } A:link {font-style:Normal; } A:link {text-decoration:none; } \r
+A:visited {color:Black; } A:visited {font-family:Tahoma; }A:visited {font-size:8pt; } A:visited {font-style:Normal; } A:visited {text-decoration:none; } \r
+A:active {background-color:Silver; } \r
+A:hover {color:Navy; } A:hover {font-family:Tahoma; } A:hover {font-size:8pt; } A:hover {font-style:Normal; } A:hover {text-decoration:underline; } \r
+\r
+-->\r
+</style>\r
+</head>\r
+<body class="tabs" marginheight="0"  marginwidth="0" bgproperties="fixed">\r
+<table class="tabs" width="100%">\r
+ <tr> \r
+   <td class="tabs">\r
+   <nobr><a href="whnvp30.htm" target="_parent" title="Contents"><img src="../wht_tab2.gif" border="0"></a><a href="whnvp31.htm" target="_parent" title="Index"><img src="../wht_tab4.gif" border="0"></a><a href="whnvp32.htm" target="_parent" title="Search"><img src="../wht_tab6.gif" border="0"></a></nobr>\r
+   </td>\r
+ </tr>\r
+</table>\r
+</body>\r
+\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whgdef.htm b/doc/salome/gui/GAUSS/whgdef.htm
new file mode 100644 (file)
index 0000000..ae43574
--- /dev/null
@@ -0,0 +1,98 @@
+<html>\r
+<head>\r
+<title>Glossary Definition</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+var gsBgColor="#ffffff";\r
+var gsBgImage="";\r
+var goGloFont=null;\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       gsBgImage=sBgImage;\r
+}\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       gsBgColor=sBgColor;\r
+}\r
+\r
+function window_Unload()\r
+{\r
+       UnRegisterListener2(this, WH_MSG_SHOWGLODEF);\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if(gsBgImage&&gsBgImage.length>0)\r
+               document.body.background=gsBgImage;\r
+       if(gsBgColor&&gsBgColor.length>0)\r
+               document.body.bgColor=gsBgColor;\r
+}\r
+\r
+function setFont(sType, sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration)\r
+{\r
+       var vFont = new whFont(sFontName, sFontSize, sFontColor, sFontStyle, sFontWeight, sFontDecoration);\r
+       if (sType == "Normal")\r
+               goGloFont = vFont;\r
+}\r
+\r
+function textToHtml_nbsp_specialcare(sText)\r
+{\r
+       if (sText == null) return null;\r
+       var sHTML= sText;\r
+       var re = new RegExp("  ","g");\r
+       sHTML=  sHTML.replace(re, "&nbsp; ");\r
+       return  sHTML;\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       var nMsgId = oMsg.nMessageId;\r
+       if (nMsgId == WH_MSG_SHOWGLODEF)\r
+       {\r
+               document.body.innerHTML = sDefHead + textToHtml_nbsp_specialcare(oMsg.oParam.sDef) + sDefTail;\r
+               return true;\r
+       }\r
+}\r
+\r
+function GDefWriteClassStyle()\r
+{\r
+       var sStyle="<STYLE TYPE='text/css'>\n";\r
+       if (gsBgImage)\r
+               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
+       else\r
+               sStyle+="body {border-top:black 1px solid;}\n";\r
+       sStyle+=".definition {"+getFontStyle(goGloFont)+"margin:2;}\n";\r
+       sStyle+="</STYLE>";\r
+       document.write(sStyle);\r
+}\r
+\r
+if (window.gbWhMsg&&window.gbWhUtil&&window.gbWhProxy&&window.gbWhVer)\r
+{\r
+       window.onload=window_OnLoad;\r
+       window.onunload = window_Unload;\r
+       goGloFont=new whFont("Verdana", "8pt", "#000000", "normal", "normal", "none");\r
+       setBackgroundcolor("White"); \r
+       \r
+       setFont("Normal", "Tahoma","8pt","Black","Normal","Normal","none");\r
+       GDefWriteClassStyle();\r
+       RegisterListener2(this, WH_MSG_SHOWGLODEF);\r
+       var sDefHead = "<p class=\"definition\">";\r
+       var sDefTail = "</p>";\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+</head>\r
+<body bgproperties="fixed" bgcolor="white">\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whgdhtml.htm b/doc/salome/gui/GAUSS/whgdhtml.htm
new file mode 100644 (file)
index 0000000..6ffb294
--- /dev/null
@@ -0,0 +1,150 @@
+<html>\r
+<head>\r
+<title>Glossary</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body bgcolor=#c0c0c0 scroll=no RIGHTMARGIN=0 BOTTOMMARGIN=0 TOPMARGIN=0 LEFTMARGIN=0>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmozemu.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+var gsBgImage="";\r
+var    gsBgColor="";\r
+var goTitleFont=null;\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       gsBgImage=sBgImage;\r
+}\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       gsBgColor=sBgColor;\r
+}\r
+\r
+function setFont(sType, sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
+{\r
+       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
+       if(sType=="Title")\r
+               goTitleFont=vFont;\r
+}\r
+\r
+function getTermText()\r
+{\r
+       var strString="Term:";\r
+strString = "Term:";\r
+       return strString;\r
+}\r
+\r
+function getDefinitionText()\r
+{\r
+       var strString="Definition for:";\r
+strString = "Definition:";\r
+       return strString;\r
+}\r
+\r
+function getHTML()\r
+{\r
+       var sHTML="";\r
+       sHTML+="<P class=title><nobr>&nbsp;" + getTermText() + "</nobr></p>";\r
+       sHTML+="<iframe id=glossaryIFrame title=\"glossary term\" src=\"whgbody.htm\" width=100% height=200 MARGINHEIGHT=0 MARGINWIDTH=0></iframe>";\r
+       sHTML+="<P class=title><nobr>&nbsp;" + getDefinitionText() + "&nbsp;<b id=Name></b></nobr></p>";\r
+       sHTML+="<iframe id=defIFrame title=\"glossary definition\" src=\"whgdef.htm\" width=100% height=100% MARGINHEIGHT=0 MARGINWIDTH=0></iframe>";\r
+       return sHTML;\r
+}\r
+\r
+function writeStyle()\r
+{\r
+       var sStyle="<style type='text/css'>";\r
+       sStyle+="p.title {" + getFontStyle(goTitleFont) + "margin-top:4;margin-bottom:4}\n";\r
+       if (gsBgImage)\r
+               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
+       else\r
+               sStyle+="body {border-top:black 1px solid;}\n";\r
+       sStyle+="</style>";\r
+       document.write(sStyle);\r
+}\r
+\r
+\r
+function window_OnResize()\r
+{\r
+       setIFrameHeight();\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if(gsBgImage&&gsBgImage.length>0)\r
+               document.body.background=gsBgImage;\r
+       if(gsBgColor&&gsBgColor.length>0)\r
+               document.body.bgColor=gsBgColor;\r
+       setIFrameHeight();\r
+}\r
+\r
+function setIFrameHeight()\r
+{\r
+       var tH=0;\r
+       if(gbNav6)\r
+       {\r
+               tH=parseInt(window.innerHeight)-30;\r
+       }\r
+       else\r
+       {\r
+               tH=parseInt(document.body.clientHeight)-4;\r
+       }\r
+               \r
+       var oEle=getElement("glossaryIFrame");\r
+       if(oEle)\r
+       {\r
+               tH=tH-2*parseInt(oEle.offsetTop);\r
+               if(tH>0)\r
+               {\r
+                       oEle.style.height=Math.floor(tH*.6);\r
+                       var oEleDef=getElement("defIFrame");\r
+                       if(oEleDef)\r
+                       {\r
+                               oEleDef.style.height=tH-parseInt(oEle.style.height);\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function window_Unload()\r
+{\r
+       UnRegisterListener2(this,WH_MSG_SHOWGLODEF);\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       var nMsgId=oMsg.nMessageId;\r
+       if(nMsgId==WH_MSG_SHOWGLODEF)\r
+       {\r
+               if(getElement("Name"))\r
+                       getElement("Name").innerHTML=oMsg.oParam.sName;\r
+               return true;\r
+       }\r
+}\r
+\r
+if(window.gbWhVer&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhProxy)\r
+{\r
+       goTitleFont=new whFont("Arial","9pt","#000000","normal","normal","none");\r
+       setFont("Title", "Tahoma","8pt","Navy","Normal","Normal","none");\r
+       \r
+       setBackgroundcolor("White");\r
+       window.onresize=window_OnResize;\r
+       window.onload=window_OnLoad;\r
+       window.onunload=window_Unload;\r
+       RegisterListener2(this,WH_MSG_SHOWGLODEF);\r
+       writeStyle();\r
+       document.write(getHTML());\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whghost.js b/doc/salome/gui/GAUSS/whghost.js
new file mode 100644 (file)
index 0000000..56e1d56
--- /dev/null
@@ -0,0 +1,247 @@
+//     WebHelp 5.10.004\r
+var gbXML=false;\r
+var gaDef=new Array();\r
+var gsBgColor="#ffffff";\r
+var gsBgImage="";\r
+var goFont=null;\r
+var goHoverFont=null;\r
+var gsMargin="2pt";\r
+var gsIndent="2pt";\r
+var gsActiveBgColor="#cccccc";\r
+var gbWhGHost=false;\r
+var gbShowDef=true;\r
+var gsGloId="Glo_"\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       gsBgImage=sBgImage;\r
+}\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       gsBgColor=sBgColor;\r
+}\r
+\r
+function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
+{\r
+       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
+       if(sType=="Normal")\r
+               goFont=vFont;\r
+       else if(sType=="Hover")\r
+               goHoverFont=vFont;\r
+}\r
+\r
+function setActiveBgColor(sBgColor)\r
+{\r
+       gsActiveBgColor=sBgColor;\r
+}\r
+\r
+function setMargin(sMargin)\r
+{\r
+       gsMargin=sMargin;\r
+}\r
+\r
+function setIndent(sIndent)\r
+{\r
+       gsIndent=sIndent;\r
+}\r
+\r
+function insertDef(sKName,sDef)\r
+{\r
+       var nLength=gaDef.length\r
+       var oGlo=new nameDefPair(sKName,sDef);\r
+       gaDef[nLength]=oGlo;\r
+       return nLength;\r
+}\r
+\r
+function showDef(nDef)\r
+{\r
+       if(nDef<gaDef.length)\r
+       {       \r
+               HighLight(nDef);\r
+               var oParam=gaDef[nDef];\r
+               var oMsg=new whMessage(WH_MSG_SHOWGLODEF,this,1,oParam);\r
+               SendMessage(oMsg);\r
+       }\r
+}\r
+\r
+function nameDefPair(sName,sDef)\r
+{\r
+       this.sName=sName;\r
+       this.sDef=sDef;\r
+}\r
+\r
+function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
+{\r
+       var sHTML="";\r
+       var nIdxSet=aCurIdxSet[0];\r
+       var nIIdx=aPos[nIdxSet];\r
+       var sRawKName = getItemName(aDataCon,nIdxSet,nIIdx);\r
+       var sKName=_textToHtml(sRawKName);\r
+       var sDText=_textToHtml_nonbsp(getDef(aDataCon,nIdxSet,nIIdx));\r
+       var sDef=sDText;\r
+       for(var i=1;i<nLength;i++)\r
+       {\r
+               var nIdxSeti=aCurIdxSet[i];\r
+               var nIIdxi=aPos[nIdxSeti];\r
+               var sRawKNamei = getItemName(aDataCon,nIdxSeti,nIIdxi);\r
+               var sKNamei=_textToHtml(sRawKNamei);\r
+               var sDTexti=_textToHtml_nonbsp(getDef(aDataCon,nIdxSeti,nIIdxi));\r
+               if (compare(sKNamei,sKName)==0)\r
+               {\r
+                       if (sDText!=sDTexti)\r
+                               sDef+="<br>"+sDTexti;\r
+               }\r
+       }\r
+       var nIndex=insertDef(sKName,sDef);\r
+       if(nLevel==1)\r
+       {\r
+               sHTML+="<p><nobr id=\""+getGloId(nIndex)+"\">";\r
+               sHTML+="<a alt=\""+sKName+"\" href=\"javascript:void(0);\" onfocus=\"HighLight("+nIndex+");\" onclick=\"showDef("+nIndex+");return false;\">"+sKName+"</a></nobr></p>";\r
+               oHTML.addHTML(sHTML,nLength,bDown,true,sRawKName);\r
+               if(gbShowDef)\r
+               {\r
+                       setTimeout("showDef(0);",100);\r
+                       gbShowDef = false;\r
+               }\r
+       }\r
+}\r
+\r
+function HighLight(nIndex)\r
+{\r
+       var oObj=getElement(getGloId(nIndex));\r
+       if(oObj)\r
+               HighLightElement(oObj,gsActiveBgColor,"transparent");\r
+}\r
+\r
+function getGloId(nIndex)\r
+{\r
+       return gsGloId+nIndex;\r
+}\r
+\r
+function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)\r
+{\r
+       if(bDown)\r
+       {\r
+               for(var i=0;i<nLength;i++)\r
+                       aPos[aCurIdxSet[i]]++;\r
+       }\r
+       else{\r
+               for(var i=0;i<nLength;i++)\r
+                       aPos[aCurIdxSet[i]]--;\r
+       }\r
+}\r
+\r
+function getDef(aDataCon,nIdxSet,nIIdx)\r
+{\r
+       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
+               return aDataCon[nIdxSet].aKs[nIIdx].sDef;\r
+       else\r
+               return null;\r
+}\r
+\r
+function getItemName(aDataCon,nIdxSet,nIIdx)\r
+{\r
+       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
+               return aDataCon[nIdxSet].aKs[nIIdx].sName;\r
+       else\r
+               return null;\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if(gsBgImage&&gsBgImage.length>0)\r
+               document.body.background=gsBgImage;\r
+       if(gsBgColor&&gsBgColor.length>0)\r
+               document.body.bgColor=gsBgColor;\r
+       document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv());\r
+       loadGlo();\r
+       var oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function loadGlo()\r
+{\r
+       if(!gbReady)\r
+       {\r
+               var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
+               if(SendMessage(oResMsg)&&oResMsg.oParam)\r
+               {\r
+                       gbReady=true;\r
+                       var oProj=oResMsg.oParam;\r
+                       var aProj=oProj.aProj;\r
+                       gbXML=oProj.bXML;\r
+                       if(aProj.length>0)\r
+                       {\r
+                               var sLangId=aProj[0].sLangId;\r
+                               for(var i=0;i<aProj.length;i++)\r
+                               {\r
+                                       if(aProj[i].sGlo&&aProj[i].sLangId==sLangId)\r
+                                               addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sGlo);\r
+                               }\r
+                       }\r
+                       writeDataIFrame();\r
+                       enEvt();\r
+               }               \r
+       }\r
+}\r
+\r
+function findCKInDom()\r
+{\r
+       return true;\r
+}\r
+\r
+function GloWriteClassStyle()\r
+{\r
+       var sStyle="<STYLE TYPE='text/css'>\n";\r
+       if (gsBgImage)\r
+               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
+       else\r
+               sStyle+="body {border-top:black 1px solid;}\n";\r
+       sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";margin-left:"+gsIndent+";}\n";\r
+       sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:active {background-color:"+gsActiveBgColor+";}\n";\r
+       sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
+       sStyle+="</STYLE>";     \r
+       document.write(sStyle);\r
+}\r
+\r
+function window_Unload()\r
+{\r
+       UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
+       UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       if(oMsg)\r
+       {\r
+               var nMsgId=oMsg.nMessageId;\r
+               if(nMsgId==WH_MSG_SHOWGLO)\r
+               {\r
+                       if(!gbNav6)\r
+                               document.body.focus();\r
+               }\r
+               else if(nMsgId==WH_MSG_PROJECTREADY)\r
+               {\r
+                       loadGlo();\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+if (window.gbWhUtil&&window.gbWhProxy&&window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhHost)\r
+{\r
+       RegisterListener2(this,WH_MSG_PROJECTREADY);\r
+       RegisterListener2(this,WH_MSG_SHOWGLO);\r
+       goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
+       goHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
+       window.onload=window_OnLoad;\r
+       window.onbeforeunload=window_BUnload;\r
+       window.onunload=window_Unload;\r
+       gbWhGHost=true;\r
+}\r
+else\r
+       document.location.reload();\r
+\r
diff --git a/doc/salome/gui/GAUSS/whhost.js b/doc/salome/gui/GAUSS/whhost.js
new file mode 100644 (file)
index 0000000..5a02374
--- /dev/null
@@ -0,0 +1,1305 @@
+//     WebHelp 5.10.002\r
+var gaChunks=new Array();\r
+var gaFakes=new Array();\r
+var gaDataCon=null;\r
+var gaData=new Array();\r
+\r
+var gbFindCK=false;;\r
+var gbNeedCalc=false;\r
+var gbScrl=false;\r
+var gbProcess=false;\r
+var gbReady=false;\r
+\r
+var gnCheck=0;\r
+var gnNum=0;\r
+var gnIns=-1;\r
+var gnLoad=0;\r
+var gnRef=-1;\r
+var gnMaxItems=0;\r
+var gnMaxMargin=32000;\r
+var gnNeeded=0;\r
+var gnNKI=-1;\r
+var gnRE=0;\r
+var gnScrlMgn=30;\r
+var gnSE=0;\r
+var gnVisible=0;\r
+var gnItems=0;\r
+var gnUHeight=1;\r
+\r
+var gsBCK=null;\r
+var gsChK=null;\r
+var gsCK=null;\r
+var gsLoadingDivID="LoadingDiv";\r
+var gsLoadingMsg="Loading data, please wait...";\r
+var gsSKA=null;\r
+var gsSKB=null;\r
+\r
+var gbLoadInfo=false;\r
+\r
+function onLoadXMLError()\r
+{\r
+       if(gbLoadInfo)\r
+       {\r
+               var aChunk=new Array();\r
+               projReady(aChunk);\r
+       }\r
+       else\r
+       {\r
+               var aData=new Array();\r
+               putData(aData);\r
+       }\r
+}\r
+\r
+function putDataXML(xmlDoc,sDocPath)\r
+{\r
+       if(gbLoadInfo)\r
+       {\r
+               var node=xmlDoc.lastChild;\r
+               if(node)\r
+               {\r
+                       var nTotal=0\r
+                       var aChunk=new Array();\r
+                       var oC=node.firstChild;\r
+                       while(oC)\r
+                       {\r
+                               if(oC.nodeName=="chunkinfo")\r
+                               {\r
+                                       var item=new Object();\r
+                                       item.sBK=oC.getAttribute("first");\r
+                                       item.sEK=oC.getAttribute("last");\r
+                                       item.sFileName=oC.getAttribute("url");\r
+                                       item.nNum=parseInt(oC.getAttribute("num"));\r
+                                       nTotal+=item.nNum;\r
+                                       item.nTotal=nTotal;\r
+                                       aChunk[aChunk.length]=item;\r
+                               }\r
+                               oC=oC.nextSibling;\r
+                       }\r
+                       projReady(aChunk);\r
+               }\r
+       }\r
+       else\r
+       {\r
+               var node=xmlDoc.lastChild;\r
+               if(node)\r
+               {\r
+                       var aData=new Array();\r
+                       var nPrev=0;\r
+                       var nNext=0;\r
+                       var oC=node.firstChild;\r
+                       while(oC)\r
+                       {\r
+                               nPrev=nNext;\r
+                               if(oC.nodeName=="key")\r
+                               {\r
+                                       var sName=oC.getAttribute("name");\r
+                                       if(sName&&sName.length>0)\r
+                                       {\r
+                                               var sTarget=oC.getAttribute("target");\r
+                                               var item=new Object();\r
+                                               item.nType=2;\r
+                                               item.sName=sName;\r
+                                               if(sTarget)\r
+                                                       item.sTarget=sTarget;\r
+                                               item.nPKOff=nPrev;\r
+                                               aData[aData.length]=item;\r
+                                               var nCurIndex=aData.length;\r
+                                               processKey(oC,aData,item);\r
+                                               nNext=aData.length-nCurIndex;\r
+                                               item.nNKOff=nNext;\r
+                                       }\r
+                               }\r
+                               else if(oC.nodeName=="letter")\r
+                               {\r
+                                       var name=oC.getAttribute("name");\r
+                                       if(name&&name.length>0)\r
+                                       {\r
+                                               var item=new Object();\r
+                                               item.nType=1;\r
+                                               item.sName=name;\r
+                                               item.nPKOff=nPrev;\r
+                                               nNext=0;\r
+                                               item.nNKOff=nNext;\r
+                                               aData[aData.length]=item;\r
+                                       }\r
+                               }\r
+                               else if(oC.nodeName=="entry")\r
+                               {\r
+                                       var name=oC.getAttribute("name");\r
+                                       var def=oC.getAttribute("value");\r
+                                       if(name&&name.length>0)\r
+                                       {\r
+                                               var item=new Object();\r
+                                               item.sName=name;\r
+                                               item.sDef=def;\r
+                                               item.nPKOff=nPrev;\r
+                                               nNext=0;\r
+                                               item.nNKOff=nNext;\r
+                                               aData[aData.length]=item;\r
+                                       }\r
+                               }\r
+                               oC=oC.nextSibling;\r
+                       }\r
+                       putData(aData);\r
+               }\r
+       }\r
+}\r
+\r
+function processKey(element,aData,item)\r
+{\r
+       var i=0;\r
+       var nPrev=0;\r
+       var nNext=0;\r
+       var oC=element.firstChild;\r
+       while(oC)\r
+       {\r
+               if(oC.nodeName=="topic")\r
+               {\r
+                       var name=oC.getAttribute("name");\r
+                       var url=oC.getAttribute("url");\r
+                       if(url&&url.length!=0)\r
+                       {\r
+                               if(!name||name.length==0)\r
+                                       name=url;\r
+                               var topic=new Object();\r
+                               topic.sName=name;\r
+                               topic.sURL=url;\r
+                               if(!item.aTopics)\r
+                                       item.aTopics=new Array();\r
+                               item.aTopics[item.aTopics.length]=topic;\r
+                       }\r
+               }\r
+               else if(oC.nodeName=="key")\r
+               {\r
+                       nPrev=nNext;\r
+                       var name=oC.getAttribute("name");\r
+                       if(name&&name.length!=0)\r
+                       {\r
+                               var subItem=new Object();\r
+                               subItem.sName=name;\r
+                               subItem.nType=3;\r
+                               subItem.nPKOff=nPrev;\r
+                               aData[aData.length]=subItem;\r
+                               var nCurIndex=aData.length;\r
+                               processKey(oC,aData,subItem);\r
+                               nNext=aData.length-nCurIndex;\r
+                               subItem.nNKOff=nNext;\r
+                       }\r
+               }\r
+               oC=oC.nextSibling;\r
+       }\r
+}\r
+\r
+function putData(aData)\r
+{\r
+       endLoading();\r
+       var oCData=goCData;\r
+       if(oCData)\r
+       {\r
+               oCData.aKs=aData;\r
+               if(gnNKI==-1)\r
+                       setTimeout("checkReady();",1);\r
+               else\r
+               {\r
+                       gsSKA=getKByIdx(oCData,gnNKI);\r
+                       gbNeedCalc=true;\r
+                       gbScrl=true;\r
+                       gnNKI=-1;\r
+                       if(gsSKA)\r
+                               setTimeout("checkReady();",1);\r
+                       else\r
+                       {\r
+                               markEnd();\r
+                               setTimeout("checkAgain();",50);\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function markEnd()\r
+{\r
+       if(gbProcess)\r
+               gbProcess=false;\r
+}\r
+\r
+function endLoading()\r
+{\r
+       var oDiv=getElement(gsLoadingDivID);\r
+       if(oDiv)\r
+               oDiv.style.visibility="hidden";\r
+}\r
+\r
+function markBegin()\r
+{\r
+       gbProcess=true;\r
+}\r
+\r
+function beginLoading()\r
+{\r
+       var oDiv=getElement(gsLoadingDivID);\r
+       if(oDiv)\r
+       {\r
+               oDiv.style.top=document.body.scrollTop;\r
+               oDiv.style.visibility="visible";\r
+       }\r
+}\r
+\r
+function indexHTMLPart()\r
+{\r
+       this.sHTML="";\r
+       this.nNeeded=0;\r
+       this.nCurrent=0;\r
+       this.nConsumed=0;\r
+       this.sFK=null;\r
+       this.sLK=null;\r
+       this.addHTML=function(sHTML,nConsumed,bDown,bK,sK){\r
+               if(bDown)\r
+                       this.sHTML+=sHTML;\r
+               else\r
+                       this.sHTML=sHTML+this.sHTML;\r
+               this.nCurrent++;                        \r
+               this.nConsumed+=nConsumed;\r
+               if(bK)\r
+               {\r
+                       if(!this.sFK)\r
+                               this.sFK=sK;\r
+                       if(!this.sLK)\r
+                               this.sLK=sK;\r
+                       if(bDown)\r
+                               this.sLK=sK;\r
+                       else\r
+                               this.sFK=sK;\r
+               }\r
+       }\r
+       this.appendHTML=function(oHTML,bDown){\r
+               this.addSubHTML(oHTML,bDown);\r
+               if(!this.sFK)\r
+                       this.sFK=oHTML.sFK;\r
+               if(!this.sLK)\r
+                       this.sLK=oHTML.sLK;\r
+               if(bDown)\r
+                       this.sLK=oHTML.sLK;\r
+               else\r
+                       this.sFK=oHTML.sFK;\r
+       }       \r
+       \r
+       this.addSubHTML=function(oHTML,bDown){\r
+               if(bDown)\r
+                       this.sHTML+=oHTML.sHTML;\r
+               else\r
+                       this.sHTML=oHTML.sHTML+this.sHTML;\r
+               this.nCurrent+=oHTML.nCurrent;\r
+               this.nConsumed+=oHTML.nConsumed;                        \r
+       }\r
+}\r
+\r
+function getMaxUnits()\r
+{\r
+       return Math.floor(gnMaxMargin/gnUHeight)+1;\r
+}\r
+\r
+function getFakeItemsHTMLbyCount(nB,nCount)\r
+{\r
+       var nMU=getMaxUnits();\r
+       var nNum=Math.floor(nCount/nMU);\r
+       var sHTML="";\r
+       for(var i=0;i<nNum;i++)\r
+               sHTML+=getFakeItemHTML(nB,nMU-1);\r
+               \r
+       var nRest=nCount%nMU;\r
+       sHTML+=getFakeItemHTML(nB,nRest-1);\r
+       return sHTML;\r
+}\r
+\r
+function getFakeItemHTML(nB,nNum)\r
+{\r
+       return "<h6 name=fk"+nB+" id=fk"+nB+" style=\"margin-top:"+gnUHeight*nNum+";margin-bottom:0\">&nbsp;</h6>";\r
+}\r
+\r
+function fakeItemsArea(nB,n,sKA,sKB,obj)\r
+{\r
+       this.nB=nB;\r
+       this.nNum=n;\r
+       this.sKA=sKA;\r
+       this.sKB=sKB;\r
+       this.obj=obj;\r
+       this.nMargin=(n-1)*gnUHeight;\r
+\r
+       this.setNum=function(n)\r
+       {\r
+               var nLastobj=-1;\r
+               var nDelta=this.nMargin;\r
+               this.nMargin=(n-1)*gnUHeight;\r
+               nDelta=nDelta-this.nMargin;\r
+               if(n>0)\r
+               {\r
+                       this.nNum=n;\r
+                       var nMU=getMaxUnits();\r
+                       nLastobj=Math.floor((n-1)/nMU);\r
+                       if(this.obj.length)\r
+                               this.obj[nLastobj].style.marginTop=((n-1)%nMU)*gnUHeight;\r
+                       else\r
+                               this.obj.style.marginTop=((n-1)%nMU)*gnUHeight;\r
+               }\r
+               if(this.obj.length)\r
+               {\r
+                       for(var i=this.obj.length-1;i>nLastobj;i--)\r
+                               removeThis(this.obj[i]);\r
+               }\r
+               else\r
+               {\r
+                       if(nLastobj==-1)\r
+                               removeThis(this.obj);\r
+               }\r
+               return nDelta;\r
+       }\r
+       this.insertAdjacentHTML=function(sWhere,sHTML)\r
+       {\r
+               if(sWhere=="beforeBegin")\r
+               {\r
+                       if(this.obj.length)\r
+                               this.obj[0].insertAdjacentHTML(sWhere,sHTML);\r
+                       else\r
+                               this.obj.insertAdjacentHTML(sWhere,sHTML);\r
+               }\r
+               else if(sWhere=="afterEnd")\r
+               {\r
+                       if(this.obj.length)\r
+                       {\r
+                               if(gbMac&&gbIE5&&this.obj[this.obj.length-1].nextSibling)\r
+                                       this.obj[this.obj.length-1].nextSibling.insertAdjacentHTML("beforeBegin",sHTML);\r
+                               else\r
+                                       this.obj[this.obj.length-1].insertAdjacentHTML(sWhere,sHTML);\r
+                       }\r
+                       else\r
+                       {\r
+                               if(gbMac&&gbIE5&&this.obj.nextSibling)\r
+                                       this.obj.nextSibling.insertAdjacentHTML("beforeBegin",sHTML);\r
+                               else\r
+                                       this.obj.insertAdjacentHTML(sWhere,sHTML);\r
+                       }\r
+               }\r
+       }\r
+       this.getBtm=function()\r
+       {\r
+               if(this.obj.length)\r
+                       return this.obj[this.obj.length-1].offsetTop;\r
+               else\r
+                       return this.obj.offsetTop;\r
+       }\r
+       this.getTop=function()\r
+       {\r
+               return this.getBtm()-this.nMargin;\r
+       }\r
+}\r
+\r
+function usedItems(nB,nE)\r
+{\r
+       this.nB=nB;\r
+       this.nE=nE;\r
+       this.oN=null;\r
+}\r
+\r
+function checkReady()\r
+{\r
+       var len=gaChunks.length;\r
+       var bNeedLoad=false;\r
+       var aDataCon;\r
+       var s=0;\r
+       var bDown=(gsSKB==null);\r
+       var sK=bDown?gsSKA:gsSKB;\r
+       if(sK==null)\r
+       {\r
+               markEnd();\r
+               setTimeout("checkAgain();",50);\r
+               return;\r
+       }\r
+       if(!gsChK||sK!=gsChK||gnNum==0)\r
+       {\r
+               gnCheck=0;\r
+               gsChK=sK;\r
+               aDataCon=new Array();\r
+       }\r
+       else{\r
+               s=gnNum;\r
+               aDataCon=gaDataCon;\r
+       }\r
+       for(var i=gnCheck;i<len;i++)\r
+       {\r
+               var oCData=getChunkedData(i,bDown,sK);\r
+               if(oCData)\r
+               {\r
+                       if(!oCData.aKs&&oCData.sFileName!=null)\r
+                       {\r
+                               bNeedLoad=true;\r
+                               goCData=oCData;\r
+                               gnNum=s;\r
+                               gnCheck=i;\r
+                               gaDataCon=aDataCon;\r
+                               oCData.nProjId=i;\r
+                               gbLoadInfo=false;\r
+                               beginLoading();\r
+                               loadData2(gaData[i].sPPath+gaData[i].sDPath+oCData.sFileName);\r
+                               return;\r
+                       }\r
+                       else{\r
+                               aDataCon[s++]=oCData;\r
+                       }\r
+               }\r
+       }\r
+       if(!bNeedLoad)\r
+       {\r
+               gnNum=0;\r
+               gsSKA=gsSKB=gsShowK=null;\r
+               \r
+               var oHTML=new indexHTMLPart();\r
+               var aPos=new Array();\r
+               var aOriPos=new Array();\r
+               var aMaxPos=new Array();\r
+               var aMinPos=new Array();\r
+               \r
+               if(gbNeedCalc||gbFindCK) gnIns=0;\r
+               for(i=0;i<aDataCon.length;i++)\r
+               {\r
+                       aPos[i]=getIdxPos(aDataCon[i],bDown,sK);\r
+                       if(gbNeedCalc||gbFindCK)\r
+                       {\r
+                               gnIns+=aPos[i]+aDataCon[i].nTotal-aDataCon[i].nNum;\r
+                               if(!bDown)\r
+                               {\r
+                                       if(aPos[i]!=-1)\r
+                                       {\r
+                                               if(aDataCon[i].aKs)\r
+                                                       gnIns+=aDataCon[i].aKs[aPos[i]].nNKOff;\r
+                                               else\r
+                                               {\r
+                                                       var n=aPos[i]+1;\r
+                                                       while(n<aDataCon[i].aKsOnly.length&&!aDataCon[i].aKsOnly[n])\r
+                                                               n++;\r
+                                                       n=n-aPos[i]-1;\r
+                                                       gnIns+=n;\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }\r
+                       aOriPos[i]=aPos[i];\r
+                       getLimit(aDataCon,aPos,aMaxPos,aMinPos,i);\r
+               }\r
+               if((gbNeedCalc||gbFindCK)&&!bDown&&gnIns!=-1)\r
+               {\r
+                       gnIns+=(aDataCon.length-1)\r
+               }\r
+               if(gnIns!=-1||gbFindCK)\r
+               {\r
+                       oHTML.nNeeded=gnNeeded;\r
+                       var bDone=writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,1);\r
+                       if(oHTML.nConsumed!=0)\r
+                       {\r
+                               var nB;\r
+                               if(!bDown)\r
+                                       nB=gnIns-oHTML.nConsumed+1;\r
+                               else\r
+                                       nB=gnIns;\r
+                                       \r
+                               var oldScrollPos=document.body.scrollTop;\r
+                               if(insertIdxKs(nB,oHTML,gbScrl))\r
+                               {\r
+                                       updateUsedK(aDataCon,aOriPos,aPos,bDown);\r
+                                       if(!gbScrl&&gbMac)\r
+                                       {\r
+                                               while(document.body.scrollTop!=oldScrollPos)\r
+                                                       document.body.scrollTop=oldScrollPos;\r
+                                       }\r
+                                       gbScrl=false;\r
+                               }\r
+                               if(gbFindCK)\r
+                               {\r
+                                       gbFindCK=false;\r
+                                       gbNeedCalc=true;\r
+                                       gsSKB=oHTML.sFK;\r
+                                       gnIns=-1;\r
+                                       setTimeout("checkReady();",50);\r
+                                       return;\r
+                               }\r
+                       }\r
+                       else if(gbFindCK)\r
+                       {\r
+                               gbFindCK=false;\r
+                               gbNeedCalc=true;\r
+                               gsSKB=getFirstKeyFromPos(aDataCon,aPos);\r
+                               gnIns=-1;\r
+                               setTimeout("checkReady();",50);\r
+                               return;\r
+                       }\r
+                       if(!findCKInDom()) return;\r
+\r
+                       gnNeeded=gnNeeded-oHTML.nCurrent;\r
+                       gnIns=-1;\r
+                       markEnd();\r
+                       setTimeout("checkAgain();",50);\r
+                       gbNeedCalc=false;\r
+               }\r
+               else\r
+               {\r
+                       if(!findCKInDom()) return;\r
+                       markEnd();\r
+                       setTimeout("checkAgain();",50);\r
+               }\r
+       }\r
+}\r
+\r
+function getFirstKeyFromPos(aDataCon,aPos)\r
+{\r
+       var sCurrentK=getBiggestChar();\r
+       for(var i=0;i<aPos.length;i++)\r
+       {\r
+               if(aDataCon[i].aKs&&aDataCon[i].aKs.length>0&&aPos[i]>=0&&aPos[i]<aDataCon[i].aKs.length)\r
+               {\r
+                       if(sCurrentK==""||\r
+                               compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)\r
+                       {\r
+                               sCurrentK=aDataCon[i].aKs[aPos[i]].sName;\r
+                       }\r
+               }\r
+       }\r
+       return sCurrentK;\r
+}\r
+\r
+function checkAgain()\r
+{\r
+       if(!gbProcess)\r
+       {\r
+               if(gsBCK!=null)\r
+               {\r
+                       gsCK=gsBCK;\r
+                       gsBCK=null;\r
+                       findCK();\r
+               }\r
+               else\r
+               {\r
+                       markBegin();\r
+                       getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
+               }\r
+       }\r
+       else\r
+               setTimeout("checkAgain()",50);\r
+}\r
+\r
+function getLimit(aDataCon,aPos,aMaxPos,aMinPos,i)\r
+{\r
+       aMaxPos[i]=aDataCon[i].nNum;\r
+       aMinPos[i]=-1;\r
+       var oPNode=null;\r
+       if(aDataCon[i].oUsedItems)\r
+       {\r
+               var oUsedItems=aDataCon[i].oUsedItems;\r
+               do{\r
+                       if(oUsedItems.nB>aPos[i])\r
+                       {\r
+                               aMaxPos[i]=oUsedItems.nB;\r
+                               break;\r
+                       }\r
+                       oPNode=oUsedItems;\r
+                       oUsedItems=oUsedItems.oN;\r
+               }while(oUsedItems!=null);\r
+               if(oPNode)\r
+                       aMinPos[i]=oPNode.nE;\r
+       }\r
+       else if(aDataCon[i].aKs==null)\r
+       {\r
+               aMaxPos[i]=aMinPos[i]=aPos[i];\r
+       }\r
+       if(aMinPos[i]>=aPos[i]||aMaxPos[i]<=aPos[i])\r
+       {\r
+               aMaxPos[i]=aMinPos[i]=aPos[i];\r
+       }\r
+}\r
+\r
+function getIdxPos(oIdx,bDown,sK)\r
+{\r
+       var aKs=oIdx.aKs;\r
+       var nIdx;\r
+       if(bDown)\r
+               nIdx=oIdx.nNum;\r
+       else\r
+               nIdx=-1;\r
+       if(aKs!=null)\r
+       {\r
+               for(var i=0;i<aKs.length;i++)\r
+               {       \r
+                       if(bDown)\r
+                       {\r
+                               if(compare(aKs[i].sName,sK)>0)\r
+                               {\r
+                                       nIdx=i;\r
+                                       break;\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               if(compare(aKs[i].sName,sK)<0)\r
+                                       nIdx=i;\r
+                               else\r
+                                       break;\r
+                       }\r
+                       i+=aKs[i].nNKOff;\r
+               }\r
+       }\r
+       else if(oIdx.aKsOnly)\r
+       {\r
+               var aKsOnly=oIdx.aKsOnly;\r
+               for(var i=0;i<aKsOnly.length;i++)\r
+               {       \r
+                       if(aKsOnly[i])\r
+                       {\r
+                               if(bDown)\r
+                               {\r
+                                       if(compare(aKsOnly[i],sK)>0)\r
+                                       {\r
+                                               nIdx=i;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                               else\r
+                               {\r
+                                       if(compare(aKsOnly[i],sK)<0)\r
+                                               nIdx=i;\r
+                                       else\r
+                                               break;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       return nIdx;\r
+}\r
+\r
+function writeItems(oHTML,aDataCon,aPos,aMinPos,aMaxPos,bDown,nLevel)\r
+{\r
+       var aOldPos=new Array();\r
+       for(var i=0;i<aPos.length;i++)\r
+       {\r
+               aOldPos[i]=aPos[i];\r
+       }\r
+       var p;\r
+       do{\r
+               var sCurrentK="";\r
+               var aCurIdxSet=new Array();\r
+               p=0;\r
+               for(i=0;i<aDataCon.length;i++)\r
+               {\r
+                       if(aDataCon[i].aKs&&aDataCon[i].aKs.length&&aPos[i]!=-1&&\r
+                               (bDown&&aPos[i]<aMaxPos[i])||(!bDown&&aPos[i]>aMinPos[i]))\r
+                       {\r
+                               if(sCurrentK==""||\r
+                                       (bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)>0)||\r
+                                       (!bDown&&compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)<0))\r
+                               {\r
+                                       sCurrentK=aDataCon[i].aKs[aPos[i]].sName;\r
+                                       p=0;\r
+                                       aCurIdxSet[p++]=i;\r
+                               }\r
+                               else if(compare(sCurrentK,aDataCon[i].aKs[aPos[i]].sName)==0){\r
+                                       aCurIdxSet[p++]=i;\r
+                               }\r
+                       }\r
+                       else if(nLevel==1&&aMaxPos[i]!=aMinPos[i]){\r
+                               if(bDown&&aPos[i]==aMaxPos[i])\r
+                               {\r
+                                       if(aDataCon[i].aKs)\r
+                                       {\r
+                                               gsSKA=aDataCon[i].aKs[aOldPos[i]].sName;\r
+                                               return false;\r
+                                       }\r
+                               }\r
+                               else if(!bDown&&aPos[i]==aMinPos[i])\r
+                               {\r
+                                       if(aDataCon[i].aKs)\r
+                                       {\r
+                                               gsSKB=aDataCon[i].aKs[aOldPos[i]].sName;\r
+                                               return false;\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+               if(p>=1){\r
+                       for(var s=0;s<p;s++)\r
+                       {\r
+                               aOldPos[aCurIdxSet[s]]=aPos[aCurIdxSet[s]];\r
+                       }\r
+                       mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,p,aPos,nLevel);\r
+                       adjustPosition(bDown,aDataCon,aCurIdxSet,p,aPos);\r
+                       \r
+                       if(nLevel==1&&oHTML.nNeeded<=oHTML.nCurrent){\r
+                               return true;\r
+                       }\r
+               }\r
+       }while(p>0);\r
+       return true;\r
+}\r
+\r
+function updateUsedK(aDataCon,aOriPos,aOldPos,bDown)\r
+{\r
+       for(var i=0;i<aDataCon.length;i++)\r
+       {\r
+               if (aOldPos[i]!=aOriPos[i])\r
+               {\r
+                       var nBP=0;\r
+                       var nEP=0;\r
+                       if(bDown)\r
+                       {\r
+                               nBP=aOriPos[i];\r
+                               nEP=aOldPos[i]-1;\r
+                       }\r
+                       else\r
+                       {\r
+                               if (aOldPos[i]!=-1)\r
+                                       nBP=aOldPos[i]+aDataCon[i].aKs[aOldPos[i]].nNKOff+1;\r
+                               else\r
+                                       nBP=0;\r
+                               nEP=aOriPos[i]+aDataCon[i].aKs[aOriPos[i]].nNKOff;\r
+                       }\r
+                       if(nBP<=nEP)\r
+                       {\r
+                               setContentsUsed(aDataCon[i],nBP,nEP);\r
+                               \r
+                               var oFirstPair=aDataCon[i].oUsedItems;\r
+                               if(oFirstPair.oN==null&&oFirstPair.nB==0&&oFirstPair.nE==aDataCon[i].nNum-1)\r
+                               {\r
+                                       storeKeysOnly(aDataCon[i]);\r
+                                       aDataCon[i].oUsedItems=aDataCon[i].aKs=aDataCon[i].sFileName=null;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function storeKeysOnly(oCData)\r
+{\r
+       oCData.aKsOnly=new Array();\r
+       for(var i=0;i<oCData.aKs.length;i++)\r
+       {\r
+               oCData.aKsOnly[i]=oCData.aKs[i].sName;\r
+               i+=oCData.aKs[i].nNKOff;\r
+       }\r
+}\r
+\r
+function setContentsUsed(oIdx,nB,nE)\r
+{\r
+       if(!oIdx.oUsedItems)\r
+               oIdx.oUsedItems=new usedItems(nB,nE);\r
+       else\r
+       {\r
+               var oUsedItems=oIdx.oUsedItems;\r
+               var oPNode=null;\r
+               do{\r
+                       if(oUsedItems.nB>nB)\r
+                       {\r
+                               if(oUsedItems.nB==nE+1)\r
+                               {\r
+                                       oUsedItems.nB=nB;\r
+                               }\r
+                               else{\r
+                                       var oNewNode=new usedItems(oUsedItems.nB,oUsedItems.nE);\r
+                                       oNewNode.oN=oUsedItems.oN;\r
+                                       oUsedItems.nB=nB;\r
+                                       oUsedItems.nE=nE;\r
+                                       oUsedItems.oN=oNewNode;\r
+                               }\r
+                               break;\r
+                       }\r
+                       oPNode=oUsedItems;\r
+                       oUsedItems=oUsedItems.oN;\r
+               }while(oUsedItems);\r
+               if(!oUsedItems)\r
+               {\r
+                       if(oPNode!=null)\r
+                               oPNode.oN=new usedItems(nB,nE);\r
+               }\r
+               if(oPNode!=null){\r
+                       if(oPNode.nE==oPNode.oN.nB-1)\r
+                       {\r
+                               oPNode.nE=oPNode.oN.nE;\r
+                               oPNode.oN=oPNode.oN.oN;\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function projInfo(sPPath,sDPath,sFile)\r
+{\r
+       this.sPPath=sPPath;\r
+       this.sDPath=sDPath;\r
+       this.sFile=sFile;\r
+}\r
+\r
+function addProjInfo(sPPath,sDPath,sFile)\r
+{\r
+       var oIdxInfo=new projInfo(sPPath,sDPath,sFile);\r
+       gaData[gaData.length]=oIdxInfo;\r
+       return oIdxInfo;\r
+}\r
+\r
+function writeDataIFrame()\r
+{\r
+       if(gnLoad<gaData.length)\r
+       {\r
+               gbLoadInfo=true;\r
+               loadData2(gaData[gnLoad].sPPath+gaData[gnLoad].sDPath+gaData[gnLoad].sFile);\r
+       }\r
+       else{\r
+               if(gnItems!=0)\r
+               {\r
+                       markBegin();\r
+                       writeFakeItems();\r
+                       gsSKA="";\r
+                       gnNeeded=gnVisible;\r
+                       gnIns=0;\r
+                       checkReady();\r
+               }\r
+       }\r
+}\r
+\r
+function getH6ById(nPos)\r
+{\r
+       if(document.all)\r
+               return document.all("fk"+nPos);\r
+       else if(document.getElementsByName)\r
+               return document.getElementsByName("fk"+nPos);\r
+       return null;            \r
+}\r
+\r
+function showItemsInEvaluation(nBP)\r
+{\r
+       var bRtn=true;\r
+       var fPer=nBP/gnItems;\r
+       var nB=Math.floor(fPer*gnMaxItems);\r
+       var oCData=getChunkByIdx(gnRef,nB);\r
+       if(oCData)\r
+       {\r
+               if(!oCData.aKs&&oCData.sFileName!=null)\r
+               {\r
+                       gnNKI=nB;\r
+                       goCData=oCData;\r
+                       oCData.nProjId=gnRef;\r
+                       gbLoadInfo=false;\r
+                       beginLoading();\r
+                       loadData2(gaData[gnRef].sPPath+gaData[gnRef].sDPath+oCData.sFileName);\r
+               }\r
+               else{\r
+                       gsSKA=getKByIdx(oCData,nB);\r
+                       if(gsSKA)\r
+                       {\r
+                               gsSKB=null;\r
+                               gbNeedCalc=true;\r
+                               gbScrl=true;\r
+                               checkReady()\r
+                       }\r
+                       else\r
+                       {\r
+                               markEnd();\r
+                               bRtn=false;\r
+                       }\r
+               }\r
+       }\r
+       else\r
+       {\r
+               markEnd();\r
+               bRtn=false;\r
+       }\r
+       return bRtn;\r
+}\r
+\r
+function isUsed(oCData,nPos)\r
+{\r
+       var oUsed=oCData.oUsedItems;\r
+       while(oUsed&&oUsed.nB<=nPos)\r
+       {\r
+               if(oUsed.nE>=nPos) return true;\r
+               oUsed=oUsed.oN;\r
+       }\r
+       return false;\r
+}\r
+\r
+function getKByIdx(oCData,nB)\r
+{\r
+       var nRelPos=nB-(oCData.nTotal-oCData.nNum);\r
+       var aIKs=oCData.aKs;\r
+       if(nRelPos>=0&&aIKs&&nRelPos<aIKs.length)\r
+       {\r
+               var oK=null;\r
+               do{\r
+                       oK=aIKs[nRelPos++];\r
+               }       \r
+               while((oK.nType==3||isUsed(oCData,nRelPos-1))&&nRelPos<aIKs.length);\r
+               if(oK.nType!=3)\r
+               {\r
+                       return oK.sName;\r
+               }\r
+               else{\r
+                       nRelPos=nB-(oCData.nTotal-oCData.nNum)-1;\r
+                       if(nRelPos>=0)\r
+                       {\r
+                               do{\r
+                                       oK=aIKs[nRelPos--];\r
+                               }\r
+                               while((oK.nType==3||isUsed(oCData,nRelPos+1))&&nRelPos>=0);\r
+                       }\r
+                       if(oK.nType!=3)\r
+                       {\r
+                               return oK.sName;\r
+                       }\r
+               }\r
+       }\r
+       return null;\r
+}\r
+\r
+function loadData2(sFileName)\r
+{\r
+       disEvt();\r
+       if(gbXML)\r
+               loadDataXML(sFileName);\r
+       else\r
+               loadData(sFileName);\r
+       enEvt();\r
+}\r
+\r
+function projReady(aChunk)\r
+{\r
+       gaChunks[gnLoad++]=aChunk;\r
+       var len=aChunk.length;\r
+       var nTotal=0;\r
+       if(len>0)\r
+               nTotal=aChunk[len-1].nTotal;\r
+       gnItems+=nTotal;\r
+       if(nTotal>gnMaxItems)\r
+       {\r
+               gnMaxItems=nTotal;\r
+               gnRef=gnLoad-1;\r
+       }\r
+       setTimeout("writeDataIFrame();",1);\r
+}\r
+\r
+function writeFakeItems()\r
+{\r
+       disEvt();\r
+       gnUHeight=15;\r
+       var sHTML=getFakeItemsHTMLbyCount(0,gnItems);\r
+       document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
+       var obj=getH6ById(0);\r
+       if (document.body != null)\r
+       {\r
+               gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);\r
+       }\r
+       gaFakes[0]=new fakeItemsArea(0,gnItems,"",getEndString(),obj);\r
+       enEvt();\r
+}\r
+\r
+function getEndString()\r
+{\r
+       var sBC=getBiggestChar();\r
+       return sBC+sBC+sBC+sBC+sBC+sBC+sBC+sBC;\r
+}\r
+\r
+function getUnitIdx(nScrl,nHeight)\r
+{\r
+       if(gaFakes.length==0)\r
+       {\r
+               markEnd();\r
+               return;\r
+       }\r
+       var nB=0;\r
+       var nE=gaFakes.length-1;\r
+       var nM=-1;\r
+       var nTop=0;\r
+       var nBtm=0;\r
+       var bF=false;\r
+       do{\r
+               nM=(nB+nE)>>1;\r
+               nBtm=gaFakes[nM].getBtm();\r
+               nTop=gaFakes[nM].getTop();\r
+                       \r
+               if(nTop>=nScrl+nHeight)\r
+                       nE=nM-1;\r
+               else if(nBtm<nScrl)\r
+                       nB=nM+1;\r
+               else{\r
+                       bF=true;\r
+                       break;\r
+               }\r
+       }while(nE>=nB);\r
+       if(bF)\r
+       {\r
+               if(nTop>=nScrl){\r
+                       gsSKA=gaFakes[nM].sKA;\r
+                       gsSKB=null;\r
+                       gnNeeded=Math.ceil((nHeight-nTop+nScrl)/gnUHeight);\r
+                       gnIns=gaFakes[nM].nB;\r
+                       checkReady();\r
+               }\r
+               else if(nBtm<=nScrl+nHeight){\r
+                       gsSKB=gaFakes[nM].sKB;\r
+                       gsSKA=null;\r
+                       gnNeeded=Math.ceil((nBtm-nScrl+gnScrlMgn)/gnUHeight);\r
+                       gbNeedCalc=true;\r
+                       checkReady();\r
+               }\r
+               else{\r
+                       gnNeeded=gnVisible;\r
+                       var nUnitIdx=gaFakes[nM].nB+Math.floor((nScrl-nTop)/gnUHeight);\r
+                       if (!showItemsInEvaluation(nUnitIdx))\r
+                       {\r
+                               gsSKA=gaFakes[nM].sKA;\r
+                               gsSKB=null;\r
+                               gnNeeded=Math.ceil(nHeight/gnUHeight);\r
+                               gnIns=gaFakes[nM].nB;\r
+                               checkReady();\r
+                       }\r
+               }\r
+       }\r
+       else\r
+               markEnd();\r
+}\r
+\r
+function disEvt()\r
+{\r
+       window.onscroll=null;\r
+       window.onresize=null;\r
+}\r
+\r
+function enEvt()\r
+{\r
+       window.onscroll=window_OnScroll;\r
+       window.onresize=window_OnResize;\r
+}\r
+\r
+function insertIdxKs(nIns,oHTML,bScrl)\r
+{\r
+       var bRtn=true;\r
+       disEvt();\r
+       var nCount=oHTML.nConsumed;\r
+       var nB=0;\r
+       var nE=gaFakes.length-1;\r
+       var nM=-1;\r
+       var bF=false;\r
+       do{\r
+               nM=(nB+nE)>>1;\r
+               if(gaFakes[nM].nB>nIns)\r
+                       nE=nM-1;\r
+               else if(gaFakes[nM].nB+gaFakes[nM].nNum<=nIns)\r
+                       nB=nM+1;\r
+               else{\r
+                       bF=true;\r
+                       break;\r
+               }\r
+       }while(nE>=nB);\r
+       if(bF)\r
+       {\r
+               var oFIA=gaFakes[nM];\r
+               var nOffsetTop=oFIA.getTop();\r
+               var nOffsetBottom=oFIA.getBtm();\r
+               var nDelta=0;\r
+               var nHDiff=nIns-oFIA.nB;\r
+               var nTDiff=oFIA.nNum+oFIA.nB-(nIns+nCount);\r
+               if(nHDiff>0)\r
+               {\r
+                       nDelta=oFIA.setNum(nHDiff);\r
+                       var sOldKBefore=oFIA.sKB;\r
+                       oFIA.sKB=oHTML.sFK;\r
+                       if(nTDiff>0)\r
+                       {\r
+                               var sHTML=getFakeItemsHTMLbyCount(nIns,nTDiff);\r
+                               oFIA.insertAdjacentHTML("afterEnd",sHTML);\r
+                               var obj=getH6ById(nIns);\r
+                               insertItemIntoArray(gaFakes,nM+1,new fakeItemsArea(nIns+nCount,nTDiff,oHTML.sLK,sOldKBefore,obj));\r
+                       }\r
+                       oFIA.insertAdjacentHTML("afterEnd",oHTML.sHTML);        \r
+                       if(bScrl)\r
+                       {\r
+                               if(gbMac&&gbIE4)\r
+                               {\r
+                                       var nScrollPos=nOffsetBottom-nDelta;\r
+                                       while(document.body.scrollTop!=nScrollPos)\r
+                                               document.body.scrollTop=nScrollPos;\r
+                               }\r
+                               else\r
+                                       window.scrollTo(0,nOffsetBottom-nDelta);\r
+                       }\r
+               }\r
+               else{\r
+                       oFIA.insertAdjacentHTML("beforeBegin",oHTML.sHTML);\r
+                       if(bScrl){\r
+                               if(gbMac&&gbIE4)\r
+                               {\r
+                                       var nScrollPos=nOffsetTop;\r
+                                       while(document.body.scrollTop!=nScrollPos)\r
+                                               document.body.scrollTop=nScrollPos;\r
+                               }\r
+                               else\r
+                                       window.scrollTo(0,nOffsetTop);\r
+                       }\r
+                                       \r
+                       if(nTDiff>0)\r
+                       {\r
+                               oFIA.nB=nIns+nCount;\r
+                               nDelta=oFIA.setNum(nTDiff);\r
+                               oFIA.sKA=oHTML.sLK;\r
+                       }       \r
+                       else{\r
+                               gaFakes[nM].setNum(0);\r
+                               removeItemFromArray(gaFakes,nM);\r
+                       }\r
+               }\r
+       }\r
+       else\r
+               bRtn=false;\r
+       enEvt();\r
+       return bRtn;\r
+}\r
+\r
+function window_OnScroll()\r
+{\r
+       gnSE++;\r
+       setTimeout("procScroll();",50); \r
+}\r
+\r
+function procScroll()\r
+{\r
+       if(gnSE==1&&!gbProcess)\r
+       {\r
+               markBegin();\r
+               getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
+       }\r
+       gnSE--;\r
+}\r
+\r
+function window_OnResize()\r
+{\r
+       gnRE++;\r
+       setTimeout("procResize();",50);\r
+}\r
+\r
+function procResize()\r
+{\r
+       if(gnRE==1&&!gbProcess)\r
+       {\r
+               markBegin();\r
+               gnVisible=Math.ceil(document.body.clientHeight/gnUHeight);\r
+               if(gnIns==-1)\r
+                       getUnitIdx(document.body.scrollTop,document.body.clientHeight);\r
+       }\r
+       gnRE--;\r
+}\r
+\r
+function getChunkByIdx(nIdx,nPosition)\r
+{\r
+       var oCData=null;\r
+       if(nIdx<gaChunks.length)\r
+       {\r
+               var len=gaChunks[nIdx].length;\r
+               if(len>0)\r
+               {\r
+                       var nB=0;\r
+                       var nE=len-1;\r
+                       var bF=false;\r
+                       do{\r
+                               var nM=(nB+nE)>>1;\r
+                               if(nPosition<gaChunks[nIdx][nM].nTotal)\r
+                               {\r
+                                       bF=true;\r
+                                       nE=nM;\r
+                               }\r
+                               else\r
+                                       nB=nM+1;\r
+                       }while(nE>nB);\r
+                       if(bF)\r
+                               oCData=gaChunks[nIdx][nE];\r
+                       else if(nPosition<gaChunks[nIdx][nB].nTotal)\r
+                               oCData=gaChunks[nIdx][nB];\r
+               }\r
+       }\r
+       return oCData;\r
+}\r
+\r
+function getChunkedData(nIdx,bDown,sK)\r
+{\r
+       var oCData=null;\r
+       var nCandId=-1;\r
+       if(nIdx<gaChunks.length)\r
+       {\r
+               var len=gaChunks[nIdx].length;\r
+               if(len>0)\r
+               {\r
+                       var nB=0;\r
+                       var nE=len-1;\r
+                       var bF=false;\r
+                       do{\r
+                               var nM=(nB+nE+(bDown?0:1))>>1;\r
+                               if(bDown)\r
+                               {\r
+                                       if(compare(sK,gaChunks[nIdx][nM].sEK)<0)\r
+                                       {\r
+                                               bF=true;\r
+                                               nE=nM;\r
+                                       }\r
+                                       else\r
+                                               nB=nM+1;\r
+                               }\r
+                               else\r
+                               {\r
+                                       if(compare(sK,gaChunks[nIdx][nM].sBK)>0)\r
+                                       {\r
+                                               bF=true;\r
+                                               nB=nM;\r
+                                       }\r
+                                       else\r
+                                               nE=nM-1;\r
+                               }\r
+                       }while(nE>nB);\r
+                       if(bF)\r
+                       {\r
+                               if(bDown)\r
+                                       nCandId=nE;\r
+                               else\r
+                                       nCandId=nB;\r
+                       }\r
+                       else\r
+                       {\r
+                               if(bDown)\r
+                               {\r
+                                       if(gaChunks[nIdx].length>nB&&compare(sK,gaChunks[nIdx][nB].sEK)<0)\r
+                                               nCandId=nB;\r
+                                       else\r
+                                               nCandId=gaChunks[nIdx].length-1;\r
+                               }\r
+                               else\r
+                               {\r
+                                       if(0<=nE&&compare(sK,gaChunks[nIdx][nE].sBK)>0)\r
+                                               nCandId=nE;\r
+                                       else\r
+                                               nCandId=0;\r
+                               }\r
+                       }\r
+                       return gaChunks[nIdx][nCandId];\r
+               }\r
+       }\r
+       return null;\r
+}\r
+\r
+function findCK()\r
+{\r
+       if(gsCK!=null)\r
+       {\r
+               gsSKA=gsCK;\r
+               gbFindCK=true;\r
+               gnNeeded=1;\r
+               markBegin();\r
+               checkReady();\r
+       }\r
+}\r
+\r
+function writeLoadingDiv(nIIdx)\r
+{\r
+       return "<div id=\""+gsLoadingDivID+"\" style=\"position:absolute;top:0;left:0;z-index:600;visibility:hidden;padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
+}\r
+\r
+var gbWhHost=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whibody.htm b/doc/salome/gui/GAUSS/whibody.htm
new file mode 100644 (file)
index 0000000..a279fa8
--- /dev/null
@@ -0,0 +1,284 @@
+<html>\r
+<head>\r
+<title>Index content</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmozemu.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whlang.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whhost.js"></script>\r
+<script language="javascript1.2" src="whihost.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+var goPopup = null;\r
+var gbPopupMenuTimeoutExpired=false;\r
+var gBsClientWidth=640;\r
+var gBsClientHeight=480;\r
+var g_bIsPopupMenuInit=false;\r
+\r
+function WritePopupMenuLayer()\r
+{\r
+       if (!g_bIsPopupMenuInit)\r
+       {\r
+               document.write("<DIV ID='PopupMenu' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>");\r
+               document.write("<STYLE TYPE='text/css'>");\r
+               if (gbMac && gbIE4) {\r
+                       document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:10pt; text-decoration:none;}");\r
+                       document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:10pt; text-decoration:none;}");\r
+               } else {\r
+                       document.write(".PopupOver {font-family:'Arial'; color:white; background:navy; font-size:8pt; text-decoration:none;}");\r
+                       document.write(".PopupNotOver {font-family:'Arial'; color:black; background:#c0c0c0; font-size:8pt; text-decoration:none;}");\r
+               }\r
+               document.write("</STYLE>");\r
+       }\r
+       g_bIsPopupMenuInit = true;\r
+}\r
+\r
+function PopupMenu_Invoke()\r
+{\r
+       if (gbNav6)\r
+               resetHighLight();\r
+       \r
+       if (!gbNav6  && document.readyState != "complete")\r
+               return false;\r
+       var fn_arguments = PopupMenu_Invoke.arguments; \r
+       // Make sure we have reasonable arguments\r
+       var argLen = fn_arguments.length;\r
+       if (argLen < 3) {\r
+               return false;\r
+       }\r
+\r
+       // Check to see if we only have one target\r
+       var strTarget = "";\r
+       \r
+       strTarget = "TARGET='" + fn_arguments[1] + "'";\r
+       \r
+       if (argLen < 5) {\r
+               // Get the place that we will be putting the topic into\r
+               var strURL = fn_arguments[3];\r
+\r
+               if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")\r
+                       window.open(strURL, fn_arguments[1]);\r
+               else\r
+                       window.open(strURL);\r
+                       \r
+               return false;\r
+       }\r
+       \r
+       var strMenu = '<TABLE STYLE="border:2px outset white;" CELLSPACING=0';\r
+       if (gbMac && gbIE4) {\r
+               strMenu += ' CELLPADDING=4';\r
+       } else {\r
+               strMenu += ' CELLPADDING=2';\r
+       }       \r
+       strMenu += ' BGCOLOR=#c0c0c0>';\r
+\r
+       // Add each of the items\r
+       if (gbIE55)\r
+       {\r
+               var i = 2;\r
+               while (i <= argLen - 1) {\r
+                       strMenu += '<TR><TD><NOBR>'\r
+                       strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A ';\r
+                       strMenu += ' onclick="parent.PopupMenu_2HandleClick(\'' + excapeSingleQuotandSlash(fn_arguments[i + 1]) + '\', \'' + fn_arguments[1] + '\');"';\r
+                       strMenu += ' onmouseover="parent.PopupMenu_Over(event);"';\r
+                       strMenu += ' onmouseout="parent.PopupMenu_Out(event);"';\r
+                       strMenu += '>';\r
+                       strMenu += '<SPAN CLASS="PopupNotOver">' + fn_arguments[i] + '</SPAN>';\r
+                       strMenu += '</A></DIV></NOBR></TD></TR>';\r
+                       i += 2;\r
+               }\r
+       }\r
+       else\r
+       {\r
+               var i = 2;\r
+               while (i <= argLen - 1) {\r
+                       strMenu += '<TR><TD><NOBR>'\r
+                       strMenu += '<DIV STYLE="padding-left:3pt; padding-right:3pt;"><A HREF="' + fn_arguments[i + 1] + '" ' + strTarget;\r
+                       strMenu += ' onclick="PopupMenu_HandleClick(event);"';\r
+                       strMenu += ' onmouseover="PopupMenu_Over(event);"';\r
+                       strMenu += ' onmouseout="PopupMenu_Out(event);"';\r
+                       strMenu += '>';\r
+                       strMenu += '<SPAN CLASS="PopupNotOver">' + excapeSingleQuotandSlash(fn_arguments[i]) + '</SPAN>';\r
+                       strMenu += '</A></DIV></NOBR></TD></TR>';\r
+                       i += 2;\r
+               }\r
+       }\r
+       strMenu += "</TABLE>";\r
+\r
+       if (gbMac && gbIE4) {\r
+       // ie5 in mac need something. </TABLE> is one of them.\r
+               strMenu +="<TABLE></TABLE>";\r
+       }\r
+\r
+       var layerPopup = null;\r
+       var stylePopup = null;\r
+       var nEventX = 0;\r
+       var nEventY = 0;\r
+       var nWindowWidth = 0;\r
+       if (gbIE4||gbOpera7)\r
+       {\r
+               layerPopup = document.all["PopupMenu"];\r
+               layerPopup.innerHTML = strMenu;\r
+               stylePopup = layerPopup.style;\r
+\r
+               _BSPSGetClientSize();\r
+\r
+               // Get the position of the item causing the event (relative to its parent)\r
+               nEventX = window.event.clientX;\r
+               nEventY = window.event.clientY;\r
+               \r
+               if (nEventY + layerPopup.scrollHeight + 10 < gBsClientHeight) {\r
+                       nEventY += document.body.scrollTop + 10;\r
+               } else {\r
+                       nEventY = (document.body.scrollTop + gBsClientHeight) - layerPopup.scrollHeight - 20;\r
+               }\r
+               stylePopup.top = nEventY;\r
+\r
+               if (nEventX + layerPopup.scrollWidth + 20 > gBsClientWidth) {\r
+                       if (gBsClientWidth - layerPopup.scrollWidth < 5) {\r
+                               stylePopup.left = 5;\r
+                       } else {\r
+                               stylePopup.left = gBsClientWidth - layerPopup.scrollWidth - 5;\r
+                       }\r
+               } else {\r
+                       stylePopup.left = nEventX + document.body.scrollLeft + 20;\r
+               }\r
+\r
+               if (gbIE55) {\r
+                       var nPosX = window.event.clientX;\r
+                       var nPosY = window.event.clientY;\r
+                       if (window.event.srcElement)\r
+                       {\r
+                               nPosX = window.event.srcElement.offsetLeft + window.event.srcElement.offsetWidth - document.body.scrollLeft;\r
+                               nPosY = window.event.srcElement.offsetTop + window.event.srcElement.offsetHeight - document.body.scrollTop;\r
+                       }\r
+                       goPopup = window.createPopup();\r
+                       var oPopupBody = goPopup.document.body;\r
+                       goPopup.document.createStyleSheet();\r
+                       goPopup.document.styleSheets[0].addRule(".PopupOver", "{font-family:\"Arial\"; cursor: hand;color:white; background:navy; font-size:8pt; text-decoration:none;}");\r
+                       goPopup.document.styleSheets[0].addRule(".PopupNotOver", "{font-family:\"Arial\"; color:black; background:#c0c0c0; font-size:8pt; text-decoration:none;}");\r
+                       oPopupBody.insertAdjacentHTML("afterBegin", strMenu);\r
+                       goPopup.show(nPosX, nPosY, layerPopup.scrollWidth, layerPopup.scrollHeight, document.body);\r
+               }\r
+               else \r
+               {\r
+                       stylePopup.visibility = "visible";\r
+                       document.onclick = PopupMenu_HandleClick;\r
+               }\r
+       } else if (gbNav6) {\r
+               layerPopup = document.getElementById("PopupMenu");\r
+               layerPopup.style.visibility = "hidden";\r
+       \r
+               var e = fn_arguments[0];\r
+               nEventX = e.pageX;\r
+               nEventY = e.pageY;\r
+               _BSPSGetClientSize();\r
+               layerPopup.innerHTML = strMenu;\r
+\r
+               if (nEventY + layerPopup.offsetHeight + 20  <  window.pageYOffset + gBsClientHeight) {\r
+                       nEventY += 20;\r
+               } else {\r
+                       nEventY = gBsClientHeight + window.pageYOffset - layerPopup.offsetHeight - 20;\r
+               }\r
+\r
+               if (nEventX + layerPopup.offsetWidth + 20 > gBsClientWidth + window.pageXOffset) {\r
+                       if (gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth < 20) {\r
+                               nEventX = 5;\r
+                       } else {\r
+                               nEventX = gBsClientWidth + window.pageXOffset - layerPopup.offsetWidth - 20;\r
+                       }\r
+               } else {\r
+                       nEventX += 20;\r
+               }\r
+               layerPopup.style.top = nEventY;\r
+               layerPopup.style.left = nEventX;\r
+\r
+               // set again to avoid the frash in netscape 6.\r
+               layerPopup.innerHTML = strMenu;\r
+               layerPopup.style.visibility = "visible";\r
+               window.onclick = PopupMenu_HandleClick;\r
+       } \r
+\r
+       window.gbPopupMenuTimeoutExpired = false;\r
+       setTimeout("PopupMenu_Timeout();", 100);\r
+       return false;\r
+}\r
+\r
+function PopupMenu_Timeout()\r
+{\r
+       window.gbPopupMenuTimeoutExpired = true;\r
+}\r
+\r
+function PopupMenu_Over(e)\r
+{\r
+       if (gbIE4||gbOpera7)\r
+               e.srcElement.className = "PopupOver";\r
+       else if (gbNav6)\r
+               e.target.parentNode.className = "PopupOver";\r
+}\r
+\r
+function PopupMenu_Out(e)\r
+{\r
+       if (gbIE4||gbOpera7)\r
+               e.srcElement.className = "PopupNotOver";\r
+       else if (gbNav6)\r
+               e.target.parentNode.className = "PopupNotOver";\r
+}\r
+\r
+function PopupMenu_2HandleClick(surl, starget)\r
+{\r
+       window.open(surl, starget);\r
+       goPopup.hide();\r
+}\r
+\r
+function PopupMenu_HandleClick(e)\r
+{\r
+       if (!window.gbPopupMenuTimeoutExpired) {\r
+               return;\r
+       }\r
+\r
+       var layerPopup = getElement("PopupMenu");\r
+       layerPopup.style.visibility = "hidden";\r
+\r
+       return;\r
+}\r
+\r
+//Get client size info\r
+function _BSPSGetClientSize()\r
+{\r
+       gBsClientWidth  = document.body.clientWidth;\r
+       gBsClientHeight = document.body.clientHeight;\r
+}\r
+\r
+if (window.gbWhIHost)\r
+{\r
+       setBackgroundcolor("White");\r
+       \r
+       setFont("Normal", "Tahoma","8pt","Black","Normal","Normal","none");\r
+       setFont("Empty", "Tahoma","8pt","Black","Normal","Normal","none");\r
+       setFont("Hover", "Tahoma","8pt","Navy","Normal","Normal","underline");\r
+       setActiveBgColor("Silver");\r
+       \r
+       \r
+       IndexWriteClassStyle();\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+</head>\r
+<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" scroll="auto" bgcolor="white">\r
+<script languageE="JavaScript">\r
+<!--\r
+WritePopupMenuLayer();\r
+//-->\r
+</script>\r
+</body>\r
+</html>\r
+\r
diff --git a/doc/salome/gui/GAUSS/whidhtml.htm b/doc/salome/gui/GAUSS/whidhtml.htm
new file mode 100644 (file)
index 0000000..945fdc8
--- /dev/null
@@ -0,0 +1,30 @@
+<html>\r
+<head>\r
+<title>Index</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+var gbIndexLayerInit = false;\r
+if (window.gbWhProxy&&window.gbWhMsg&&window.gbWhVer)\r
+{\r
+       var strWrite;\r
+       if (gbMac)\r
+               strWrite="<FRAMESET ROWS='45,100%' framespacing=0  frameborder=0>";\r
+       else\r
+               strWrite="<FRAMESET ROWS='60,100%' framespacing=0  frameborder=0>";\r
+       strWrite +="<FRAME SRC='whiform.htm' title='index form frame' name='idxform' noresize='yes' scrolling='no'>";\r
+       strWrite +="<FRAME SRC='whibody.htm' title='index content frame' name='idxbody' scrolling='yes'>";\r
+       strWrite +="</FRAMESET>";\r
+       document.write(strWrite);\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whiform.htm b/doc/salome/gui/GAUSS/whiform.htm
new file mode 100644 (file)
index 0000000..76674d7
--- /dev/null
@@ -0,0 +1,91 @@
+<html>\r
+<head>\r
+<title>Index form</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<style>\r
+<!--\r
+body {margin:0;}\r
+-->\r
+</style>\r
+<body bgcolor="#c0c0c0">\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whform.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+function indexLookup(bCR)\r
+{\r
+       var strInput = document.IndexInputForm.keywordField.value.toUpperCase();\r
+       if (strInput != "") {\r
+               var oParam = new Object();\r
+               oParam.sInput = strInput;\r
+               oParam.bCR = bCR;\r
+               var oMessage = new whMessage(WH_MSG_SEARCHINDEXKEY, this, 1, oParam);\r
+               SendMessage(oMessage);\r
+       }\r
+       if (gbMac) {\r
+               document.IndexInputForm.keywordField.focus();\r
+       }\r
+}\r
+\r
+function window_Unload()\r
+{\r
+       UnRegisterListener2(this, WH_MSG_SHOWTOC);\r
+       UnRegisterListener2(this, WH_MSG_SHOWIDX);\r
+       UnRegisterListener2(this, WH_MSG_SHOWFTS);\r
+       UnRegisterListener2(this, WH_MSG_SHOWGLO);\r
+}\r
+\r
+function onSendMessage(oMessage)\r
+{\r
+       if (oMessage.nMessageId == WH_MSG_SHOWIDX)\r
+       {\r
+               document.IndexInputForm.keywordField.focus();\r
+       }\r
+       else if (oMessage.nMessageId == WH_MSG_SHOWFTS ||\r
+               oMessage.nMessageId == WH_MSG_SHOWTOC || \r
+               oMessage.nMessageId == WH_MSG_SHOWGLO)\r
+       {\r
+               document.IndexInputForm.keywordField.blur();\r
+       }\r
+       return true;\r
+}\r
+\r
+if (window.gbWhForm)\r
+{\r
+       RegisterListener2(this, WH_MSG_SHOWTOC);\r
+       RegisterListener2(this, WH_MSG_SHOWIDX);\r
+       RegisterListener2(this, WH_MSG_SHOWFTS);\r
+       RegisterListener2(this, WH_MSG_SHOWGLO);\r
+       window.onunload=window_Unload;\r
+       window.onload = init;\r
+       gfunLookUp = indexLookup;\r
+       gfunInit = null;\r
+       gstrFormName = "IndexInputForm"\r
+       gsTitle = "Type in the keyword to find:";\r
+       gsTitle = "Type in the keyword to find:";\r
+\r
+       setBackgroundcolor("White");\r
+       \r
+       setBtnType("none");\r
+       \r
+       \r
+       \r
+       setGoText("Go");\r
+       setFont("Title", "Tahoma","8pt","Navy","Normal","Normal","none");\r
+       \r
+       \r
+       document.write(getFormHTML());\r
+       writeFormStyle();\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whihost.js b/doc/salome/gui/GAUSS/whihost.js
new file mode 100644 (file)
index 0000000..9aaf13a
--- /dev/null
@@ -0,0 +1,424 @@
+//     WebHelp 5.10.002\r
+var gsDefaultTarget="bsscright";\r
+var gsBgColor="#ffffff";\r
+var gsBgImage="";\r
+var goIdxFont=null;\r
+var goIdxEmptyFont=null;\r
+var goIdxHoverFont=null;\r
+var gsIdxMargin="0pt";\r
+var gsIdxIndent="8pt";\r
+var gsIdxActiveBgColor="#cccccc";\r
+var gsCK = null;\r
+var gsBCK = null;\r
+var gbCR = false;\r
+var gbBCR = false;\r
+var gbWhIHost=true;\r
+\r
+function myEvent()\r
+{\r
+       this.pageX = 0;\r
+       this.pageY = 0;\r
+}\r
+var _event=new myEvent();\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       gsBgColor=sBgColor;\r
+}\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       gsBgImage=sBgImage;\r
+}\r
+\r
+function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
+{\r
+       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
+       if(sType=="Normal")\r
+               goIdxFont=vFont;\r
+       else if(sType=="Empty")\r
+               goIdxEmptyFont=vFont;\r
+       else if(sType=="Hover")\r
+               goIdxHoverFont=vFont;\r
+}\r
+\r
+function setActiveBgColor(sBgColor)\r
+{\r
+       gsIdxActiveBgColor=sBgColor;\r
+}\r
+\r
+function setMargin(sMargin)\r
+{\r
+       gsIdxMargin=sMargin;\r
+}\r
+\r
+function setIndent(sIndent)\r
+{\r
+       gsIdxIndent=sIndent;\r
+}\r
+\r
+function writeOneItem(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
+{\r
+       var sHTML="";\r
+       var nIdxSet=aCurIdxSet[0];\r
+       var nIIdx=aPos[nIdxSet];\r
+       var sKOriName=getItemName(aDataCon,nIdxSet,nIIdx);\r
+       var sKName=_textToHtml(sKOriName);\r
+\r
+       var nIdxIndent=parseInt(gsIdxIndent);\r
+       var sTopics="";\r
+       if(nLevel==1){\r
+               if(getItemType(aDataCon,nIdxSet,nIIdx)==1)\r
+               {\r
+                       sHTML+="<H6><nobr>";\r
+                       sHTML+="<b>"+sKName+"</b></nobr></H6>";\r
+               }\r
+               else{\r
+                       for(var i=0;i<nLength;i++)\r
+                               sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
+                       sHTML+="<p style=\"margin-left:"+gsIdxIndent+"\"><nobr>";\r
+                       sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+excapeSingleQuotandSlash(getTargetName(aDataCon,nIdxSet,nIIdx))+"'";\r
+                       if(sTopics.length>0)\r
+                               sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></p>";\r
+                       else\r
+                               sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"</a></nobr></p>";\r
+               }\r
+       }\r
+       else if(nLevel>=2){\r
+               var nIndent=nIdxIndent*nLevel;\r
+               for(var i=0;i<nLength;i++)\r
+                       sTopics+=getIdxTopics(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
+               if (nLevel==2)\r
+                       sHTML+="<h6 class=\"firstsub\" style=\"margin-left:"+nIndent+"pt\"><nobr>";\r
+               else\r
+                       sHTML+="<h6 style=\"margin-left:"+nIndent+"pt\"><nobr>";\r
+               sHTML+="<a alt=\"" + sKName + "\" href=\"javascript:void(0);\" onfocus=\"clearHighLight();\" onclick=\"PopupMenu_Invoke(event,'"+excapeSingleQuotandSlash(getTargetName(aDataCon,nIdxSet,nIIdx))+"'";\r
+               if(sTopics.length>0)\r
+                       sHTML+=sTopics+");return false;\">"+sKName+"</a></nobr></h6>";\r
+               else\r
+                       sHTML+=");return false;\" style=\""+getFontStyle(goIdxEmptyFont)+"\">"+sKName+"</a></nobr></h6>";\r
+       }\r
+       oHTML.addHTML(sHTML,nLength,bDown,(nLevel==1),sKOriName);\r
+}\r
+\r
+function getTargetName(aDataCon,nIdxSet,nIIdx)\r
+{\r
+       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
+               if(aDataCon[nIdxSet].aKs[nIIdx].sTarget)\r
+                       return aDataCon[nIdxSet].aKs[nIIdx].sTarget;\r
+       return gsDefaultTarget;\r
+}\r
+\r
+function mergeItems(oHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel)\r
+{\r
+       var oLocalHTML=new indexHTMLPart();\r
+       writeOneItem(oLocalHTML,bDown,aDataCon,aCurIdxSet,nLength,aPos,nLevel);\r
+       \r
+       var aLocalPos=new Array();\r
+       var aMaxPos=new Array();\r
+       for(var i=0;i<aPos.length;i++)\r
+       {\r
+               aLocalPos[i]=aPos[i];\r
+               aMaxPos[i]=-1;\r
+       }\r
+       \r
+       for(i=0;i<nLength;i++)\r
+       {\r
+               var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aLocalPos[aCurIdxSet[i]]);\r
+               aLocalPos[aCurIdxSet[i]]++;\r
+               if(nNKOff>0)\r
+                       aMaxPos[aCurIdxSet[i]]=aLocalPos[aCurIdxSet[i]]+nNKOff;\r
+       }\r
+       var oSubHTML=new indexHTMLPart();\r
+       writeItems(oSubHTML,aDataCon,aLocalPos,null,aMaxPos,true,nLevel+1);\r
+       oLocalHTML.addSubHTML(oSubHTML,true);\r
+       oHTML.appendHTML(oLocalHTML,bDown);\r
+}\r
+\r
+function adjustPosition(bDown,aDataCon,aCurIdxSet,nLength,aPos)\r
+{\r
+       if(bDown)\r
+       {\r
+               for(var i=0;i<nLength;i++)\r
+               {\r
+                       var nNKOff=getNKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
+                       aPos[aCurIdxSet[i]]+=(1+nNKOff);\r
+               }\r
+       }\r
+       else{\r
+               for(var i=0;i<nLength;i++)\r
+               {\r
+                       var nPKOff=getPKOff(aDataCon,aCurIdxSet[i],aPos[aCurIdxSet[i]]);\r
+                       aPos[aCurIdxSet[i]]-=(1+nPKOff);\r
+               }\r
+       }\r
+}\r
+\r
+function getItemName(aDataCon,nIdxSet,nIIdx)\r
+{\r
+       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
+               return aDataCon[nIdxSet].aKs[nIIdx].sName;\r
+       else\r
+               return null;\r
+}\r
+\r
+function getItemType(aDataCon,nIdxSet,nIIdx)\r
+{\r
+       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
+               return aDataCon[nIdxSet].aKs[nIIdx].nType;\r
+       else\r
+               return 0;\r
+}\r
+\r
+function getNKOff(aDataCon,nIdxSet,nIIdx)\r
+{\r
+       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
+               return aDataCon[nIdxSet].aKs[nIIdx].nNKOff;\r
+       else\r
+               return null;\r
+}\r
+\r
+function getPKOff(aDataCon,nIdxSet,nIIdx)\r
+{\r
+       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
+               return aDataCon[nIdxSet].aKs[nIIdx].nPKOff;\r
+       else\r
+               return null;\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if(gsBgImage&&gsBgImage.length>0)\r
+       {\r
+               document.body.background=gsBgImage;\r
+       }\r
+       if(gsBgColor&&gsBgColor.length>0)\r
+       {\r
+               document.body.bgColor=gsBgColor;\r
+       }\r
+       document.body.insertAdjacentHTML("beforeEnd",writeLoadingDiv());\r
+       loadIdx();\r
+       var oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function loadIdx()\r
+{\r
+       if(!gbReady)\r
+       {\r
+               var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
+               if(SendMessage(oResMsg)&&oResMsg.oParam)\r
+               {\r
+                       gbReady=true;\r
+                       var oProj=oResMsg.oParam;\r
+                       var aProj=oProj.aProj;\r
+                       gbXML=oProj.bXML;\r
+                       if(aProj.length>0)\r
+                       {\r
+                               var sLangId=aProj[0].sLangId;\r
+                               for(var i=0;i<aProj.length;i++)\r
+                               {\r
+                                       if(aProj[i].sIdx&&aProj[i].sLangId==sLangId)\r
+                                       {\r
+                                               addProjInfo(aProj[i].sPPath,aProj[i].sDPath,aProj[i].sIdx);\r
+                                       }\r
+                               }\r
+                       }\r
+                       writeDataIFrame();\r
+                       enEvt();\r
+               }               \r
+       }\r
+}\r
+\r
+function getIdxTopics(aDataCon,nIdxSet,nIIdx)\r
+{\r
+       var sTopics="";\r
+       if(nIdxSet<aDataCon.length&&aDataCon[nIdxSet].aKs.length>nIIdx)\r
+       {\r
+               if(aDataCon[nIdxSet].aKs[nIIdx].aTopics)\r
+               {\r
+                       var nLen=aDataCon[nIdxSet].aKs[nIIdx].aTopics.length;\r
+                       var nProj=aDataCon[nIdxSet].nProjId;\r
+                       var sPath=gaData[nProj].sPPath;\r
+                       for(var i=0;i<nLen;i++)\r
+                       {\r
+                               var sURL=aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sURL;\r
+                               var sFullPath=_getFullPath(sPath,sURL);\r
+                               sTopics+=",'"+excapeSingleQuotandSlash(_textToHtml(aDataCon[nIdxSet].aKs[nIIdx].aTopics[i].sName))+"','"+excapeSingleQuotandSlash(_textToHtml_nonbsp(sFullPath))+"'";\r
+                       }\r
+               }\r
+       }\r
+       return sTopics;         \r
+}\r
+\r
+function findCKInDom()\r
+{\r
+       if(gsCK!=null)\r
+       {\r
+               var sK=gsCK;\r
+               var oP=getElementsByTag(document,"P");\r
+               if(!oP) return false;\r
+               var len=oP.length;\r
+               var nB=0;\r
+               var nE=len-1;\r
+               var nM=0;\r
+               var sItem="";\r
+               var bF=false;\r
+               while(nB<nE){\r
+                       nM=(nB+nE+1)>>1;\r
+                       sItem=getInnerText(oP[nM]);\r
+                       \r
+                       if(compare(sItem,sK)==0)\r
+                       {\r
+                               bF=true;\r
+                               break;\r
+                       }\r
+                       else if(compare(sItem,sK)>0)\r
+                               nE=nM-1;\r
+                       else if(compare(sItem,sK)<0)\r
+                               nB=nM;\r
+               }\r
+               if(!bF)\r
+               {\r
+                       if(nB==nE) nM=nB;\r
+               \r
+                       if(nM+1<len)\r
+                       {\r
+                               sItem=getInnerText(oP[nM+1]);\r
+                               if(compare(sItem,sK)<=0) nM++;\r
+                       }                       \r
+                       if(nM+1<len)\r
+                       {\r
+                               sItem=getInnerText(oP[nM+1]);\r
+                               if(compare(sItem.substring(0,sK.length),sK)==0) nM++;\r
+                       }                       \r
+               }\r
+       \r
+               var oMatch=oP[nM];\r
+               if(oMatch)\r
+               {\r
+                       window.scrollTo(0,oMatch.offsetTop);\r
+                       var tempColl=getElementsByTag(oMatch,"A");\r
+                       if(tempColl&&tempColl.length>0){\r
+                               var nbTag=getElementsByTag(oMatch,"NOBR");\r
+                               if(nbTag&&nbTag.length>0)\r
+                                       HighLightElement(nbTag[0], gsIdxActiveBgColor, "transparent");\r
+                               if (gbCR)\r
+                               {\r
+                                       if (gbIE4)\r
+                                               tempColl(0).click();\r
+                                       else\r
+                                       {\r
+                                               var strCommand = tempColl[0].getAttribute("onClick");\r
+                                               var nstrCommand = strCommand.indexOf(";");\r
+                                               strCommand = strCommand.substring(0, nstrCommand);\r
+                                               strCommand = strCommand.replace("event", "_event");\r
+                                               window._event.pageX = oMatch.offsetLeft ;\r
+                                               window._event.pageY = oMatch.offsetTop + 20;\r
+                                               window.setTimeout(strCommand, 100);\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+               gsCK=gsBCK;\r
+               gbCR=gbBCR;\r
+               if(gsBCK!=null)\r
+               {\r
+                       gsBCK=null;\r
+                       gbBCR=false;\r
+                       findCK();\r
+                       return false;\r
+               }\r
+               \r
+       }\r
+       return true;\r
+}\r
+\r
+function clearHighLight()\r
+{\r
+       resetHighLight(gsBgColor);\r
+}\r
+\r
+function IndexWriteClassStyle()\r
+{\r
+       var sStyle="";\r
+       sStyle+="<STYLE TYPE='text/css'>";\r
+       if (gsBgImage)\r
+               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
+       else\r
+               sStyle+="body {border-top:black 1px solid;}\n";\r
+       if(gbIE4&&gbMac&&!gbIE5)\r
+       {\r
+               var nMargin=parseInt(gsIdxMargin);\r
+               nMargin-=10;\r
+               sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
+               sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
+               sStyle+="H6.firstsub {"+getFontStyle(goIdxFont)+"margin-top:"+nMargin+"pt;margin-bottom:"+gsIdxMargin+";}\n";\r
+       }\r
+       else\r
+       {\r
+               sStyle+="P {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
+               sStyle+="H6 {"+getFontStyle(goIdxFont)+"margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
+       }\r
+       sStyle+="DIV {margin-top:"+gsIdxMargin+";margin-bottom:"+gsIdxMargin+";}\n";\r
+       sStyle+="A:link {"+getFontStyle(goIdxFont)+"}\n";\r
+       sStyle+="A:visited {"+getFontStyle(goIdxFont)+"}\n";\r
+       sStyle+="A:active {background-color:"+gsIdxActiveBgColor+";}\n";\r
+       sStyle+="A:hover {"+getFontStyle(goIdxHoverFont)+"}\n";\r
+       sStyle+="</STYLE>";     \r
+       document.write(sStyle);\r
+       return;\r
+}\r
+\r
+function window_Unload()\r
+{\r
+       UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
+       UnRegisterListener2(this,WH_MSG_SEARCHINDEXKEY);\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       if(oMsg)\r
+       {\r
+               var nMsgId=oMsg.nMessageId;\r
+               if(nMsgId==WH_MSG_SEARCHINDEXKEY)\r
+               {\r
+                       if(oMsg.oParam && oMsg.oParam.sInput)\r
+                       {\r
+                               if(gsCK==null)\r
+                               {\r
+                                       gsCK=oMsg.oParam.sInput;\r
+                                       gbCR = oMsg.oParam.bCR;\r
+                                       findCK();\r
+                               }\r
+                               else\r
+                               {\r
+                                       gsBCK=oMsg.oParam.sInput;\r
+                                       gbBCR = oMsg.oParam.bCR;\r
+                               }\r
+                       }\r
+               }\r
+               else if(nMsgId==WH_MSG_PROJECTREADY)\r
+               {\r
+                       loadIdx();\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+if(window.gbWhVer&&window.gbWhLang&&window.gbWhMsg&&window.gbWhUtil&&window.gbWhHost&&window.gbWhProxy)\r
+{\r
+       RegisterListener2(this,WH_MSG_PROJECTREADY);\r
+       RegisterListener2(this,WH_MSG_SEARCHINDEXKEY);\r
+       goIdxFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
+       goIdxEmptyFont=new whFont("Verdana","8pt","#666666","normal","normal","none");\r
+       goIdxHoverFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
+\r
+       window.onload=window_OnLoad;\r
+       window.onbeforeunload=window_BUnload;\r
+       window.onunload=window_Unload;\r
+       gbWhIHost=true;\r
+}\r
+else\r
+       document.location.reload();\r
+\r
diff --git a/doc/salome/gui/GAUSS/whlang.js b/doc/salome/gui/GAUSS/whlang.js
new file mode 100644 (file)
index 0000000..870be0e
--- /dev/null
@@ -0,0 +1,453 @@
+//     WebHelp 5.10.001\r
+var garrSortChar=new Array();\r
+var gaFtsStop=new Array();\r
+var gaFtsStem=new Array();\r
+var gbWhLang=false;\r
+\r
+garrSortChar[0] = 0;\r
+garrSortChar[1] = 1;\r
+garrSortChar[2] = 2;\r
+garrSortChar[3] = 3;\r
+garrSortChar[4] = 4;\r
+garrSortChar[5] = 5;\r
+garrSortChar[6] = 6;\r
+garrSortChar[7] = 7;\r
+garrSortChar[8] = 8;\r
+garrSortChar[9] = 40;\r
+garrSortChar[10] = 41;\r
+garrSortChar[11] = 42;\r
+garrSortChar[12] = 43;\r
+garrSortChar[13] = 44;\r
+garrSortChar[14] = 9;\r
+garrSortChar[15] = 10;\r
+garrSortChar[16] = 11;\r
+garrSortChar[17] = 12;\r
+garrSortChar[18] = 13;\r
+garrSortChar[19] = 14;\r
+garrSortChar[20] = 15;\r
+garrSortChar[21] = 16;\r
+garrSortChar[22] = 17;\r
+garrSortChar[23] = 18;\r
+garrSortChar[24] = 19;\r
+garrSortChar[25] = 20;\r
+garrSortChar[26] = 21;\r
+garrSortChar[27] = 22;\r
+garrSortChar[28] = 23;\r
+garrSortChar[29] = 24;\r
+garrSortChar[30] = 25;\r
+garrSortChar[31] = 26;\r
+garrSortChar[32] = 38;\r
+garrSortChar[33] = 45;\r
+garrSortChar[34] = 46;\r
+garrSortChar[35] = 47;\r
+garrSortChar[36] = 48;\r
+garrSortChar[37] = 49;\r
+garrSortChar[38] = 50;\r
+garrSortChar[39] = 33;\r
+garrSortChar[40] = 51;\r
+garrSortChar[41] = 52;\r
+garrSortChar[42] = 53;\r
+garrSortChar[43] = 88;\r
+garrSortChar[44] = 54;\r
+garrSortChar[45] = 34;\r
+garrSortChar[46] = 55;\r
+garrSortChar[47] = 56;\r
+garrSortChar[48] = 115;\r
+garrSortChar[49] = 119;\r
+garrSortChar[50] = 121;\r
+garrSortChar[51] = 123;\r
+garrSortChar[52] = 125;\r
+garrSortChar[53] = 126;\r
+garrSortChar[54] = 127;\r
+garrSortChar[55] = 128;\r
+garrSortChar[56] = 129;\r
+garrSortChar[57] = 130;\r
+garrSortChar[58] = 57;\r
+garrSortChar[59] = 58;\r
+garrSortChar[60] = 89;\r
+garrSortChar[61] = 90;\r
+garrSortChar[62] = 91;\r
+garrSortChar[63] = 59;\r
+garrSortChar[64] = 60;\r
+garrSortChar[65] = 131;\r
+garrSortChar[66] = 148;\r
+garrSortChar[67] = 150;\r
+garrSortChar[68] = 154;\r
+garrSortChar[69] = 158;\r
+garrSortChar[70] = 168;\r
+garrSortChar[71] = 171;\r
+garrSortChar[72] = 173;\r
+garrSortChar[73] = 175;\r
+garrSortChar[74] = 185;\r
+garrSortChar[75] = 187;\r
+garrSortChar[76] = 189;\r
+garrSortChar[77] = 191;\r
+garrSortChar[78] = 193;\r
+garrSortChar[79] = 197;\r
+garrSortChar[80] = 214;\r
+garrSortChar[81] = 216;\r
+garrSortChar[82] = 218;\r
+garrSortChar[83] = 220;\r
+garrSortChar[84] = 225;\r
+garrSortChar[85] = 230;\r
+garrSortChar[86] = 240;\r
+garrSortChar[87] = 242;\r
+garrSortChar[88] = 244;\r
+garrSortChar[89] = 246;\r
+garrSortChar[90] = 252;\r
+garrSortChar[91] = 61;\r
+garrSortChar[92] = 62;\r
+garrSortChar[93] = 63;\r
+garrSortChar[94] = 64;\r
+garrSortChar[95] = 66;\r
+garrSortChar[96] = 67;\r
+garrSortChar[97] = 131;\r
+garrSortChar[98] = 148;\r
+garrSortChar[99] = 150;\r
+garrSortChar[100] = 154;\r
+garrSortChar[101] = 158;\r
+garrSortChar[102] = 168;\r
+garrSortChar[103] = 171;\r
+garrSortChar[104] = 173;\r
+garrSortChar[105] = 175;\r
+garrSortChar[106] = 185;\r
+garrSortChar[107] = 187;\r
+garrSortChar[108] = 189;\r
+garrSortChar[109] = 191;\r
+garrSortChar[110] = 193;\r
+garrSortChar[111] = 197;\r
+garrSortChar[112] = 214;\r
+garrSortChar[113] = 216;\r
+garrSortChar[114] = 218;\r
+garrSortChar[115] = 220;\r
+garrSortChar[116] = 225;\r
+garrSortChar[117] = 230;\r
+garrSortChar[118] = 240;\r
+garrSortChar[119] = 242;\r
+garrSortChar[120] = 244;\r
+garrSortChar[121] = 246;\r
+garrSortChar[122] = 252;\r
+garrSortChar[123] = 68;\r
+garrSortChar[124] = 69;\r
+garrSortChar[125] = 70;\r
+garrSortChar[126] = 71;\r
+garrSortChar[127] = 27;\r
+garrSortChar[128] = 114;\r
+garrSortChar[129] = 28;\r
+garrSortChar[130] = 82;\r
+garrSortChar[131] = 170;\r
+garrSortChar[132] = 85;\r
+garrSortChar[133] = 112;\r
+garrSortChar[134] = 109;\r
+garrSortChar[135] = 110;\r
+garrSortChar[136] = 65;\r
+garrSortChar[137] = 113;\r
+garrSortChar[138] = 223;\r
+garrSortChar[139] = 86;\r
+garrSortChar[140] = 213;\r
+garrSortChar[141] = 29;\r
+garrSortChar[142] = 255;\r
+garrSortChar[143] = 30;\r
+garrSortChar[144] = 31;\r
+garrSortChar[145] = 80;\r
+garrSortChar[146] = 81;\r
+garrSortChar[147] = 83;\r
+garrSortChar[148] = 84;\r
+garrSortChar[149] = 111;\r
+garrSortChar[150] = 36;\r
+garrSortChar[151] = 37;\r
+garrSortChar[152] = 79;\r
+garrSortChar[153] = 229;\r
+garrSortChar[154] = 222;\r
+garrSortChar[155] = 87;\r
+garrSortChar[156] = 212;\r
+garrSortChar[157] = 32;\r
+garrSortChar[158] = 254;\r
+garrSortChar[159] = 251;\r
+garrSortChar[160] = 39;\r
+garrSortChar[161] = 72;\r
+garrSortChar[162] = 97;\r
+garrSortChar[163] = 98;\r
+garrSortChar[164] = 99;\r
+garrSortChar[165] = 100;\r
+garrSortChar[166] = 73;\r
+garrSortChar[167] = 101;\r
+garrSortChar[168] = 74;\r
+garrSortChar[169] = 102;\r
+garrSortChar[170] = 133;\r
+garrSortChar[171] = 93;\r
+garrSortChar[172] = 103;\r
+garrSortChar[173] = 35;\r
+garrSortChar[174] = 104;\r
+garrSortChar[175] = 75;\r
+garrSortChar[176] = 105;\r
+garrSortChar[177] = 92;\r
+garrSortChar[178] = 122;\r
+garrSortChar[179] = 124;\r
+garrSortChar[180] = 76;\r
+garrSortChar[181] = 106;\r
+garrSortChar[182] = 107;\r
+garrSortChar[183] = 108;\r
+garrSortChar[184] = 77;\r
+garrSortChar[185] = 120;\r
+garrSortChar[186] = 199;\r
+garrSortChar[187] = 94;\r
+garrSortChar[188] = 116;\r
+garrSortChar[189] = 117;\r
+garrSortChar[190] = 118;\r
+garrSortChar[191] = 78;\r
+garrSortChar[192] = 131;\r
+garrSortChar[193] = 131;\r
+garrSortChar[194] = 131;\r
+garrSortChar[195] = 131;\r
+garrSortChar[196] = 131;\r
+garrSortChar[197] = 131;\r
+garrSortChar[198] = 131;\r
+garrSortChar[199] = 150;\r
+garrSortChar[200] = 158;\r
+garrSortChar[201] = 158;\r
+garrSortChar[202] = 158;\r
+garrSortChar[203] = 158;\r
+garrSortChar[204] = 175;\r
+garrSortChar[205] = 175;\r
+garrSortChar[206] = 175;\r
+garrSortChar[207] = 175;\r
+garrSortChar[208] = 154;\r
+garrSortChar[209] = 193;\r
+garrSortChar[210] = 197;\r
+garrSortChar[211] = 197;\r
+garrSortChar[212] = 197;\r
+garrSortChar[213] = 197;\r
+garrSortChar[214] = 197;\r
+garrSortChar[215] = 95;\r
+garrSortChar[216] = 197;\r
+garrSortChar[217] = 230;\r
+garrSortChar[218] = 230;\r
+garrSortChar[219] = 230;\r
+garrSortChar[220] = 230;\r
+garrSortChar[221] = 246;\r
+garrSortChar[222] = 227;\r
+garrSortChar[223] = 224;\r
+garrSortChar[224] = 131;\r
+garrSortChar[225] = 131;\r
+garrSortChar[226] = 131;\r
+garrSortChar[227] = 131;\r
+garrSortChar[228] = 131;\r
+garrSortChar[229] = 131;\r
+garrSortChar[230] = 131;\r
+garrSortChar[231] = 150;\r
+garrSortChar[232] = 158;\r
+garrSortChar[233] = 158;\r
+garrSortChar[234] = 158;\r
+garrSortChar[235] = 158;\r
+garrSortChar[236] = 175;\r
+garrSortChar[237] = 175;\r
+garrSortChar[238] = 175;\r
+garrSortChar[239] = 175;\r
+garrSortChar[240] = 154;\r
+garrSortChar[241] = 193;\r
+garrSortChar[242] = 197;\r
+garrSortChar[243] = 197;\r
+garrSortChar[244] = 197;\r
+garrSortChar[245] = 197;\r
+garrSortChar[246] = 197;\r
+garrSortChar[247] = 96;\r
+garrSortChar[248] = 197;\r
+garrSortChar[249] = 230;\r
+garrSortChar[250] = 230;\r
+garrSortChar[251] = 230;\r
+garrSortChar[252] = 230;\r
+garrSortChar[253] = 246;\r
+garrSortChar[254] = 227;\r
+garrSortChar[255] = 250;\r
+\r
+gaFtsStop[0] = "a";\r
+gaFtsStop[1] = "about";\r
+gaFtsStop[2] = "after";\r
+gaFtsStop[3] = "against";\r
+gaFtsStop[4] = "all";\r
+gaFtsStop[5] = "also";\r
+gaFtsStop[6] = "among";\r
+gaFtsStop[7] = "an";\r
+gaFtsStop[8] = "and";\r
+gaFtsStop[9] = "are";\r
+gaFtsStop[10] = "as";\r
+gaFtsStop[11] = "at";\r
+gaFtsStop[12] = "be";\r
+gaFtsStop[13] = "became";\r
+gaFtsStop[14] = "because";\r
+gaFtsStop[15] = "been";\r
+gaFtsStop[16] = "between";\r
+gaFtsStop[17] = "but";\r
+gaFtsStop[18] = "by";\r
+gaFtsStop[19] = "can";\r
+gaFtsStop[20] = "come";\r
+gaFtsStop[21] = "do";\r
+gaFtsStop[22] = "during";\r
+gaFtsStop[23] = "each";\r
+gaFtsStop[24] = "early";\r
+gaFtsStop[25] = "for";\r
+gaFtsStop[26] = "form";\r
+gaFtsStop[27] = "found";\r
+gaFtsStop[28] = "from";\r
+gaFtsStop[29] = "had";\r
+gaFtsStop[30] = "has";\r
+gaFtsStop[31] = "have";\r
+gaFtsStop[32] = "he";\r
+gaFtsStop[33] = "her";\r
+gaFtsStop[34] = "his";\r
+gaFtsStop[35] = "however";\r
+gaFtsStop[36] = "in";\r
+gaFtsStop[37] = "include";\r
+gaFtsStop[38] = "into";\r
+gaFtsStop[39] = "is";\r
+gaFtsStop[40] = "it";\r
+gaFtsStop[41] = "its";\r
+gaFtsStop[42] = "late";\r
+gaFtsStop[43] = "later";\r
+gaFtsStop[44] = "made";\r
+gaFtsStop[45] = "many";\r
+gaFtsStop[46] = "may";\r
+gaFtsStop[47] = "me";\r
+gaFtsStop[48] = "med";\r
+gaFtsStop[49] = "more";\r
+gaFtsStop[50] = "most";\r
+gaFtsStop[51] = "near";\r
+gaFtsStop[52] = "no";\r
+gaFtsStop[53] = "non";\r
+gaFtsStop[54] = "not";\r
+gaFtsStop[55] = "of";\r
+gaFtsStop[56] = "on";\r
+gaFtsStop[57] = "only";\r
+gaFtsStop[58] = "or";\r
+gaFtsStop[59] = "other";\r
+gaFtsStop[60] = "over";\r
+gaFtsStop[61] = "several";\r
+gaFtsStop[62] = "she";\r
+gaFtsStop[63] = "some";\r
+gaFtsStop[64] = "such";\r
+gaFtsStop[65] = "than";\r
+gaFtsStop[66] = "that";\r
+gaFtsStop[67] = "the";\r
+gaFtsStop[68] = "their";\r
+gaFtsStop[69] = "then";\r
+gaFtsStop[70] = "there";\r
+gaFtsStop[71] = "these";\r
+gaFtsStop[72] = "they";\r
+gaFtsStop[73] = "this";\r
+gaFtsStop[74] = "through";\r
+gaFtsStop[75] = "to";\r
+gaFtsStop[76] = "under";\r
+gaFtsStop[77] = "until";\r
+gaFtsStop[78] = "use";\r
+gaFtsStop[79] = "was";\r
+gaFtsStop[80] = "we";\r
+gaFtsStop[81] = "were";\r
+gaFtsStop[82] = "when";\r
+gaFtsStop[83] = "where";\r
+gaFtsStop[84] = "which";\r
+gaFtsStop[85] = "who";\r
+gaFtsStop[86] = "with";\r
+gaFtsStop[87] = "you";\r
+\r
+gaFtsStem[0] = "ed";\r
+gaFtsStem[1] = "es";\r
+gaFtsStem[2] = "er";\r
+gaFtsStem[3] = "e";\r
+gaFtsStem[4] = "s";\r
+gaFtsStem[5] = "ingly";\r
+gaFtsStem[6] = "ing";\r
+gaFtsStem[7] = "ly";\r
+\r
+\r
+// as javascript 1.3 support unicode instead of ISO-Latin-1\r
+// need to transfer come code back to ISO-Latin-1 for compare purpose\r
+// Note: Different Language(Code page) maybe need different array:\r
+var gaUToC=new Array();\r
+gaUToC[8364]=128;\r
+gaUToC[8218]=130;\r
+gaUToC[402]=131;\r
+gaUToC[8222]=132;\r
+gaUToC[8230]=133;\r
+gaUToC[8224]=134;\r
+gaUToC[8225]=135;\r
+gaUToC[710]=136;\r
+gaUToC[8240]=137;\r
+gaUToC[352]=138;\r
+gaUToC[8249]=139;\r
+gaUToC[338]=140;\r
+gaUToC[381]=142;\r
+gaUToC[8216]=145;\r
+gaUToC[8217]=146;\r
+gaUToC[8220]=147;\r
+gaUToC[8221]=148;\r
+gaUToC[8226]=149;\r
+gaUToC[8211]=150;\r
+gaUToC[8212]=151;\r
+gaUToC[732]=152;\r
+gaUToC[8482]=153;\r
+gaUToC[353]=154;\r
+gaUToC[8250]=155;\r
+gaUToC[339]=156;\r
+gaUToC[382]=158;\r
+gaUToC[376]=159;\r
+\r
+var gsBiggestChar="";\r
+function getBiggestChar()\r
+{\r
+       if(gsBiggestChar.length==0)\r
+       {\r
+               if(garrSortChar.length<256)\r
+                       gsBiggestChar=String.fromCharCode(255);\r
+               else\r
+               {\r
+                       var nBiggest=0;\r
+                       var nBigChar=0;\r
+                       for(var i=0;i<=255;i++)\r
+                       {\r
+                               if(garrSortChar[i]>nBiggest)\r
+                               {\r
+                                       nBiggest=garrSortChar[i];\r
+                                       nBigChar=i;\r
+                               }\r
+                       }\r
+                       gsBiggestChar=String.fromCharCode(nBigChar);\r
+               }\r
+\r
+       }       \r
+       return gsBiggestChar;\r
+}\r
+\r
+function getCharCode(str,i)\r
+{\r
+       var code=str.charCodeAt(i)\r
+       if(code>256)\r
+       {\r
+               code=gaUToC[code];\r
+       }\r
+       return code;\r
+}\r
+\r
+function compare(strText1,strText2)\r
+{\r
+       if(garrSortChar.length<256)\r
+       {\r
+               var strt1=strText1.toLowerCase();\r
+               var strt2=strText2.toLowerCase();\r
+               if(strt1<strt2) return -1;\r
+               if(strt1>strt2) return 1;\r
+               return 0;\r
+       }\r
+       else\r
+       {\r
+               for(var i=0;i<strText1.length&&i<strText2.length;i++)\r
+               {\r
+                       if(garrSortChar[getCharCode(strText1,i)]<garrSortChar[getCharCode(strText2,i)]) return -1;\r
+                       if(garrSortChar[getCharCode(strText1,i)]>garrSortChar[getCharCode(strText2,i)]) return 1;\r
+               }\r
+               if(strText1.length<strText2.length) return -1;\r
+               if(strText1.length>strText2.length) return 1;\r
+               return 0;\r
+       }\r
+}\r
+gbWhLang=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whmozemu.js b/doc/salome/gui/GAUSS/whmozemu.js
new file mode 100644 (file)
index 0000000..84c6de1
--- /dev/null
@@ -0,0 +1,67 @@
+//     WebHelp 5.10.002\r
+if (! window.gbIE4 && window.gbNav6 && !document.childNodes[0].insertAdjacentHTML){\r
+\r
+HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode)\r
+{\r
+       switch (where){\r
+       case 'beforeBegin':\r
+               this.parentNode.insertBefore(parsedNode,this);\r
+               break;\r
+       case 'afterBegin':\r
+               this.insertBefore(parsedNode,this.firstChild);\r
+               break;\r
+       case 'beforeEnd':\r
+               this.appendChild(parsedNode);\r
+               break;\r
+       case 'afterEnd':\r
+               if (this.nextSibling){\r
+               this.parentNode.insertBefore(parsedNode,this.nextSibling);\r
+               } else {\r
+               this.parentNode.appendChild(parsedNode);\r
+               }\r
+               break;\r
+       }\r
+}\r
+\r
+HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr){\r
+\r
+       var r = this.ownerDocument.createRange();\r
+       r.setStartBefore(this);\r
+       var parsedHTML = r.createContextualFragment(htmlStr);\r
+       this.insertAdjacentElement(where,parsedHTML);\r
+}\r
+\r
+\r
+HTMLElement.prototype.insertAdjacentText = function(where,txtStr){\r
+\r
+       var parsedText = document.createTextNode(txtStr);\r
+       this.insertAdjacentElement(where,parsedText);\r
+}\r
+}\r
+\r
+function testScroll() {\r
+       // Initialize scrollbar cache if necessary\r
+       if (window._pageXOffset==null) {\r
+               window._pageXOffset = window.pageXOffset;\r
+               window._pageYOffset = window.pageYOffset;\r
+       }\r
+       // Expose Internet Explorer compatible object model\r
+       document.scrollTop = window.pageYOffset;\r
+       document.scrollLeft = window.pageXOffset;\r
+       window.document.scrollHeight = document.height;\r
+       window.document.scrollWidth = document.width;\r
+       window.document.clientWidth = window.innerWidth;\r
+       window.document.clientHeight = window.innerHeight;\r
+\r
+       // If cache!=current values, call the onscroll event\r
+       if (((window.pageXOffset!=window._pageXOffset) || (window.pageYOffset!=window._pageYOffset)) && (window.onscroll)) \r
+               window.onscroll();\r
+       // Cache new values\r
+       window._pageXOffset = window.pageXOffset;\r
+       window._pageYOffset = window.pageYOffset;\r
+       }\r
+\r
+// Create compatibility layer for Netscape\r
+if (window.gbNav6 && !window.gbNav7) {\r
+       setInterval("testScroll()",50)\r
+}
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whmsg.js b/doc/salome/gui/GAUSS/whmsg.js
new file mode 100644 (file)
index 0000000..52ffcd2
--- /dev/null
@@ -0,0 +1,69 @@
+//     WebHelp 5.10.002\r
+var WH_MSG_RESIZEPANE          =0x0100;\r
+var WH_MSG_SHOWPANE                    =0x0101;\r
+var WH_MSG_HIDEPANE                    =0x0102;\r
+var WH_MSG_SYNCTOC                     =0x0103;\r
+var WH_MSG_NEXT                                =0x0104;\r
+var WH_MSG_PREV                                =0x0105;\r
+var WH_MSG_NOSEARCHINPUT       =0x0106;\r
+var WH_MSG_NOSYNC                      =0x0107;\r
+var WH_MSG_ENABLEWEBSEARCH     =0x0108;\r
+\r
+var WH_MSG_ISPANEVISIBLE       =0x0109;\r
+var WH_MSG_PANESTATUE          =0x010a;\r
+\r
+var    WH_MSG_SYNCINFO                 =0x010b;\r
+var WH_MSG_PANEINFO                    =0x010c;\r
+var WH_MSG_WEBSEARCH           =0x010d;\r
+\r
+var WH_MSG_SEARCHINDEXKEY      =0x0201;\r
+\r
+var WH_MSG_SEARCHFTSKEY        =0x020a;\r
+\r
+var WH_MSG_PROJECTREADY                =0x0301;\r
+var WH_MSG_GETPROJINFO                 =0x0302;\r
+\r
+var WH_MSG_SHOWTOC                     =0x0401;\r
+var WH_MSG_SHOWIDX                     =0x0402;\r
+var WH_MSG_SHOWFTS                     =0x0403;\r
+var WH_MSG_SHOWGLO                     =0x0404;\r
+\r
+var WH_MSG_SHOWGLODEF          =0x0500;\r
+\r
+var WH_MSG_GETTOCPATHS                 =0x0600;\r
+var WH_MSG_GETAVIAVENUES       =0x0601;\r
+var WH_MSG_GETCURRENTAVENUE =0x0602;\r
+var WH_MSG_GETPANEINFO         =0x0603;\r
+var WH_MSG_AVENUEINFO          =0x0604;\r
+\r
+var WH_MSG_GETSTARTFRAME       =0x0701;\r
+var WH_MSG_GETDEFAULTTOPIC     =0x0702;\r
+\r
+var WH_MSG_SEARCHTHIS          =0x0801;\r
+var WH_MSG_GETSEARCHS          =0x0802;\r
+\r
+var WH_MSG_ISINFRAMESET                =0x0900;\r
+\r
+var WH_MSG_TOOLBARORDER                =0x0a00;\r
+var WH_MSG_MINIBARORDER                =0x0a01;\r
+var WH_MSG_ISSYNCSSUPPORT      =0x0a02;\r
+var WH_MSG_ISSEARCHSUPPORT     =0x0a03;\r
+var WH_MSG_GETPANETYPE         =0x0a04;\r
+var WH_MSG_BACKUPSEARCH                =0x0a05;\r
+var WH_MSG_GETPANES                    =0x0a06;\r
+var WH_MSG_INITSEARCHSTRING =0x0a07;\r
+var WH_MSG_RELOADNS6           =0x0a08;\r
+var WH_MSG_ISAVENUESUPPORT     =0x0a09;\r
+\r
+var WH_MSG_GETCMD                      =0x0b00;\r
+var    WH_MSG_GETPANE                  =0x0b01;\r
+var WH_MSG_GETDEFPANE          =0x0b02;\r
+\r
+function whMessage(nMessageId,wSender,nVersion,oParam)\r
+{\r
+       this.nMessageId=nMessageId;\r
+       this.wSender=wSender;\r
+       this.nVersion=nVersion;\r
+       this.oParam=oParam;\r
+}\r
+var gbWhMsg=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whnjs.htm b/doc/salome/gui/GAUSS/whnjs.htm
new file mode 100644 (file)
index 0000000..42f642f
--- /dev/null
@@ -0,0 +1,25 @@
+<html>\r
+<head>\r
+<title>Gauss Points Viewer</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whstub.js"></script>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whstart.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+function window_Onload()\r
+{\r
+       if (window.gsTopic)\r
+               frames["bsscright"].document.location = window.gsTopic;\r
+}\r
+window.onload=window_Onload;\r
+//-->\r
+</script>\r
+</head>\r
+\r
+<frameset id="whPfset" cols="260,*"><noframes><p>Your browser does not support frames. We recommend that you update your browser to a version that supports frames.</p><p>To view the Help system without frames click on this<a href="whgdata/whnvp30.htm">hyperlink.</a></p></noframes><frame src="whgdata/whnvp30.htm" title="navigation pane" name="navigation pane" scrolling="no"><frame src="index.htm" title="topic pane" name="bsscright" scrolling="yes"></frameset>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whphost.js b/doc/salome/gui/GAUSS/whphost.js
new file mode 100644 (file)
index 0000000..9c91b49
--- /dev/null
@@ -0,0 +1,581 @@
+//     WebHelp 5.10.005\r
+var gaProj=new Array();\r
+var gnChecked=0;\r
+var gsProjName="";\r
+var gbReady=false;\r
+var goMan=null;\r
+var gbXML=false;\r
+var gsFirstPane="";\r
+var gServerEnabled=false;\r
+var gsPath="";\r
+var gbWhPHost=false;\r
+var goDiv = null;\r
+var gsHTML = "";\r
+\r
+if (navigator.currentNavPen)\r
+       gsFirstPane = navigator.currentNavPen;\r
+\r
+\r
+function delayLoad()\r
+{\r
+       if (goDiv&&gsHTML)\r
+       {\r
+               goDiv.innerHTML=gsHTML;\r
+               goDiv=null;\r
+               gsHTML="";\r
+       }\r
+}\r
+\r
+function whCom(sName,sComFile)\r
+{\r
+       this.msName=sName;\r
+       this.msDivId=sName+"Div";\r
+       this.msIFrameId=sName+"IFrame";\r
+       this.msComFile=sComFile;\r
+       this.mbloaded=false;\r
+       this.mbShow=false;\r
+       this.show=function(bShow)\r
+       {\r
+               if(this.mbShow!=bShow)\r
+               {\r
+                       if(bShow&&!this.mbloaded)\r
+                       {\r
+                               this.load();\r
+                       }\r
+\r
+                       var oDiv=getElement(this.msDivId);\r
+                       if(oDiv)\r
+                       {\r
+                               if(gbIE55||(gbIE5&&gbMac))\r
+                               {\r
+                                       var oIframe=getElement(this.msIFrameId);\r
+                                       if(oIframe)\r
+                                       {\r
+                                               if(bShow)\r
+                                               {\r
+                                                       oDiv.style.zIndex=3;\r
+                                                       if(oIframe!=null)\r
+                                                       {\r
+                                                               oIframe.style.zIndex=3;\r
+                                                               if (!gbIE55)\r
+                                                                       oIframe.style.visibility="visible";\r
+                                                       }\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       oDiv.style.zIndex=2;\r
+                                                       if(oIframe!=null)\r
+                                                       {\r
+                                                               oIframe.style.zIndex=2;\r
+                                                               if (!gbIE55)\r
+                                                                       oIframe.style.visibility="hidden";\r
+                                                       }\r
+                                               }\r
+                                       }\r
+                               }\r
+                               if (!gbIE55)\r
+                                       oDiv.style.visibility=(bShow==true)?'visible':'hidden';\r
+                               this.mbShow=bShow;\r
+                       }\r
+\r
+               }\r
+       }\r
+       this.load=function()\r
+       {\r
+               if(!this.mbloaded)\r
+               {\r
+                       if(this.msComFile.length>0){\r
+                               var strFile= _getFullPath(getPath(), this.msComFile);\r
+                               var oDiv=getElement(this.msDivId);\r
+                               if(oDiv){\r
+                                       if(gbIE4||gbOpera7){\r
+                                               var nIFrameHeight=oDiv.style.pixelHeight;\r
+                                               var nIFrameWidth=oDiv.style.pixelWidth;\r
+                                               var sHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:";\r
+                                               if(gbMac){\r
+                                                       sHTML+=nIFrameWidth+"px;height:"+nIFrameHeight+"px;\"></IFRAME>";\r
+                                               }else{\r
+                                                       sHTML+="100%; height:100%;\"></IFRAME>";\r
+                                               }\r
+                                               oDiv.innerHTML=sHTML;\r
+                                       }else if(gbNav6){\r
+                                               gsHTML="<IFRAME ID="+this.msIFrameId+" title=\"" + this.msName + "\" SRC=\""+strFile+"\" BORDER=0 FRAMEBORDER=no STYLE=\"width:100%;border:0;height:100%;\"></IFRAME>";\r
+                                               goDiv = oDiv;\r
+                                               setTimeout("delayLoad()", 100);\r
+                                       }\r
+                                       this.mbloaded=true;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       this.unload=function()\r
+       {\r
+               var oDiv=getElement(this.msDivId);\r
+               if(oDiv)\r
+                       oDiv.innerHTML="";\r
+       }\r
+       this.getDivHTML=function()\r
+       {\r
+               var sHTML="";\r
+               if(gbMac&&gbIE4)\r
+                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;margin:0;padding:0;border:0;\">";\r
+               else if(gbIE5)\r
+                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;\">";\r
+               else if(gbIE4||gbWindows)\r
+                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;visibility:hidden\">";\r
+               else\r
+                       sHTML+="<DIV ID="+this.msDivId+" ALIGN=left STYLE=\"position:absolute;z-index:1;left:0;top:0;width:100%;height:"+parent.height+";visibility:hidden\">";\r
+               sHTML+="</DIV>";\r
+               return sHTML;\r
+       }\r
+}  \r
+\r
+function whComMan()\r
+{\r
+       this.sName="";\r
+       this.maCom=new Array();\r
+       this.addCom=function(sName,sComFile)\r
+       {\r
+               var owhCom=new whCom(sName,sComFile);\r
+               this.maCom[this.maCom.length]=owhCom;\r
+       }\r
+       this.init=function()\r
+       {\r
+               var sHTML="";\r
+               for(var i=0;i<this.maCom.length;i++)\r
+               {\r
+                       sHTML+=this.maCom[i].getDivHTML();\r
+               }\r
+               document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
+\r
+       }\r
+       this.showById=function(nId)\r
+       {\r
+               for(var s=0;s<this.maCom.length;s++)\r
+               {\r
+                       if(s!==nId)\r
+                               this.maCom[s].show(false);\r
+               }\r
+               this.maCom[nId].show(true);\r
+       }\r
+       this.show=function(sName)\r
+       {\r
+               navigator.currentNavPen = sName;\r
+               var bFound=false;\r
+               for(var i=0;i<this.maCom.length;i++)\r
+               {\r
+                       if(sName==this.maCom[i].msName)\r
+                       {\r
+                               bFound=true;\r
+                               break;\r
+                       }\r
+               }\r
+               if(bFound)\r
+               {\r
+                       this.showById(i);\r
+                       this.sName=sName;\r
+               }\r
+       }\r
+       this.unload=function()\r
+       {\r
+               for(var i=0;i<this.maCom.length;i++)\r
+               {\r
+                       this.maCom[i].unload();\r
+               }               \r
+       }\r
+       this.getCurrent=function()\r
+       {\r
+               return this.sName;\r
+       }\r
+}\r
+\r
+function getPath()\r
+{\r
+       if(gsPath=="")\r
+       {\r
+               gsPath=location.href;\r
+               gsPath=_replaceSlash(gsPath);\r
+               var nPosFile=gsPath.lastIndexOf("/");\r
+               gsPath=gsPath.substring(0,nPosFile+1);\r
+       }\r
+       return gsPath;\r
+}\r
+\r
+goMan=new whComMan();\r
+function addPane(sName,sFileName)\r
+{\r
+       var oParam=new Object();\r
+       oParam.sName=sName;\r
+       var oMsg=new whMessage(WH_MSG_GETPANE, this, 1, oParam);\r
+       if (SendMessage(oMsg))\r
+       {\r
+               if (oMsg.oParam.bEnable)\r
+                       goMan.addCom(sName,sFileName);\r
+       }\r
+       else\r
+               goMan.addCom(sName,sFileName);  \r
+}\r
+\r
+function setShowPane(sName, bForce)\r
+{\r
+       if ((gsFirstPane == "") || bForce)\r
+       {\r
+               var oMsg=new whMessage(WH_MSG_GETDEFPANE, this, 1, null);\r
+               if (SendMessage(oMsg))\r
+               {\r
+                       if (oMsg.oParam)\r
+                               gsFirstPane = oMsg.oParam;\r
+                       else\r
+                               gsFirstPane=sName;\r
+               }\r
+               else\r
+                       gsFirstPane=sName;\r
+       }\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
+       var bHidePane=false;\r
+       if (SendMessage(oMsg))\r
+       {\r
+               if(oMsg.oParam>0)\r
+               {\r
+                       if(oMsg.oParam==1)\r
+                               gsFirstPane="toc";\r
+                       else if(oMsg.oParam==2)\r
+                               gsFirstPane="idx";\r
+                       else if(oMsg.oParam==3)\r
+                               gsFirstPane="fts";\r
+                       else if(oMsg.oParam==4)\r
+                               gsFirstPane="glo";\r
+               }\r
+               else if(oMsg.oParam==0)\r
+               {\r
+                       bHidePane=true;\r
+               }\r
+       }\r
+       goMan.init();\r
+       if(gsProjName!="")                      \r
+               loadData2(gsProjName);  \r
+       if (bHidePane)\r
+       {\r
+               gsFirstPane="";\r
+               var oMsg1=new whMessage(WH_MSG_HIDEPANE, this, 1, null)\r
+               SendMessage(oMsg1);\r
+       }\r
+       else\r
+       {\r
+               if(gsFirstPane!="")\r
+                       goMan.show(gsFirstPane);\r
+               else\r
+                       goMan.showById(0);\r
+       }\r
+}\r
+\r
+function setServerEnabled()\r
+{\r
+       gServerEnabled = true;\r
+}\r
+\r
+function loadData2(strFile)\r
+{\r
+       if(gbXML)\r
+               loadDataXML(strFile);\r
+       else\r
+               loadData(strFile);\r
+}\r
+\r
+function addProject(bPreferXML,sXMLName,sHTMLName)\r
+{\r
+       var bLoadXML=bPreferXML;\r
+       if(!gbIE4&&!gbNav6&&!gbOpera7)\r
+               return;\r
+       if(gbIE4&&!gbIE5)\r
+               bLoadXML=false;\r
+       if (gbIE5&&!gbMac)\r
+               bLoadXML=true;\r
+       if(gbIE55||gbNav6)\r
+               bLoadXML=true;\r
+       if(gbOpera7)\r
+               bLoadXML=false;         \r
+       if(bLoadXML)\r
+               addProjectXML(sXMLName);\r
+       else\r
+               addProjectHTML(sHTMLName);\r
+}\r
+\r
+function addProjectHTML(sName)\r
+{\r
+       gbXML=false;\r
+       gsProjName=sName;\r
+}\r
+\r
+function addProjectXML(sName)\r
+{\r
+       gbXML=true;\r
+       gsProjName=sName;\r
+}\r
+\r
+function window_MyBunload()\r
+{\r
+       goMan.unload();\r
+       window_BUnload();\r
+}\r
+\r
+function putDataXML(xmlDoc,sdocPath)\r
+{\r
+       if(xmlDoc!=null)\r
+       {\r
+               var projectNode=xmlDoc.getElementsByTagName("project")[0];\r
+               if(projectNode)\r
+               {\r
+                       var aRProj=new Array();\r
+                       aRProj[0]=new Object();\r
+                       aRProj[0].sPPath=_getPath(sdocPath);\r
+                       var sLangId=projectNode.getAttribute("langid");\r
+                       if(sLangId)\r
+                       {\r
+                               aRProj[0].sLangId=sLangId;\r
+                       }\r
+                       var sDPath=projectNode.getAttribute("datapath");\r
+                       if(sDPath)\r
+                       {\r
+                               if(sDPath.lastIndexOf("/")!=sDPath.length-1)\r
+                                       sDPath+="/";\r
+                               aRProj[0].sDPath=sDPath;\r
+                       }\r
+                       else\r
+                               aRProj[0].sDPath="";\r
+                       aRProj[0].sToc=projectNode.getAttribute("toc");\r
+                       aRProj[0].sIdx=projectNode.getAttribute("index");\r
+                       aRProj[0].sFts=projectNode.getAttribute("fts");\r
+                       aRProj[0].sGlo=projectNode.getAttribute("glossary");\r
+                       var RmtProject=projectNode.getElementsByTagName("remote");\r
+                       var nCount=1;\r
+                       for (var i=0;i<RmtProject.length;i++)\r
+                       {\r
+                               var sURL=RmtProject[i].getAttribute("url");\r
+                               if(sURL)\r
+                               {\r
+                                       if(sURL.lastIndexOf("/")!=sURL.length-1)\r
+                                               sURL+="/";\r
+                                       aRProj[nCount]=new Object();\r
+                                       aRProj[nCount++].sPPath=_getFullPath(aRProj[0].sPPath,sURL);\r
+                               }\r
+                       }\r
+                       putProjectInfo(aRProj);\r
+               }\r
+               else\r
+               {\r
+                       // on Netscape 6.0 under some situation the xml file cannot be loaded.\r
+                       // so we use pure html instead.\r
+                       if (gnChecked == 0)\r
+                               setTimeout("redirectToList();",100);\r
+                       else\r
+                       {\r
+                               gnChecked++;\r
+                               setTimeout("checkRemoteProject();", 1);\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function onLoadXMLError()\r
+{\r
+       gnChecked++;\r
+       setTimeout("checkRemoteProject();", 1);\r
+}\r
+\r
+function redirectToList()\r
+{\r
+       if(gbReDirectThis)\r
+               document.location=gsNavReDirect;\r
+       else\r
+               parent.document.location=gsNavReDirect;\r
+}\r
+\r
+function putProjectInfo(aRProj)\r
+{\r
+       if(gnChecked==0||isSamePath(gaProj[gnChecked].sPPath,aRProj[0].sPPath))\r
+       {\r
+               if(gnChecked!=0)\r
+               {\r
+                       if(aRProj[0].sLangId!=gaProj[0].sLangId)\r
+                               alert("The merged Help system "+aRProj[0].sPPath+" is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system.");\r
+               }\r
+               gaProj[gnChecked]=aRProj[0];\r
+               for(var i=1;i<aRProj.length;i++)\r
+               {\r
+                       var bFound=false;\r
+                       for(var j=0;j<gaProj.length;j++)\r
+                       {\r
+                               if(isSamePath(gaProj[j].sPPath,aRProj[i].sPPath))\r
+                               {\r
+                                       bFound=true;\r
+                                       break;\r
+                               }\r
+                       }\r
+                       if(!bFound)\r
+                       {\r
+                               gaProj[gaProj.length]=aRProj[i];\r
+                       }\r
+               }\r
+               gnChecked++;\r
+               setTimeout("checkRemoteProject();", 1);\r
+       }\r
+       else\r
+               alert("Could not load correctly, please click Refresh.");\r
+}\r
+\r
+function isSamePath(sPath1,sPath2)\r
+{\r
+       return (sPath1.toLowerCase()==sPath2.toLowerCase());\r
+}\r
+\r
+function checkRemoteProject()\r
+{\r
+       if(gaProj.length!=gnChecked)\r
+       {\r
+               setTimeout("cancelProj("+gnChecked+");",10000);\r
+               loadData2(gaProj[gnChecked].sPPath+gsProjName);\r
+       }\r
+       else{\r
+               var oMsg=new whMessage(WH_MSG_PROJECTREADY,this,1,null);\r
+               gbReady=true;\r
+               SendMessage(oMsg);\r
+       }\r
+}\r
+\r
+function cancelProj(i)\r
+{\r
+       if(i==gnChecked)\r
+       {\r
+               gnChecked++;\r
+               setTimeout("checkRemoteProject();", 1);\r
+       }       \r
+}\r
+\r
+function window_resize()\r
+{\r
+       for(var i=0;i<goMan.maCom.length;i++)\r
+       {\r
+               var oFrame=getElement(goMan.maCom[i].msIFrameId);\r
+               if(oFrame)\r
+               {\r
+                       oFrame.style.height=document.body.clientHeight;\r
+                       oFrame.style.width=document.body.clientWidth;\r
+               }\r
+       }\r
+       window_resize2();\r
+}\r
+\r
+function window_resize2()\r
+{\r
+       if(document.body)\r
+       {\r
+               if(document.body.clientWidth > 1 && document.body.clientHeight>1)\r
+               {\r
+                       var oMsg = new whMessage(WH_MSG_RESIZEPANE, this, 1, null);\r
+                       SendMessage(oMsg);\r
+               }\r
+       }\r
+}\r
+\r
+function window_unload()\r
+{\r
+       UnRegisterListener2(this,WH_MSG_GETPROJINFO);\r
+       UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
+       UnRegisterListener2(this,WH_MSG_SHOWIDX);\r
+       UnRegisterListener2(this,WH_MSG_SHOWFTS);\r
+       UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
+       UnRegisterListener2(this,WH_MSG_GETPANEINFO);\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       if(oMsg)\r
+       {\r
+               var nMsgId=oMsg.nMessageId;\r
+               if(nMsgId==WH_MSG_GETPROJINFO)\r
+               {\r
+                       if(gbReady)\r
+                       {\r
+                               var oProj=new Object();\r
+                               oProj.aProj=gaProj;\r
+                               oProj.bXML=gbXML;\r
+                               oMsg.oParam=oProj;\r
+                       }\r
+                       else\r
+                               return false;\r
+               }\r
+               else if(nMsgId==WH_MSG_SHOWTOC)\r
+               {\r
+                       if(goMan)\r
+                               goMan.show("toc");\r
+                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "toc");\r
+                       SendMessage(onMsg);\r
+                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
+                       SendMessage(onMsg);\r
+               }\r
+               else if(nMsgId==WH_MSG_SHOWIDX)\r
+               {\r
+                       if(goMan)\r
+                               goMan.show("idx");\r
+                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "idx");\r
+                       SendMessage(onMsg);\r
+                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
+                       SendMessage(onMsg);\r
+               }\r
+               else if(nMsgId==WH_MSG_SHOWFTS)\r
+               {\r
+                       if(goMan)\r
+                               goMan.show("fts");\r
+                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "fts");\r
+                       SendMessage(onMsg);\r
+                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
+                       SendMessage(onMsg);\r
+               }\r
+               else if(nMsgId==WH_MSG_SHOWGLO)\r
+               {\r
+                       if(goMan)\r
+                               goMan.show("glo");\r
+                       var onMsg=new whMessage(WH_MSG_PANEINFO, this, 1, "glo");\r
+                       SendMessage(onMsg);\r
+                       onMsg = new whMessage(WH_MSG_SHOWPANE, this, 1, null);\r
+                       SendMessage(onMsg);\r
+               }\r
+               else if(nMsgId==WH_MSG_GETPANEINFO)\r
+               {\r
+                       oMsg.oParam=goMan.getCurrent();\r
+                       return false;\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
+{\r
+       RegisterListener2(this,WH_MSG_GETPROJINFO);\r
+       RegisterListener2(this,WH_MSG_SHOWTOC);\r
+       RegisterListener2(this,WH_MSG_SHOWIDX);\r
+       RegisterListener2(this,WH_MSG_SHOWFTS);\r
+       RegisterListener2(this,WH_MSG_SHOWGLO);\r
+       RegisterListener2(this,WH_MSG_GETPANEINFO);\r
+\r
+       if((gbMac&&gbIE4)||(gbSunOS&&gbIE5)||gbOpera7)\r
+       {\r
+               window.onresize=window_resize;\r
+       }\r
+       else if(gbIE4)\r
+       {\r
+               window.onresize=window_resize2;\r
+       }\r
+       window.onload=window_OnLoad;\r
+       window.onbeforeunload=window_MyBunload;\r
+       window.onunload=window_unload;\r
+       gbWhPHost=true;\r
+}\r
+else\r
+       document.location.reload();\r
+\r
diff --git a/doc/salome/gui/GAUSS/whproj.htm b/doc/salome/gui/GAUSS/whproj.htm
new file mode 100644 (file)
index 0000000..be8cee2
--- /dev/null
@@ -0,0 +1,24 @@
+<html>\r
+<head>\r
+<title>project description</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whproj.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+  setLangId("1033");\r
+  setDataPath("whdata");\r
+  addToc("whtoc.htm");\r
+  addIdx("whidx.htm");\r
+  addFts("whfts.htm");\r
+\r
+\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whproj.js b/doc/salome/gui/GAUSS/whproj.js
new file mode 100644 (file)
index 0000000..ae38fa9
--- /dev/null
@@ -0,0 +1,85 @@
+//     WebHelp 5.10.001\r
+var gaProj=new Array();\r
+\r
+gaProj[0]=new project("");\r
+\r
+function setLangId(sLangId)\r
+{\r
+       gaProj[0].sLangId=sLangId;\r
+}\r
+\r
+function setDataPath(sPath)\r
+{\r
+       if(sPath.length!=0)\r
+       {\r
+               if(sPath.lastIndexOf("/")!=sPath.length-1)\r
+                       sPath+="/";\r
+               gaProj[0].sDPath=sPath; \r
+       }\r
+       else\r
+               gaProj[0].sDPath="";\r
+}\r
+\r
+function addToc(sFile)\r
+{\r
+       gaProj[0].sToc=sFile;\r
+}\r
+\r
+function addIdx(sFile)\r
+{\r
+       gaProj[0].sIdx=sFile;\r
+}\r
+\r
+function addFts(sFile)\r
+{\r
+       gaProj[0].sFts=sFile;\r
+}\r
+\r
+function addGlo(sFile)\r
+{\r
+       gaProj[0].sGlo=sFile;\r
+}\r
+\r
+function addRemoteProject(sProjRelPath)\r
+{\r
+       if(sProjRelPath.lastIndexOf("/")!=sProjRelPath.length-1)\r
+               sProjRelPath+="/";\r
+       gaProj[gaProj.length]=new project(sProjRelPath);\r
+}\r
+\r
+function project(sPPath)\r
+{\r
+       this.sPPath=sPPath;\r
+       this.sLangId="";\r
+       this.sDPath="";\r
+       this.sToc="";\r
+       this.sIdx="";\r
+       this.sFts="";\r
+       this.sGlo="";\r
+}\r
+\r
+window.onload=window_OnLoad;\r
+\r
+function window_OnLoad()\r
+{\r
+       gsName=document.location.href;\r
+       gsName=_replaceSlash(gsName);\r
+       var nPos=gsName.lastIndexOf("/");\r
+       if(nPos!=-1)\r
+               gaProj[0].sPPath=gsName.substring(0,nPos+1);\r
+       else\r
+               alert("Error in Loading navigation component. Please regenerate WebHelp.");\r
+       patchPath(gaProj);\r
+       if(parent&&parent!=this&& typeof(parent.putProjectInfo)=="function")\r
+       {\r
+               parent.putProjectInfo(gaProj);\r
+       }\r
+}\r
+\r
+function patchPath(aProj)\r
+{\r
+       for(var i=1;i<aProj.length;i++)\r
+       {\r
+               aProj[i].sPPath=_getFullPath(gaProj[0].sPPath,aProj[i].sPPath);\r
+       }\r
+}
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whproj.xml b/doc/salome/gui/GAUSS/whproj.xml
new file mode 100644 (file)
index 0000000..a7f78dd
--- /dev/null
@@ -0,0 +1,3 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<project langid="1033" datapath="whxdata" toc="whtoc.xml" index="whidx.xml" fts="whfts.xml" >\r
+</project>\r
diff --git a/doc/salome/gui/GAUSS/whproxy.js b/doc/salome/gui/GAUSS/whproxy.js
new file mode 100644 (file)
index 0000000..d0ee298
--- /dev/null
@@ -0,0 +1,74 @@
+//     WebHelp 5.10.001\r
+var gbInited=false;\r
+var gWndStubPage=null;\r
+function getStubPage()\r
+{\r
+       if(!gbInited)\r
+       {\r
+               gWndStubPage=getStubPage_inter(window);\r
+               gbInited=true;\r
+       }\r
+       return gWndStubPage;\r
+}\r
+\r
+function getStubPage_inter(wCurrent)\r
+{\r
+       if(null==wCurrent.parent||wCurrent.parent==wCurrent)\r
+               return null;\r
+\r
+       if(typeof(wCurrent.parent.whname)=="string"&&"wh_stub"==wCurrent.parent.whname)\r
+               return wCurrent.parent;\r
+       else\r
+               if(wCurrent.parent.frames.length!=0&&wCurrent.parent!=wCurrent)\r
+                       return getStubPage_inter(wCurrent.parent);\r
+               else\r
+                       return null;\r
+}\r
+\r
+function RegisterListener(framename,nMessageId)\r
+{\r
+       var wSP=getStubPage();\r
+       if(wSP&&wSP!=this)\r
+               return wSP.RegisterListener(framename,nMessageId);\r
+       else\r
+               return false;\r
+}\r
+\r
+function RegisterListener2(oframe,nMessageId)\r
+{\r
+       var wSP=getStubPage();\r
+       if(wSP&&wSP!=this)\r
+               return wSP.RegisterListener2(oframe,nMessageId);\r
+       else\r
+               return false;\r
+}\r
+\r
+function UnRegisterListener2(oframe,nMessageId)\r
+{\r
+       var wSP=getStubPage();\r
+       if(wSP&&wSP!=this&&wSP.UnRegisterListener2)\r
+               return wSP.UnRegisterListener2(oframe,nMessageId);\r
+       else\r
+               return false;\r
+}\r
+\r
+function SendMessage(oMessage)\r
+{\r
+       var wSP=getStubPage();\r
+       if(wSP&&wSP!=this&&wSP.SendMessage)\r
+               return wSP.SendMessage(oMessage);\r
+       else\r
+               return false;\r
+}\r
+\r
+var gbWhProxy=true;\r
+\r
+var gbPreview=false;\r
+gbPreview=false; \r
+if (gbPreview)\r
+       document.oncontextmenu=contextMenu;\r
+\r
+function contextMenu()\r
+{\r
+       return false;\r
+}\r
diff --git a/doc/salome/gui/GAUSS/whres.xml b/doc/salome/gui/GAUSS/whres.xml
new file mode 100644 (file)
index 0000000..44600d5
--- /dev/null
@@ -0,0 +1,256 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<resource>\r
+<item name="Prev" value="&lt;&lt;" />\r
+<item name="Hide" value="Hide" />\r
+<item name="SyncTocTooltip" value="Sync TOC" />\r
+<item name="InTopicSearchBtnText" value="Go" />\r
+<item name="FtsInputPrompt" value="Type in the word(s) to search for:" />\r
+<item name="Done" value="Done" />\r
+<item name="Logo/Author" value="Powered By" />\r
+<item name="MergeError1" value="The merged Help system" />\r
+<item name="JS_alert_cantLoadProject" value="Can't load project:" />\r
+<item name="Next" value="&gt;&gt;" />\r
+<item name="SyncToc" value="SyncToc" />\r
+<item name="MergeError2" value="is using a different language from the master Help system, which will cause the index and full-text search functionality to be disabled in the merged Help system." />\r
+<item name="nls_body_instruction" value="Enter your question in the text box above, then click GO." />\r
+<item name="ToolBarSearchBtnText" value="Go" />\r
+<item name="SuggestViewNoFrameMessage" value="To view the Help system without frames click on this" />\r
+<item name="Hide_Navigation_Component" value="Hide Navigation Component" />\r
+<item name="FtsBtnText" value="Go" />\r
+<item name="TopicsFound" value="Topics Found" />\r
+<item name="LoadingContentsData" value="Loading, click here to cancel..." />\r
+<item name="Definition" value="Definition:" />\r
+<item name="CompletingContents" value="Completing Contents..." />\r
+<item name="Seperate" value="|" />\r
+<item name="GeneratedBy" value="Generated by" />\r
+<item name="PoweredBy" value="Powered by" />\r
+<item name="IndexAlphabetBookmarks" value="ABCDEFGHIJKLMNOPQRSTUVWXYZ" />\r
+<item name="Contents" value="Contents" />\r
+<item name="IndexSelectTopicLabel" value="Select a topic, then click Display" />\r
+<item name="Disabled Prev" value="&lt;&lt;" />\r
+<item name="Glossary" value="Glossary" />\r
+<item name="Search" value="Search" />\r
+<item name="CantSearch" value="Cannot search for that phrase." />\r
+<item name="LoadingIndex" value="Loading Index..." />\r
+<item name="LoadingData" value="Loading data, please wait..." />\r
+<item name="Show_Navigation_Component" value="Show Navigation Component" />\r
+<item name="Book" value="Book" />\r
+<item name="Disabled Next" value="&gt;&gt;" />\r
+<item name="nls_body_empty" value="Sorry, we were unable to find a good answer for your question." />\r
+<item name="nls_button_go_hint" value="Go Search" />\r
+<item name="Find" value="Find" />\r
+<item name="CantOpenURLorFile" value="Can't open URL or file" />\r
+<item name="Print" value="Print" />\r
+<item name="About" value="About" />\r
+<item name="Author" value="Author" />\r
+<item name="IndexSelectTopicTitle" value="Select a Topic" />\r
+<item name="Blank_topic_text" value="This topic was created by WinHelp Project Conversion Wizard, and is the destination of a missing topic or broken hyperlink." />\r
+<item name="BrowserLimitedMessage" value="Your browser does not support frames. We recommend that you update your browser to a version that supports frames." />\r
+<item name="LoadingTOCItem" value="Loading Table of Contents:" />\r
+<item name="Display" value="Display" />\r
+<item name="Cancel" value="Cancel" />\r
+<item name="IndexSelectTopicError" value="Please select a topic." />\r
+<item name="nls_edit_label" value="Type in your question:" />\r
+<item name="SearchLabel" value="Search" />\r
+<item name="RelateTopicListPrompt" value="Click a topic, then click Display." />\r
+<item name="NextTooltip" value="Next Topic" />\r
+<item name="JS_alert_colorlimitation" value="WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors." />\r
+<item name="TopicsNotFound" value="No Topics Found." />\r
+<item name="Show" value="Show" />\r
+<item name="PreTooltip" value="Previous Topic" />\r
+<item name="SearchPrompt" value="- Search -" />\r
+<item name="IndexBtnText" value="Go" />\r
+<item name="JS_alert_ProjectLoadingFail" value="Could not load correctly, please click Refresh." />\r
+<item name="LoadingContents" value="Loading contents, please wait..." />\r
+<item name="Term" value="Term:" />\r
+<item name="WebSearchButton" value="WebSearch" />\r
+<item name="Remote_Page" value="Remote Page" />\r
+<item name="WebSearch" value="WebSearch" />\r
+<item name="LoadingFTS" value="Reading Search Data..." />\r
+<item name="Index" value="Index" />\r
+<item name="JS_alert_ErrorInLoading" value="Error in Loading navigation component. Please regenerate WebHelp." />\r
+<item name="JS_alert_appletNotLoad" value="Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited." />\r
+<item name="IndexInputPrompt" value="Type in the keyword to find:" />\r
+<item name="Page" value="Page" />\r
+<item name="SuggestViewNoFrameMsg2" value="hyperlink." />\r
+<item name="nls_button_go_text" value="Go" />\r
+<item name="Searching" value="Searching..." />\r
+\r
+  <item name="English"   value="" />\r
+  <item name="langorder" value="0,1,2,3,4,5,6,7,8,40,41,42,43,44,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,38,45,46,47,48,49,50,33,51,52,53,88,54,34,55,56,115,119,121,123,125,126,127,128,129,130,57,58,89,90,91,59,60,131,148,150,154,158,168,171,173,175,185,187,189,191,193,197,214,216,218,220,225,230,240,242,244,246,252,61,62,63,64,66,67,131,148,150,154,158,168,171,173,175,185,187,189,191,193,197,214,216,218,220,225,230,240,242,244,246,252,68,69,70,71,27,114,28,82,170,85,112,109,110,65,113,223,86,213,29,255,30,31,80,81,83,84,111,36,37,79,229,222,87,212,32,254,251,39,72,97,98,99,100,73,101,74,102,133,93,103,35,104,75,105,92,122,124,76,106,107,108,77,120,199,94,116,117,118,78,131,131,131,131,131,131,131,150,158,158,158,158,175,175,175,175,154,193,197,197,197,197,197,95,197,230,230,230,230,246,227,224,131,131,131,131,131,131,131,150,158,158,158,158,175,175,175,175,154,193,197,197,197,197,197,96,197,230,230,230,230,246,227,250," />\r
+\r
+  <panes show="0">\r
+    <toc />\r
+    <index />\r
+    <fts />\r
+  </panes>\r
+\r
+  <stopwords>\r
+    <word name="a" />\r
+    <word name="about" />\r
+    <word name="after" />\r
+    <word name="against" />\r
+    <word name="all" />\r
+    <word name="also" />\r
+    <word name="among" />\r
+    <word name="an" />\r
+    <word name="and" />\r
+    <word name="are" />\r
+    <word name="as" />\r
+    <word name="at" />\r
+    <word name="be" />\r
+    <word name="became" />\r
+    <word name="because" />\r
+    <word name="been" />\r
+    <word name="between" />\r
+    <word name="but" />\r
+    <word name="by" />\r
+    <word name="can" />\r
+    <word name="come" />\r
+    <word name="do" />\r
+    <word name="during" />\r
+    <word name="each" />\r
+    <word name="early" />\r
+    <word name="for" />\r
+    <word name="form" />\r
+    <word name="found" />\r
+    <word name="from" />\r
+    <word name="had" />\r
+    <word name="has" />\r
+    <word name="have" />\r
+    <word name="he" />\r
+    <word name="her" />\r
+    <word name="his" />\r
+    <word name="however" />\r
+    <word name="in" />\r
+    <word name="include" />\r
+    <word name="into" />\r
+    <word name="is" />\r
+    <word name="it" />\r
+    <word name="its" />\r
+    <word name="late" />\r
+    <word name="later" />\r
+    <word name="made" />\r
+    <word name="many" />\r
+    <word name="may" />\r
+    <word name="me" />\r
+    <word name="med" />\r
+    <word name="more" />\r
+    <word name="most" />\r
+    <word name="near" />\r
+    <word name="no" />\r
+    <word name="non" />\r
+    <word name="not" />\r
+    <word name="of" />\r
+    <word name="on" />\r
+    <word name="only" />\r
+    <word name="or" />\r
+    <word name="other" />\r
+    <word name="over" />\r
+    <word name="several" />\r
+    <word name="she" />\r
+    <word name="some" />\r
+    <word name="such" />\r
+    <word name="than" />\r
+    <word name="that" />\r
+    <word name="the" />\r
+    <word name="their" />\r
+    <word name="then" />\r
+    <word name="there" />\r
+    <word name="these" />\r
+    <word name="they" />\r
+    <word name="this" />\r
+    <word name="through" />\r
+    <word name="to" />\r
+    <word name="under" />\r
+    <word name="until" />\r
+    <word name="use" />\r
+    <word name="was" />\r
+    <word name="we" />\r
+    <word name="were" />\r
+    <word name="when" />\r
+    <word name="where" />\r
+    <word name="which" />\r
+    <word name="who" />\r
+    <word name="with" />\r
+    <word name="you" />\r
+  </stopwords>\r
+\r
+  <stems>\r
+    <stem name="ed" />\r
+    <stem name="es" />\r
+    <stem name="er" />\r
+    <stem name="e" />\r
+    <stem name="s" />\r
+    <stem name="ingly" />\r
+    <stem name="ing" />\r
+    <stem name="ly" />\r
+  </stems>\r
+\r
+       <paneskin>\r
+               <background color="#ffffff" img="" />\r
+               <font name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="none" />\r
+               <toc>\r
+                       <background color="#ffffff" img="" />\r
+                       <icons>\r
+                               <book open="wht_toc2.gif" close="wht_toc1.gif" />\r
+                               <item  local="wht_toc3.gif" remote="wht_toc4.gif" />\r
+                               <newbook open="" close="" />\r
+                               <newitem  local="" remote="" />\r
+                       </icons>\r
+                       <fonts>\r
+                               <normal name="Tahoma" size="8pt" color="#000000" style="Normal" weight="Normal" decoration="none" />\r
+                               <hover name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="underline" />\r
+                       </fonts>\r
+                       <activebackgroundcolor attr="#c0c0c0" />\r
+                       <margin attr="" />\r
+                       <indent attr="" />\r
+               </toc>\r
+               <index>\r
+                       <form>\r
+                               <fonts>\r
+                                       <title name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="none" />\r
+                               </fonts>\r
+                               <button normal="" hover="" />\r
+                               <editwith value="20" />\r
+                       </form>\r
+                       <background color="#ffffff" img="" />\r
+                       <fonts>\r
+                               <normal name="Tahoma" size="8pt" color="#000000" style="Normal" weight="Normal" decoration="none" />\r
+                               <hover name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="underline" />\r
+                               <empty name="" size="8pt" color="" style="" weight="" decoration="" />\r
+                       </fonts>\r
+                       <activebackgroundcolor attr="#c0c0c0" />\r
+                       <margin attr="" />\r
+                       <indent attr="" />\r
+               </index>\r
+               <fts>\r
+                       <form>\r
+                               <fonts>\r
+                                       <title name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="none" />\r
+                               </fonts>\r
+                               <button normal="" hover="" />\r
+                               <editwith value="20" />\r
+                       </form>\r
+                       <background color="#ffffff" img="" />\r
+                       <fonts>\r
+                               <normal name="Tahoma" size="8pt" color="#000000" style="Normal" weight="Normal" decoration="none" />\r
+                               <hover name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="underline" />\r
+                               <error name="Tahoma" size="8pt" color="#000000" style="Normal" weight="Normal" decoration="none" />\r
+                       </fonts>\r
+                       <activebackgroundcolor attr="#c0c0c0" />\r
+                       <margin attr="" />\r
+                       <indent attr="" />\r
+               </fts>\r
+               <glossary>\r
+                       <background color="#ffffff" img="" />\r
+                       <fonts>\r
+                               <normal name="Tahoma" size="8pt" color="#000000" style="Normal" weight="Normal" decoration="none" />\r
+                               <hover name="Tahoma" size="8pt" color="#000080" style="Normal" weight="Normal" decoration="underline" />\r
+                       </fonts>\r
+                       <activebackgroundcolor attr="#c0c0c0" />\r
+                       <margin attr="" />\r
+                       <indent attr="" />\r
+               </glossary>\r
+       </paneskin>\r
+</resource>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whrstart.ico b/doc/salome/gui/GAUSS/whrstart.ico
new file mode 100644 (file)
index 0000000..bffcd6e
Binary files /dev/null and b/doc/salome/gui/GAUSS/whrstart.ico differ
diff --git a/doc/salome/gui/GAUSS/whskin_banner.htm b/doc/salome/gui/GAUSS/whskin_banner.htm
new file mode 100644 (file)
index 0000000..b903d49
--- /dev/null
@@ -0,0 +1,49 @@
+<html>\r
+<head>\r
+<title>About WebHelp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<style type="text/css">\r
+<!--\r
+P {margin-left:5pt;margin-top:2pt;margin-bottom:2pt;font-size:8pt;font-family:Verdana,sans-serif;}\r
+P.disp {margin-left:5pt; margin-top:0pt;margin-bottom:10pt;font-size:7pt;font-family:Verdana,sans-serif;}\r
+//-->\r
+</style>\r
+<script>\r
+<!--\r
+// this block fix: HTML Dialog Ignores Size Parameters Without SCRIPT Block\r
+//-->\r
+</script> \r
+<body bgcolor="white" scroll=no RIGHTMARGIN=0 BOTTOMMARGIN=0 TOPMARGIN=0 LEFTMARGIN=0>\r
+<table border="0" cellpadding="0" cellspacing="0" width="350">\r
+  <tr>\r
+   <td><img src="wht_spac.gif" width="99" height="1" border="0"></td>\r
+   <td><img src="wht_spac.gif" width="251" height="1" border="0"></td>\r
+   <td><img src="wht_spac.gif" width="1" height="1" border="0"></td>\r
+  </tr>\r
+  <tr>\r
+   <td width="99" height="190" rowspan="3" valign="top"><img src="wht_abgw.jpg" border="0"></td>\r
+   <td width="211" height="60" valign="top"><img src="wht_abtw.jpg" border="0"></td>\r
+   <td><img src="wht_spac.gif" width="1" height="65" border="0"></td>\r
+  </tr>\r
+  <tr>\r
+   <td valign="top">\r
+               <p><a href="http://www.ehelp.com" target="_blank">Macromedia</a></p>\r
+               <p><nobr>Copyright © 1992 - 2004, eHelp Corporation</nobr></p>\r
+               <p>Author:&nbsp;Macromedia</p>\r
+   </td>\r
+   <td><img src="wht_spac.gif" width="1" height="50" border="0"></td>\r
+  </tr>\r
+  <tr>\r
+   <td valign="top">\r
+               <p>Powered by:&nbsp;WebHelp 5.50\r
+               <br>Generated by:&nbsp;RoboHelp X5\r
+               <br><a class="tail" href="http://www.ehelp.com/webhelp1" target="_blank">www.ehelp.com</a></p>\r
+   </td>\r
+   <td><img src="wht_spac.gif" width="1" height="50" border="0"></td>\r
+  </tr>\r
+</table>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whskin_blank.htm b/doc/salome/gui/GAUSS/whskin_blank.htm
new file mode 100644 (file)
index 0000000..43439a8
--- /dev/null
@@ -0,0 +1,10 @@
+<html>\r
+<head>\r
+<title>Blank Page</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whskin_frmset01.htm b/doc/salome/gui/GAUSS/whskin_frmset01.htm
new file mode 100644 (file)
index 0000000..3b8d56a
--- /dev/null
@@ -0,0 +1,172 @@
+\r
+<html>\r
+<head>\r
+</head>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" >\r
+<!--\r
+if (!window.gbWhVer||!window.gbWhUtil||!window.gbWhMsg)\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+\r
+<script type="text/javascript" language="javascript" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript">\r
+<!--\r
+if (!window.gbWhProxy)\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+\r
+\r
+<script language="javascript">\r
+<!--\r
+var gsPane="";\r
+var gnType=3;\r
+\r
+var oMsgPane = new whMessage(WH_MSG_GETPANETYPE, this, 1, null);\r
+if (SendMessage(oMsgPane))\r
+{\r
+       gsPane = oMsgPane.oParam.sPaneURL;\r
+       gnType = oMsgPane.oParam.nType;\r
+}\r
+\r
+       var strDefaultTopic = "about:blank";\r
+       var oParam = new Object();\r
+       oParam.sTopic = "";\r
+       var oMsg = new whMessage(WH_MSG_GETDEFAULTTOPIC, this, 1, oParam);\r
+       if (SendMessage(oMsg) && oParam.sTopic != "")\r
+               strDefaultTopic =  oParam.sTopic;\r
+var strHTML = "";\r
+if (gnType == 4)\r
+{\r
+       //no navipane at all\r
+       strHTML += "<frameset border=\"0\" cols=\"100%,*\">";\r
+       strHTML += "<frame src=\"" + strDefaultTopic + "\" name=\"bsscright\" framespacing=\"0\" frameborder=\"0\" border=\"0\" scrolling=\"auto\">";\r
+       strHTML += "<frame src=\"whskin_blank.htm\" noresize>";\r
+       strHTML += "</frameset>";\r
+}\r
+else\r
+       strHTML += "<frameset cols=\"220,*\" hostof=\"parent:minibar_navpane|topic!startpage:no\" frameborder=\"1\" id=\"whPfset\"><frame src=\"whskin_frmset010.htm\" id=\"minibar_navpane\" frameborder=\"0\" border=\"0\" scrolling=\"auto\" marginheight=\"0\" marginwidth=\"0\"></frame><frame src=\""+strDefaultTopic+"\" id=\"topic\" frameborder=\"1\" border=\"1\" scrolling=\"auto\" title=\"Topic\" name=\"bsscright\"></frame></frameset>";\r
+document.write(strHTML);\r
+// handle show pane, hide pane and query pane status message.\r
+RegisterListener2(this, WH_MSG_RESIZEPANE);\r
+RegisterListener2(this, WH_MSG_SHOWPANE);\r
+RegisterListener2(this, WH_MSG_HIDEPANE);\r
+RegisterListener2(this, WH_MSG_ISPANEVISIBLE);\r
+\r
+function window_unload()\r
+{\r
+       UnRegisterListener2(this, WH_MSG_RESIZEPANE);\r
+       UnRegisterListener2(this, WH_MSG_SHOWPANE);\r
+       UnRegisterListener2(this, WH_MSG_HIDEPANE);\r
+       UnRegisterListener2(this, WH_MSG_ISPANEVISIBLE);\r
+}\r
+\r
+window.onunload=window_unload;\r
+\r
+var gbShow=false;\r
+var gstrFrameLastSetting="";\r
+function onSendMessage(oMsg)\r
+{\r
+       var oMsgout = null;\r
+       var nMsgId = oMsg.nMessageId;\r
+       var oFrameset = null;\r
+       if (nMsgId == WH_MSG_SHOWPANE)\r
+       {\r
+               if (!gbShow)\r
+               {\r
+                       oFrameset = getElement("whPfset");\r
+                       if (oFrameset)\r
+                       {\r
+                               if (gstrFrameLastSetting)\r
+                                       oFrameset.cols= gstrFrameLastSetting;\r
+                               else\r
+                                       oFrameset.cols= "220,*";\r
+                       }\r
+                       gbShow=true;\r
+                       oMsgout = new whMessage(WH_MSG_PANESTATUE, this, 1, "visible");\r
+                       SendMessage(oMsgout);\r
+               }\r
+               return false;\r
+       }\r
+       else if (nMsgId == WH_MSG_HIDEPANE)\r
+       {\r
+               oFrameset = getElement("whPfset");\r
+               if (oFrameset)\r
+               {\r
+                       gstrFrameLastSetting=oFrameset.cols; \r
+                       var oWnd=frames[0];\r
+                       if (oWnd && oWnd.document && oWnd.document.body)\r
+                       {\r
+                               var nPos=0;\r
+                               if ("cols"=="cols")\r
+                                       nPos=oWnd.document.body.offsetWidth;\r
+                               else\r
+                                       nPos=oWnd.document.body.offsetHeight;\r
+                               if(0==0)\r
+                                       gstrFrameLastSetting=nPos+",*";\r
+                               else\r
+                                       gstrFrameLastSetting="*,"+nPos;\r
+                       }\r
+                       oFrameset.cols = "0,*";\r
+               }\r
+               gbShow=false;\r
+               oMsgout = new whMessage(WH_MSG_PANESTATUE, this, 1, "invisible");\r
+               SendMessage(oMsgout);\r
+               return false;\r
+       }\r
+       else if (nMsgId == WH_MSG_RESIZEPANE)\r
+       {\r
+               if (!gbShow)\r
+               {\r
+                       gbShow=true;\r
+                       oMsgout = new whMessage(WH_MSG_PANESTATUE, this, 1, "visible");\r
+                       SendMessage(oMsgout);\r
+               }\r
+               return false;\r
+       }\r
+       else if (nMsgId == WH_MSG_ISPANEVISIBLE)\r
+       {\r
+               oMsg.oParam.bVisible = isNavPaneVisible();\r
+               return false;\r
+       }\r
+       return true;\r
+}\r
+\r
+function isNavPaneVisible()\r
+{\r
+       var bVisible = false;\r
+       var sSplit = getElement("whPfset").cols;\r
+       var nSplit = sSplit.indexOf(",");\r
+       if (nSplit != -1)\r
+       {\r
+               var sPart1 = sSplit.substring(0, nSplit);\r
+               var sPart2 = sSplit.substring(nSplit + 1);\r
+               if ("minibar_navpane" == "navpane")\r
+               {\r
+                       var sTemp = sPart1;\r
+                       sPart1 = sPart2;\r
+                       sPart2 = sTemp;\r
+               }\r
+\r
+               if (sPart2 != "*")\r
+               {\r
+                       var n = parseInt(sPart2);\r
+                       if (n>0)\r
+                               bVisible = true;\r
+               }\r
+               else\r
+               {\r
+                       if (sPart1 != "100%")\r
+                               bVisible = true;\r
+               }\r
+       }\r
+       return bVisible;\r
+}\r
+//-->\r
+</script>\r
+\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whskin_frmset010.htm b/doc/salome/gui/GAUSS/whskin_frmset010.htm
new file mode 100644 (file)
index 0000000..8a02235
--- /dev/null
@@ -0,0 +1,50 @@
+\r
+<html>\r
+<head>\r
+</head>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" >\r
+<!--\r
+if (!window.gbWhVer||!window.gbWhUtil||!window.gbWhMsg)\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+\r
+<script type="text/javascript" language="javascript" src="whproxy.js"></script>\r
+<script type="text/javascript" language="javascript">\r
+<!--\r
+if (!window.gbWhProxy)\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+\r
+\r
+<script language="javascript">\r
+<!--\r
+var gsPane="";\r
+var gnType=3;\r
+\r
+var oMsgPane = new whMessage(WH_MSG_GETPANETYPE, this, 1, null);\r
+if (SendMessage(oMsgPane))\r
+{\r
+       gsPane = oMsgPane.oParam.sPaneURL;\r
+       gnType = oMsgPane.oParam.nType;\r
+}\r
+var strHTML = "";\r
+if (gnType == 4)\r
+{\r
+       //no navipane at all\r
+       strHTML += "<frameset border=\"0\" cols=\"100%,*\">";\r
+       strHTML += "<frame src='whskin_mbars.htm' id='minibar' frameborder='0' border='0' scrolling='no' marginheight='0' title='Mini Toolbar'></frame>";\r
+       strHTML += "<frame src=\"whskin_blank.htm\" noresize>";\r
+       strHTML += "</frameset>";\r
+}\r
+else\r
+       strHTML += "<frameset rows=\"24,*\" hostof=\"parent:minibar|navpane!startpage:no\" frameborder=\"0\" border=\"0\"><frame src=\"whskin_mbars.htm\" id=\"minibar\" frameborder=\"0\" border=\"0\" scrolling=\"no\" marginheight=\"0\" title=\"Mini Toolbar\"></frame><frame src=\""+gsPane+"\" id=\"navpane\" frameborder=\"0\" border=\"0\" scrolling=\"no\" marginheight=\"0\" marginwidth=\"0\" title=\"Navigator Pane\"></frame></frameset>";\r
+\r
+document.write(strHTML);\r
+//-->\r
+</script>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whskin_homepage.htm b/doc/salome/gui/GAUSS/whskin_homepage.htm
new file mode 100644 (file)
index 0000000..138b4ed
--- /dev/null
@@ -0,0 +1,139 @@
+\r
+<html>\r
+<head><script language="javascript">\r
+<!--\r
+var sIcon="whstart.ico";\r
+var sPath=document.location.href;\r
+if (sPath.indexOf("http")!= -1)\r
+       document.write("<link REL=\"SHORTCUT ICON\" href=\""+ sIcon +"\">");\r
+//-->\r
+</script>\r
+ <title>Gauss Points Viewer</title>\r
+ <meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+ <meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<script type="text/javascript" language="javascript" src="whver.js"></script>\r
+<script type="text/javascript" language="javascript" src="whutils.js"></script>\r
+<script type="text/javascript" language="javascript" src="whmsg.js"></script>\r
+<script type="text/javascript" language="javascript" >\r
+<!--\r
+if (!window.gbWhVer||!window.gbWhUtil||!window.gbWhMsg)\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+\r
+<script type="text/javascript" language="javascript" src="whstub.js"></script>\r
+<script language="javascript">\r
+<!--\r
+var nWebhelpNavPaneMode = 1;                   //1: DHTML 2:Applet 3:PureHTML 4:NoframeAt all\r
+var strPaneDHTML  = "whskin_pdhtml.htm";               //whd_nvp10.htm  if tab enabled, whnframe.htm if tab disabled.\r
+var strPaneApplet = "whskin_papplet.htm";\r
+var strPaneList   = "whskin_plist.htm";\r
+var bNoApplet  = false;\r
+\r
+var strPane = "";\r
+\r
+var nViewFrameType = -1;\r
+\r
+if (!window.gAgent)\r
+{\r
+       // low end browser, we don't even try to determine it.\r
+       document.location = "whnjs.htm";\r
+}\r
+else\r
+{\r
+       if (!gbNav4&&!gbIE4&&!gbOpera7&&!gbSafari)                              \r
+               document.location = "whnjs.htm";\r
+       else if (gbNav4 && !gbNav6 && ((gnVerMinor <= 4.06)))\r
+               document.location = "whnjs.htm";\r
+       else if (gbMac && gbIE4 && !gbIE5)              \r
+               document.location = "whnjs.htm";\r
+       //figure out which mode is the best\r
+       else\r
+       {\r
+               nViewFrameType=nWebhelpNavPaneMode;\r
+               if (nWebhelpNavPaneMode==1||nWebhelpNavPaneMode == 2)\r
+               {\r
+                       var gbDHTML=(nWebhelpNavPaneMode==1);\r
+                       if (gbNav4)                                                                             nViewFrameType = 2;\r
+                       if (gbNav4&&(gnVerMinor < 4.1))                                         nViewFrameType = 3;\r
+                       if (gbNav4&&(gnVerMinor == 4.6))                                        nViewFrameType = 3;\r
+                       if (gbIE4&&gbDHTML)                                                                     nViewFrameType = 1;\r
+                       if (gbIE4&&gbSunOS&&nWebhelpNavPaneMode==2)                     nViewFrameType = 3;\r
+                       if (gbNav4&&gbSunOS&&nViewFrameType==2)                 nViewFrameType = 3;\r
+                       if (gbNav6&&gbDHTML)                                                            nViewFrameType = 1;\r
+                       if (gbNav6&&!gbNav61&&nWebhelpNavPaneMode == 2)         nViewFrameType = 3;\r
+                       if (gbMac)                                                                                      nViewFrameType = 3;\r
+                       if (gbOpera7&&nViewFrameType == 2)                                      nViewFrameType = 3;\r
+                       if ((bNoApplet)&&(nViewFrameType == 2))                         nViewFrameType = 3;\r
+               }\r
+       }\r
+}\r
+\r
+if (nViewFrameType!=-1)\r
+{\r
+       var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
+       //The colordepth of the 16 color on Windows is 1. \r
+       if ((gbWindows) && (gbNav4) && (window.screen) && (window.screen.colorDepth <= 4))\r
+       {\r
+          alert("WebHelp has detected that your display is set to 16 colors. For full WebHelp support, please set your display to use 256 or more colors.");\r
+          nViewFrameType = 3;\r
+       }\r
+\r
+       //figure out which one is navpane\r
+       // ReplaceMark:nViewFrameType = 1\r
+       if (nViewFrameType == 1)\r
+       {\r
+               if (gbNav4 && !gbNav6)\r
+                       strPane = strPaneList;\r
+               else\r
+                       strPane = strPaneDHTML;\r
+       }\r
+       else if (nViewFrameType == 2)\r
+               strPane = strPaneApplet;\r
+       else\r
+               strPane = strPaneList;\r
+}\r
+//-->\r
+</script>\r
+<script type="text/javascript" language="javascript" src="whstart.js"></script>\r
+<script type="text/javascript" language="javascript">\r
+<!--\r
+if (!gbIE4&&!gbNav4&&!gbOpera7&&!gbSafari)\r
+       document.location = "whnjs.htm";\r
+\r
+function CMRAgent( strID, strURL, strLabel, strFrameAttr )\r
+{\r
+  this.m_strID = strID;\r
+  this.m_strURL = strURL;\r
+  this.m_strLabel = strLabel;\r
+  this.m_strFrameAttr = strFrameAttr;\r
+}\r
+\r
+function CMRServer()\r
+{\r
+  this.m_cAgents = new Array;\r
+}\r
+var cMRServer = new CMRServer;\r
+// GetServerInfo\r
+// Registry the agent array handled by webhelp\r
+// ReplaceMark:MRServer.strServerData\r
+//-->\r
+</script>\r
+\r
+<script type="text/javascript" language="javascript">\r
+<!--\r
+if (nViewFrameType!=-1)\r
+{\r
+       var strHTML = "<frameset rows=\"32,*\" hostof=\"parent:toolbar!startpage:yes\" frameborder=\"0\" border=\"0\"><frame src=\"whskin_tbars.htm\" id=\"toolbar\" frameborder=\"0\" border=\"0\" scrolling=\"no\" noresize marginheight=\"0\" marginwidth=\"0\" title=\"Toolbar\"></frame><frame src=\"whskin_frmset01.htm\"  frameborder=\"1\" border=\"1\" scrolling=\"auto\" marginheight=\"0\" marginwidth=\"0\"></frame></frameset>";\r
+       document.write(strHTML);\r
+}\r
+//-->\r
+</script>\r
+\r
+<frameset cols="100%,*" frameborder=no border=0>\r
+  <frame src="whnjs.htm">\r
+  <frame src="whskin_blank.htm" noresize>\r
+</frameset>\r
+\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whskin_info.htm b/doc/salome/gui/GAUSS/whskin_info.htm
new file mode 100644 (file)
index 0000000..8281332
--- /dev/null
@@ -0,0 +1,20 @@
+<html>\r
+<head>\r
+<title>WebHelp 5.50 </title>\r
+<meta name="description" content="output from robohelp">\r
+<meta name="keywords" content="robohelp,webhelp,webhelp enterprise,roboinfo">\r
+</head>\r
+<body>\r
+<h1> WebHelp 5.50 System  Info </h1>\r
+<table>\r
+<tr><td> Start Page </td><td>gauss_points_viewer.htm</td></tr>\r
+<tr><td> Skin Name </td><td>Default</td></tr>\r
+<tr><td> Generating Time </td><td>12:05 12/20/2005</td></tr>\r
+<tr><td> Language ID </td><td>1033</td></tr>\r
+<tr><td> Compile Script </td><td>webhelp5_compile_script.xml</td></tr>\r
+<tr><td> Compile Build Version </td><td>13.10.606</td></tr>\r
+<tr><td> Product Name </td><td>WebHelp 5.50</td></tr>\r
+<tr><td> Authoring Tool Name </td><td>RoboHelp X5</td></tr>\r
+<table>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whskin_mbars.htm b/doc/salome/gui/GAUSS/whskin_mbars.htm
new file mode 100644 (file)
index 0000000..c4fa48a
--- /dev/null
@@ -0,0 +1,59 @@
+<html>\r
+<head>\r
+<title> WebHelp Navigation Mini-bar </title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<style>\r
+<!--\r
+body {margin:0;}\r
+-->\r
+</style>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whmozemu.js"></script>\r
+<script language="javascript1.2" src="whtbar.js"></script>\r
+<body marginheight="0"  marginwidth="0"  bgcolor="#99ccff"     scroll="no">\r
+<script language="javascript1.2">\r
+<!--\r
+if (window.gbWhTBar)\r
+{\r
+       setButtonFont("avprev","Tahoma","8pt","Black","Normal","Normal","none");\r
+setButtonFont("avnext","Tahoma","8pt","Black","Normal","Normal","none");\r
+setButtonFont("synctoc","Tahoma","8pt","Black","Normal","Normal","none");\r
+setButtonFont("hide2","Tahoma","8pt","Black","Normal","Normal","none");\r
+\r
+       gsIPrev = "wht_prev.gif";\r
+       gsIPrevD = "wht_prev_g.gif";\r
+       gsINext = "wht_next.gif";\r
+       gsINextD = "wht_next_g.gif";\r
+       gsISync = "wht_sync.gif";\r
+       gsIHide = "wht_hide.gif";\r
+       setBackgroundcolor("#99ccff");\r
+       \r
+       \r
+       addButton("avprev",BTN_TEXT|BTN_IMG,"","","","","",0,0,"","","","","","");\r
+addButton("avnext",BTN_TEXT|BTN_IMG,"","","","","",0,0,"","","","","","");\r
+addButton("synctoc",BTN_TEXT|BTN_IMG,"","","","","",0,0,"","","","","","");\r
+addButton("hide2",BTN_TEXT|BTN_IMG,"","","","","",0,0,"","","","","","");\r
+\r
+       addButton("blankblock");\r
+       writeStyle(true);\r
+       ReSortMinibarButtons();\r
+       writeToolBar();\r
+}\r
+else\r
+       document.location.reload();\r
+\r
+if (window.gbNav6)\r
+{\r
+       var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
+       SendMessage(oMsg);\r
+}\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whskin_papplet.htm b/doc/salome/gui/GAUSS/whskin_papplet.htm
new file mode 100644 (file)
index 0000000..3e2e3ed
--- /dev/null
@@ -0,0 +1,360 @@
+<html>\r
+<head>\r
+<title>Navigation Pane</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+var gsInitPane="toc";\r
+var gsCurrentPane="";\r
+var gbLoading = "unknown";\r
+var gbTryTime = 0;\r
+var gbMaxTryTime = 6;\r
+var gbPassPhase0 = 0;\r
+var gbretried = 0;\r
+var gbmaxretry = 3;\r
+var gbretrytime = new Array();\r
+\r
+var origWidth = 0;\r
+var origHeight = 0;\r
+\r
+gbretrytime[0]= 5000;\r
+gbretrytime[1]= 30000;\r
+gbretrytime[2]= 60000;\r
+\r
+function addPane(sName, sFile)\r
+{\r
+}\r
+\r
+function setShowPane(sName)\r
+{\r
+       gsInitPane=sName;\r
+}\r
+  addPane("toc","whtdhtml.htm");\r
+  addPane("idx","whidhtml.htm");\r
+  addPane("fts","whfdhtml.htm");\r
+  setShowPane("toc");\r
+\r
+\r
+function window_unload()\r
+{\r
+       if (!gbNav4 || gbNav6) // resize will call unload, but the register code will never be called on Netscape 4.\r
+       {\r
+               UnRegisterListener2(this, WH_MSG_SHOWTOC);\r
+               UnRegisterListener2(this, WH_MSG_SHOWIDX);\r
+               UnRegisterListener2(this, WH_MSG_SHOWFTS);\r
+               UnRegisterListener2(this, WH_MSG_SHOWGLO);\r
+               UnRegisterListener2(this, WH_MSG_SYNCTOC);\r
+               UnRegisterListener2(this, WH_MSG_SEARCHTHIS);\r
+               UnRegisterListener2(this, WH_MSG_GETPANEINFO);\r
+       }\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       var bHidePane=false;\r
+       var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
+       if (SendMessage(oMsg))\r
+       {\r
+               if(oMsg.oParam>0)\r
+               {\r
+                       if(oMsg.oParam==1)\r
+                               gsInitPane="toc";\r
+                       else if(oMsg.oParam==2)\r
+                               gsInitPane="idx";\r
+                       else if(oMsg.oParam==3)\r
+                               gsInitPane="fts";\r
+                       else if(oMsg.oParam==4)\r
+                               gsInitPane="glo";\r
+               }\r
+               else if(oMsg.oParam==0)\r
+               {\r
+                       bHidePane=true;\r
+               }\r
+       }\r
+       if (bHidePane)\r
+       {\r
+               oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null)\r
+               SendMessage(oMsg);\r
+       }\r
+       else if (gsInitPane == "toc")\r
+       {\r
+               oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
+               SendMessage(oMsg);      \r
+       }\r
+       else if (gsInitPane=="idx")\r
+       {\r
+               oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)\r
+               SendMessage(oMsg);      \r
+       }\r
+       else if (gsInitPane=="fts")\r
+       {\r
+               oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)\r
+               SendMessage(oMsg);      \r
+       }\r
+       else if (gsInitPane=="glo")\r
+       {\r
+               oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)\r
+               SendMessage(oMsg);      \r
+       }\r
+       \r
+}\r
+\r
+function onResize()\r
+{\r
+       var oMsg=null;\r
+       if (gbIE4)\r
+       {\r
+               if(document.body)\r
+               {\r
+                       if(document.body.clientWidth > 1 && document.body.clientHeight>1)\r
+                       {\r
+                               oMsg = new whMessage(WH_MSG_RESIZEPANE,this,1,null);\r
+                               SendMessage(oMsg);\r
+                       }\r
+               }\r
+       }\r
+       else \r
+       {\r
+               if (window.innerWidth != 0 && window.innerHeight != 0)\r
+               {\r
+                       oMsg = new whMessage(WH_MSG_RESIZEPANE,this,1,null);\r
+                       SendMessage(oMsg);\r
+               }\r
+       }\r
+}\r
+\r
+function CheckLoadingPhase0()\r
+{\r
+       if (!gbPassPhase0) {\r
+               setTimeout("CheckLoadingPhase0()", 1000);\r
+               document.applets[0];\r
+               gbPassPhase0 = 1;\r
+       }\r
+       else {\r
+               CheckLoadingPhase1();\r
+       }\r
+}\r
+\r
+function CheckLoadingPhase1()\r
+{\r
+       if (gbNav4) {\r
+               if ("unknown" == gbLoading && document.readystate < 4) {\r
+                       setTimeout("CheckLoadingPhase1()", 1000);\r
+               }\r
+               else if ("unknown" == gbLoading) {\r
+                       CheckLoadingPhase2();\r
+               }\r
+       }\r
+}\r
+\r
+function CheckLoadingPhase2()\r
+{\r
+       if (gbNav4) {\r
+               gbTryTime ++;\r
+               if ("unknown" == gbLoading) {\r
+                       if (gbTryTime <= gbMaxTryTime )\r
+                               setTimeout("CheckLoadingPhase2()", 1000);\r
+                       else {\r
+                               if (gnVerMinor != 4.60) {\r
+                                       alert("Unable to load applet. If you are using an old version of Netscape, the prefs.js file needs to be edited.");\r
+                               }\r
+                       }       \r
+               }\r
+       }\r
+}\r
+\r
+function CheckAppletLoaded()\r
+{\r
+       if (typeof(document.WebHelp) == "undefined")\r
+       {\r
+               document.location.reload();\r
+               if (gbretried < gbmaxretry)\r
+               {\r
+                       gbretried ++;\r
+                       setTimeout("CheckAppletLoaded();", gbretrytime[gbretried]);\r
+               }\r
+       }\r
+}\r
+\r
+function reDo() \r
+{\r
+       if (innerWidth != origWidth || innerHeight != origHeight)  \r
+       {\r
+               //reloaded applet if nessary\r
+               gbretried = 0;\r
+\r
+               if (gnVerMinor == 4.60) \r
+               {\r
+                       //reload the applet again.\r
+                       document.location.reload();\r
+                       gbretried ++;\r
+               }\r
+               setTimeout("CheckAppletLoaded();", gbretrytime[gbretried]);\r
+       }\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       if (oMsg)\r
+       {       \r
+               var nMsgId = oMsg.nMessageId;\r
+               var WebHelpApplet = null;\r
+               if (gbNav4)\r
+               {\r
+                       WebHelpApplet = document.applets["WebHelp"];\r
+                       if (!WebHelpApplet.Command)\r
+                               document.location="whskin_plist.htm";\r
+               }\r
+               else\r
+                       WebHelpApplet = window.WebHelp;\r
+\r
+               if(nMsgId==WH_MSG_GETPANEINFO)\r
+               {\r
+                       oMsg.oParam=gsCurrentPane;\r
+                       return false;\r
+               }\r
+               else if(gbLoading!="unknown" || gbNav6)\r
+               {\r
+                       if (nMsgId == WH_MSG_SHOWTOC)\r
+                       {\r
+                               gsCurrentPane="toc";\r
+                               WebHelpApplet.Command("Contents",null);\r
+                               var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"toc");\r
+                               SendMessage(onMsg);\r
+                               onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                               SendMessage(onMsg);\r
+                       }\r
+                       else if(nMsgId==WH_MSG_SHOWIDX)\r
+                       {\r
+                               gsCurrentPane="idx";\r
+                               WebHelpApplet.Command("Index",null);\r
+                               var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"idx");\r
+                               SendMessage(onMsg);\r
+                               onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                               SendMessage(onMsg);\r
+                       }\r
+                       else if(nMsgId==WH_MSG_SHOWFTS)\r
+                       {\r
+                               gsCurrentPane="fts";\r
+                               WebHelpApplet.Command("Search",null);\r
+                               var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"fts");\r
+                               SendMessage(onMsg);\r
+                               onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                               SendMessage(onMsg);\r
+                       }\r
+                       else if(nMsgId==WH_MSG_SHOWGLO)\r
+                       {\r
+                               gsCurrentPane="glo";\r
+                               WebHelpApplet.Command("Glossary",null);\r
+                               var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"glo");\r
+                               SendMessage(onMsg);\r
+                               onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                               SendMessage(onMsg);\r
+                       }\r
+                       else if(nMsgId==WH_MSG_SYNCTOC)\r
+                       {\r
+                               gsCurrentPane="toc";\r
+                               var oTopicParam=oMsg.oParam;\r
+                               if(oTopicParam&&oTopicParam.aPaths&&oTopicParam.aPaths.length>0&&oTopicParam.sPPath)\r
+                               {\r
+                                       var sPPath=_browserStringToText(oTopicParam.sPPath);\r
+                                       var sParam="";\r
+                                       for(var i=0;i<oTopicParam.aPaths.length;i++)\r
+                                       {\r
+                                               sParam+=oTopicParam.aPaths[i]+"\r\r";\r
+                                       }\r
+                                       WebHelpApplet.Command("SyncToc",sPPath,sParam);\r
+                               }\r
+                       }\r
+                       else if(nMsgId==WH_MSG_SEARCHTHIS)\r
+                       {\r
+                               gsCurrentPane="fts";\r
+                               WebHelpApplet.Command("Search",oMsg.oParam);\r
+                               var onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"fts");\r
+                               SendMessage(onMsg);\r
+                               onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                               SendMessage(onMsg);\r
+                       }\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+function getInitTocInfo()\r
+{\r
+       var oParam=new Object();\r
+       oParam.oTocInfo=null;\r
+       var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam);\r
+       if(SendMessage(oMsg))\r
+       {\r
+               var oTopicParam=oMsg.oParam.oTocInfo;\r
+               if(oTopicParam&&oTopicParam.aPaths&&oTopicParam.aPaths.length>0&&oTopicParam.sPPath)\r
+               {\r
+                       var sPPath=_browserStringToText(oTopicParam.sPPath);\r
+                       var sParam="";\r
+                       for(var i=0;i<oTopicParam.aPaths.length;i++)\r
+                       {\r
+                               sParam+=oTopicParam.aPaths[i]+"\r\r";\r
+                       }\r
+                       var WebHelpApplet;\r
+                       if(gbNav4)\r
+                               WebHelpApplet=document.applets["WebHelp"];\r
+                       else\r
+                               WebHelpApplet=WebHelp;\r
+                       WebHelpApplet.Command("SyncToc",sPPath,sParam);\r
+               }\r
+       }\r
+}\r
+\r
+if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
+{\r
+       RegisterListener2(this, WH_MSG_SHOWTOC);\r
+       RegisterListener2(this, WH_MSG_SHOWIDX);\r
+       RegisterListener2(this, WH_MSG_SHOWFTS);\r
+       RegisterListener2(this, WH_MSG_SHOWGLO);\r
+       RegisterListener2(this, WH_MSG_SYNCTOC);\r
+       RegisterListener2(this, WH_MSG_SEARCHTHIS);\r
+       RegisterListener2(this, WH_MSG_GETPANEINFO);\r
+\r
+       window.onresize=onResize;\r
+       window.onunload = window_unload;\r
+       window.onload=window_OnLoad;\r
+       window.onerror = null;\r
+       var gbWindows = ((gAgent.indexOf("win") != -1) || (gAgent.indexOf("16bit") != -1));\r
+\r
+       if (gbNav4 && !gbNav6 && gbWindows) {\r
+               setTimeout("CheckLoadingPhase0()", 1000);\r
+       }\r
+       if (gbNav4)\r
+       {\r
+               origWidth = innerWidth;\r
+               origHeight = innerHeight;\r
+               onresize = reDo;\r
+       }\r
+}\r
+else\r
+       document.location.reload();\r
+\r
+if (window.gbNav6)\r
+{\r
+       var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
+       SendMessage(oMsg);\r
+}\r
+//-->\r
+</script>\r
+</head>\r
+<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" bgcolor="c0c0c0">\r
+<applet code=WebHelp.class name=WebHelp  archive=webhelp.jar width=100% height=100% MAYSCRIPT hspace=0 vspace=0>\r
+<PARAM name=ProjectFile value=whproj.xml><PARAM name=ResourceFile value=whres.xml>\r
+<PARAM name=HideTabs value=true>\r
+<PARAM name=Frame value=bsscright>\r
+<PARAM name=cabbase value=webhelp.cab>\r
+</applet>\r
+</body>\r
+</html>\r
diff --git a/doc/salome/gui/GAUSS/whskin_pdhtml.htm b/doc/salome/gui/GAUSS/whskin_pdhtml.htm
new file mode 100644 (file)
index 0000000..9ee30a3
--- /dev/null
@@ -0,0 +1,64 @@
+<html>\r
+<head>\r
+<title> Navigation Pane </title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<body border=0 topmargin=0 bottommargin=0 rightmargin=0 leftmargin=0 scroll=no>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmozemu.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whphost.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+if (window.gbWhPHost)\r
+{\r
+       var gsNavReDirect="whskin_plist.htm";\r
+       var gbReDirectThis=true;\r
+       var oMsg = new whMessage(WH_MSG_GETPANES, this, 1, null);\r
+       if (SendMessage(oMsg))\r
+       {\r
+               if (oMsg.oParam)\r
+               {\r
+                       for (var i=0;i<oMsg.oParam.aPanes.length;i++)\r
+                       {\r
+                               addPane(oMsg.oParam.aPanes[i].sPaneName, oMsg.oParam.aPanes[i].sPaneURL);\r
+                       }\r
+                       setShowPane(oMsg.oParam.sDefault);\r
+                       setServerEnabled();\r
+               }\r
+               else\r
+                       writeWebHelpPane();\r
+       }\r
+       else\r
+               writeWebHelpPane();\r
+}\r
+else\r
+       document.location.reload();\r
+\r
+if (window.gbNav6)\r
+{\r
+       var oMsg=new whMessage(WH_MSG_RELOADNS6,this, 1,null);\r
+       SendMessage(oMsg);\r
+}\r
+\r
+\r
+function writeWebHelpPane()\r
+{\r
+  var bPreferXML             = false;\r
+  var strProjectFileXML =  "whproj.xml";\r
+  var strProjectFileHTM =  "whproj.htm";       \r
+  addProject(bPreferXML, strProjectFileXML, strProjectFileHTM);\r
+  addPane("toc","whtdhtml.htm");\r
+  addPane("idx","whidhtml.htm");\r
+  addPane("fts","whfdhtml.htm");\r
+  setShowPane("toc");\r
+\r
+}\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whskin_pickup.htm b/doc/salome/gui/GAUSS/whskin_pickup.htm
new file mode 100644 (file)
index 0000000..1f1af7f
--- /dev/null
@@ -0,0 +1,229 @@
+<html>\r
+<head>\r
+<title>Select a Topic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</title>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript">\r
+<!--\r
+var gsBgColor = "#c0c0c0";\r
+var gsBgImage = "";\r
+var gsListBgColor = "white";\r
+var gsListBgImage = "";\r
+var gsMargin="0pt";\r
+var gsIndent="0pt";\r
+var gSelectedItem = -1;\r
+\r
+\r
+var goFont=null;\r
+var goHoverFont=null;\r
+var goTableFont=null;\r
+var gsABgColor="#cccccc";\r
+\r
+function setListBackground(sBgImage)\r
+{\r
+       if (sBgImage != null && sBgImage.length > 0)\r
+               gsListBgImage = sBgImage;\r
+}\r
+\r
+function setListBackgroundcolor(sBgColor)\r
+{\r
+       if (sBgColor != null && sBgColor.length > 0)\r
+               gsListBgColor = sBgColor;\r
+}\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       if (sBgImage != null && sBgImage.length > 0)\r
+               gsBgImage = sBgImage;\r
+}\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       if (sBgColor != null && sBgColor.length > 0)\r
+               gsBgColor = sBgColor;\r
+}\r
+\r
+function setActiveBgColor(sBgColor)\r
+{\r
+       gsABgColor=sBgColor;\r
+}\r
+\r
+function setFont(sType, sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
+{\r
+       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
+       if (sType == "Normal")\r
+               goFont=vFont;\r
+       if (sType == "Hover")\r
+               goHoverFont=vFont;\r
+       else if (sType == "Table")\r
+               goTableFont=vFont;\r
+}\r
+\r
+function fnOnload()\r
+{\r
+       if( window.dialogArguments != null )\r
+               fnLoadOptions( window.dialogArguments );\r
+       var items = getElementsByTag(document, "a");\r
+       if (items.length > 0)\r
+               items[0].focus();\r
+}\r
+\r
+var gaOpts = new Array();\r
+\r
+function selectOption(index)\r
+{\r
+       gSelectedItem = index;\r
+}\r
+\r
+function displayOption(index)\r
+{\r
+       if (index < gaOpts.length)\r
+       {\r
+               returnValue = new Object();\r
+               returnValue.m_url = gaOpts[index];\r
+       }\r
+       else\r
+               returnValue = null;\r
+\r
+       window.close();\r
+}\r
+\r
+function fnLoadOptions( cList )\r
+{\r
+       var sHTML = "<dl>";\r
+       for( var i=0;i <cList.length; i++)\r
+       {\r
+               sHTML += "<dt><nobr><a href=\"javascript:void(0);\" onclick=\"return false;\" onfocus=\"selectOption(";\r
+               sHTML += gaOpts.length + ");return false;\" ondblclick=\"displayOption(" + gaOpts.length;\r
+               sHTML += ");return false;\">"+ _textToHtml(cList[i].m_sName) + "</a></nobr></dt>";\r
+               gaOpts[gaOpts.length] = cList[i].m_sURL;\r
+       }\r
+       sHTML += "</dl>";\r
+       var oDivCon=getElement("divlist");\r
+       if(oDivCon)\r
+               oDivCon.innerHTML=sHTML;\r
+       return true;\r
+}\r
+\r
+function fnOK()\r
+{\r
+       displayOption(gSelectedItem);\r
+}\r
+\r
+function fnCancel()\r
+{\r
+       returnValue = null;             window.close();\r
+}\r
+\r
+function fnOnKeypress()\r
+{\r
+       switch( event.keyCode )\r
+       {\r
+       case 13:        // enter key\r
+               fnOK();\r
+               break;\r
+       case 27:        // escape key\r
+               fnCancel();\r
+               break;\r
+       }\r
+}\r
+\r
+function writeStyle(bMiniBar)\r
+{\r
+       var sStyle="";\r
+       sStyle+="<style type='text/css'>\n";\r
+       sStyle+="<!--\n";\r
+       sStyle+="body.clsbody\n";\r
+       sStyle+="{\n";\r
+       sStyle+="margin: 4px;\n";\r
+       sStyle+=getFontStyle(goTableFont);\r
+       sStyle+="background-attachment: fixed;\n";\r
+       sStyle+="};\n";\r
+       sStyle+="P.clsNDXTD\n";\r
+       sStyle+="{\n";\r
+       sStyle+="margin:0;\n";\r
+       sStyle+=getFontStyle(goTableFont);\r
+       sStyle+="};\n";\r
+       sStyle+="div.clslist\n";\r
+       sStyle+="{\n";\r
+       if (gsListBgImage)\r
+               sStyle+="background-image:url("+gsListBgImage+");\n";\r
+       else if (gsListBgColor)\r
+               sStyle+="background-color:"+gsListBgColor+";\n";\r
+       sStyle+=getFontStyle(goFont);\r
+       sStyle+="};\n";\r
+       sStyle+="BUTTON.clsNDXButton\n";\r
+       sStyle+="{\n";\r
+       sStyle+=getFontStyle(goTableFont);\r
+       sStyle+="background-color: transparent;\n";\r
+       sStyle+="};\n";\r
+       sStyle+="dl {"+getFontStyle(goFont)+"margin-left:"+gsIndent+";margin-top:"+gsMargin+";}\n";\r
+       sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
+       sStyle+="A:hover {"+getFontStyle(goHoverFont)+"}\n";\r
+       sStyle+="</style>\n";\r
+       document.write(sStyle);\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if(document.body)\r
+       {\r
+               if(gsBgImage&&gsBgImage.length>0)\r
+               {\r
+                       document.body.background=gsBgImage;\r
+               }\r
+               if(gsBgColor&&gsBgColor.length>0)\r
+               {\r
+                       document.body.bgColor=gsBgColor;\r
+               }\r
+       }\r
+       fnOnload();\r
+       window_onResize();\r
+}\r
+\r
+function window_onResize()\r
+{\r
+       var oDiv = getElement("divlist");\r
+       var oTitle = getElement("p_title");\r
+       var oButton = getElement("tb_button");\r
+       if (oDiv && oTitle && oButton)\r
+       {\r
+               oDiv.style.height = document.body.offsetHeight - oTitle.offsetHeight - oButton.offsetHeight - 8;\r
+       }\r
+}\r
+goTableFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
+goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
+goHoverFont=new whFont("Verdana","8pt","#666666","normal","normal","none");\r
+\r
+\r
+setBackgroundcolor("White");\r
+\r
+setFont("Table", "Tahoma","8pt","Navy","Normal","Normal","none");\r
+setListBackgroundcolor("White");\r
+\r
+setFont("Normal", "Tahoma","8pt","Black","Normal","Normal","none");\r
+setFont("Hover", "Tahoma","8pt","Navy","Normal","Normal","underline");\r
+setActiveBgColor("Silver");\r
+\r
+window.onload=window_OnLoad;\r
+window.onresize = window_onResize;\r
+writeStyle();\r
+//-->\r
+</script>\r
+</head>\r
+\r
+<body class="clsbody" scroll="no" onkeypress="fnOnKeypress()">\r
+<p id="p_title" class="clsNDXTD"><nobr>Select a topic, then click Display</nobr></p>\r
+<div id="divlist" class="clslist" style="margin:2px;position: relative;overflow:auto;width:100%;border-style:inset;border-width:2">\r
+</div>\r
+<table id="tb_button" width="100%">\r
+  <tr>\r
+    <td width="100%" align="center"><button class="clsNDXButton" name="btnOK" onclick="fnOK()">Display</button>&#32;&#32;&#32;<button class="clsNDXButton" name="btnCancel" onclick="fnCancel()">Cancel</button></td>\r
+  </tr>\r
+</table>\r
+\r
+</body>\r
+\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whskin_plist.htm b/doc/salome/gui/GAUSS/whskin_plist.htm
new file mode 100644 (file)
index 0000000..f7cf6d1
--- /dev/null
@@ -0,0 +1,238 @@
+<html>\r
+<head>\r
+<title> Navigation Pane </title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+</head>\r
+<script language="javascript">\r
+<!--\r
+var strFrmToc="";\r
+var strFrmNdx="";\r
+var strFrmFts="";\r
+var strFrmGls="";\r
+var strFrmDft="";\r
+var gstrName="";\r
+\r
+//set overwrite here\r
+function setListFrames(strToc,strNdx,strFts,strGls,strDefault)\r
+{\r
+       strFrmToc=strToc;\r
+       strFrmNdx=strNdx;\r
+       strFrmFts=strFts;\r
+       strFrmGls=strGls;\r
+       strFrmDft=strDefault;\r
+       if(strFrmDft==strFrmToc)\r
+               gstrName="toc";\r
+       else if(strFrmDft==strFrmNdx)\r
+               gstrName="idx";\r
+       else if(strFrmDft==strFrmFts)\r
+               gstrName="fts";\r
+       else if(strFrmDft==strFrmGls)\r
+               gstrName="glo";\r
+}\r
+\r
+function setWebHelpPane()\r
+{\r
+       setListFrames("whgdata/whnvf30.htm","whgdata/whnvf31.htm","whgdata/whnvf32.htm","whgdata/whnvf33.htm","whgdata/whnvf30.htm");\r
+}\r
+\r
+function window_unload()\r
+{\r
+       if(!gbNav4||gbNav6) // resize will call unload, but the register code will never be called on Netscape 4.\r
+       {\r
+               UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
+               UnRegisterListener2(this,WH_MSG_SHOWIDX);\r
+               UnRegisterListener2(this,WH_MSG_SHOWFTS);\r
+               UnRegisterListener2(this,WH_MSG_SHOWGLO);\r
+               UnRegisterListener2(this,WH_MSG_GETPANEINFO);\r
+       }\r
+}\r
+\r
+function window_onload()\r
+{\r
+       var bHidePane=false;\r
+       var oMsg=new whMessage(WH_MSG_GETCMD,this,1,null);\r
+       if(SendMessage(oMsg))\r
+       {\r
+               if(oMsg.oParam>0)\r
+               {\r
+                       if(oMsg.oParam==1)\r
+                               gstrName="toc";\r
+                       else if(oMsg.oParam==2)\r
+                               gstrName="idx";\r
+                       else if(oMsg.oParam==3)\r
+                               gstrName="fts";\r
+                       else if(oMsg.oParam==4)\r
+                               gstrName="glo";\r
+                       switchNvp(gstrName);\r
+               }\r
+               else if(oMsg.oParam==0)\r
+               {\r
+                       bHidePane=true;\r
+               }\r
+               else if(gstrName)\r
+                       switchNvp(gstrName);\r
+       }\r
+       if(bHidePane)\r
+       {\r
+               oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null)\r
+               SendMessage(oMsg);\r
+       }\r
+       else if(gstrName)\r
+       {\r
+               oMsg=new whMessage(WH_MSG_PANEINFO,this,1,gstrName);\r
+               SendMessage(oMsg);\r
+       }\r
+       oMsg=new whMessage(WH_MSG_NOSYNC,this,1,null);\r
+       SendMessage(oMsg);\r
+       oMsg=new whMessage(WH_MSG_NOSEARCHINPUT,this,1,null);\r
+       SendMessage(oMsg);\r
+\r
+}\r
+\r
+function switchNvp(strName)\r
+{\r
+       var strFile="";\r
+       if(strName=="toc")              strFile=strFrmToc;\r
+       else if(strName=="idx") strFile=strFrmNdx;\r
+       else if(strName=="fts") strFile=strFrmFts;\r
+       else if(strName=="glo") strFile=strFrmGls;\r
+\r
+       gstrName=strName;\r
+       frames[0].location=strFile;     \r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       if(oMsg)\r
+       {\r
+               var onMsg=null;\r
+               var nMsgId=oMsg.nMessageId;\r
+               if(nMsgId==WH_MSG_SHOWTOC)\r
+               {\r
+                       switchNvp("toc");\r
+                       onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"toc");\r
+                       SendMessage(onMsg);\r
+                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                       SendMessage(onMsg);\r
+               }\r
+               else if(nMsgId==WH_MSG_SHOWIDX)\r
+               {\r
+                       switchNvp("idx");\r
+                       onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"idx");\r
+                       SendMessage(onMsg);\r
+                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                       SendMessage(onMsg);\r
+               }\r
+               else if(nMsgId==WH_MSG_SHOWFTS)\r
+               {\r
+                       switchNvp("fts");\r
+                       onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"fts");\r
+                       SendMessage(onMsg);\r
+                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                       SendMessage(onMsg);\r
+               }\r
+               else if(nMsgId==WH_MSG_SHOWGLO)\r
+               {\r
+                       switchNvp("glo");\r
+                       onMsg=new whMessage(WH_MSG_PANEINFO,this,1,"glo");\r
+                       SendMessage(onMsg);\r
+                       onMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+                       SendMessage(onMsg);\r
+               }\r
+               else if(nMsgId==WH_MSG_GETPANEINFO)\r
+               {\r
+                       oMsg.oParam=gstrName;\r
+                       return false;\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+function onResize()\r
+{\r
+       var oMsg=null;\r
+       if(gbIE4)\r
+       {\r
+               if(document.body)\r
+               {\r
+                       if(document.body.clientWidth>1&&document.body.clientHeight>1)\r
+                       {\r
+                               oMsg=new whMessage(WH_MSG_RESIZEPANE,this,1,null);\r
+                               SendMessage(oMsg);\r
+                       }\r
+               }\r
+       }\r
+       else\r
+       {\r
+               if(window.innerWidth!=0&&window.innerHeight!=0)\r
+               {\r
+                       oMsg=new whMessage(WH_MSG_RESIZEPANE,this,1,null);\r
+                       SendMessage(oMsg);\r
+               }\r
+       }\r
+}\r
+\r
+if(window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
+{\r
+       var oMsg=new whMessage(WH_MSG_GETPANES,this,1,null);\r
+       if(SendMessage(oMsg))\r
+       {\r
+               if(oMsg.oParam)\r
+               {\r
+                       for(var i=0;i<oMsg.oParam.aPanes.length;i++)\r
+                       {\r
+                               if(oMsg.oParam.aPanes[i].sPaneName=="toc")\r
+                                       strFrmToc=oMsg.oParam.aPanes[i].sPaneURL;\r
+                               else if(oMsg.oParam.aPanes[i].sPaneName=="idx")\r
+                                       strFrmNdx=oMsg.oParam.aPanes[i].sPaneURL;\r
+                               else if(oMsg.oParam.aPanes[i].sPaneName=="fts")\r
+                                       strFrmFts=oMsg.oParam.aPanes[i].sPaneURL;\r
+                               else if(oMsg.oParam.aPanes[i].sPaneName=="glo")\r
+                                       strFrmGls=oMsg.oParam.aPanes[i].sPaneURL;\r
+                               if(oMsg.oParam.sDefault==oMsg.oParam.aPanes[i].sPaneName)\r
+                               {\r
+                                       strFrmDft=oMsg.oParam.aPanes[i].sPaneURL;\r
+                               }\r
+                       }\r
+               }\r
+               else\r
+                       setWebHelpPane();\r
+       }\r
+       else\r
+               setWebHelpPane();\r
+\r
+       RegisterListener2(this,WH_MSG_SHOWTOC);\r
+       RegisterListener2(this,WH_MSG_SHOWIDX);\r
+       RegisterListener2(this,WH_MSG_SHOWFTS);\r
+       RegisterListener2(this,WH_MSG_SHOWGLO);\r
+       RegisterListener2(this,WH_MSG_GETPANEINFO);\r
+\r
+       if(gbIE55)\r
+               window.onresize=onResize;\r
+\r
+       window.onunload=window_unload;\r
+       window.onload=window_onload;\r
+\r
+       var strHtml="";\r
+       strHtml+="<frameset rows=\'100%,*\'>";\r
+       strHtml+="<frame name=\'nvplist\' title=\'navpane frame\' src=\'" + strFrmDft +"\'></frame>";\r
+       strHtml+="<frame src=\'whskin_blank.htm\' noresize></frame>";\r
+       strHtml+="</frameset>";\r
+       document.write(strHtml);\r
+}\r
+else\r
+       document.location.reload();\r
+\r
+if(window.gbNav6)\r
+{\r
+       var oMsg=new whMessage(WH_MSG_RELOADNS6,this,1,null);\r
+       SendMessage(oMsg);\r
+}\r
+//-->\r
+</script>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whskin_tbars.htm b/doc/salome/gui/GAUSS/whskin_tbars.htm
new file mode 100644 (file)
index 0000000..11dd09b
--- /dev/null
@@ -0,0 +1,101 @@
+<html>\r
+<head>\r
+<title> WebHelp Navigation Toolbar </title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+</head>\r
+<style>\r
+<!--\r
+body {margin:0;}\r
+-->\r
+</style>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whmozemu.js"></script>\r
+<script language="javascript1.2" src="whtbar.js"></script>\r
+\r
+\r
+<body marginheight="0"  marginwidth="0"  bgcolor="#99ccff"     scroll="no">\r
+<script language="javascript1.2">\r
+<!--\r
+if (window.gbWhTBar)\r
+{\r
+       setButtonFont("toc","Tahoma","8pt","Black","Normal","Normal","none");\r
+setButtonFont("toc","Tahoma","8pt","White","Normal","Normal","none", true);\r
+setButtonFont("idx","Tahoma","8pt","Black","Normal","Normal","none");\r
+setButtonFont("idx","Tahoma","8pt","White","Normal","Normal","none", true);\r
+setButtonFont("fts","Tahoma","8pt","Black","Normal","Normal","none");\r
+setButtonFont("fts","Tahoma","8pt","White","Normal","Normal","none", true);\r
+setButtonFont("glo","Tahoma","8pt","Black","Normal","Normal","none");\r
+setButtonFont("glo","Tahoma","8pt","White","Normal","Normal","none", true);\r
+setButtonFont("websearch","Tahoma","8pt","Black","Normal","Normal","none");\r
+setButtonFont("websearch","Tahoma","8pt","White","Normal","Normal","none", true);\r
+setButtonFont("searchform","Tahoma","8pt","Black","Normal","Normal","none");\r
+setButtonFont("searchform","","","","","","", true);\r
+setButtonFont("banner","","","","","","");\r
+setButtonFont("banner","","","","","","", true);\r
+\r
+       gsIToc = "wht_toc_n.gif";\r
+       gsITocS = "wht_toc_h.gif";\r
+       gsIIndex = "wht_idx_n.gif";\r
+       gsIIndexS = "wht_idx_h.gif";\r
+       gsISearch = "wht_fts_n.gif";\r
+       gsISearchS = "wht_fts_h.gif";\r
+       gsIGlossary = "wht_glo_n.gif";\r
+       gsIGlossaryS = "wht_glo_h.gif";\r
+       gsIWebSearch = "wht_ws.gif";\r
+       gsIWebSearchD = "wht_ws_g.gif";\r
+       gsIBanner = "wht_logo1.gif";\r
+       gsIGo = "wht_go.gif";\r
+       setBackgroundcolor("#99ccff");\r
+       \r
+       setAlignment("left");\r
+       \r
+       \r
+       if (!gsBgImage)\r
+       {\r
+       setButtonBgColor("toc", gsBgColor);\r
+       setButtonBgColor("idx", gsBgColor);\r
+       setButtonBgColor("fts", gsBgColor);\r
+       setButtonBgColor("glo", gsBgColor);\r
+       setButtonBgColor("toc", gsTBSelectedBgColor, true);\r
+       setButtonBgColor("idx", gsTBSelectedBgColor, true);\r
+       setButtonBgColor("fts", gsTBSelectedBgColor, true);\r
+       setButtonBgColor("glo", gsTBSelectedBgColor, true);\r
+       setButtonBgColor("toc","#99ccff");\r
+setButtonBgColor("idx","#99ccff");\r
+setButtonBgColor("fts","#99ccff");\r
+setButtonBgColor("glo","#99ccff");\r
+setButtonBgColor("websearch","#99ccff");\r
+setButtonBgColor("searchform","");\r
+setButtonBgColor("banner","");\r
+\r
+       }\r
+       setButtonBgColor("toc","#639ace", true);\r
+setButtonBgColor("idx","#639ace", true);\r
+setButtonBgColor("fts","#639ace", true);\r
+setButtonBgColor("glo","#639ace", true);\r
+setButtonBgColor("websearch","#639ace", true);\r
+setButtonBgColor("searchform","", true);\r
+setButtonBgColor("banner","", true);\r
+\r
+       addButton("toc",BTN_TEXT|BTN_IMG,"Contents","","","","",0,0,"","","","","","");\r
+addButton("idx",BTN_TEXT|BTN_IMG,"Index","","","","",0,0,"","","","","","");\r
+addButton("fts",BTN_TEXT|BTN_IMG,"Search","","","","",0,0,"","","","","","");\r
+addButton("searchform",BTN_TEXT,"","","","","",0,0,"","","","","","");\r
+addButton("banner",BTN_IMG,"","","","","",0,0,"","","","","","");\r
+\r
+       addButton("blankblock");\r
+       writeStyle(false);\r
+       ReSortToolbarButtons();\r
+       writeToolBar();\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whskin_tw.htm b/doc/salome/gui/GAUSS/whskin_tw.htm
new file mode 100644 (file)
index 0000000..69737fa
--- /dev/null
@@ -0,0 +1,63 @@
+<html>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2">\r
+<!--\r
+var gsTopic="";\r
+\r
+if (location.hash.length > 1)\r
+{\r
+       var nPos = location.hash.indexOf(">>");\r
+       if (nPos>1)\r
+       {\r
+               gsTopic = location.hash.substring(1, nPos);\r
+               parseParam(location.hash.substring(nPos+2));\r
+       }\r
+       else\r
+               gsTopic = location.hash.substring(1);\r
+}\r
+\r
+\r
+       var strHtml="";\r
+       strHtml+="<frameset rows=\'100%,*\'>";\r
+       strHtml+="<frame name=\'topicwindow\' src=\'" + gsTopic +"\'></frame>";\r
+       strHtml+="<frame src=\'whskin_blank.htm\' noresize></frame>";\r
+       strHtml+="</frameset>";\r
+       document.write(strHtml);\r
+\r
+function parseParam(sParam)\r
+{\r
+       if (sParam)\r
+       {\r
+               var nBPos=0;\r
+               do \r
+               {\r
+                       var nPos=sParam.indexOf(">>", nBPos);\r
+                       if (nPos!=-1)\r
+                       {\r
+                               if (nPos>0)\r
+                               {\r
+                                       var sPart=sParam.substring(nBPos, nPos);\r
+                                       parsePart(sPart);\r
+                               }\r
+                               nBPos = nPos + 2;\r
+                       }\r
+                       else\r
+                       {\r
+                               var sPart=sParam.substring(nBPos);\r
+                               parsePart(sPart);\r
+                               break;\r
+                       }\r
+               } while(nBPos < sParam.length);\r
+       }       \r
+}\r
+\r
+function parsePart(sPart)\r
+{\r
+       if(sPart.toLowerCase().indexOf("cap=")==0)\r
+       {\r
+               document.title=_browserStringToText(sPart.substring(4));\r
+       }\r
+}\r
+//-->\r
+</script>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whst_topics.xml b/doc/salome/gui/GAUSS/whst_topics.xml
new file mode 100644 (file)
index 0000000..6dce998
--- /dev/null
@@ -0,0 +1,82 @@
+<?xml version='1.0' encoding='ISO-8859-1' ?>\r
+<topictemplate>\r
+ <topic type="normal">\r
+  <add tag="head" pos="endbefore" >\r
+   <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_MESSAGE_JS;"\"></script>\r
+<script type=\"text/javascript\" language=\"javascript\" src=\"";SF_VERSION_JS;"\"></script>\r
+<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_PROXY_JS ;"\"></script>\r
+<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_UTILS_JS;"\"></script>\r
+<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_TOPIC_JS;"\"></script>\r
+";]]>\r
+  </add>\r
+  <add tag="body" pos="beginafter">\r
+    <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\">\r
+<!--\r
+if (window.gbWhTopic)\r
+{\r
+       if (window.addTocInfo)\r
+       {\r
+       ";\r
+         OutputInTopicNavBarDataToc("addTocInfo(\"%s\");\r\n");\r
+         OutputInTopicNavBarDataBrowse("addAvenueInfo(\"%s\",\"%s\",\"%s\");\r\n");\r
+         OutputInTopicNavBarDataButtons("addButton(%s);\r\n");\r
+       "\r
+       }\r
+       if (window.writeBtnStyle)\r
+               writeBtnStyle();\r
+\r
+       if (window.writeIntopicBar)\r
+               writeIntopicBar(";WH_WEBSKIN.topic.bar.top.pos;");\r
+\r
+       if (window.setRelStartPage)\r
+       {\r
+       ";\r
+         OutputInTopicNavBarDataHomePage("setRelStartPage(\"%s\");\r\n");\r
+         OutputInTopicNavBarDataWebSearch.href("addSearchFormHref(\"%s\");\r\n");\r
+       "\r
+               autoSync(";WH_USER_OPTIONS.autosync_toc;");\r
+               sendSyncInfo();\r
+               sendAveInfoOut();\r
+       }\r
+}\r
+else\r
+       if (window.gbIE4)\r
+               document.location.reload();\r
+//-->\r
+</script>"]]>  \r
+  </add>\r
+  <add tag="body" pos="endbefore">\r
+   <![CDATA["<script type=\"text/javascript\" language=\"javascript1.2\">\r
+<!--\r
+if (window.writeIntopicBar)\r
+       writeIntopicBar(";WH_WEBSKIN.topic.bar.bottom.pos;");\r
+//-->\r
+</script>";\r
+OutputInTopicNavBarDataWebSearch.form();]]>    \r
+  </add>\r
+ </topic>\r
+ <topic type="frameset">\r
+  <add tag="head" pos="endbefore" >\r
+   <![CDATA["<script type=\"text/javascript1.2\" language=\"javascript\" src=\"";SF_MESSAGE_JS;"\"></script>\r
+<script type=\"text/javascript\" language=\"javascript\" src=\"";SF_VERSION_JS;"\"></script>\r
+<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_PROXY_JS ;"\"></script>\r
+<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_UTILS_JS;"\"></script>\r
+<script type=\"text/javascript\" language=\"javascript1.2\" src=\"";SF_FRAMESET_JS;"\"></script>\r
+<script type=\"text/javascript\" language=\"javascript1.2\">\r
+<!--\r
+if (window.setRelStartPage)\r
+{\r
+";\r
+  OutputInTopicNavBarDataHomePage("setRelStartPage(\"%s\");\r\n");\r
+  OutputInTopicNavBarDataToc("addTocInfo(\"%s\");\r\n");\r
+  OutputInTopicNavBarDataBrowse("addAvenueInfo(\"%s\",\"%s\",\"%s\");\r\n");\r
+"\r
+}\r
+if (window.autoSync)\r
+       autoSync(";WH_USER_OPTIONS.autosync_toc;");\r
+//-->\r
+</script>\r
+";]]>\r
+  </add>\r
+ </topic>\r
+</topictemplate>\r
diff --git a/doc/salome/gui/GAUSS/whstart.ico b/doc/salome/gui/GAUSS/whstart.ico
new file mode 100644 (file)
index 0000000..365ecea
Binary files /dev/null and b/doc/salome/gui/GAUSS/whstart.ico differ
diff --git a/doc/salome/gui/GAUSS/whstart.js b/doc/salome/gui/GAUSS/whstart.js
new file mode 100644 (file)
index 0000000..dc71368
--- /dev/null
@@ -0,0 +1,432 @@
+//     WebHelp 5.10.003\r
+RegisterListener2(this, WH_MSG_GETSTARTFRAME);\r
+RegisterListener2(this, WH_MSG_GETDEFAULTTOPIC);\r
+RegisterListener2(this, WH_MSG_MINIBARORDER);\r
+RegisterListener2(this, WH_MSG_TOOLBARORDER);\r
+RegisterListener2(this, WH_MSG_ISSEARCHSUPPORT);\r
+RegisterListener2(this, WH_MSG_ISSYNCSSUPPORT);\r
+RegisterListener2(this, WH_MSG_ISAVENUESUPPORT);\r
+RegisterListener2(this, WH_MSG_GETPANETYPE);\r
+RegisterListener2(this, WH_MSG_GETPANES);\r
+RegisterListener2(this, WH_MSG_RELOADNS6);\r
+RegisterListener2(this, WH_MSG_GETCMD);\r
+RegisterListener2(this, WH_MSG_GETPANE);\r
+RegisterListener2(this, WH_MSG_GETDEFPANE);\r
+\r
+if (gbNav6)\r
+{\r
+       var gnReload=0;\r
+       setTimeout("delayReload();",5000);\r
+}\r
+\r
+function delayReload()\r
+{\r
+       if (!(this.cMRServer && cMRServer.m_strVersion))\r
+       {\r
+               if(gnReload!=2)\r
+               {\r
+                       if(nViewFrameType&&nViewFrameType==1)\r
+                               document.location=document.location;\r
+               }\r
+       }\r
+}\r
+\r
+var gsToolbarOrder = "toc|idx|fts|blankblock|searchform|banner";\r
+var gsMinibarOrder = "blankblock|hide2|";\r
+\r
+var gsTopic = "index.htm";\r
+var PANE_OPT_SEARCH = 1;\r
+var PANE_OPT_BROWSESEQ = 2;\r
+var gnOpts=-1;\r
+var gnCmd=-1;\r
+var gnPans=2;\r
+var gsBtns="invalid";\r
+var gsDefaultBtn="invalid";\r
+var gbHasTitle=false;\r
+\r
+if (location.hash.length > 1)\r
+{\r
+       var sParam = location.hash;\r
+       if (sParam.indexOf("#<") == 0)\r
+       {\r
+               document.location = "whcsh_home.htm#" + sParam.substring(2);\r
+       }\r
+       else if (sParam.indexOf("#>>") == 0)\r
+       {\r
+               parseParam(sParam.substring(3));\r
+               sParam = "#" + gsTopic + sParam.substring(1);\r
+       }\r
+       else\r
+       {\r
+               var nPos = sParam.indexOf(">>");\r
+               if (nPos>1)\r
+               {\r
+                       gsTopic = sParam.substring(1, nPos);\r
+                       parseParam(sParam.substring(nPos+2));\r
+               }\r
+               else\r
+                       gsTopic = sParam.substring(1);\r
+       }\r
+       if (gnPans == 1 && gsTopic)\r
+       {\r
+               var strURL=location.href;\r
+               if (location.hash)\r
+               {\r
+                       var nPos=location.href.indexOf(location.hash);\r
+                       strURL=strURL.substring(0, nPos);\r
+               }\r
+               if (gbHasTitle)\r
+                       document.location=_getPath(strURL)+ "whskin_tw.htm" + sParam;\r
+               else\r
+                       document.location=_getPath(strURL)+ gsTopic;\r
+       }\r
+}\r
+\r
+function parseParam(sParam)\r
+{\r
+       if (sParam)\r
+       {\r
+               var nBPos=0;\r
+               do \r
+               {\r
+                       var nPos=sParam.indexOf(">>", nBPos);\r
+                       if (nPos!=-1)\r
+                       {\r
+                               if (nPos>0)\r
+                               {\r
+                                       var sPart=sParam.substring(nBPos, nPos);\r
+                                       parsePart(sPart);\r
+                               }\r
+                               nBPos = nPos + 2;\r
+                       }\r
+                       else\r
+                       {\r
+                               var sPart=sParam.substring(nBPos);\r
+                               parsePart(sPart);\r
+                               break;\r
+                       }\r
+               } while(nBPos < sParam.length);\r
+       }       \r
+}\r
+\r
+function parsePart(sPart)\r
+{\r
+       if(sPart.toLowerCase().indexOf("cmd=")==0)\r
+       {\r
+               gnCmd=parseInt(sPart.substring(4));\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("cap=")==0)\r
+       {\r
+               document.title=_browserStringToText(sPart.substring(4));\r
+               gbHasTitle=true;\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("pan=")==0)\r
+       {\r
+               gnPans=parseInt(sPart.substring(4));\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("pot=")==0)\r
+       {\r
+               gnOpts=parseInt(sPart.substring(4));\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("pbs=")==0)\r
+       {\r
+               var sRawBtns = sPart.substring(4);\r
+               var aBtns = sRawBtns.split("|");\r
+               for (var i=0;i<aBtns.length;i++)\r
+               {\r
+                       aBtns[i] = transferAgentNameToPaneName(aBtns[i]);\r
+               }\r
+               gsRawBtns = aBtns.join("|");\r
+       }\r
+       else if(sPart.toLowerCase().indexOf("pdb=")==0)\r
+       {\r
+               gsDefaultBtn=transferAgentNameToPaneName(sPart.substring(4));\r
+       }\r
+}\r
+\r
+function setToolbarOrder(sOrder)\r
+{\r
+       gsToolbarOrder = sOrder;\r
+}\r
+\r
+function setMinibarOrder(sOrder)\r
+{\r
+       gsMinibarOrder = sOrder;\r
+}\r
+\r
+function onSendMessageX(oMsg)\r
+{\r
+       var nMsgId = oMsg.nMessageId;\r
+       if (nMsgId == WH_MSG_GETSTARTFRAME)\r
+       {\r
+               oMsg.oParam.oFrame = this;\r
+               return false;\r
+       }\r
+       else if (nMsgId == WH_MSG_GETDEFAULTTOPIC)\r
+       {\r
+               if (this.cMRServer && cMRServer.m_strVersion)\r
+               {\r
+                       if (cMRServer.m_strURLTopic);\r
+                       {\r
+                               oMsg.oParam.sTopic = cMRServer.m_strURLTopic;\r
+                               return false;\r
+                       }\r
+\r
+               }\r
+               oMsg.oParam.sTopic = gsTopic;\r
+               return false;\r
+       }\r
+       else if (nMsgId == WH_MSG_TOOLBARORDER)\r
+       {\r
+               var oMsg1 = new whMessage(WH_MSG_GETPANES, this, 1, null);\r
+               if (SendMessage(oMsg1))\r
+               {\r
+                       if (oMsg1.oParam)\r
+                       {\r
+                               if (this.cMRServer && cMRServer.m_strVersion)\r
+                               {\r
+                                       var aToolbarOrder=cMRServer.m_strAgentList.split(";");\r
+                                       var i=0;\r
+                                       for (i=0;i<aToolbarOrder.length;i++)\r
+                                               aToolbarOrder[i]=transferANToPN2(aToolbarOrder[i]);\r
+                                       aToolbarOrder[aToolbarOrder.length] = "blankblock";\r
+                                       if (cMRServer.m_bShowSearchInput)\r
+                                       {\r
+                                               aToolbarOrder[aToolbarOrder.length] = "searchform";\r
+                                       }\r
+                                       aToolbarOrder[aToolbarOrder.length] = "banner";\r
+                                       var aToolbarOrderNew = new Array();\r
+                                       for (i=0;i<aToolbarOrder.length;i++)\r
+                                       {\r
+                                               if (isAPane(aToolbarOrder[i]))\r
+                                               {\r
+                                                       if (oMsg1.oParam.aPanes && oMsg1.oParam.aPanes.length)\r
+                                                       {\r
+                                                               for (var j=0;j<oMsg1.oParam.aPanes.length;j++)\r
+                                                               {\r
+                                                                       if (aToolbarOrder[i] == oMsg1.oParam.aPanes[j].sPaneName)\r
+                                                                       {\r
+                                                                               aToolbarOrderNew[aToolbarOrderNew.length] = aToolbarOrder[i];\r
+                                                                               break;\r
+                                                                       }\r
+                                                               }\r
+                                                       }\r
+                                               }\r
+                                               else\r
+                                                       aToolbarOrderNew[aToolbarOrderNew.length] = aToolbarOrder[i];\r
+                                       }\r
+                                       oMsg.oParam = aToolbarOrderNew.join("|");\r
+                                       return false;\r
+                               }\r
+                       }\r
+               }\r
+               var sParam="";\r
+               if (gsBtns!="invalid")\r
+                       sParam=gsBtns+"|blankblock|banner";\r
+               else\r
+                       sParam = gsToolbarOrder;\r
+\r
+               if (gnOpts!=-1)\r
+               {\r
+                       var nPosForm=sParam.indexOf("|searchform|");\r
+                       if (gnOpts&PANE_OPT_SEARCH)\r
+                       {\r
+                               if (nPosForm == -1 && sParam.indexOf("|fts|") != -1)\r
+                               {\r
+                                       var nPos=sParam.indexOf("banner");\r
+                                       if (nPos!=-1)\r
+                                       {\r
+                                               sParam=sParam.substring(0, nPos) + "searchform|" + sParam.substring(nPos);\r
+                                       }\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               if (nPosForm!=-1)\r
+                               {\r
+                                       sParam=sParam.substring(0,nPosForm) + sParam.substring(nPosForm+11);\r
+                               }\r
+                       }\r
+               }\r
+               oMsg.oParam=sParam;\r
+               return false;\r
+       }\r
+       else if (nMsgId == WH_MSG_MINIBARORDER)\r
+       {\r
+               var sMinParam=gsMinibarOrder;\r
+               if (gnOpts!=-1)\r
+               {\r
+                       var nPosBro=gsMinibarOrder.indexOf("avprev|avnext");\r
+                       if (gnOpts&PANE_OPT_BROWSESEQ)\r
+                       {\r
+                               if (nPosBro==-1)\r
+                               {\r
+                                       sMinParam ="avprev|avnext|" + gsMinibarOrder;\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               if (nPosBro!=-1)\r
+                               {\r
+                                       if (nPosBro!=0)\r
+                                               sMinParam=gsMinibarOrder.substring(0, nPosBro) + gsMinibarOrder.substring(nPosBro+14);\r
+                                       else\r
+                                               sMinParam=gsMinibarOrder.substring(14);\r
+                               }\r
+                       }\r
+               }\r
+               oMsg.oParam = sMinParam;\r
+               return false;\r
+       }\r
+       else if (nMsgId == WH_MSG_ISSYNCSSUPPORT)\r
+       {\r
+               if (this.cMRServer && cMRServer.m_strVersion)\r
+               {\r
+                       if (cMRServer.m_bShowSync)\r
+                               oMsg.oParam=true;\r
+                       else\r
+                               oMsg.oParam=false;\r
+                       return false;\r
+               }\r
+               else\r
+               {\r
+                       if(typeof(nViewFrameType)!="undefined")\r
+                       {\r
+                               oMsg.oParam= (nViewFrameType < 3);\r
+                               return false;\r
+                       }\r
+               }\r
+       }\r
+       else if (nMsgId == WH_MSG_ISAVENUESUPPORT)\r
+       {\r
+               if (this.cMRServer && cMRServer.m_strVersion)\r
+               {\r
+                       if (cMRServer.m_bShowBrowseSequences)\r
+                               oMsg.oParam=true;\r
+                       else\r
+                               oMsg.oParam=false;\r
+               }\r
+               else\r
+               {\r
+                       oMsg.oParam=true;\r
+               }\r
+               return false;\r
+       }\r
+       else if (nMsgId == WH_MSG_ISSEARCHSUPPORT)\r
+       {\r
+               if(typeof(nViewFrameType)!="undefined")\r
+               {\r
+                       oMsg.oParam= (nViewFrameType < 3);\r
+                       return false;\r
+               }\r
+       }\r
+       else if (nMsgId == WH_MSG_GETPANETYPE)\r
+       {\r
+               if(typeof(nViewFrameType)!="undefined")\r
+               {\r
+                       var oPaneInfo = new Object();\r
+                       oPaneInfo.nType = nViewFrameType;\r
+                       oPaneInfo.sPaneURL = strPane;\r
+                       oMsg.oParam = oPaneInfo;\r
+                       return false;\r
+               }\r
+       }\r
+       else if (nMsgId == WH_MSG_GETPANES)\r
+       {\r
+               if (this.cMRServer && cMRServer.m_strVersion)\r
+               {\r
+                       var oPanes = new Object();\r
+                       var aAgentNames = null;\r
+                       if (cMRServer.m_strDefAgent)\r
+                               oPanes.sDefault = transferAgentNameToPaneName(cMRServer.m_strDefAgent);\r
+\r
+                       aPanes = new Array();\r
+                       for(var i=0; i< cMRServer.m_cAgents.length; i++)\r
+                       {\r
+                               var nCur = aPanes.length;\r
+                               aPanes[nCur] = new Object();\r
+                               aPanes[nCur].sPaneName = transferAgentNameToPaneName(cMRServer.m_cAgents[i].m_strID);\r
+                               aPanes[nCur].sPaneURL = cMRServer.m_cAgents[i].m_strURL;\r
+                       }\r
+                       oPanes.aPanes = aPanes;\r
+                       oMsg.oParam = oPanes;\r
+                       return false;\r
+               }\r
+               else\r
+               {\r
+                       oMsg.oParam = null;\r
+                       return false;\r
+               }\r
+       }\r
+       else if(nMsgId==WH_MSG_RELOADNS6)\r
+       {\r
+               if(gbNav6)\r
+                       gnReload++;\r
+               return false;\r
+       }\r
+       else if(nMsgId==WH_MSG_GETCMD)\r
+       {\r
+               oMsg.oParam=gnCmd;\r
+               return false;\r
+       }\r
+       else if(nMsgId==WH_MSG_GETPANE)\r
+       {\r
+               if (gsBtns!="invalid" && oMsg.oParam.sName)\r
+               {\r
+                       if(gsBtns.indexOf(oMsg.oParam.sName) != -1)\r
+                               oMsg.oParam.bEnable=true;\r
+                       else\r
+                               oMsg.oParam.bEnable=false;\r
+               }\r
+               else\r
+                       oMsg.oParam.bEnable=true;\r
+               return false;\r
+       }\r
+       else if(nMsgId==WH_MSG_GETDEFPANE)\r
+       {\r
+               if (gsDefaultBtn!="invalid")\r
+               {\r
+                       oMsg.oParam=gsDefaultBtn;\r
+               }\r
+               return false;\r
+       }\r
+       return true;\r
+}\r
+\r
+function transferANToPN2(sAN)\r
+{\r
+       if (sAN =="toc")\r
+               return "toc";\r
+       else if (sAN =="ndx")\r
+               return "idx";\r
+       else if (sAN =="nls")\r
+               return "fts";\r
+       else if (sAN =="gls")\r
+               return "glo";\r
+       else if (sAN =="WebSearch")\r
+               return "websearch";\r
+       else if (sAN.indexOf("custom_")==0);\r
+               return "custom" + sAN.substring(7);\r
+       return sAN;\r
+}\r
+\r
+function transferAgentNameToPaneName(sAgentName)\r
+{\r
+       if (sAgentName =="toc")\r
+               return "toc";\r
+       else if (sAgentName =="ndx")\r
+               return "idx";\r
+       else if (sAgentName =="nls")\r
+               return "fts";\r
+       else if (sAgentName =="gls")\r
+               return "glo";\r
+       return "";\r
+}\r
+\r
+function isAPane(sPaneName)\r
+{\r
+       if (sPaneName == "toc" || sPaneName == "idx" || sPaneName == "fts" || sPaneName == "glo")\r
+               return true;\r
+       else\r
+               return false;\r
+}
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whstub.js b/doc/salome/gui/GAUSS/whstub.js
new file mode 100644 (file)
index 0000000..a43c6e1
--- /dev/null
@@ -0,0 +1,159 @@
+//     WebHelp 5.10.002\r
+window.whname="wh_stub";\r
+function getframehandle(frames,framename)\r
+{\r
+       var frame=null;\r
+       if(null==frames) return null;\r
+       for(var i=0;i<frames.length;i++)\r
+       {\r
+               if(typeof(frames[i].name)!="unknown")\r
+               {\r
+                       if(frames[i].name==framename)\r
+                               return frames[i];\r
+               }\r
+               if(frames[i].frames.length>0)\r
+               {\r
+                       frame=getframehandle(frames[i].frames,framename);\r
+                       if(null!=frame)\r
+                               return frame;\r
+               }\r
+       }\r
+       return frame;\r
+}\r
+\r
+function AddToArray(arr,obj)\r
+{\r
+       var bFound=false;\r
+       for(var i=0;i<arr.length;i++){\r
+               if(arr[i]==obj){\r
+                       bFound=true;\r
+                       break;\r
+               }\r
+               else if(arr[i]==null){\r
+                       break;\r
+               }\r
+       }\r
+       if(!bFound) arr[i]=obj;\r
+}\r
+\r
+var gArrayRegistedMessage=new Array();\r
+var gArrayCompoentsArray=new Array();\r
+\r
+function GetComponentsArray(nMessageId)\r
+{\r
+       var len=gArrayRegistedMessage.length;\r
+       for(var i=0;i<len;i++)\r
+       {\r
+               if(gArrayRegistedMessage[i]==nMessageId){\r
+                       if(gArrayCompoentsArray.length>i)\r
+                               return gArrayCompoentsArray[i];\r
+                       else\r
+                               return null;\r
+               }\r
+       }\r
+       return null;\r
+}\r
+\r
+function CreateComponentsArray(nMessageId)\r
+{\r
+       var len=gArrayRegistedMessage.length;\r
+       gArrayRegistedMessage[len]=nMessageId;\r
+       gArrayCompoentsArray[len]=new Array();\r
+       return gArrayCompoentsArray[len];\r
+}\r
+\r
+function listener(sName,oWindow)\r
+{\r
+       this.sName=sName;\r
+       this.oWindow=oWindow;\r
+}\r
+\r
+function RegisterListener(windowName,nMessageId)\r
+{\r
+       var arrayComponents=GetComponentsArray(nMessageId);\r
+       if(arrayComponents==null)\r
+               arrayComponents=CreateComponentsArray(nMessageId);\r
+       \r
+       if(arrayComponents!=null)\r
+       {\r
+               for (var i=0;i<arrayComponents.length;i++)\r
+               {\r
+                       if (arrayComponents[i].sName == windowName)\r
+                               return false;\r
+               }\r
+               var oListener=new listener(windowName,null);\r
+               AddToArray(arrayComponents,oListener);\r
+               return true;\r
+       }\r
+       else\r
+               return false;\r
+}\r
+\r
+function RegisterListener2(oWindow,nMessageId)\r
+{\r
+       var arrayComponents=GetComponentsArray(nMessageId);\r
+       if(arrayComponents==null)\r
+               arrayComponents=CreateComponentsArray(nMessageId);\r
+       \r
+       if(arrayComponents!=null)\r
+       {\r
+               var oListener=new listener("",oWindow);\r
+               AddToArray(arrayComponents,oListener);\r
+               return true;\r
+       }\r
+       else\r
+               return false;\r
+}\r
+\r
+function UnRegisterListener2(oWindow,nMessageId)\r
+{\r
+       var arrayComponents=GetComponentsArray(nMessageId);\r
+       if(arrayComponents!=null)\r
+       {\r
+               for(var i=0;i<arrayComponents.length;i++)\r
+               {\r
+                       if(arrayComponents[i].oWindow==oWindow)\r
+                       {\r
+                               removeItemFromArray(arrayComponents,i);\r
+                               return true;\r
+                       }\r
+               }\r
+       }\r
+       else\r
+               return false;\r
+}\r
+\r
+function SendMessage(oMessage)\r
+{\r
+       var bDelivered=false;\r
+       var arrayComponents=GetComponentsArray(oMessage.nMessageId);\r
+       if(arrayComponents!=null&&arrayComponents.length>0){\r
+               for(var i=0;i<arrayComponents.length;i++)\r
+               {\r
+                       if(null!=arrayComponents[i])\r
+                       {\r
+                               var pFrame;\r
+                               if(arrayComponents[i].oWindow==null)\r
+                                       pFrame=getframehandle(frames,arrayComponents[i].sName);\r
+                               else\r
+                                       pFrame=arrayComponents[i].oWindow;\r
+                               if(null!=pFrame)\r
+                               {\r
+                                       if(pFrame.onSendMessageX)\r
+                                       {\r
+                                               bDelivered=true;\r
+                                               if(!pFrame.onSendMessageX(oMessage))\r
+                                                       break;\r
+                                       }\r
+                                       if(pFrame.onSendMessage)\r
+                                       {\r
+                                               bDelivered=true;\r
+                                               if(!pFrame.onSendMessage(oMessage))\r
+                                                       break;\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+       return bDelivered;\r
+}
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/wht_abge.jpg b/doc/salome/gui/GAUSS/wht_abge.jpg
new file mode 100644 (file)
index 0000000..5e816c9
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_abge.jpg differ
diff --git a/doc/salome/gui/GAUSS/wht_abgi.jpg b/doc/salome/gui/GAUSS/wht_abgi.jpg
new file mode 100644 (file)
index 0000000..bfedc68
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_abgi.jpg differ
diff --git a/doc/salome/gui/GAUSS/wht_abgw.jpg b/doc/salome/gui/GAUSS/wht_abgw.jpg
new file mode 100644 (file)
index 0000000..95af21f
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_abgw.jpg differ
diff --git a/doc/salome/gui/GAUSS/wht_abte.jpg b/doc/salome/gui/GAUSS/wht_abte.jpg
new file mode 100644 (file)
index 0000000..a5638fa
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_abte.jpg differ
diff --git a/doc/salome/gui/GAUSS/wht_abti.jpg b/doc/salome/gui/GAUSS/wht_abti.jpg
new file mode 100644 (file)
index 0000000..14ac68c
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_abti.jpg differ
diff --git a/doc/salome/gui/GAUSS/wht_abtw.jpg b/doc/salome/gui/GAUSS/wht_abtw.jpg
new file mode 100644 (file)
index 0000000..46e68b1
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_abtw.jpg differ
diff --git a/doc/salome/gui/GAUSS/wht_fts_h.gif b/doc/salome/gui/GAUSS/wht_fts_h.gif
new file mode 100644 (file)
index 0000000..feb79ae
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_fts_h.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_fts_n.gif b/doc/salome/gui/GAUSS/wht_fts_n.gif
new file mode 100644 (file)
index 0000000..8483be4
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_fts_n.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_glo_h.gif b/doc/salome/gui/GAUSS/wht_glo_h.gif
new file mode 100644 (file)
index 0000000..12223e5
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_glo_h.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_glo_n.gif b/doc/salome/gui/GAUSS/wht_glo_n.gif
new file mode 100644 (file)
index 0000000..32803eb
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_glo_n.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_go.gif b/doc/salome/gui/GAUSS/wht_go.gif
new file mode 100644 (file)
index 0000000..106f1d1
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_go.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_hide.gif b/doc/salome/gui/GAUSS/wht_hide.gif
new file mode 100644 (file)
index 0000000..6ec602d
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_hide.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_idx_h.gif b/doc/salome/gui/GAUSS/wht_idx_h.gif
new file mode 100644 (file)
index 0000000..2df1b16
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_idx_h.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_idx_n.gif b/doc/salome/gui/GAUSS/wht_idx_n.gif
new file mode 100644 (file)
index 0000000..fd193a0
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_idx_n.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_logo1.gif b/doc/salome/gui/GAUSS/wht_logo1.gif
new file mode 100644 (file)
index 0000000..2ef5700
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_logo1.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_logo2.gif b/doc/salome/gui/GAUSS/wht_logo2.gif
new file mode 100644 (file)
index 0000000..2ac62e8
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_logo2.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_next.gif b/doc/salome/gui/GAUSS/wht_next.gif
new file mode 100644 (file)
index 0000000..8ea834d
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_next.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_next_g.gif b/doc/salome/gui/GAUSS/wht_next_g.gif
new file mode 100644 (file)
index 0000000..c0e9758
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_next_g.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_prev.gif b/doc/salome/gui/GAUSS/wht_prev.gif
new file mode 100644 (file)
index 0000000..b7eaba8
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_prev.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_prev_g.gif b/doc/salome/gui/GAUSS/wht_prev_g.gif
new file mode 100644 (file)
index 0000000..8647909
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_prev_g.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_spac.gif b/doc/salome/gui/GAUSS/wht_spac.gif
new file mode 100644 (file)
index 0000000..fc25609
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_spac.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_sync.gif b/doc/salome/gui/GAUSS/wht_sync.gif
new file mode 100644 (file)
index 0000000..0ef1747
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_sync.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_tab0.gif b/doc/salome/gui/GAUSS/wht_tab0.gif
new file mode 100644 (file)
index 0000000..955c42f
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_tab0.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_tab1.gif b/doc/salome/gui/GAUSS/wht_tab1.gif
new file mode 100644 (file)
index 0000000..b3ec41d
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_tab1.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_tab2.gif b/doc/salome/gui/GAUSS/wht_tab2.gif
new file mode 100644 (file)
index 0000000..08fb0ce
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_tab2.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_tab3.gif b/doc/salome/gui/GAUSS/wht_tab3.gif
new file mode 100644 (file)
index 0000000..1819c8e
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_tab3.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_tab4.gif b/doc/salome/gui/GAUSS/wht_tab4.gif
new file mode 100644 (file)
index 0000000..1a6fc4f
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_tab4.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_tab5.gif b/doc/salome/gui/GAUSS/wht_tab5.gif
new file mode 100644 (file)
index 0000000..9340192
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_tab5.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_tab6.gif b/doc/salome/gui/GAUSS/wht_tab6.gif
new file mode 100644 (file)
index 0000000..fe312d2
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_tab6.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_tab7.gif b/doc/salome/gui/GAUSS/wht_tab7.gif
new file mode 100644 (file)
index 0000000..3b95ae2
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_tab7.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_tab8.gif b/doc/salome/gui/GAUSS/wht_tab8.gif
new file mode 100644 (file)
index 0000000..c80acc8
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_tab8.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_toc1.gif b/doc/salome/gui/GAUSS/wht_toc1.gif
new file mode 100644 (file)
index 0000000..515c352
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_toc1.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_toc2.gif b/doc/salome/gui/GAUSS/wht_toc2.gif
new file mode 100644 (file)
index 0000000..2e3d6c8
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_toc2.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_toc3.gif b/doc/salome/gui/GAUSS/wht_toc3.gif
new file mode 100644 (file)
index 0000000..330f369
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_toc3.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_toc4.gif b/doc/salome/gui/GAUSS/wht_toc4.gif
new file mode 100644 (file)
index 0000000..3f9a036
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_toc4.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_toc_h.gif b/doc/salome/gui/GAUSS/wht_toc_h.gif
new file mode 100644 (file)
index 0000000..fe20f68
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_toc_h.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_toc_n.gif b/doc/salome/gui/GAUSS/wht_toc_n.gif
new file mode 100644 (file)
index 0000000..ce28310
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_toc_n.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_ws.gif b/doc/salome/gui/GAUSS/wht_ws.gif
new file mode 100644 (file)
index 0000000..563db8b
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_ws.gif differ
diff --git a/doc/salome/gui/GAUSS/wht_ws_g.gif b/doc/salome/gui/GAUSS/wht_ws_g.gif
new file mode 100644 (file)
index 0000000..3056b75
Binary files /dev/null and b/doc/salome/gui/GAUSS/wht_ws_g.gif differ
diff --git a/doc/salome/gui/GAUSS/whtbar.js b/doc/salome/gui/GAUSS/whtbar.js
new file mode 100644 (file)
index 0000000..08b19e5
--- /dev/null
@@ -0,0 +1,2043 @@
+//     WebHelp 5.10.006\r
+var gaButtons=new Array();\r
+var    gaTypes=new Array();\r
+var gaBtnBgColor=new Array();\r
+var gaSelBtnBgColor=new Array();\r
+var gaOrders=null;\r
+var gaObjBtns=new Array();\r
+var BTN_TEXT=1;\r
+var BTN_IMG=2;\r
+var BTN_IMG_TOP=4\r
+var BTN_IMG_BOTTOM=8;\r
+var BTN_IMG_LEFT=16;\r
+var BTN_IMG_RIGHT=32;\r
+var gsAlign="left";\r
+var gsBgImage="";\r
+var gsBgColor="#99ccff";\r
+var gsShadow="#cccccc";\r
+var gsTBBgImage="";\r
+var gnShowHideStyle=0;\r
+var goTocInfo=null;\r
+var gbTocInfoInited=false;\r
+var goWebSearch=null;\r
+var gsTBFontFamily="Arial";\r
+var gsTBFontSize="xx-small";\r
+var gsTBFontColor="#003063";\r
+var gsTBDarkColor="#808080";\r
+var gsTBLightColor="#FFFAFA";\r
+var gsTBSelectedBgColor="#639ace";\r
+var gsTBFontSelectedColor="#ffffff";\r
+var gaOnLoads=new Array();\r
+var goWebSearchEnable=true;\r
+\r
+var goShow=null;\r
+var goHide=null;\r
+var goHide2=null;\r
+var goSync=null;\r
+\r
+var goToc=null;\r
+var goIdx=null;\r
+var goFts=null;\r
+var goGlo=null;\r
+var goNext=null;\r
+var goPrev=null;\r
+\r
+var LAYOUT=1;\r
+var HLAYOUT=0;\r
+var VLAYOUT=1;\r
+var ALIGN=2;\r
+var BALIGN=0;\r
+var EALIGN=2;\r
+var goEl=null;\r
+var gnRE=0;\r
+\r
+var gnButtonLayout=0;\r
+var gnShowHide=-1;\r
+\r
+var gbEqualSize=false;\r
+var goCusButton=new Array();\r
+var gsBtnStyle="";\r
+var gaAvenues=null;\r
+var gsCurAveName="";\r
+\r
+var gsIToc=null;\r
+var gsITocS=null;\r
+var gsIIndex=null;\r
+var gsIIndexS=null;\r
+var gsISearch=null;\r
+var gsISearchS=null;\r
+var gsIGlossary=null;\r
+var gsIGlossaryS=null;\r
+var gsIBanner=null;\r
+var gsIGo=null;\r
+\r
+var gsIHide=null;\r
+var gsIPrev=null;\r
+var gsINext=null;\r
+var gsISync=null;\r
+var gsINextD=null;\r
+var gsIPrevD=null;\r
+var gsIWebSearch=null;\r
+var gsIWebSearchD=null;\r
+\r
+var gbAveButttnInited=false;\r
+var goNextParent=null;\r
+var goPrevParent=null;\r
+var gsSearchPrompt="- Search -";\r
+\r
+var gstrSearch="";\r
+var gbPreview=false;\r
+gbPreview=false; \r
+var gsSearchFormTitle="";\r
+var gnHasNavPane=-1;\r
+var gbInitBtn=false;\r
+var gaBtns=new Array();\r
+var gbWhTBar=false;\r
+var goTextFont=null;\r
+var goSelTextFont=null;\r
+var gsPane="";\r
+var gbNeedUpdateAve=false;\r
+var gbUpdateTimerCount=0;\r
+\r
+function setGoImage(sGoImage)\r
+{\r
+       if(sGoImage)\r
+       {\r
+               gsIGo=sGoImage;\r
+       }\r
+}\r
+\r
+function btnBgColor(sType,sColor)\r
+{\r
+       this.sType=sType;\r
+       this.sColor=sColor;\r
+}\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       gsBgImage=sBgImage;\r
+}\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       gsBgColor=sBgColor;\r
+}\r
+\r
+function setAlignment(strAlignment)\r
+{\r
+       gnButtonLayout=0;\r
+       if(strAlignment=="left")\r
+       {\r
+               gnButtonLayout=HLAYOUT|BALIGN;\r
+       }\r
+       else if(strAlignment=="right")\r
+       {\r
+               gnButtonLayout=HLAYOUT|EALIGN;\r
+       }\r
+       else if(strAlignment=="top")\r
+       {\r
+               gnButtonLayout=VLAYOUT|BALIGN;\r
+       }\r
+       else if(strAlignment=="bottom")\r
+       {\r
+               gnButtonLayout=VLAYOUT|EALIGN;\r
+       }\r
+}\r
+\r
+function writeStyle(bMiniBar)\r
+{\r
+       var sStyle="";\r
+       sStyle+="<style type='text/css'>\n";\r
+       sStyle+="<!--\n";\r
+       sStyle+=".clsBtnNormal {\n";\r
+       if(!(gbNav4&&!gbNav6))\r
+               if (bMiniBar)\r
+                       sStyle+="padding:2px;\n";\r
+               else\r
+                       sStyle+="padding:5px;\n";\r
+       sStyle+="cursor:hand;\n";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";\n";\r
+       sStyle+="color:"+gsTBFontColor+";}\n";\r
+\r
+       sStyle+=".clsNoBNormal {\n";\r
+       sStyle+="padding-left:2px;padding-right:2px;\n";\r
+       sStyle+="cursor:hand;\n";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";\n";\r
+       sStyle+="color:"+gsTBFontColor+";}\n";\r
+\r
+       sStyle+=".clsBtnDisable {\n";\r
+       if(!(gbNav4&&!gbNav6))\r
+               if (bMiniBar)\r
+                       sStyle+="padding:2px;\n";\r
+               else\r
+                       sStyle+="padding:5px;\n";\r
+       sStyle+="cursor:default;\n";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";\n";\r
+       sStyle+="color:"+gsTBFontColor+";}\n";\r
+\r
+       sStyle+=".clsNoBDisable {\n";\r
+       sStyle+="padding-left:2px;padding-right:2px;\n";\r
+       sStyle+="cursor:default;\n";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";\n";\r
+       sStyle+="color:"+gsTBFontColor+";}\n";\r
+\r
+\r
+       sStyle+=".clsNotBtn {\n";\r
+       if(!(gbNav4&&!gbNav6))\r
+               if (bMiniBar)\r
+                       sStyle+="padding:2px;\n";\r
+               else\r
+                       sStyle+="padding:5px;\n";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";\n";\r
+       sStyle+="color:"+gsTBFontColor+";}\n";\r
+\r
+       sStyle+=".clsBtnUp{\n";\r
+       if(!(gbNav4&&!gbNav6))\r
+               if (bMiniBar)\r
+                       sStyle+="padding:1px;\n";\r
+               else\r
+                       sStyle+="padding:4px;\n";\r
+       sStyle+="border-bottom:"+gsTBDarkColor+" 1px solid;\n";\r
+       sStyle+="border-left:"+gsTBLightColor+" 1px solid;\n";\r
+       sStyle+="border-right:"+gsTBDarkColor+" 1px solid;\n";\r
+       sStyle+="border-top:"+gsTBLightColor+" 1px solid;\n";\r
+       sStyle+="cursor:hand;";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";\n";\r
+       sStyle+="color:"+gsTBFontColor+";}\n";\r
+\r
+       sStyle+=".clsNoBUp{\n";\r
+       sStyle+="padding-left:2px;padding-right:2px;\n";\r
+       sStyle+="cursor:hand;";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";\n";\r
+       sStyle+="color:"+gsTBFontColor+";}\n";\r
+\r
+       sStyle+=".clsBtnDown{\n";\r
+       if(!(gbNav4&&!gbNav6))\r
+               if (bMiniBar)\r
+                       sStyle+="padding:1px;\n";\r
+               else\r
+                       sStyle+="padding:4px;\n";\r
+       sStyle+="border-bottom:"+gsTBLightColor+" 1px solid;\n";\r
+       sStyle+="border-left:"+gsTBDarkColor+" 1px solid;\n";\r
+       sStyle+="border-right:"+gsTBLightColor+" 1px solid;\n";\r
+       sStyle+="border-top:"+gsTBDarkColor+" 1px solid;\n";\r
+       sStyle+="color:"+gsTBFontColor+";\n";\r
+       sStyle+="cursor:hand;\n";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";}\n";\r
+\r
+       sStyle+=".clsNoBDown{\n";\r
+       sStyle+="padding-left:2px;padding-right:2px;\n";\r
+       sStyle+="cursor:hand;";\r
+       sStyle+="font-family:"+gsTBFontFamily+";\n";\r
+       sStyle+="font-size:"+gsTBFontSize+";\n";\r
+       sStyle+="color:"+gsTBFontColor+";}\n";\r
+\r
+       sStyle+=getDefaultButtonFont();\r
+       sStyle+=gsBtnStyle;\r
+       sStyle+=".clsToolbarBackground{\n";\r
+       sStyle+="margin:2px;}\n";\r
+       sStyle+="-->\n";\r
+       sStyle+=" body {\n";\r
+       if (gsBgImage)\r
+               sStyle+="border-top:"+gsBgColor+" 1px solid;}\n";\r
+       else\r
+               sStyle+="border-top:black 1px solid;}\n";\r
+       sStyle+="-->\n";\r
+       sStyle+="</style>\n";\r
+       document.write(sStyle);\r
+}\r
+\r
+function button(sType,sText,nWidth,nHeight)\r
+{\r
+       this.sType=sType;\r
+       this.sText=sText;\r
+       this.nWidth=nWidth;\r
+       this.nHeight=nHeight;\r
+       \r
+       this.aIs=new Array();\r
+       var i=0;\r
+       while(button.arguments.length>i+4)\r
+       {\r
+               if (button.arguments[4+i])\r
+                       this.aIs[i]=_getFullPath(_getPath(document.location.href),button.arguments[4+i]);\r
+               else\r
+                       this.aIs[i]="";\r
+               i++;\r
+       }\r
+}\r
+\r
+function getImage(oImage,sTitle)\r
+{\r
+       if(oImage.aIs[0])\r
+       {\r
+               var sI="";\r
+               if(sTitle=="")\r
+                       sTitle=oImage.sText;\r
+               sI+="<img alt=\""+sTitle+"\" src=\""+oImage.aIs[0]+"\"";\r
+               if(oImage.nWidth>0)\r
+                       sI+=" width="+oImage.nWidth;\r
+               if(oImage.nHeight>0)\r
+                       sI+=" height="+oImage.nHeight;\r
+               sI+=" border=0 align=\"absmiddle\">";\r
+               return sI;\r
+       }\r
+       return "";\r
+}\r
+\r
+function getCurrentAveName()\r
+{\r
+       var oSelect=getElement("avenue");\r
+       if(oSelect)\r
+               return oSelect.value;\r
+       else\r
+               return "";\r
+}\r
+\r
+function updateWebSearch(bEnable)\r
+{\r
+       var oWebSearch=getElement("btnwebsearch");\r
+       var oWebSearchParent=null;\r
+       if(oWebSearch)\r
+               oWebSearchParent=getParentNode(oWebSearch);\r
+       goWebSearchEnable=bEnable;\r
+       if(oWebSearchParent)\r
+       {\r
+               if(bEnable)\r
+                       enableButton(oWebSearchParent,goWebSearch);\r
+               else\r
+                       disableButton(oWebSearchParent,goWebSearch);\r
+       }\r
+\r
+}\r
+\r
+function setState(oEL,sState)\r
+{\r
+       if(gbNav6||gbOpera)\r
+               oEL.setAttribute("state",sState);\r
+       else\r
+               oEL.state=sState;       \r
+}\r
+\r
+function updateAvenueIfNeeded()\r
+{\r
+       gbUpdateTimerCount--;\r
+       if (gbNeedUpdateAve&&gbUpdateTimerCount==0)\r
+       {\r
+               updateAvenue();\r
+       }\r
+}\r
+\r
+function updateAvenue()\r
+{\r
+       var sSelect=getAvenueHTML(gaAvenues);\r
+       var oSelect=getElement("avenue");\r
+       if(oSelect)\r
+       {\r
+               if(gbNav6)\r
+               {\r
+                       var oParent=getParentNode(oSelect);\r
+                       \r
+                       if(oParent)\r
+                       {\r
+                               removeThis(oSelect);\r
+                               oParent.insertAdjacentHTML("afterBegin",sSelect);\r
+                       }\r
+               }\r
+               else\r
+                       oSelect.outerHTML=sSelect;      \r
+               oSelect=getElement("avenue");\r
+               if(isValidAvenue(gaAvenues,gsCurAveName))\r
+                       oSelect.value=gsCurAveName;\r
+       }\r
+       updateAveButton();\r
+}\r
+\r
+function initAveButtonObj()\r
+{\r
+       if(!gbAveButttnInited)\r
+       {\r
+               var oNext=getElement("btnavnext");\r
+               if(oNext)\r
+                       goNextParent=getParentNode(oNext);\r
+\r
+               var oPrev=getElement("btnavprev");\r
+               if(oPrev)\r
+                       goPrevParent=getParentNode(oPrev);\r
+       }\r
+       gbAveButttnInited=true;\r
+}\r
+\r
+function disableAveButton()\r
+{\r
+       initAveButtonObj();\r
+       if(goNextParent)\r
+               disableButton(goNextParent,goNext);\r
+       if(goPrevParent)\r
+               disableButton(goPrevParent,goPrev);\r
+}\r
+\r
+function disableButton(oEl,oBtn)\r
+{\r
+       setState(oEl,"disable");\r
+       var sPF=oEl.className.substring(0,6);\r
+       oEl.className=sPF+"Disable";\r
+       var oAs = getElementsByTag(oEl,"a");\r
+       if (oAs.length>0)\r
+       {\r
+               oAs[0].style.cursor="default";\r
+       }\r
+       var oIs=getElementsByTag(oEl,"img");\r
+       if(oIs.length>0&&oBtn&&oBtn.aIs&&oBtn.aIs.length>3)\r
+       {\r
+               if(oBtn.aIs[3])\r
+                       oIs[0].src=oBtn.aIs[3];\r
+       }\r
+       else\r
+               oEl.style.visibility="hidden";\r
+}\r
+\r
+function enableButton(oEl,oBtn)\r
+{\r
+       setState(oEl,"normal");\r
+       if(oEl==goEl)\r
+       {\r
+               var sPF=oEl.className.substring(0,6);\r
+               oEl.className=sPF+"Up";\r
+       }\r
+       var oAs = getElementsByTag(oEl,"a");\r
+       if (oAs.length>0)\r
+       {\r
+               oAs[0].style.cursor="hand";\r
+       }\r
+       var oIs=getElementsByTag(oEl,"img");\r
+       if(oIs.length>0&&oBtn&&oBtn.aIs&&oBtn.aIs.length>0)\r
+       {\r
+               if(oBtn.aIs[0])\r
+                       oIs[0].src=oBtn.aIs[0];\r
+       }\r
+       oEl.style.visibility="visible";\r
+}\r
+\r
+function updateAveButton()\r
+{\r
+       initAveButtonObj();     \r
+       var strAveName=getCurrentAvenue();\r
+       if(strAveName!="")\r
+       {\r
+               if(gaAvenues)\r
+               {\r
+                       for(var i=0;i<gaAvenues.length;i++)\r
+                       if(gaAvenues[i].sName==strAveName)\r
+                       {\r
+                               if(goNextParent)\r
+                               {\r
+                                       if(gaAvenues[i].sNext!=null&&gaAvenues[i].sNext!="")\r
+                                               enableButton(goNextParent,goNext);\r
+                                       else\r
+                                               disableButton(goNextParent,goNext);\r
+                               }\r
+                               if(goPrevParent)\r
+                               {\r
+                                       if(gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev!="")\r
+                                               enableButton(goPrevParent,goPrev);\r
+                                       else\r
+                                               disableButton(goPrevParent,goPrev);\r
+                               }       \r
+                               break;\r
+                       }\r
+               }\r
+       }\r
+       else\r
+       {\r
+               var bNext=false;\r
+               var bPrev=false;\r
+               if(gaAvenues&&gaAvenues.length>0)\r
+               {\r
+                       for(var i=0;i<gaAvenues.length&&(!bNext||!bPrev);i++)\r
+                       {\r
+                               if(!bNext)\r
+                                       if(gaAvenues[i].sNext!=null&&gaAvenues[i].sNext!="")\r
+                                               bNext=true;     \r
+                               if(!bPrev)\r
+                                       if(gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev!="")\r
+                                               bPrev=true;     \r
+                       }\r
+               }\r
+               if(goNextParent)\r
+               {\r
+                       if(bNext)\r
+                               enableButton(goNextParent,goNext);\r
+                       else\r
+                               disableButton(goNextParent,goNext);\r
+               }\r
+               \r
+               if(goPrevParent)\r
+               {\r
+                       if(bPrev)\r
+                               enableButton(goPrevParent,goPrev);\r
+                       else\r
+                               disableButton(goPrevParent,goPrev);\r
+               }\r
+       }\r
+       \r
+}\r
+\r
+function isValidAvenue(aAvenues,sValue)\r
+{\r
+       if(aAvenues)\r
+       {\r
+               for(var i=0;i<aAvenues.length;i++)\r
+               {\r
+                       if(aAvenues[i].sName==sValue)\r
+                               return true;\r
+               }\r
+       }\r
+       return false;\r
+}\r
+\r
+function getAvenueHTML(aAvenues)\r
+{\r
+       var sSelect="<select id=\"avenue\" size=\"1\" name=\"avenue\" onchange=\"updateAveButton();\">";\r
+       sSelect+="<option value=\"\" selected> - Select Avenue - </option>";\r
+       if(aAvenues)\r
+       {\r
+               for(var i=0;i<aAvenues.length;i++)\r
+               {\r
+                       sSelect+="<option value=\""+aAvenues[i].sName+"\">"+aAvenues[i].sName+"</option>";\r
+               }\r
+       }\r
+       sSelect+="</select>";\r
+       return sSelect;\r
+}\r
+\r
+function addAvenueSelection()\r
+{\r
+       var oMsg=new whMessage(WH_MSG_GETAVIAVENUES,this,1,new Object());\r
+       var sButton="";\r
+       if(SendMessage(oMsg))\r
+       {\r
+               sButton=getAvenueHTML(oMsg.oParam.aAvenues);\r
+       }\r
+       else\r
+       {\r
+               sButton=getAvenueHTML(null);\r
+       }\r
+       gaButtons[gaButtons.length]="<td NOWRAP align=\"center\" valign=\"middle\">"+sButton+"</td>";\r
+}\r
+\r
+function setSearchFormTitle(sTitle)\r
+{\r
+       gsSearchFormTitle=sTitle;\r
+}\r
+\r
+function highLightIfNeeded()\r
+{\r
+       if(document.searchForm.searchString.value==gsSearchPrompt)\r
+       {\r
+               document.searchForm.searchString.select();\r
+       }\r
+}\r
+\r
+function addSearchForm()\r
+{\r
+       var sPropmptString=gsSearchPrompt;\r
+\r
+       var nWidth=20;\r
+       if(!nWidth) nWidth=20;\r
+       if(gbNav4) nWidth=nWidth*.6;\r
+\r
+       if(gsSearchFormTitle)\r
+               sPropmptString="";\r
+       var sButton="<table id=\"searchInput\" CELLSPACING=0 CELLPADDING=1><tr><td valign=\"middle\" NOWRAP class=\"clsNotBtn\"><span class=\"btnsearchform\">"+_textToHtml(gsSearchFormTitle)+"</span></td><td NOWRAP valign=\"middle\"><input class=\"inputsearchform\" type=\"text\" onfocus=\"highLightIfNeeded();\" name=\"searchString\" value=\""+sPropmptString+"\" size=\""+nWidth+"\"></td>";\r
+       if(gbNav6)\r
+               sButton="<form id=\"searchInput\" name=\"searchForm\" method=\"POST\" action=\"javascript:searchB()\">"+sButton;\r
+       if("image"=="text")\r
+       {\r
+               sButton+="<td NOWRAP valign=\"middle\"><a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\"searchForm.submit(); return false;\"></a></td>";\r
+       }\r
+       else if("image"=="image"&&gsIGo)\r
+       {\r
+               sButton+="<td NOWRAP valign=\"middle\"><a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\"searchForm.submit(); return false;\">"\r
+               sButton+="<img alt=\"Go\" src=\""+gsIGo+"\" border=0 align=\"absmiddle\"></a></td>";\r
+       }\r
+       sButton+="</tr></table>";\r
+       if(gbNav6)\r
+               sButton+="</form>";\r
+       var nBtn=gaButtons.length;\r
+       gaButtons[nBtn]="<td NOWRAP align=\"center\" valign=\"middle\">"+sButton+"</td>";\r
+       gaTypes[nBtn]="searchform";\r
+}\r
+\r
+function getShowHide()\r
+{\r
+       var sText="";\r
+       var sI="";\r
+       if(hasNavPane())\r
+       {\r
+               if(goHide)\r
+               {\r
+                       if(gnShowHideStyle&BTN_TEXT)\r
+                               sText=goHide.sText;\r
+                       if(gnShowHideStyle&BTN_IMG)\r
+                       sI=getImage(goHide,"Hide");\r
+               }\r
+       }\r
+       else\r
+       {\r
+               if(goShow)\r
+               {\r
+                       if(gnShowHideStyle&BTN_TEXT)\r
+                               sText=goShow.sText;\r
+                       if(gnShowHideStyle&BTN_IMG)\r
+                               sI=getImage(goShow,"Show");\r
+               }\r
+       }\r
+       var sButton=genButton(sText,sI,gnShowHideStyle);\r
+       return sButton;\r
+}\r
+\r
+function addBanner(sImage)\r
+{\r
+       if(sImage)\r
+       {\r
+               var nBtn=gaButtons.length;\r
+               gaButtons[nBtn]="<td NOWRAP align=\"center\" valign=\"middle\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"javascript:void(0);\" onclick=\"showBanner();return false;\"><img alt=\"About WebHelp\"src=\""+sImage+"\" border=0 align=\"absmiddle\"></a></td>";\r
+               gaTypes[nBtn]="banner";\r
+       }\r
+}\r
+\r
+function showBanner()\r
+{\r
+       if (!gbPreview)\r
+       {\r
+               var nWidth=390;\r
+               var nHeight=204;\r
+               var     nScreenWidth=screen.width;\r
+               var     nScreenHeight=screen.height;\r
+               var nLeft=(nScreenWidth-nWidth)/2;\r
+               var nTop=(nScreenHeight-nHeight)/2;\r
+               if (gbIE4)\r
+               {\r
+                       if (gbIE5)\r
+                               nHeight+=20;\r
+                       else\r
+                               nHeight+=40;\r
+                       window.showModalDialog("whskin_banner.htm","","dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;resizable:no;status:no;scroll:no;help:no;center:yes;");\r
+               }\r
+               else\r
+                       window.open("whskin_banner.htm","banner","dependent,innerHeight="+nHeight+",innerWidth="+nWidth+",height="+nHeight+",width="+nWidth+",resizable=no,menubar=no,location=no,personalbar=no,status=no,scrollbar=no,toolbar=no,screenX="+nLeft+",screenY="+nTop);\r
+       }\r
+}\r
+\r
+function addButton(sType,nStyle,sTitle,sHref,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6)\r
+{\r
+       var sButton="";\r
+       var bMini=false;\r
+       var sText="";\r
+       var sI="";\r
+       var bState=false;\r
+       var nBtn=gaButtons.length;\r
+       var bHref=false;\r
+       if(sType=="show"&&isShowHideEnable())\r
+       {\r
+               var svTitle="Show Navigation Component";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btnshowhide\" class=\"btnshow\" href=\"javascript:void(0);\" onclick=\"showHidePane();return false;\">";\r
+               gnShowHideStyle=nStyle;\r
+               goShow=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3);\r
+               gaObjBtns[nBtn]=goShow;\r
+               if(gnShowHide!=-1)\r
+               {\r
+                       nBtn=gnShowHide;\r
+               }\r
+               else\r
+               {\r
+                       gnShowHide=nBtn;\r
+               }\r
+               sButton+=getShowHide();\r
+               sButton+="</a>";\r
+               bState=true;\r
+       }\r
+       else if(sType=="hide"&&isShowHideEnable())\r
+       {\r
+               var svTitle="Hide Navigation Component";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btnshowhide\" class=\"btnhide\" href=\"javascript:void(0);\" onclick=\"showHidePane();return false;\">";\r
+               gnShowHideStyle=nStyle;\r
+               goHide=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3);\r
+               gaObjBtns[nBtn]=goHide;\r
+               if(gnShowHide!=-1)\r
+               {\r
+                       nBtn=gnShowHide;\r
+               }\r
+               else\r
+               {\r
+                       gnShowHide=nBtn;\r
+               }\r
+               sButton+=getShowHide();\r
+               sButton+="</a>";\r
+               bState=true;\r
+       }\r
+       else if(sType=="hide2"&&(!gbNav4)&&(!gbOpera))\r
+       {\r
+               var svTitle="Hide Navigation Component";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btnhide\" class=\"btnhide\" href=\"javascript:void(0);\" onclick=\"showHidePane();return false;\">";\r
+               gnShowHideStyle=nStyle;\r
+               if(!sI1)\r
+                       sI1=gsIHide;\r
+               goHide2=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3);\r
+               gaObjBtns[nBtn]=goHide2;\r
+               if(nStyle&BTN_TEXT)\r
+                       sText=goHide2.sText\r
+                       \r
+               if(nStyle&BTN_IMG)\r
+                       sI=getImage(goHide2,svTitle);\r
+               sButton+=genButton(sText,sI,nStyle);\r
+               sButton+="</a>";\r
+               bMini=true;\r
+       }\r
+       else if(sType=="synctoc")\r
+       {\r
+               var svTitle="Sync TOC";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btnsynctoc\" class=\"btnsynctoc\" href=\"javascript:void(0);\" onclick=\"syncWithShow();return false;\">";\r
+               if(!sI1)\r
+                       sI1=gsISync;\r
+               goSync=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3);\r
+               gaObjBtns[nBtn]=goSync;\r
+               if(nStyle&BTN_TEXT)\r
+                       sText=goSync.sText\r
+                       \r
+               if(nStyle&BTN_IMG)\r
+                       sI=getImage(goSync,svTitle);\r
+               sButton+=genButton(sText,sI,nStyle);\r
+               sButton+="</a>";\r
+               bMini=true;\r
+       }\r
+       else if(sType=="toc")\r
+       {\r
+               var svTitle="Contents";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btntoc\" class=\"btntoc\" href=\"javascript:void(0);\" onclick=\"showToc();return false;\">";\r
+               if(!sI1)\r
+                       sI1=gsIToc;\r
+               if(!sI2)\r
+                       sI2=gsITocS;\r
+               if(!sI4)\r
+                       sI4=gsITocS;\r
+               goToc=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6);\r
+               gaObjBtns[nBtn]=goToc;\r
+               if(nStyle&BTN_TEXT)\r
+                       sText=goToc.sText\r
+                       \r
+               if(nStyle&BTN_IMG)\r
+                       sI=getImage(goToc,svTitle);\r
+               sButton+=genButton(sText,sI,nStyle);\r
+               sButton+="</a>";\r
+               bState=true;\r
+       }\r
+       else if(sType=="idx")\r
+       {\r
+               var svTitle="Index";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btnidx\" class=\"btnidx\" href=\"javascript:void(0);\" onclick=\"showIndex();return false;\">";\r
+               if(!sI1)\r
+                       sI1=gsIIndex;\r
+               if(!sI2)\r
+                       sI2=gsIIndexS;\r
+               if(!sI4)\r
+                       sI4=gsIIndexS;\r
+               goIdx=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6);\r
+               gaObjBtns[nBtn]=goIdx;\r
+               if(nStyle&BTN_TEXT)\r
+                       sText=goIdx.sText\r
+                       \r
+               if(nStyle&BTN_IMG)\r
+                       sI=getImage(goIdx,svTitle);\r
+               sButton+=genButton(sText,sI,nStyle);\r
+               sButton+="</a>";\r
+               bState=true;\r
+       }\r
+       else if(sType=="fts")\r
+       {\r
+               var svTitle="Search";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btnfts\" class=\"btnfts\" href=\"javascript:void(0);\" onclick=\"showFts();return false;\">";\r
+               if(!sI1)\r
+                       sI1=gsISearch;\r
+               if(!sI2)\r
+                       sI2=gsISearchS;\r
+               if(!sI4)\r
+                       sI4=gsISearchS;\r
+               goFts=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6);\r
+               gaObjBtns[nBtn]=goFts;\r
+               if(nStyle&BTN_TEXT)\r
+                       sText=goFts.sText\r
+                       \r
+               if(nStyle&BTN_IMG)\r
+                       sI=getImage(goFts,svTitle);\r
+               sButton+=genButton(sText,sI,nStyle);\r
+               sButton+="</a>";\r
+               bState=true;\r
+       }\r
+       else if(sType=="glo")\r
+       {\r
+               var svTitle="Glossary";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btnglo\" class=\"btnglo\" href=\"javascript:void(0);\" onclick=\"showGlossary();return false;\">";\r
+               if(!sI1)\r
+                       sI1=gsIGlossary;\r
+               if(!sI2)\r
+                       sI2=gsIGlossaryS;\r
+               if(!sI4)\r
+                       sI4=gsIGlossaryS;\r
+               goGlo=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6);\r
+               gaObjBtns[nBtn]=goGlo;\r
+               if(nStyle&BTN_TEXT)\r
+                       sText=goGlo.sText\r
+                       \r
+               if(nStyle&BTN_IMG)\r
+                       sI=getImage(goGlo,svTitle);\r
+               sButton+=genButton(sText,sI,nStyle);\r
+               sButton+="</a>";\r
+               bState=true;\r
+       }\r
+       else if(sType=="avnext")\r
+       {\r
+               var svTitle="Next Topic";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btnavnext\" class=\"btnavnext\" href=\"javascript:void(0);\" onclick=\"goAveNext();return false;\">";\r
+               if(!sI1)\r
+                       sI1=gsINext;\r
+               if(!sI4)\r
+                       sI4=gsINextD;\r
+               goNext=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6);\r
+               gaObjBtns[nBtn]=goNext;\r
+               if(nStyle&BTN_TEXT)\r
+                       sText=goNext.sText\r
+                       \r
+               if(nStyle&BTN_IMG)\r
+                       sI=getImage(goNext,svTitle);\r
+               sButton+=genButton(sText,sI,nStyle);\r
+               sButton+="</a>";\r
+               bMini=true;\r
+       }\r
+       else if(sType=="avprev")\r
+       {\r
+               var svTitle="Previous Topic";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btnavprev\" class=\"btnavprev\" href=\"javascript:void(0);\" onclick=\"goAvePrev();return false;\">";\r
+               if(!sI1)\r
+                       sI1=gsIPrev;\r
+               if(!sI4)\r
+                       sI4=gsIPrevD;\r
+               goPrev=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6);\r
+               gaObjBtns[nBtn]=goPrev;\r
+               if(nStyle&BTN_TEXT)\r
+                       sText=goPrev.sText\r
+                       \r
+               if(nStyle&BTN_IMG)\r
+                       sI=getImage(goPrev,svTitle);\r
+               sButton+=genButton(sText,sI,nStyle);\r
+               sButton+="</a>";\r
+               bMini=true;\r
+       }\r
+       else if(sType=="blankblock")\r
+       {\r
+               gaButtons[nBtn]=null;\r
+               gaTypes[nBtn]=sType;\r
+       }\r
+       else if(sType=="websearch")\r
+       {\r
+               var svTitle="WebSearch";\r
+               sButton="<a title=\""+svTitle+"\" id=\"btnwebsearch\" class=\"btnwebsearch\" href=\"javascript:void(0);\" onclick=\"doWebSearch();return false;\">";\r
+               if(!sI1)\r
+                       sI1=gsIWebSearch;\r
+               if(!sI4)\r
+                       sI4=gsIWebSearchD;\r
+               goWebSearch=new button(sType,sTitle,nWidth,nHeight,sI1,sI2,sI3,sI4,sI5,sI6);\r
+               gaObjBtns[nBtn]=goWebSearch;\r
+               if(nStyle&BTN_TEXT)\r
+                       sText=goWebSearch.sText\r
+                       \r
+               if(nStyle&BTN_IMG)\r
+                       sI=getImage(goWebSearch,svTitle);\r
+               sButton+=genButton(sText,sI,nStyle);\r
+               sButton+="</a>";\r
+       }\r
+       else if(sType.indexOf("custom")==0)\r
+       {\r
+               var nCusBtnIdx=goCusButton.length;\r
+               goCusButton[nCusBtnIdx]=new cusButton(sType,sTitle,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight,sI1,sI2,sI3);\r
+               gaObjBtns[nBtn]=goCusButton[nCusBtnIdx];\r
+               var re=new RegExp("\"","g");\r
+               var svTitle=sTitle.replace(re, "&quot;");\r
+               if(sHref&&sHref.length!=0)\r
+               {\r
+                       sButton="<a title=\""+svTitle+"\" id=\"btn"+sType+"\" class=\"btn"+sType+"\" target=\"bsscright\" href=\""+sHref+"\" onclick=\"cusOnClick("+nCusBtnIdx+");";\r
+                       bHref=true;\r
+               }\r
+               else\r
+                       sButton="<a title=\""+svTitle+"\" id=\"btn"+sType+"\" class=\"btn"+sType+"\" href=\"javascript:void(0);\" onclick=\"cusOnClick("+nCusBtnIdx+");return false;";\r
+               sButton+="\" onmouseover=\"cusOnMouseOver("+nCusBtnIdx+");\" title=\""+sType+"\">";\r
+               if(nStyle&BTN_TEXT)\r
+                       sText=sTitle;\r
+               if(nStyle&BTN_IMG)\r
+                       sI+=getImage(goCusButton[nCusBtnIdx],sTitle);\r
+               sButton+=genButton(sText,sI,nStyle);\r
+               sButton+="</a>";\r
+       }\r
+       if(sButton.length!=0)\r
+       {\r
+               var btnClass="";\r
+               if(sText||bMini)\r
+                       btnClass="clsBtnNormal";\r
+               else\r
+                       btnClass="clsNoBNormal";\r
+\r
+               if(!bState)\r
+               {\r
+                       if(bHref)\r
+                               gaButtons[nBtn]="<td NOWRAP valign=\"middle\" align=\"center\" class="+btnClass+" onclick=\"onBtnClick(event);\" onmousedown=\"onBtnMouseDown(event, "+nBtn+");\" onmouseup=\"onBtnMouseUp(event, "+nBtn+");\" onmouseover=\"onBtnMouseOver(event, "+nBtn+");\" onmouseout=\"onBtnMouseOut(event, "+nBtn+");\">"+sButton+"</td>";\r
+                       else\r
+                               gaButtons[nBtn]="<td NOWRAP valign=\"middle\" align=\"center\" class="+btnClass+" onclick=\"onBtnClick(event);return false;\" onmousedown=\"onBtnMouseDown(event, "+nBtn+");\" onmouseup=\"onBtnMouseUp(event, "+nBtn+");\" onmouseover=\"onBtnMouseOver(event, "+nBtn+");\" onmouseout=\"onBtnMouseOut(event, "+nBtn+");\">"+sButton+"</td>";\r
+               }\r
+               else\r
+                       gaButtons[nBtn]="<td NOWRAP valign=\"middle\" align=\"center\" class="+btnClass+" state=\"up\" onclick=\"onBtnClick(event);return false;\" onmousedown=\"onBtnMouseDown(event, "+nBtn+");\" onmouseup=\"onBtnMouseUp(event, "+nBtn+");\" onmouseover=\"onBtnMouseOver(event, "+nBtn+");\" onmouseout=\"onBtnMouseOut(event, "+nBtn+");\">"+sButton+"</td>";\r
+               gaTypes[nBtn]=sType;\r
+       }\r
+\r
+       if(sType=="avenuesel")\r
+               addAvenueSelection();\r
+       else if(sType=="searchform")\r
+               addSearchForm();\r
+       else if(sType=="banner")\r
+       {\r
+               if(!sI1)\r
+                       sI1=gsIBanner;\r
+               addBanner(sI1);\r
+       }\r
+}\r
+\r
+function isShowHideEnable()\r
+{\r
+       if(gbIE4)\r
+               return true;\r
+       else\r
+               return false;\r
+}\r
+\r
+function genButton(sText,sI,nStyle)\r
+{\r
+       var sButton="";\r
+       var sShowText=_textToHtml(sText);\r
+       if (gbNav4 && !gbNav6)\r
+               sShowText += "&nbsp;";\r
+       if(sText!=""&&sI!="")\r
+       {\r
+               if(nStyle&BTN_IMG_TOP)\r
+                       sButton+=sI+"<br>"+ sShowText;\r
+               else if(nStyle&BTN_IMG_BOTTOM)\r
+                       sButton+=sText+"<br>"+sI;\r
+               else if(nStyle&BTN_IMG_RIGHT)\r
+                       sButton+=sText+"&nbsp;"+sI;\r
+               else\r
+                       sButton+=sI+"&nbsp;"+sShowText;\r
+       }\r
+       else if(sText!="")\r
+       {\r
+               sButton+=sShowText;\r
+       }\r
+       else if(sI!="")\r
+       {\r
+               sButton+=sI;\r
+       }\r
+       return sButton;\r
+}\r
+\r
+function searchB()\r
+{\r
+       var onMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null);\r
+       SendMessage(onMsg);\r
+\r
+       var oMsg=new whMessage(WH_MSG_SEARCHTHIS,this,1,document.searchForm.searchString.value);\r
+       if(!SendMessage(oMsg))\r
+               gstrSearch=document.searchForm.searchString.value;\r
+       else\r
+               gstrSearch="";\r
+}\r
+\r
+function ReSortToolbarButtons()\r
+{\r
+       var bSearchEnabled=isSearchEnabled();\r
+       var strOrder="";\r
+       var oMsg=new whMessage(WH_MSG_TOOLBARORDER,this,1,null);\r
+       if(SendMessage(oMsg))\r
+       {\r
+               strOrder=oMsg.oParam;\r
+       }\r
+       if(strOrder.length>0)\r
+       {\r
+               gaOrders=strOrder.split("|");\r
+               var aTempButtons=new Array();\r
+               var ti=0;\r
+               for(var si=0;si<gaOrders.length;si++)\r
+               {\r
+                       if(gaOrders[si]!="searchform"||bSearchEnabled)\r
+                       {\r
+                               var sb=-1;\r
+                               for(var st=0;st<gaTypes.length;st++)\r
+                               {\r
+                                       if(gaOrders[si]==gaTypes[st])\r
+                                       {\r
+                                               sb=st;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                               if(sb!=-1)\r
+                               {\r
+                                       aTempButtons[aTempButtons.length]=gaButtons[sb];\r
+                               }\r
+                       }\r
+               }\r
+               gaButtons=aTempButtons;\r
+       }\r
+}\r
+\r
+function isSyncEnabled()\r
+{\r
+       var bEnabled=false;\r
+       var oMsg=new whMessage(WH_MSG_ISSYNCSSUPPORT,this,1,null);\r
+       if(SendMessage(oMsg))\r
+       {\r
+               bEnabled=oMsg.oParam;\r
+       }\r
+       return bEnabled;\r
+}\r
+\r
+function isAvenueEnabled()\r
+{\r
+       var bEnabled=false;\r
+       var oMsg=new whMessage(WH_MSG_ISAVENUESUPPORT,this,1,null);\r
+       if(SendMessage(oMsg))\r
+       {\r
+               bEnabled=oMsg.oParam;\r
+       }\r
+       return bEnabled;\r
+}\r
+\r
+function isSearchEnabled()\r
+{\r
+       var bEnabled=false;\r
+       var oMsg=new whMessage(WH_MSG_ISSEARCHSUPPORT,this,1,null);\r
+       if(SendMessage(oMsg))\r
+       {\r
+               bEnabled=oMsg.oParam;\r
+       }\r
+       return bEnabled;\r
+}\r
+\r
+function ReSortMinibarButtons()\r
+{\r
+       var bSyncEnabled=isSyncEnabled();\r
+       var bAvenueEnabled=isAvenueEnabled();\r
+       var strOrder="";\r
+       var oMsg=new whMessage(WH_MSG_MINIBARORDER,this,1,null);\r
+       if(SendMessage(oMsg))\r
+       {\r
+               strOrder=oMsg.oParam;\r
+       }\r
+       if(strOrder.length>0)\r
+       {\r
+               gaOrders=strOrder.split("|");\r
+               var aTempButtons=new Array();\r
+               var ti=0;\r
+               for(var si=0;si<gaOrders.length;si++)\r
+               {\r
+                       if((gaOrders[si]!="synctoc"||bSyncEnabled)&&\r
+                               ((gaOrders[si]!="avnext"&&gaOrders[si]!="avprev")||bAvenueEnabled))\r
+                       {\r
+                               var sb=-1;\r
+                               for(var st=0;st<gaTypes.length;st++)\r
+                               {\r
+                                       if(gaOrders[si]==gaTypes[st])\r
+                                       {\r
+                                               sb=st;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                               if(sb!=-1)\r
+                               {\r
+                                       aTempButtons[aTempButtons.length]=gaButtons[sb];\r
+                               }\r
+                       }\r
+               }\r
+               gaButtons=aTempButtons;\r
+       }\r
+}\r
+\r
+function writeToolBar()\r
+{\r
+       var sHTML="";\r
+       if(gaButtons.length>0)\r
+       {\r
+               var strHeight="100%";\r
+               var strWidth="100%";\r
+               if (gbNav4)\r
+               {\r
+                       strHeight=window.innerHeight-4;\r
+                       strWidth=window.innerWidth-4;\r
+               }\r
+               if (gbIE4)\r
+               {\r
+                       strHeight=document.body.clientHeight-4;\r
+                       strWidth=document.body.clientWidth-4;\r
+               }\r
+               if(gbNav6)\r
+                       sHTML="<table class=\"clsToolbarBackground\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" height=\""+strHeight+"\" width=\""+strWidth+"\">";\r
+               else\r
+                       sHTML="<form name=\"searchForm\" method=\"POST\" action=\"javascript:searchB()\"><table class=\"clsToolbarBackground\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" height=\""+strHeight+"\" width=\""+strWidth+"\">";\r
+               if((gnButtonLayout&LAYOUT)==HLAYOUT)\r
+               {\r
+                       sHTML+="<tr>";\r
+                       for(var i=0;i<gaButtons.length;i++)\r
+                       {\r
+                               if(gaButtons[i])\r
+                                       sHTML+=gaButtons[i];\r
+                               else\r
+                                       sHTML+="<td width=\"100%\"></td>";\r
+                       }\r
+                       sHTML+="</tr>";\r
+               }\r
+               else\r
+               {\r
+                       for(var i=0;i<gaButtons.length;i++)\r
+                       {\r
+                               if(gaButtons[i])\r
+                                       sHTML+="<tr width=\"100%\">"+gaButtons[i]+"</tr>";\r
+                               else\r
+                                       sHTML+="<tr height=\"100%\"><td></td></tr>";\r
+                       }\r
+               }\r
+               if(gbNav6)\r
+                       sHTML+="</table>";\r
+               else\r
+                       sHTML+="</table></form>";\r
+       }\r
+       document.write(sHTML);\r
+       if(document.body)\r
+               document.body.onselectstart=onSelect;\r
+       updateAveButton();\r
+}\r
+\r
+function hasNavPane()\r
+{\r
+       if(gnHasNavPane==-1)\r
+       {\r
+               gnHasNavPane=0;\r
+               var oParam=new Object();\r
+               oParam.bVisible=false;\r
+               var oMsg=new whMessage(WH_MSG_ISPANEVISIBLE,this,1,oParam);\r
+               if(SendMessage(oMsg))\r
+               {\r
+                       if(oParam.bVisible)\r
+                               gnHasNavPane=1;\r
+               }\r
+               \r
+       }\r
+       if(gnHasNavPane==1)\r
+               return true;\r
+       else\r
+               return false;\r
+}\r
+\r
+function getTocInfo()\r
+{\r
+       var oParam=new Object();\r
+       oParam.oTocInfo=null;\r
+       var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam);\r
+       if(SendMessage(oMsg))\r
+       {\r
+               goTocInfo=oParam.oTocInfo;\r
+               gbTocInfoInited=true;\r
+       }\r
+}\r
+\r
+function onBtnClick(e)\r
+{\r
+       var oEl=null;\r
+       var oElo=null;\r
+       if(gbNav6)\r
+       {\r
+               oElo=e.target;\r
+               while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo);\r
+               oEl=oElo;\r
+       }\r
+       else\r
+       {\r
+               oElo=event.srcElement;\r
+               oEl=oElo;\r
+               event.cancelBubble=true;\r
+       }\r
+       while(-1==oEl.className.indexOf("clsBtn")&&-1==oEl.className.indexOf("clsNoB"))\r
+       {\r
+               oEl=getParentNode(oEl);\r
+               if(!oEl) return;\r
+       }\r
+       if(oElo.tagName=="A"||oElo.tagName=="IMG") return true;\r
+       var oaA=getElementsByTag(oElo,"A");\r
+       if(oaA&&oaA.length)\r
+       {\r
+               var oA=oaA[0];\r
+               if(gbNav6)\r
+               {\r
+                       var sCmd=oA.getAttribute("onclick");\r
+                       var nCmd=sCmd.indexOf("return false;");\r
+                       if(nCmd!=-1);\r
+                               sCmd=sCmd.substring(0,nCmd);\r
+                       setTimeout(sCmd,1);\r
+               }\r
+               else\r
+                       oA.onclick();\r
+       }\r
+}\r
+\r
+function onBtnMouseDown(e,nBtn)\r
+{\r
+       var oEl=null;\r
+       if(gbNav6)\r
+       {\r
+               var oElo=e.target;\r
+               while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo);\r
+               oEl=oElo;\r
+       }\r
+       else\r
+       {\r
+               oEl=event.srcElement;\r
+               event.cancelBubble=true;\r
+       }\r
+       while(-1==oEl.className.indexOf("clsBtn")&&-1==oEl.className.indexOf("clsNoB"))\r
+       {\r
+               oEl=getParentNode(oEl);\r
+               if(!oEl) return;\r
+       }\r
+       var sPF=oEl.className.substring(0,6);\r
+       var oIs=getElementsByTag(oEl,"img");\r
+       if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>2)\r
+       {\r
+               if(gaObjBtns[nBtn].aIs[2])\r
+                       oIs[0].src=gaObjBtns[nBtn].aIs[2];\r
+       }\r
+       var sState=getState(oEl);\r
+       if(sState!="disable")\r
+       {\r
+               oEl.className=sPF+"Down";\r
+       }\r
+}\r
+\r
+function onBtnMouseUp(e,nBtn)\r
+{\r
+       var oEl=null;\r
+       if(gbNav6)\r
+       {\r
+               var oElo=e.target;\r
+               while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo);\r
+               oEl=oElo;\r
+       }\r
+       else\r
+       {\r
+               oEl=event.srcElement;\r
+               event.cancelBubble=true;\r
+       }\r
+       while(-1==oEl.className.indexOf("clsBtn")&&-1==oEl.className.indexOf("clsNoB"))\r
+       {\r
+               oEl=getParentNode(oEl);\r
+               if(!oEl) return;\r
+       }\r
+       var sPF=oEl.className.substring(0,6);\r
+       var sState=getState(oEl);\r
+       if(sState=="down"||sState=="disable")\r
+       {\r
+               var oIs=getElementsByTag(oEl,"img");\r
+               if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>3)\r
+               {\r
+                       if(gaObjBtns[nBtn].aIs[3])\r
+                               oIs[0].src=gaObjBtns[nBtn].aIs[3];\r
+               }\r
+       }\r
+       else\r
+       {\r
+               var oIs=getElementsByTag(oEl,"img");\r
+               if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>0)\r
+               {\r
+                       if(gaObjBtns[nBtn].aIs[0])\r
+                               oIs[0].src=gaObjBtns[nBtn].aIs[0];\r
+               }\r
+       }\r
+       if(goEl==oEl)\r
+       {\r
+               if(sState!="down"&&sState!="disable")\r
+               {\r
+                       oEl.className=sPF+"Up";\r
+               }\r
+       }\r
+}\r
+\r
+function getState(oEl)\r
+{\r
+       var sState="";\r
+       if(gbNav6||gbOpera)\r
+               sState=oEl.getAttribute("state");\r
+       else\r
+               if(oEl.state)\r
+                       sState=oEl.state;\r
+       return sState;\r
+}\r
+\r
+function onBtnMouseOver(e,nBtn)\r
+{\r
+       markButton(e);\r
+       var oEl=null;\r
+       if(gbNav6)\r
+       {\r
+               var oElo=e.target;\r
+               while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo);\r
+               oEl=oElo;\r
+       }\r
+       else\r
+       {\r
+               oEl=event.srcElement;\r
+               event.cancelBubble=true;\r
+       }\r
+       while(-1==oEl.className.indexOf("clsBtn")&&-1==oEl.className.indexOf("clsNoB"))\r
+       {\r
+               oEl=getParentNode(oEl);\r
+               if(!oEl) return;\r
+       }\r
+       var sPF=oEl.className.substring(0,6);\r
+       var sState=getState(oEl);\r
+       if(sState=="down"||sState=="disable")\r
+       {\r
+               if(sState=="down")\r
+                       oEl.className=sPF+"Down";\r
+               var oIs=getElementsByTag(oEl,"img");\r
+               if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>4)\r
+               {\r
+                       if(gaObjBtns[nBtn].aIs[4])\r
+                               oIs[0].src=gaObjBtns[nBtn].aIs[4];\r
+               }\r
+       }\r
+       else\r
+       {\r
+               oEl.className=sPF+"Up";\r
+               var oIs=getElementsByTag(oEl,"img");\r
+               if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>1)\r
+               {\r
+                       if(gaObjBtns[nBtn].aIs[1])\r
+                               oIs[0].src=gaObjBtns[nBtn].aIs[1];\r
+               }\r
+       }\r
+}\r
+\r
+function onBtnMouseOut(e,nBtn)\r
+{\r
+       goEl=null;\r
+       var oEl=null;\r
+       if(gbNav6)\r
+       {\r
+               var oElo=e.target;\r
+               while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo);\r
+               oEl=oElo;\r
+       }\r
+       else\r
+       {\r
+               oEl=event.srcElement;\r
+               event.cancelBubble=true;\r
+       }\r
+       while(-1==oEl.className.indexOf("clsBtn")&&-1==oEl.className.indexOf("clsNoB"))\r
+       {\r
+       oEl=getParentNode(oEl);\r
+       if(!oEl) return;\r
+       }\r
+       var sPF=oEl.className.substring(0,6);\r
+       var sState=getState(oEl);\r
+       if(sState=="down"||sState=="disable")\r
+       {\r
+               var oIs=getElementsByTag(oEl,"img");\r
+               if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>3)\r
+               {\r
+                       if(gaObjBtns[nBtn].aIs[3])\r
+                               oIs[0].src=gaObjBtns[nBtn].aIs[3];\r
+               }\r
+               if(sState=="down")\r
+                       oEl.className=sPF+"Down";\r
+       }\r
+       else\r
+       {\r
+               var oIs=getElementsByTag(oEl,"img");\r
+               if(oIs.length>0&&gaObjBtns[nBtn]&&gaObjBtns[nBtn].aIs&&gaObjBtns[nBtn].aIs.length>0)\r
+               {\r
+                       if(gaObjBtns[nBtn].aIs[0])\r
+                               oIs[0].src=gaObjBtns[nBtn].aIs[0];\r
+               }\r
+               oEl.className=sPF+"Normal";\r
+       }\r
+}\r
+\r
+function showToc()\r
+{\r
+       var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function showIndex()\r
+{\r
+       var oMsg=new whMessage(WH_MSG_SHOWIDX,this,1,null)\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function showFts()\r
+{\r
+       var oMsg=new whMessage(WH_MSG_SHOWFTS,this,1,null)\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function showGlossary()\r
+{\r
+       var oMsg=new whMessage(WH_MSG_SHOWGLO,this,1,null)\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function syncWithShow()\r
+{\r
+       if(!gbTocInfoInited)\r
+       {\r
+               getTocInfo();\r
+       }\r
+       if(goTocInfo)\r
+       {\r
+               showToc();\r
+               var oParam=goTocInfo;\r
+               var oMsg=new whMessage(WH_MSG_SYNCTOC,this,1,oParam);\r
+               SendMessage(oMsg);\r
+       }\r
+}\r
+\r
+function markButton(e)\r
+{\r
+       var oEl=null;\r
+       if(gbNav6)\r
+       {\r
+               var oElo=e.target;\r
+               while(oElo&&oElo.nodeName.indexOf("#")==0) oElo=getParentNode(oElo);\r
+               oEl=oElo;\r
+       }\r
+       else\r
+               oEl=event.srcElement;\r
+       while(oEl&&oEl.tagName!="TD") oEl=getParentNode(oEl);\r
+       if(oEl)\r
+               goEl=oEl;\r
+}\r
+\r
+function showHidePane()\r
+{\r
+       var oMsg=null;\r
+       if(hasNavPane())\r
+               oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null);\r
+       else\r
+               oMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function goAveNext()\r
+{\r
+       goAvenue(true);\r
+}\r
+\r
+function goAvePrev()\r
+{\r
+       goAvenue(false);\r
+}\r
+\r
+function doWebSearch()\r
+{\r
+       if (goWebSearchEnable)\r
+       {\r
+               var oMsg=new whMessage(WH_MSG_WEBSEARCH,this,1,null);\r
+               SendMessage(oMsg);\r
+       }\r
+}\r
+\r
+function goAvenue(bNext)\r
+{\r
+       var oMsg=null;\r
+       initAveButtonObj();\r
+       gsCurAveName=getCurrentAveName();\r
+       if(gbNav4&&!gbNav6)\r
+       {\r
+               if(bNext)\r
+               {\r
+                       gaAvenues=null;\r
+                       updateAvenue();\r
+                       oMsg=new whMessage(WH_MSG_NEXT,this,1,null);\r
+                       SendMessage(oMsg);\r
+               }\r
+               else if(!bNext)\r
+               {\r
+                       gaAvenues=null;\r
+                       updateAvenue();\r
+                       oMsg=new whMessage(WH_MSG_PREV,this,1,null);\r
+                       SendMessage(oMsg);\r
+               }\r
+       }\r
+       else\r
+       {\r
+               if(bNext&&goNextParent)\r
+               {\r
+                       var sState=getState(goNextParent);\r
+                       if(sState!="disable")\r
+                       {\r
+                               gaAvenues=null;\r
+                               gbNeedUpdateAve=true;\r
+                               gbUpdateTimerCount++;\r
+                               setTimeout("updateAvenueIfNeeded();", 2000);\r
+                               oMsg=new whMessage(WH_MSG_NEXT,this,1,null);\r
+                               SendMessage(oMsg);\r
+                       }\r
+               }\r
+               else if(!bNext&&goPrevParent)\r
+               {\r
+                       var sState=getState(goPrevParent);\r
+                       if(sState!="disable")\r
+                       {\r
+                               gaAvenues=null;\r
+                               gbNeedUpdateAve=true;\r
+                               gbUpdateTimerCount++;\r
+                               setTimeout("updateAvenueIfNeeded();", 2000);\r
+                               oMsg=new whMessage(WH_MSG_PREV,this,1,null);\r
+                               SendMessage(oMsg);\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function window_Unload()\r
+{\r
+       if(!gbNav4||gbNav6)\r
+       {\r
+               UnRegisterListener2(this,WH_MSG_GETSEARCHS);\r
+               UnRegisterListener2(this,WH_MSG_PANESTATUE);\r
+               UnRegisterListener2(this,WH_MSG_SYNCINFO);\r
+               UnRegisterListener2(this,WH_MSG_PANEINFO);\r
+               UnRegisterListener2(this,WH_MSG_AVENUEINFO);\r
+               UnRegisterListener2(this,WH_MSG_GETCURRENTAVENUE);\r
+               UnRegisterListener2(this,WH_MSG_ENABLEWEBSEARCH);\r
+               UnRegisterListener2(this,WH_MSG_INITSEARCHSTRING);\r
+               UnRegisterListener2(this,WH_MSG_NOSEARCHINPUT);\r
+               UnRegisterListener2(this,WH_MSG_NOSYNC);\r
+       }\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if(!gbOpera7&&document.body)\r
+       {\r
+               if(gsBgImage&&gsBgImage.length>0)\r
+               {\r
+                       document.body.background=gsBgImage;\r
+               }\r
+               if(gsBgColor&&gsBgColor.length>0)\r
+               {\r
+                       document.body.bgColor=gsBgColor;\r
+               }\r
+       }\r
+       doCusOnLoad();\r
+       var oMsg=new whMessage(WH_MSG_GETPANEINFO,this,1,null);\r
+       if(SendMessage(oMsg))\r
+       {\r
+               setTimeout("flipPaneButton(\""+oMsg.oParam+"\");",1);\r
+       }\r
+       if (!gaAvenues)\r
+       {\r
+               var oMsg2=new whMessage(WH_MSG_GETAVIAVENUES,this,1,new Object());\r
+               if(SendMessage(oMsg2))\r
+               {\r
+                       gaAvenues=oMsg2.oParam.aAvenues;\r
+                       gbNeedUpdateAve=false;\r
+                       setTimeout("updateAvenue();",1);\r
+               }\r
+       }\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       var nMsgId=oMsg.nMessageId;\r
+       if(nMsgId==WH_MSG_GETSEARCHS)\r
+       {\r
+               if(document.searchForm&&document.searchForm.searchString)\r
+               {\r
+                       oMsg.oParam.sValue=document.searchForm.searchString.value;\r
+                       return false;\r
+               }\r
+       }\r
+       else if(nMsgId==WH_MSG_PANESTATUE)\r
+       {\r
+               if(oMsg.oParam=="visible")\r
+               {\r
+                       if(isShowHideEnable())\r
+                               setTimeout("flipShowHide(true);",1);\r
+                       setTimeout("showPaneButton();",1);\r
+               }\r
+               else\r
+               {\r
+                       if(isShowHideEnable())\r
+                               setTimeout("flipShowHide(false);",1);\r
+                       setTimeout("hidePaneButton();",1);\r
+               }\r
+       }\r
+       else if(nMsgId==WH_MSG_PANEINFO)\r
+       {\r
+               if(oMsg.oParam)\r
+                       setTimeout("flipPaneButton(\""+oMsg.oParam+"\");",1);\r
+               else\r
+                       setTimeout("hidePaneButton();",1);\r
+       }\r
+       else if(nMsgId==WH_MSG_SYNCINFO)\r
+       {\r
+               if(oMsg.oParam)\r
+                       goTocInfo=oMsg.oParam;\r
+               else\r
+                       goTocInfo=null;\r
+               gbTocInfoInited=true;\r
+       }\r
+       else if(nMsgId==WH_MSG_AVENUEINFO)\r
+       {\r
+               gaAvenues=oMsg.oParam;\r
+               gbNeedUpdateAve=false;\r
+               setTimeout("updateAvenue();",1);\r
+       }\r
+       else if(nMsgId==WH_MSG_GETCURRENTAVENUE)\r
+       {\r
+               var sAveName=getCurrentAvenue();\r
+               if(sAveName!="")\r
+               {\r
+                       oMsg.oParam.sAvenue=sAveName;\r
+                       return false;\r
+               }\r
+               else\r
+                       return true;\r
+       }\r
+       else if(nMsgId==WH_MSG_ENABLEWEBSEARCH)\r
+       {\r
+               setTimeout("updateWebSearch("+oMsg.oParam+");",1);\r
+       }\r
+       else if(nMsgId==WH_MSG_INITSEARCHSTRING)\r
+       {\r
+               if(gstrSearch!="")\r
+               {\r
+                       oMsg.oParam=gstrSearch;\r
+                       gstrSearch="";\r
+                       return false;\r
+               }\r
+       }\r
+       else if(nMsgId==WH_MSG_NOSEARCHINPUT)\r
+       {\r
+               var oSearchInput = getElement("searchInput");\r
+               if (oSearchInput)\r
+               {\r
+                       oSearchInput.style.visibility = "hidden";\r
+                       return false;\r
+               }\r
+       }\r
+       else if(nMsgId==WH_MSG_NOSYNC)\r
+       {\r
+               var oSync = getElement("btnsynctoc");\r
+               if (oSync)\r
+               {\r
+                       oSync.style.visibility = "hidden";\r
+                       return false;\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+function getCurrentAvenue()\r
+{\r
+       var strAveName="";\r
+       var oSelect=getElement("avenue");\r
+       if(oSelect)\r
+       {\r
+               strAveName=oSelect.value;\r
+       }\r
+       return strAveName;\r
+}\r
+\r
+function initBtn()\r
+{\r
+       var oBtn=null;\r
+       oBtn=getElement("btntoc");\r
+       if(oBtn)\r
+               gaBtns[gaBtns.length]=oBtn;\r
+       oBtn=getElement("btnidx");\r
+       if(oBtn)\r
+               gaBtns[gaBtns.length]=oBtn;\r
+       oBtn=getElement("btnfts");\r
+       if(oBtn)\r
+               gaBtns[gaBtns.length]=oBtn;\r
+       oBtn=getElement("btnglo");\r
+       if(oBtn)\r
+               gaBtns[gaBtns.length]=oBtn;\r
+       gbInitBtn=true;\r
+}\r
+\r
+function showPaneButton()\r
+{\r
+       flipPaneButton(gsPane);\r
+}\r
+\r
+function hidePaneButton()\r
+{\r
+       flipPaneButton("");\r
+}\r
+\r
+function flipPaneButton(sPane)\r
+{\r
+       if (sPane)\r
+               gsPane=sPane;\r
+       if(!gbInitBtn)\r
+               initBtn();\r
+\r
+       var oUp=null;\r
+       if(sPane)\r
+       {\r
+               oUp=getElement("btn"+sPane);\r
+       }\r
+       for(var i=0;i<gaBtns.length;i++)\r
+       {\r
+               if(gaBtns[i])\r
+               {\r
+                       if(gaBtns[i]==oUp)\r
+                       {\r
+                               var oEl=getParentNode(oUp);\r
+                               var sPF=oEl.className.substring(0,6);\r
+                               var sState=getState(oEl);\r
+                               if(sState=="up")\r
+                               {\r
+                                       setState(oEl,"down");\r
+                                       oEl.className=sPF+"Down";\r
+                                       if(sPF=="clsBtn")\r
+                                       {\r
+                                               if(gaBtns[i].id)\r
+                                               {\r
+                                                       var sColor=getBtnColor(gaBtns[i].id.substring(3),true);\r
+                                                       if(sColor)\r
+                                                       {\r
+                                                               oEl.style.backgroundColor=sColor\r
+                                                       }\r
+                                                       else\r
+                                                       {\r
+                                                               oEl.style.backgroundColor="";\r
+                                                       }\r
+                                               }\r
+                                               var oaA=getElementsByTag(oEl,"A");\r
+                                               if(oaA.length>0)\r
+                                               {\r
+                                                       var strClassName=oaA[0].className;\r
+                                                       oaA[0].className="btnsel"+strClassName.substring(3);\r
+                                               }\r
+                                       }\r
+                                       var oIs=getElementsByTag(oEl,"img");\r
+                                       var oBtn=getButtonObjByType(gaBtns[i].id.substring(3));\r
+                                       if(oIs.length>0&&oBtn&&oBtn.aIs&&oBtn.aIs.length>3)\r
+                                       {\r
+                                               if(oBtn.aIs[3])\r
+                                                       oIs[0].src=oBtn.aIs[3];\r
+                                       }\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               var oEl=getParentNode(gaBtns[i]);\r
+                               var sState=getState(oEl);\r
+                               var sPF=oEl.className.substring(0,6);\r
+                               if(sState=="down")\r
+                               {\r
+                                       setState(oEl,"up");\r
+                                       if(oEl==goEl)\r
+                                               oEl.className=sPF+"Up";\r
+                                       else\r
+                                               oEl.className=sPF+"Normal";\r
+\r
+                                       if(sPF=="clsBtn")\r
+                                       {\r
+                                               if(gaBtns[i].id)\r
+                                               {\r
+                                                       var sColor=getBtnColor(gaBtns[i].id.substring(3),false);\r
+                                                       if(sColor)\r
+                                                       {\r
+                                                               oEl.style.backgroundColor=sColor\r
+                                                       }\r
+                                                       else\r
+                                                       {\r
+                                                               oEl.style.backgroundColor="";\r
+                                                       }\r
+                                               }\r
+\r
+                                               var oaA=getElementsByTag(oEl,"A");\r
+                                               if(oaA.length>0)\r
+                                               {\r
+                                                       var strClassName=oaA[0].className;\r
+                                                       oaA[0].className="btn"+strClassName.substring(6);\r
+                                               }\r
+                                       }\r
+                                       var oIs=getElementsByTag(oEl,"img");\r
+                                       var oBtn=getButtonObjByType(gaBtns[i].id.substring(3));\r
+                                       if(oIs.length>0&&oBtn&&oBtn.aIs&&oBtn.aIs.length>0)\r
+                                       {\r
+                                               if(oBtn.aIs[0])\r
+                                                       oIs[0].src=oBtn.aIs[0];\r
+                                       }\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function flipShowHide(bShow)\r
+{\r
+       gnHasNavPane=-1;        \r
+       var oA=getElement("btnshowhide");\r
+       if(oA)\r
+       {\r
+               var oEl=getParentNode(oA);\r
+               var sPF=oEl.className.substring(0,6);\r
+               if(oEl&&oEl.state)\r
+               {\r
+                       if(bShow)\r
+                       {\r
+                               oEl.state="down";\r
+                               oEl.className=sPF+"Down";\r
+                       }\r
+                       else\r
+                       {\r
+                               oEl.state="up";\r
+                               \r
+                               if(oEl==goEl)\r
+                                       oEl.className=sPF+"Up";\r
+                               else\r
+                                       oEl.className=sPF+"Normal";\r
+                       }\r
+               }\r
+               oA.innerHTML=getShowHide();\r
+       }\r
+}\r
+\r
+function cusOnClick(nIdx)\r
+{\r
+       if(goCusButton.length>nIdx)\r
+       {\r
+               var sOnClick=goCusButton[nIdx].sOnClick;\r
+               if(sOnClick&&sOnClick.length>0)\r
+               {\r
+                       if(!gbPreview)\r
+                               eval(sOnClick);\r
+                       return false;\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+function cusOnMouseOver(nIdx)\r
+{\r
+       if(goCusButton.length>nIdx)\r
+       {\r
+               var sOnMouseOver=goCusButton[nIdx].sOnMouseOver;\r
+               if(sOnMouseOver&&sOnMouseOver.length>0)\r
+               {\r
+                       if(!gbPreview)\r
+                               eval(sOnMouseOver);\r
+                       return false;\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+function doCusOnLoad()\r
+{\r
+       if(!gbPreview&&gaOrders)\r
+       {\r
+               for(var i=0;i<gaOrders.length;i++)\r
+               {\r
+                       for(var j=0;j<gaOnLoads.length;j++)\r
+                       {\r
+                               if(gaOrders[i]==gaOnLoads[j].sType)\r
+                               {\r
+                                       eval(gaOnLoads[j].sOnLoad);\r
+                                       break;\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+function registerOnLoad(sOnLoad,sType)\r
+{\r
+       gaOnLoads[gaOnLoads.length]=new cusOnLoad(sType,sOnLoad);       \r
+}\r
+\r
+function cusOnLoad(sType,sOnLoad)\r
+{\r
+       this.sType=sType;\r
+       this.sOnLoad=sOnLoad;\r
+}\r
+\r
+function cusButton(sType,sText,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight)\r
+{\r
+       this.sType=sType;\r
+       this.sText=sText;\r
+       this.sOnClick=sOnClick;\r
+       this.sOnMouseOver=sOnMouseOver;\r
+       this.sOnLoad=sOnLoad;\r
+       this.nWidth=nWidth;\r
+       this.nHeight=nHeight;\r
+       this.aIs=new Array();\r
+       var i=0;\r
+       while(cusButton.arguments.length>i+7)\r
+       {\r
+               if (cusButton.arguments[7+i])\r
+                       this.aIs[i]=_getFullPath(_getPath(document.location.href),cusButton.arguments[7+i]);\r
+               else\r
+                       this.aIs[i]="";\r
+               i++;\r
+       }\r
+       if(sOnLoad)\r
+       {\r
+               registerOnLoad(sOnLoad,sType);\r
+       }\r
+}\r
+\r
+function getBtnColor(sType,bSel)\r
+{\r
+       var aBtnColors=null;\r
+       if(bSel)\r
+               aBtnColors=gaSelBtnBgColor;\r
+       else\r
+               aBtnColors=gaBtnBgColor;\r
+       if(aBtnColors)\r
+       {\r
+               for(var i=0;i<aBtnColors.length;i++)\r
+               {\r
+                       if(aBtnColors[i].sType==sType)\r
+                               return aBtnColors[i].sColor;\r
+               }\r
+       }\r
+       return "";\r
+}\r
+\r
+function setButtonBgColor(sType,sColor,bSel)\r
+{\r
+       if(sColor)\r
+       {\r
+               var aBtnColors=null;\r
+               if(bSel)\r
+                       aBtnColors=gaSelBtnBgColor;\r
+               else\r
+                       aBtnColors=gaBtnBgColor;\r
+               if(aBtnColors!=null)\r
+               {\r
+                       for(var i=0;i<aBtnColors.length;i++)\r
+                       {\r
+                               if(aBtnColors[i].sType==sType)\r
+                               {\r
+                                       aBtnColors[i].sColor=sColor;\r
+                                       return;\r
+                               }\r
+                       }\r
+                       aBtnColors[aBtnColors.length]=new btnBgColor(sType,sColor);\r
+               }\r
+       }\r
+}\r
+\r
+function getDefaultButtonFont()\r
+{\r
+       var strFontStyle="";\r
+       for(var i=0;i<gaTypes.length;i++)\r
+       {\r
+               strFontStyle+=".btnsel"+gaTypes[i]+"{"+getFontStyle(goSelTextFont)+"}";\r
+               strFontStyle+=".btn"+gaTypes[i]+"{"+getFontStyle(goTextFont)+"}";\r
+       }\r
+       return strFontStyle;\r
+}\r
+\r
+function setButtonFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration,bSel)\r
+{\r
+       if(sFontName)\r
+       {\r
+               var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
+               if(bSel)\r
+                       gsBtnStyle+=".btnsel"+sType+"{"+getFontStyle(vFont)+"}\n";\r
+               else\r
+                       gsBtnStyle+=".btn"+sType+"{"+getFontStyle(vFont)+"}\n";\r
+       }\r
+       if (sType=="searchform"&&!bSel)\r
+       {\r
+               var vFont1=new whFont(sFontName,sFontSize,"black",sFontStyle,sFontWeight,sFontDecoration);\r
+               gsBtnStyle+=".inputsearchform {" + getFontStyle(vFont1)+"}\n";\r
+       }\r
+}\r
+\r
+function getButtonObjByType(sType)\r
+{\r
+       for(var i=0;i<gaObjBtns.length;i++)\r
+       {\r
+               if(gaObjBtns[i].sType==sType)\r
+                       return gaObjBtns[i];\r
+       }\r
+       return null;\r
+}\r
+\r
+function onSelect()\r
+{\r
+       if (event.srcElement&&event.srcElement.name)\r
+       {\r
+               if (event.srcElement.name=="searchString")\r
+                       return true;\r
+       }\r
+       return false;\r
+}\r
+\r
+function window_onResize()\r
+{\r
+       gnRE++;\r
+       setTimeout("tryReload();", 100);\r
+}\r
+\r
+function tryReload()\r
+{\r
+       if (gnRE==1)\r
+               document.location.reload();\r
+       gnRE--;\r
+}\r
+\r
+if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
+{\r
+       RegisterListener2(this,WH_MSG_GETSEARCHS);\r
+       RegisterListener2(this,WH_MSG_PANESTATUE);\r
+       RegisterListener2(this,WH_MSG_SYNCINFO);\r
+       RegisterListener2(this,WH_MSG_PANEINFO);\r
+       RegisterListener2(this,WH_MSG_AVENUEINFO);\r
+       RegisterListener2(this,WH_MSG_GETCURRENTAVENUE);\r
+       RegisterListener2(this,WH_MSG_ENABLEWEBSEARCH);\r
+       RegisterListener2(this,WH_MSG_INITSEARCHSTRING);\r
+       RegisterListener2(this,WH_MSG_NOSEARCHINPUT);\r
+       RegisterListener2(this,WH_MSG_NOSYNC);\r
+\r
+       window.onload=window_OnLoad;\r
+       window.onunload=window_Unload;\r
+       window.onresize=window_onResize;\r
+       goTextFont=new whFont("Verdana","8pt","#003063","normal","normal","none");\r
+       goSelTextFont=new whFont("Verdana","8pt","white","normal","normal","none");\r
+       gbWhTBar=true;\r
+}\r
+else\r
+       document.location.reload();\r
+\r
diff --git a/doc/salome/gui/GAUSS/whtdhtml.htm b/doc/salome/gui/GAUSS/whtdhtml.htm
new file mode 100644 (file)
index 0000000..c3eeecb
--- /dev/null
@@ -0,0 +1,49 @@
+<html>\r
+<head>\r
+<title>Table of contents</title>\r
+\r
+<meta name="generator" content="RoboHelp by eHelp Corporation   www.ehelp.com">\r
+<meta name="description" content="WebHelp 5.50">\r
+<base target="bsscright">\r
+</head>\r
+<script language="javascript" src="whver.js"></script>\r
+<script language="javascript1.2" src="whmozemu.js"></script>\r
+<script language="javascript1.2" src="whutils.js"></script>\r
+<script language="javascript1.2" src="whmsg.js"></script>\r
+<script language="javascript1.2" src="whproxy.js"></script>\r
+<script language="javascript1.2" src="whthost.js"></script>\r
+<script LANGUAGE="javascript1.2">\r
+<!--\r
+if (window.gbWhTHost)\r
+{\r
+       setBackgroundcolor( "White");  \r
+       \r
+       setFont("Normal", "Tahoma","8pt","Black","Normal","Normal","none");\r
+       setFont("Hover", "Tahoma","8pt","Navy","Normal","Normal","underline");\r
+       setActiveBgColor("Silver");\r
+       \r
+       \r
+       setIcon("BookOpen","wht_toc2.gif");\r
+       setIcon("BookClose","wht_toc1.gif");\r
+       setIcon("Item","wht_toc3.gif");\r
+       setIcon("RemoteItem","wht_toc4.gif");\r
+       \r
+       \r
+       \r
+       \r
+       TocWriteClassStyle();\r
+       TocWriteFixedWidth(true,400);\r
+}\r
+else\r
+       document.location.reload();\r
+//-->\r
+</script>\r
+<body topmargin="2" leftmargin="2" marginwidth="0" marginheight="0" bgproperties="fixed" bgcolor="white" scroll="auto">\r
+<script LANGUAGE="javascript1.2">\r
+<!--\r
+TocWriteFixedWidth(false,400);\r
+TocInitPage();\r
+//-->\r
+</script>\r
+</body>\r
+</html>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whthost.js b/doc/salome/gui/GAUSS/whthost.js
new file mode 100644 (file)
index 0000000..54ddc9a
--- /dev/null
@@ -0,0 +1,1504 @@
+//     WebHelp 5.10.007\r
+var gaHSLoad=new Array();\r
+var gnMinIdx=0;\r
+var gnInsIdx=-1;\r
+var gsLoadingDivID="LoadingDiv";\r
+var gsLoadingMsg="Loading, click here to cancel...";\r
+var gaProj=null;\r
+var gaTocs=new Array();\r
+var goChunk=null;\r
+var gbReady=false;\r
+var gbToc=false;\r
+var gbXML=false;\r
+var gaRoot=new Array();\r
+var gnCC=-1;\r
+var gsTP="";\r
+var gaBTPs="";\r
+var gsCTPath="";\r
+var gnLT=-1;\r
+var gsPathSplit="\n";\r
+var gsBgColor="#ffffff";\r
+var gsBgImage="";\r
+var goFont=null;\r
+var goHFont=null;\r
+\r
+var gsMargin="0pt";\r
+var gsIndent="15pt";\r
+var gsABgColor="#cccccc";\r
+\r
+var giBookClose="";\r
+var giBookOpen="";\r
+var giBookItem="";\r
+var giURLItem="";\r
+var giNewBookClose="";\r
+var giNewBookOpen="";\r
+var giNewBookItem="";\r
+var giNewURLItem="";\r
+var gnImages=0;\r
+var gnLoadedImages=0;\r
+var gaImgs=new Array();\r
+var gbLoadData=false;\r
+var gobj=null;\r
+var gaTocsNs61Fix=null;\r
+var gbWhTHost=false;\r
+var gBookItems=new Array();\r
+var gInSync=false;\r
+var gbLData=false;\r
+var gbNeedFillStub=false;\r
+var gbLoadToc=false;\r
+\r
+function chunkInfoQueue()\r
+{\r
+       this.aContent=new Array();\r
+       this.inQueue=function(cInfo)\r
+       {\r
+               this.aContent[this.aContent.length]=cInfo;\r
+       }\r
+       this.deQueue=function()\r
+       {\r
+               var cInfo=null;\r
+               if(this.aContent.length>0)\r
+               {\r
+                       cInfo=this.aContent[0];\r
+                       for(var i=1;i<this.aContent.length;i++)\r
+                               this.aContent[i-1]=this.aContent[i];\r
+                       this.aContent.length--;\r
+               }\r
+               return cInfo;\r
+       }\r
+       this.length=function()\r
+       {\r
+               return this.aContent.length;\r
+       }\r
+}\r
+\r
+var gchunkRequestQueue=new chunkInfoQueue();\r
+\r
+function chunkInfo(nIdx, bLocal)\r
+{\r
+       this.nIdx=nIdx;\r
+       this.bLocal=bLocal;\r
+}\r
+\r
+function setBackground(sBgImage)\r
+{\r
+       gsBgImage=sBgImage;\r
+}\r
+\r
+function setBackgroundcolor(sBgColor)\r
+{\r
+       gsBgColor=sBgColor;\r
+}\r
+\r
+function setFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
+{\r
+       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
+       if(sType=="Normal") goFont=vFont;\r
+       else if(sType=="Hover") goHFont=vFont;\r
+}\r
+\r
+function setActiveBgColor(sBgColor){gsABgColor=sBgColor;}\r
+\r
+function setMargin(sMargin){gsMargin=sMargin;}\r
+\r
+function setIndent(sIndent){gsIndent=sIndent;}\r
+\r
+function setIcon(sType,sURL)\r
+{\r
+       if(sType=="BookOpen")\r
+               giBookOpen=sURL;\r
+       else if(sType=="BookClose")\r
+               giBookClose=sURL;\r
+       else if(sType=="Item")\r
+               giBookItem=sURL;\r
+       else if(sType=="RemoteItem")\r
+               giURLItem=sURL;\r
+       else if(sType=="NewBookClose")\r
+               giNewBookClose=sURL;\r
+       else if(sType=="NewBookOpen")\r
+               giNewBookOpen=sURL;\r
+       else if(sType=="NewItem")\r
+               giNewBookItem=sURL;\r
+       else if(sType=="NewRemoteItem")\r
+               giNewURLItem=sURL;              \r
+}\r
+\r
+function bookItem(sTarget,sURL)\r
+{\r
+       if(sTarget)\r
+               this.sTarget=sTarget;\r
+       else\r
+               this.sTarget="bsscright";\r
+       this.sURL=sURL;\r
+}\r
+\r
+function addBookItem(sBookId,sTarget,sURL)\r
+{\r
+       gBookItems[sBookId]=new bookItem(sTarget,sURL);         \r
+}\r
+\r
+function tocChunk(sPPath,sDPath)\r
+{\r
+       this.sPPath=sPPath;\r
+       this.sDPath=sDPath;\r
+       this.nMI=-1;\r
+       this.aTocs=null;\r
+}\r
+\r
+function addTocChunk(sPPath,sDPath)\r
+{\r
+       var oChunk=new tocChunk(sPPath,sDPath);\r
+       gaTocs[gaTocs.length]=oChunk;\r
+       return oChunk;\r
+}\r
+\r
+function isHSLoad(nIdx)\r
+{\r
+       for(var i=0;i<gaHSLoad.length;i++)\r
+               if(gaHSLoad[i]==nIdx)\r
+                       return true;\r
+       return false;\r
+}\r
+\r
+function setHSLoad(nIdx)\r
+{\r
+       if(!isHSLoad(nIdx))\r
+       {\r
+               var len=gaHSLoad.length;\r
+               for(var i=0;i<len;i++)\r
+                       if(gaHSLoad[i]==-1)\r
+                       {\r
+                               gaHSLoad[i]=nIdx;\r
+                               return;\r
+                       }\r
+               gaHSLoad[len]=nIdx;\r
+       }\r
+}\r
+\r
+function setHSUnLoad(nIdx)\r
+{\r
+       if(isHSLoad(nIdx))\r
+       {\r
+               for(var i=0;i<gaHSLoad.length;i++)\r
+                       if(gaHSLoad[i]==nIdx)\r
+                       {\r
+                               gaHSLoad[i]=-1;\r
+                               return;\r
+                       }\r
+       }\r
+}\r
+\r
+function removeLoadingDiv()\r
+{\r
+       var eLoadingDiv=getElement(gsLoadingDivID);\r
+       if(eLoadingDiv)\r
+               removeThis(eLoadingDiv);\r
+}\r
+\r
+function checkBookItem(nIdx)\r
+{\r
+       if(!gInSync)\r
+       {\r
+               var sBookId=getBookId(nIdx);\r
+               if(gBookItems[sBookId])\r
+               {\r
+                       window.open(gBookItems[sBookId].sURL,gBookItems[sBookId].sTarget);\r
+               }\r
+       }\r
+}\r
+\r
+function insertBookItems(nIdx,num)\r
+{\r
+       checkBookItem(nIdx);\r
+       var sChildBookId=getCBId(nIdx);\r
+       var eChildDiv=getElement(sChildBookId);\r
+       if(eChildDiv){\r
+               if((eChildDiv.childNodes&&eChildDiv.childNodes.length==0)||\r
+                       (eChildDiv.all&&eChildDiv.all.length==0)){\r
+                       var sHTML=writeBookItems(nIdx,num);\r
+                       eChildDiv.innerHTML=sHTML;\r
+                       setTimeout("syncInit()",1);\r
+               }\r
+       }\r
+       ExpandIt(nIdx);\r
+}\r
+\r
+function isBookEmpty(nIdx)\r
+{\r
+       var num=getItemContentsNum(nIdx);\r
+       if (num>0)\r
+       {\r
+               var nCIdx=0;\r
+               do {\r
+                       nCIdx++;\r
+                       var i=nIdx+nCIdx;\r
+                       var nItemType=getItemType(i);\r
+                       if(nItemType==1){\r
+                               if (!isBookEmpty(i))\r
+                                       return false;\r
+                       }\r
+                       else if(nItemType==4){\r
+                               var     sSrc=getRefURL(i);\r
+                               var nProj=getProject(sSrc);\r
+                               if(nProj!=-1){\r
+                                       sSrc=gaRoot[nProj].sToc;\r
+                                       if(sSrc)\r
+                                               return false;\r
+                               }\r
+                       }\r
+                       else if(nItemType==2||nItemType==16||nItemType==8)\r
+                               return false;\r
+               } while(nCIdx<num);\r
+       }\r
+       return true;\r
+}\r
+\r
+function writeBook(nIdx)\r
+{\r
+       var sIcon=getBookImage(nIdx,true);\r
+       var sName=_textToHtml(getItemName(nIdx));\r
+       sIcon=_textToHtml_nonbsp(sIcon);\r
+       \r
+       var nType=getItemType(nIdx);\r
+       var bLocal=(nType==1);\r
+       var bLocalProject=(nType!=4);\r
+       \r
+       var sHTML="<div id=\""+getPBId(nIdx)+"\" class=";\r
+       if(bLocal)\r
+       {\r
+               if (!isBookEmpty(nIdx))\r
+               {\r
+                       sHTML+="parent><p><nobr><a id=\""+getBookId(nIdx)+"\" href=\"javascript:void(0);\" onfocus=\"markBook("+nIdx+");\" onclick=\"";\r
+                       sHTML+="insertBookItems("+nIdx+", "+getItemContentsNum(nIdx);\r
+                       sHTML+=");return false;\" title=\""+sName+"\"><img alt=\"Book\" name=\""+getBId(nIdx)+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">";\r
+                       sHTML+="&nbsp;"+sName+"</a></nobr></p></div>";\r
+                       var sURL=_textToHtml_nonbsp(getItemURL(nIdx));\r
+                       if(sURL!="")\r
+                               addBookItem(getBookId(nIdx),_textToHtml_nonbsp(getTopicTarget(nIdx)),sURL);\r
+                       sHTML+="<div id=\""+getCBId(nIdx)+"\" class=child></div>";\r
+               }\r
+               else\r
+                       sHTML="";\r
+       }\r
+       else\r
+       {\r
+               sHTML+="stub></div>";\r
+               gbNeedFillStub=true;\r
+               setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);\r
+       }\r
+       return sHTML;\r
+}\r
+\r
+function checkFillStub()\r
+{\r
+       if(!gbLData)\r
+       {\r
+               if(gchunkRequestQueue.length()>0)\r
+               {\r
+                       var cInfo=gchunkRequestQueue.deQueue();\r
+                       if(cInfo)\r
+                       {\r
+                               fillStub(cInfo.nIdx,cInfo.bLocal);\r
+                               return;\r
+                       }\r
+               }\r
+       }\r
+       if(gbNeedFillStub)\r
+       {\r
+               gbNeedFillStub=false;\r
+               setTimeout("syncInit()",1);\r
+       }\r
+}\r
+\r
+function fillStub(nIdx,bLocalProject)\r
+{\r
+       if(!gbLData)\r
+       {\r
+               gbLData=true;\r
+               var sObj=getElement(getPBId(nIdx));\r
+               if(sObj!=null)\r
+               {\r
+                       tocExpandHelpSet(nIdx,bLocalProject);\r
+                       gbNeedFillStub=false;\r
+                       setTimeout("syncInit()",1);\r
+               }\r
+               else\r
+                       setTimeout("fillStub("+nIdx+","+bLocalProject+");",100);\r
+       }\r
+       else\r
+               gchunkRequestQueue.inQueue(new chunkInfo(nIdx,bLocalProject));\r
+}\r
+\r
+function getBookId(nIdx){return "B_"+nIdx;}\r
+\r
+function getItemId(nIdx){return "I_"+nIdx;}\r
+\r
+function markBook(nIdx)\r
+{\r
+       var obj=getElement(getItemId(nIdx));\r
+       if(obj==null)\r
+               obj=getElement(getBookId(nIdx));\r
+       if(gbNav6)\r
+       {\r
+               gobj=obj;\r
+               setTimeout("delayMarkObj();",1);\r
+       }\r
+       else\r
+               markObj(obj);\r
+}\r
+\r
+function delayMarkObj()\r
+{\r
+       if(gobj)\r
+       {\r
+               markObj(gobj);\r
+               gobj=null;\r
+       }\r
+}\r
+\r
+function markObj(obj)\r
+{\r
+       if(obj!=null)\r
+       {\r
+               HighLightElement(obj,gsABgColor,"transparent");\r
+               var sPath=calTocPath(obj);\r
+               if(gsCTPath!=sPath)\r
+                       gsCTPath=sPath;\r
+       }\r
+}\r
+\r
+function markItem(nIdx)\r
+{\r
+       var obj=getElement(getItemId(nIdx));\r
+       if(gbNav6)\r
+       {\r
+               gobj=obj;\r
+               setTimeout("delayMarkObj();",1);\r
+       }\r
+       else\r
+               markObj(getElement(getItemId(nIdx)));\r
+}\r
+\r
+function calTocPath(obj)\r
+{\r
+       var sPath=getInnerText2(obj);\r
+       var pObj=getParentNode(obj);\r
+       do\r
+       {\r
+               while(pObj!=null&&!isCBId(pObj.id)) pObj=getParentNode(pObj);\r
+               if(pObj!=null)\r
+               {\r
+                       var nId=getIdByCBId(pObj.id);\r
+                       var sObj=getElement(getPBId(nId));\r
+                       if(sObj!=null)\r
+                       {\r
+                               var objs=getItemsByBook(sObj);\r
+                               for(var i=0;i<objs.length;i++)\r
+                               {\r
+                                       var sText=getInnerText2(objs[i]);\r
+                                       if(sText.length!=0)\r
+                                       {\r
+                                               sPath=sText+gsPathSplit+sPath;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                       }\r
+                       pObj=getParentNode(pObj);\r
+               }\r
+       }while(pObj!=null);\r
+       return sPath;\r
+}\r
+\r
+function writeAnItem(nIdx)\r
+{\r
+       var sTarget=_textToHtml_nonbsp(getTopicTarget(nIdx));\r
+       var sIcon=getItemIcon(nIdx,0);\r
+       if(sIcon=="")\r
+       {\r
+               var nItemType=getItemType(nIdx);\r
+               if(nItemType&2)\r
+                       sIcon=getItemImage(nIdx,false);\r
+               else\r
+                       sIcon=getItemImage(nIdx,true);\r
+       }\r
+       sIcon=_textToHtml_nonbsp(sIcon);\r
+       var sName=_textToHtml(getItemName(nIdx));\r
+       var sHTML="<p><nobr><a id=\""+getItemId(nIdx)+"\" onfocus=\"markItem("+nIdx+");\""\r
+       var sAltString="";\r
+       if(nItemType&2)\r
+               sAltString="Page";\r
+       else\r
+               sAltString="Remote Page";\r
+       if(sTarget!="")\r
+               sHTML+="target=\""+sTarget+"\" ";\r
+       sHTML+="href=\""+_textToHtml_nonbsp(getItemURL(nIdx))+"\" title=\""+sName+"\"><img alt=\""+sAltString+"\" src=\""+sIcon+"\" border=0 align=\"absmiddle\">&nbsp;"+sName+"</a></nobr></p>";\r
+       return sHTML;\r
+}\r
+\r
+function writeBookItems(nIdx,num)\r
+{\r
+       var sHTML="";\r
+       if(num>0){\r
+               var nCIdx=0;\r
+               do{\r
+                       nCIdx++;\r
+                       var i=nIdx+nCIdx;\r
+                       var nItemType=getItemType(i);\r
+                       if(nItemType==1||nItemType==4||nItemType==8){\r
+                               sHTML+=writeBook(i);    \r
+                               nCIdx+=getItemContentsNum(i);           \r
+                       }\r
+                       else if(nItemType==2||nItemType==16){\r
+                               sHTML+=writeAnItem(i);\r
+                       }\r
+               }\r
+               while(nCIdx<num);\r
+       }\r
+       return sHTML;\r
+}\r
+\r
+function tocExpandHelpSet(nIdx,bLocal)\r
+{\r
+       checkBookItem(nIdx);\r
+       removeLoadingDiv();\r
+       if(!isHSLoad(nIdx))\r
+       {\r
+               setHSLoad(nIdx);\r
+               var sSrc="";\r
+               if(bLocal){\r
+                       var oChunk=getChunk(nIdx);\r
+                       if(oChunk)\r
+                       {\r
+                               goChunk=addTocChunk(oChunk.sPPath,oChunk.sDPath);\r
+                               sSrc=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;\r
+                       }\r
+               }\r
+               else{\r
+                       sSrc=getRefURL(nIdx);\r
+                       var nProj=getProject(sSrc);\r
+                       if(nProj!=-1)\r
+                       {\r
+                               sSrc=gaRoot[nProj].sToc;\r
+                               if(sSrc)\r
+                                       goChunk=addTocChunk(gaProj[nProj].sPPath,gaProj[nProj].sDPath);\r
+                               else\r
+                                       goChunk=null;\r
+                       }\r
+                       else\r
+                               goChunk=null;\r
+               }\r
+               if(goChunk)\r
+               {\r
+                       PrepareLoading(nIdx);\r
+                       gbToc=false;\r
+                       loadData2(goChunk.sPPath+goChunk.sDPath+sSrc);\r
+               }\r
+               else\r
+               {\r
+                       gbLData=false;\r
+                       checkFillStub();\r
+               }\r
+       }\r
+}\r
+\r
+function getProject(sSrc)\r
+{\r
+       for(var i=0;i<gaProj.length;i++)\r
+               if(isSamePath(getPath(sSrc),gaProj[i].sPPath))\r
+                       return i;\r
+       return -1;\r
+}\r
+\r
+function getPath(sPath)\r
+{\r
+       if(sPath!="")\r
+       {\r
+               sPath=_replaceSlash(sPath);\r
+               var nPosFile=sPath.lastIndexOf("/");\r
+               sPath=sPath.substring(0,nPosFile+1);\r
+       }\r
+       return sPath;\r
+}\r
+\r
+function isSamePath(sPath1,sPath2)\r
+{\r
+       return (sPath1.toLowerCase()==sPath2.toLowerCase());\r
+}\r
+\r
+function PrepareLoading(nIdx)\r
+{\r
+       gnInsIdx=nIdx;\r
+       if(!gsTP)\r
+       {\r
+               var oObj=getElement(getPBId(gnInsIdx));\r
+               if(oObj)\r
+                       oObj.insertAdjacentHTML("afterEnd",writeLoadingDiv(nIdx));\r
+       }\r
+}\r
+\r
+function writeLoadingDiv(nIdx)\r
+{\r
+       return"<div id=\""+gsLoadingDivID+"\" class=parent onclick=\"removeLoadingDiv();\" style=\"padding-left:4px;background-color:ivory;border-width:1;border-style:solid;border-color:black;width:150px;\">"+gsLoadingMsg+"</div>";\r
+}\r
+\r
+function getItemName(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+               return oChunk.aTocs[nIdx-oChunk.nMI].sItemName;\r
+       else\r
+               return null;\r
+}\r
+\r
+function getItemContentsNum(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+               return oChunk.aTocs[nIdx-oChunk.nMI].nContents;\r
+       else\r
+               return null;\r
+}\r
+\r
+function getItemType(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+               return oChunk.aTocs[nIdx-oChunk.nMI].nType;\r
+       else\r
+               return 0;\r
+}\r
+\r
+function getItemURL(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+       {\r
+               var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sItemURL;\r
+               if(!(sPath==null||sPath==""))\r
+               {\r
+                       return _getFullPath(oChunk.sPPath,sPath);\r
+               }\r
+       }\r
+       return "";\r
+}\r
+\r
+function getRefURL(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+       {\r
+               var sPath=oChunk.aTocs[nIdx-oChunk.nMI].sRefURL;\r
+               if(!(sPath==null||sPath==""))\r
+               {\r
+                       return _getFullPath(oChunk.sPPath,sPath)\r
+               }\r
+       }\r
+       return "";\r
+}\r
+\r
+function getTopicTarget(nIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+       {\r
+               if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sTarget)!="undefined")\r
+                       return oChunk.aTocs[nIdx-oChunk.nMI].sTarget;\r
+       }\r
+       return "";\r
+}\r
+\r
+function getItemIcon(nIdx,nIconIdx)\r
+{\r
+       var oChunk=getChunk(nIdx);\r
+       if(oChunk)\r
+       {\r
+               if(typeof(oChunk.aTocs[nIdx-oChunk.nMI].sIconRef)!="undefined")\r
+               {\r
+                       var sIconRef=oChunk.aTocs[nIdx-oChunk.nMI].sIconRef;\r
+                       var nIndex=sIconRef.indexOf(";");\r
+                       while(nIconIdx-->0&&nIndex!=-1)\r
+                       {\r
+                               sIconRef=sIconRef.substring(nIndex+1);\r
+                               nIndex=sIconRef.indexOf(";");\r
+                       }\r
+                       if(nIconIdx<0)\r
+                       {\r
+                               if(nIndex!=-1)\r
+                                       sIconRef=sIconRef.substring(0,nIndex);\r
+                               return _getFullPath(oChunk.sPPath,sIconRef)\r
+                       }\r
+               }\r
+       }\r
+       return "";\r
+}\r
+\r
+function TocWriteClassStyle()\r
+{\r
+       var sStyle="<STYLE TYPE='text/css'>\n";\r
+       if(gsBgImage)\r
+               sStyle+="body {border-top:"+gsBgColor+" 1px solid;}\n";\r
+       else\r
+               sStyle+="body {border-top:black 1px solid;}\n";\r
+       sStyle+="P {"+getFontStyle(goFont)+"margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
+       sStyle+="DIV {margin-top:"+gsMargin+";margin-bottom:"+gsMargin+";}\n";\r
+       sStyle+=".parent {margin-left:0pt;}\n";\r
+       sStyle+=".stub {margin-left:0pt;display:none}\n";\r
+       sStyle+=".child {display:none;margin-left:"+gsIndent+";}\n";\r
+       sStyle+="A:link {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:visited {"+getFontStyle(goFont)+"}\n";\r
+       sStyle+="A:active {background-color:"+gsABgColor+";}\n";\r
+       sStyle +="A:hover {"+getFontStyle(goHFont)+"}\n";\r
+       sStyle+="</STYLE>";\r
+       document.write(sStyle);\r
+}\r
+\r
+function TocWriteFixedWidth(bBegin,nWidth)\r
+{\r
+       if((gbIE4)&&(gbMac)&&(!gbIE5)){\r
+               if(bBegin)\r
+                       document.write("<table width="+nWidth+" border=0><tr><td>");\r
+               else\r
+                       document.write("</td></tr></table>");\r
+       }\r
+}\r
+\r
+function TocInitPage()\r
+{\r
+       var tempColl=getItemsByBook(document.body);\r
+       if(tempColl.length>0)\r
+               tempColl[0].focus();\r
+}\r
+\r
+function getItemsFromObj(obj)\r
+{\r
+       var aAnchor=new Array();\r
+       var tempColl=getChildrenByTag(obj,"P");\r
+       if(tempColl&&tempColl.length>0)\r
+       {\r
+               var anobr=new Array();\r
+               for(var i=0;i<tempColl.length;i++)\r
+               {\r
+                       var tempNobr=getChildrenByTag(tempColl[i],"NOBR");\r
+                       if(tempNobr&&tempNobr.length>0)\r
+                               for(var j=0;j<tempNobr.length;j++)\r
+                                       anobr[anobr.length]=tempNobr[j];\r
+               }\r
+               for(var s=0;s<anobr.length;s++)\r
+               {\r
+                       var tempAnchor=getChildrenByTag(anobr[s],"A");\r
+                       if(tempAnchor&&tempAnchor.length>0)\r
+                               for(var u=0;u<tempAnchor.length;u++)\r
+                                       aAnchor[aAnchor.length]=tempAnchor[u];\r
+               }\r
+       }\r
+       return aAnchor;\r
+}\r
+\r
+function getItemsByBook(obj)\r
+{\r
+       var aAnchor=new Array();\r
+       var aTAnchor=getItemsFromObj(obj);\r
+       for(var i=0;i<aTAnchor.length;i++)\r
+               aAnchor[aAnchor.length]=aTAnchor[i];\r
+       var tempBook=getChildrenByTag(obj,"DIV");\r
+       if(tempBook&&tempBook.length>0)\r
+               for(var j=0;j<tempBook.length;j++)\r
+               {\r
+                       var aTAnchorDiv=getItemsFromObj(tempBook[j]);\r
+                       for(var s=0;s<aTAnchorDiv.length;s++)\r
+                               aAnchor[aAnchor.length]=aTAnchorDiv[s];\r
+               }\r
+       return aAnchor;\r
+}\r
+\r
+function ExpandIt(nId)\r
+{\r
+       if(!gsTP)\r
+               ExpandIt2(nId,false);\r
+}\r
+\r
+function ExpandIt2(nId,bForceOpen)\r
+{\r
+       var oC=TocExpand(nId,true,bForceOpen);\r
+       var nNewScroll=document.body.scrollTop;\r
+       if(oC.style.display=="block"){\r
+               var nTop=oC.offsetTop;\r
+               var nBottom=nTop+oC.offsetHeight;\r
+               if(document.body.scrollTop+document.body.clientHeight<nBottom){\r
+                       nNewScroll=nBottom-document.body.clientHeight;\r
+               }\r
+               if(nBottom-nTop>document.body.clientHeight){\r
+                       nNewScroll=nTop-20;\r
+               }\r
+       }\r
+       document.body.scrollTop=nNewScroll;\r
+}\r
+\r
+function TocExpand(nId,bChangeImg,bForceOpen)\r
+{\r
+       var oDiv=getElement(getCBId(nId));\r
+       if(oDiv==null) return null;\r
+\r
+       var whichIm=document.images[getBId(nId)];\r
+       if((oDiv.style.display!="block")||bForceOpen){\r
+               oDiv.style.display="block";\r
+               if(bChangeImg){\r
+                       var sPath=getPath(whichIm.src);\r
+                       sPath=_getFullPath(sPath,getBookImage(nId,false));\r
+                       whichIm.src=sPath;              \r
+               }\r
+       }else{\r
+               oDiv.style.display="none";\r
+               if(bChangeImg){\r
+                       var sPath=getPath(whichIm.src);\r
+                       sPath=_getFullPath(sPath,getBookImage(nId,true));\r
+                       whichIm.src=sPath;\r
+               }\r
+               if(gbMac&&gbIE5){\r
+                       this.parent.document.getElementById("tocIFrame").style.width="101%";\r
+                       this.parent.document.getElementById("tocIFrame").style.width="100%";\r
+               }\r
+       }\r
+       return oDiv;\r
+}\r
+\r
+function getChunkId(n)\r
+{\r
+       var nCan=-1;\r
+       for(var i=0;i<gaTocs.length;i++)\r
+               if(gaTocs[i].nMI<=n&&gaTocs[i].nMI!=-1)\r
+               {\r
+                       if(nCan==-1)\r
+                               nCan=i;\r
+                       else\r
+                               if(gaTocs[i].nMI>=gaTocs[nCan].nMI)\r
+                                       nCan=i;\r
+               }\r
+       if(nCan!=-1)\r
+               return nCan;\r
+       else\r
+               return -1;\r
+}\r
+\r
+function getChunk(n)\r
+{\r
+       if(gnCC!=-1&&gaTocs[gnCC].nMI<=n&&(gnCC==gaTocs.length-1||\r
+               gaTocs[gnCC+1].nMI>n))\r
+       {       \r
+               return gaTocs[gnCC];\r
+       }\r
+       else{\r
+               gnCC=getChunkId(n);\r
+               if(gnCC!=-1)\r
+                       return gaTocs[gnCC];\r
+               else\r
+                       return null;\r
+       }\r
+}\r
+\r
+function getBookImage(nIdx,bClosed)\r
+{\r
+       var nIdx=bClosed?0:1;\r
+       var sIcon=getItemIcon(nIdx,nIdx);\r
+       if(sIcon=="")\r
+               if(bClosed)\r
+                       sIcon=giBookClose;\r
+               else\r
+                       sIcon=giBookOpen;\r
+       return _getFullPath(gaProj[0].sPPath,sIcon);\r
+}\r
+\r
+function getItemImage(nIdx,bRemote)\r
+{\r
+       var sIcon=getItemIcon(nIdx,0);\r
+       if(sIcon=="")\r
+               if(bRemote)\r
+                       sIcon=giURLItem;\r
+               else\r
+                       sIcon=giBookItem;\r
+       return _getFullPath(gaProj[0].sPPath,sIcon);\r
+}\r
+\r
+function getInnerText2(obj)\r
+{\r
+       var sText=getInnerText(obj);\r
+       if(sText.length>0&&!gbOpera7)\r
+               sText=sText.substring(1);\r
+       return sText;\r
+}\r
+\r
+function expandToc(oObj,sRest,aIdList)\r
+{\r
+       var len=aIdList.length;\r
+       var nPos=sRest.indexOf(gsPathSplit);\r
+       if(nPos!=-1)\r
+       {\r
+               sPart=sRest.substring(0,nPos);\r
+               sRest=sRest.substring(nPos+1);\r
+       }\r
+       else\r
+       {\r
+               sPart=sRest;\r
+               var aTagAs=getItemsByBook(oObj);\r
+               for(var s=0;s<aTagAs.length;s++)\r
+               {\r
+                       var sText=getInnerText2(aTagAs[s]);\r
+                       if(sText==sPart)\r
+                       {\r
+                               aIdList[len]=aTagAs[s];\r
+                               return 1;\r
+                       }\r
+               }\r
+               return 0;\r
+       }\r
+               \r
+       var aChildren=getChildrenByTag(oObj,"DIV");\r
+       for(var i=0;i<aChildren.length;i++)\r
+       {\r
+               var sPId=aChildren[i].id;\r
+               if(!isPBId(sPId))\r
+                       continue;\r
+               var sText=getInnerText2(aChildren[i]);\r
+               if(sText!=sPart)\r
+                       continue;\r
+               aIdList[len]=getIdByPBId(sPId);\r
+               var sCId=getCBId(aIdList[len]);\r
+               var oCObj=getElement(sCId);\r
+               if(oCObj)\r
+               {\r
+                       if(oCObj.innerHTML=="")\r
+                       {\r
+                               var obj=getItemsByBook(aChildren[i]);\r
+                               if(obj.length>0)\r
+                               {\r
+                                       if(gbNav6)\r
+                                       {\r
+                                               var sCommand=obj[0].getAttribute("onClick");\r
+                                               var nCommand=sCommand.indexOf(";");\r
+                                               sCommand=sCommand.substring(0,nCommand);\r
+                                               setTimeout(sCommand,1);\r
+                                       }\r
+                                       else\r
+                                               obj[0].click();\r
+                               }\r
+                               return -1;\r
+                       }\r
+                       var nRet=expandToc(oCObj,sRest,aIdList);\r
+                       if(nRet)\r
+                               return nRet;\r
+               }\r
+       }\r
+       aIdList.length=len;\r
+       return 0;\r
+}\r
+\r
+function getIdByPBId(sPId)\r
+{\r
+       return parseInt(sPId.substring(2,sPId.length-1));\r
+}\r
+\r
+function getIdByCBId(sCId)\r
+{\r
+       return parseInt(sCId.substring(2,sCId.length-1));\r
+}\r
+\r
+function isPBId(sId)\r
+{\r
+       return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("P")==sId.length-1);\r
+}\r
+\r
+function isCBId(sId)\r
+{\r
+       return (sId&&sId.indexOf("B_")==0&&sId.lastIndexOf("C")==sId.length-1);\r
+}\r
+\r
+function getBId(nIdx)\r
+{\r
+       return "B_"+nIdx;\r
+}\r
+\r
+function getPBId(nIdx)\r
+{\r
+       return getBId(nIdx)+"P";\r
+}\r
+\r
+function getCBId(nIdx)\r
+{\r
+       return getBId(nIdx)+"C";\r
+}\r
+\r
+function getClosestTocPath(aPaths)\r
+{\r
+       var nMaxSimilarity=0;\r
+       var nThatIndex=-1;\r
+       var sPath=null;\r
+       if(aPaths.length==0) return sPath;\r
+       for(var i=0;i<aPaths.length;i++)\r
+       {\r
+               var nSimilarity=comparePath(gsCTPath,aPaths[i]);\r
+               if(nSimilarity>nMaxSimilarity)\r
+               {\r
+                       nMaxSimilarity=nSimilarity;\r
+                       nThatIndex=i;\r
+               }\r
+       }\r
+       if(nThatIndex!=-1)\r
+               sPath=aPaths[nThatIndex];\r
+       else\r
+               sPath=aPaths[0];\r
+       return sPath;\r
+}\r
+\r
+function comparePath(sPath1,sPath2)\r
+{\r
+       var nMaxSimilarity=0;\r
+       var nStartPos1=0;\r
+       var nPos1=-1;\r
+       var nStartPos2=0;\r
+       var nPos2=-1;\r
+       do{\r
+               var sCheck1=null;\r
+               var sCheck2=null;\r
+               nPos1=sPath1.indexOf(gsPathSplit,nStartPos1);\r
+               if(nPos1!=-1)\r
+               {\r
+                       sCheck1=sPath1.substring(nStartPos1,nPos1);\r
+                       nStartPos1=nPos1+1;\r
+               }\r
+               else\r
+               {\r
+                       sCheck1=sPath1.substring(nStartPos1);\r
+                       nStartPos1=-1;\r
+               }\r
+               nPos2=sPath2.indexOf(gsPathSplit,nStartPos2);\r
+               if(nPos1!=-1)\r
+               {\r
+                       sCheck2=sPath2.substring(nStartPos2,nPos2);\r
+                       nStartPos2=nPos2+1;\r
+               }\r
+               else\r
+               {\r
+                       sCheck2=sPath2.substring(nStartPos2);\r
+                       nStartPos2=-1;\r
+               }\r
+               if(sCheck1==sCheck2)\r
+                       nMaxSimilarity++;\r
+               else\r
+                       break;\r
+       }while(nStartPos1!=-1&&nStartPos2!=-1);\r
+       return nMaxSimilarity;\r
+}\r
+\r
+function getTocPaths(oTopicParam)\r
+{\r
+       var aRelTocPaths=oTopicParam.aPaths;\r
+       var aPaths=new Array();\r
+       for(var i=0;i<gaProj.length;i++)\r
+               if(isSamePath(gaProj[i].sPPath,oTopicParam.sPPath))\r
+               {\r
+                       for(var j=0;j<aRelTocPaths.length;j++)\r
+                               for (var k=0;k<gaRoot[i].aRPath.length;k++)\r
+                               {\r
+                                       var sPath=gaRoot[i].aRPath[k]+aRelTocPaths[j];\r
+                                       aPaths[aPaths.length]=sPath.substring(1);\r
+                               }\r
+                       break;\r
+               }\r
+       return aPaths;\r
+}\r
+\r
+function syncInit()\r
+{\r
+       if(gsTP&&!gbNeedFillStub)\r
+       {\r
+               gInSync=true;\r
+               var obj=document.body;\r
+               var aIdList=new Array();\r
+               var nRet=expandToc(obj,gsTP,aIdList);\r
+               if(nRet!=-1)\r
+               {\r
+                       if(nRet==1)\r
+                       {\r
+                               if(aIdList.length)\r
+                                       for(var i=0;i<aIdList.length-1;i++)\r
+                                               ExpandIt2(aIdList[i],true);\r
+                               gsCTPath=gsTP;\r
+                               if(!gbIE55)\r
+                                       aIdList[aIdList.length-1].focus();\r
+                               else\r
+                                       HighLightElement(aIdList[aIdList.length-1],gsABgColor,"transparent");\r
+                       }\r
+                       var aPaths=gaBTPs;\r
+                       gsTP=null;\r
+                       gaBTPs=null;\r
+                       if(aPaths!=null)\r
+                       {\r
+                               var sPath=getClosestTocPath(aPaths);\r
+                               if(sPath!=null)\r
+                               {       \r
+                                       gsTP=sPath;             \r
+                                       setTimeout("syncInit()",1);\r
+                               }\r
+                       }\r
+               }\r
+               gInSync=false;\r
+       }\r
+}\r
+\r
+function loadToc()\r
+{\r
+       if(!gbLoadToc)\r
+       {\r
+               var oResMsg=new whMessage(WH_MSG_GETPROJINFO,this,1,null);\r
+               if(SendMessage(oResMsg)&&oResMsg.oParam)\r
+               {\r
+                       gbLoadToc=true;\r
+                       var oProj=oResMsg.oParam;\r
+                       gaProj=oProj.aProj;\r
+                       gbXML=oProj.bXML;\r
+                       load1B1();\r
+               }\r
+       }\r
+}\r
+\r
+function load1B1()\r
+{\r
+       if(gnLT+1<gaProj.length)\r
+               for(var i=gnLT+1;i<gaProj.length;i++)\r
+                       if(gaProj[i].sToc)\r
+                       {\r
+                               gbToc=true;\r
+                               gnLT=i;\r
+                               setTimeout("loadTocInfo()",1);\r
+                               return true;\r
+                       }\r
+       return false;\r
+}\r
+\r
+function loadTocInfo()\r
+{\r
+       loadData2(gaProj[gnLT].sPPath+gaProj[gnLT].sDPath+gaProj[gnLT].sToc);\r
+}\r
+\r
+function loadData2(sFile)\r
+{\r
+       if(gbXML)\r
+               loadDataXML(sFile);\r
+       else\r
+               loadData(sFile);\r
+}\r
+\r
+function projReady(sRoot,aProj)\r
+{\r
+       if(gaRoot.length<=gnLT||!gaRoot[gnLT])\r
+               gaRoot[gnLT]=new Object();\r
+       gaRoot[gnLT].sToc=sRoot;\r
+       \r
+       if(gnLT==0)\r
+       {\r
+               gaRoot[gnLT].aRPath=new Array();\r
+               gaRoot[gnLT].aRPath[0]=gsPathSplit;\r
+       }\r
+\r
+       updatePTPath(gnLT,aProj);\r
+\r
+       if(!((gnLT+1<gaProj.length)&&load1B1()))\r
+       {\r
+               gbReady=true;\r
+               if(gbIE4)\r
+                       setTimeout("loadImages();",1);\r
+               else\r
+                       setTimeout("loadTData();",1);\r
+       }\r
+}\r
+\r
+function loadTData()\r
+{\r
+       if(gaProj[0].sToc!="")\r
+       {\r
+               gbLData=true;\r
+               goChunk=addTocChunk(gaProj[0].sPPath,gaProj[0].sDPath);\r
+               gbToc=false;\r
+               loadData2(gaProj[0].sPPath+gaProj[0].sDPath+gaRoot[0].sToc);\r
+       }\r
+}\r
+\r
+function updatePTPath(n,aProj)\r
+{\r
+       if(aProj)\r
+               for(var i=0;i<aProj.length;i++)\r
+               {\r
+                       var sFullPath=_getFullPath(gaProj[n].sPPath,aProj[i].sPPath);\r
+                       for(var j=0;j<gaProj.length;j++)\r
+                               if(isSamePath(sFullPath,gaProj[j].sPPath))\r
+                               {\r
+                                       if(gaRoot.length<=j||!gaRoot[j])\r
+                                               gaRoot[j]=new Object();\r
+                                       if(!gaRoot[j].aRPath)\r
+                                               gaRoot[j].aRPath=new Array();\r
+\r
+                                       if(gaRoot[n].aRPath)\r
+                                               for(var k=0;k<gaRoot[n].aRPath.length;k++)\r
+                                               {\r
+                                                       var bDup=false;\r
+                                                       var sTFPath=gaRoot[n].aRPath[k]+aProj[i].sRPath;\r
+                                                       for(var l=0;l<gaRoot[j].aRPath.length;l++)\r
+                                                               if(gaRoot[j].aRPath[l]==sTFPath)\r
+                                                               {\r
+                                                                       bDup=true;\r
+                                                                       break;\r
+                                                               }\r
+                                                       if(!bDup)\r
+                                                               gaRoot[j].aRPath[gaRoot[j].aRPath.length]=sTFPath;\r
+                                               }\r
+                                       else\r
+                                               gaRoot[j].aRPath[gaRoot[j].aRPath.length]=aProj[i].sRPath;\r
+                                       break;\r
+                               }\r
+               }\r
+}\r
+\r
+function onLoadXMLError()\r
+{\r
+       if(gbToc)\r
+       {\r
+               var sRoot="";\r
+               var aRProj=new Array();\r
+               projReady(sRoot,aRProj);\r
+       }\r
+       else\r
+       {\r
+               var aToc=new Array();\r
+               putData(aToc)\r
+       }\r
+}\r
+\r
+function putDataXML(xmlDoc,sDocPath)\r
+{\r
+       if(gbToc)\r
+       {\r
+               var tocNode=xmlDoc.getElementsByTagName("toc")[0];\r
+               if(tocNode)\r
+               {\r
+                       var sRoot=tocNode.getAttribute("root");\r
+                       var rmtProject=tocNode.getElementsByTagName("project");\r
+                       var aRProj=new Array();\r
+                       if(rmtProject.length>0)\r
+                       {\r
+                               for(var i=0;i<rmtProject.length;i++)\r
+                               {\r
+                                       aRProj[i]=new Object();\r
+                                       var sURL=rmtProject[i].getAttribute("url");\r
+                                       if(sURL)\r
+                                       {\r
+                                               if(sURL.lastIndexOf("/")!=sURL.length-1)\r
+                                                       sURL+="/";                                              \r
+                                       }\r
+                                       aRProj[i].sPPath=sURL;\r
+                                       aRProj[i].sRPath = "";\r
+                                       var oSubPath = rmtProject[i].getElementsByTagName("subpath")[0];\r
+                                       if (oSubPath)\r
+                                       {\r
+                                               while (oSubPath)\r
+                                               {\r
+                                                       aRProj[i].sRPath += oSubPath.getAttribute("name") + "\n";\r
+                                                       oSubPath = oSubPath.getElementsByTagName("subpath")[0];\r
+                                               }\r
+                                       }\r
+                                       else\r
+                                               aRProj[i].sRPath=rmtProject[i].getAttribute("path");\r
+                               }\r
+                       }\r
+                       projReady(sRoot,aRProj);\r
+               }\r
+       }\r
+       else\r
+       {\r
+               var chunkNode=xmlDoc.getElementsByTagName("tocdata")[0];\r
+               if(chunkNode)\r
+               {\r
+                       var aToc=new Array();\r
+                       processBook(chunkNode,aToc);\r
+                       putData(aToc);\r
+               }\r
+       }\r
+}\r
+\r
+function processBook(node,aToc)\r
+{\r
+       var i=0;\r
+       var entry=null;\r
+       var prevEntry=null;\r
+       var oChild=node.firstChild;\r
+       do{\r
+               if(oChild)\r
+               {\r
+                       if(oChild.nodeName.indexOf("#")!=0)\r
+                       {\r
+                               var sName=oChild.getAttribute("name");\r
+                               var sURL=oChild.getAttribute("url");\r
+                               var sRef=oChild.getAttribute("ref");\r
+                               var sTarget=oChild.getAttribute("target");\r
+                               var sIcons=oChild.getAttribute("images");\r
+                               var item=new Object();\r
+                               item.sItemName=sName;\r
+                               if(sTarget)\r
+                                       item.sTarget=sTarget;\r
+                               if(sIcons)\r
+                                       item.sIconRef=sIcons;\r
+                               if(sURL==null) sURL="";\r
+\r
+                               item.sItemURL=sURL;\r
+                               \r
+                               if(oChild.nodeName=="book")\r
+                               {\r
+                                       item.nType=1;\r
+                                       aToc[aToc.length]=item;\r
+                                       var nCurrPos=aToc.length;\r
+                                       processBook(oChild,aToc);\r
+                                       item.nContents=aToc.length-nCurrPos;\r
+                               }\r
+                               else if(oChild.nodeName=="item")\r
+                               {\r
+                                       item.nType=2;\r
+                                       item.nContents=0;\r
+                                       aToc[aToc.length]=item;\r
+                               }\r
+                               else if(oChild.nodeName=="remoteitem")\r
+                               {\r
+                                       item.nType=16;\r
+                                       item.nContents=0;\r
+                                       aToc[aToc.length]=item;\r
+                               }\r
+                               else if(oChild.nodeName=="project")\r
+                               {\r
+                                       if(sRef)\r
+                                       {\r
+                                               if(sRef.lastIndexOf("/")!=sRef.length-1)\r
+                                                       sRef+="/";                                              \r
+                                       }\r
+                                       item.nType=4;\r
+                                       item.sRefURL=sRef;\r
+                                       item.nContents=0;\r
+                                       aToc[aToc.length]=item;\r
+                               }\r
+                               else if(oChild.nodeName=="chunk")\r
+                               {\r
+                                       item.nType=8;\r
+                                       item.sRefURL=sRef;\r
+                                       item.nContents=0;\r
+                                       aToc[aToc.length]=item;\r
+                               }\r
+                       }\r
+               }\r
+               else\r
+                       break;\r
+               oChild=oChild.nextSibling;\r
+       }while(true);\r
+}\r
+\r
+function putData(aTocs)\r
+{\r
+       gaTocsNs61Fix=aTocs;\r
+       setTimeout("realPutData();",1);\r
+}\r
+\r
+function realPutData()\r
+{\r
+       removeLoadingDiv();\r
+       var aTocs=gaTocsNs61Fix;\r
+       if(!aTocs) return;\r
+       if(goChunk)\r
+       {\r
+               var n=gnMinIdx;\r
+               goChunk.nMI=gnMinIdx;\r
+               goChunk.aTocs=aTocs;\r
+               gnMinIdx+=aTocs.length;\r
+               if(gnInsIdx!=-1)\r
+               {\r
+                       var oObj=getElement(getPBId(gnInsIdx));\r
+                       if(oObj)\r
+                       {\r
+                               oObj.insertAdjacentHTML("afterEnd",writeBookItems(n-1,aTocs.length));\r
+                               setTimeout("syncInit()",1);\r
+                       }\r
+               }\r
+               else{\r
+                       document.body.insertAdjacentHTML("beforeEnd",writeBookItems(n-1,aTocs.length));\r
+                       var oParam=new Object();\r
+                       oParam.oTocInfo=null;\r
+                       var oMsg=new whMessage(WH_MSG_GETTOCPATHS,this,1,oParam);\r
+                       if(SendMessage(oMsg))\r
+                       {\r
+                               if(oMsg.oParam.oTocInfo)\r
+                                       syncWithPaths(oMsg.oParam.oTocInfo);\r
+                       }\r
+               }       \r
+       }\r
+       gbLData=false;\r
+       checkFillStub();\r
+}\r
+\r
+function syncWithPaths(oTopicParam)\r
+{\r
+       var aPaths=getTocPaths(oTopicParam);\r
+       if(gsTP)\r
+               gaBTPs=aPaths;\r
+       else{\r
+               var sPath=getClosestTocPath(aPaths);\r
+               if(sPath!=null)\r
+               {\r
+                       gsTP=sPath;\r
+                       setTimeout("syncInit()",1);\r
+               }\r
+       }\r
+}\r
+\r
+function window_OnLoad()\r
+{\r
+       if(gsBgImage&&gsBgImage.length>0)\r
+       {\r
+               document.body.background=gsBgImage;\r
+       }\r
+       if(gsBgColor&&gsBgColor.length>0)\r
+       {\r
+               document.body.bgColor=gsBgColor;\r
+       }\r
+       loadToc();\r
+       var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null)\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function loadImages()\r
+{\r
+       if(giBookClose)\r
+       {\r
+               gaImgs[gnImages]=giBookClose;\r
+               gnImages++;\r
+       }               \r
+       if(giBookOpen)\r
+       {\r
+               gaImgs[gnImages]=giBookOpen;\r
+               gnImages++;\r
+       }               \r
+       if(giBookItem)\r
+       {\r
+               gaImgs[gnImages]=giBookItem;\r
+               gnImages++;\r
+       }               \r
+       if(giURLItem)\r
+       {\r
+               gaImgs[gnImages]=giURLItem;\r
+               gnImages++;\r
+       }               \r
+       if(giNewBookClose)\r
+       {\r
+               gaImgs[gnImages]=giNewBookClose;\r
+               gnImages++;\r
+       }               \r
+       if(giNewBookOpen)\r
+       {\r
+               gaImgs[gnImages]=giNewBookOpen;\r
+               gnImages++;\r
+       }               \r
+       if(giNewBookItem)\r
+       {\r
+               gaImgs[gnImages]=giNewBookItem;\r
+               gnImages++;\r
+       }               \r
+       if(giNewURLItem)\r
+       {\r
+               gaImgs[gnImages]=giNewURLItem;\r
+               gnImages++;\r
+       }\r
+       if(gnImages>0)\r
+       {\r
+               setTimeout("loadDataAfter();",1000);\r
+               loadImage(gaImgs[0]);\r
+       }\r
+       else\r
+               loadDataAfter();\r
+}\r
+\r
+function loadImage(sURL)\r
+{\r
+       var oImg=new Image();\r
+       oImg.onload=checkImageLoading;\r
+       oImg.onerror=errorImageLoading;\r
+       oImg.src=_getFullPath(gaProj[0].sPPath,sURL);\r
+}\r
+\r
+function loadDataAfter()\r
+{\r
+       if(!gbLoadData)\r
+       {\r
+               gbLoadData=true;\r
+               loadTData();\r
+       }\r
+}\r
+\r
+function errorImageLoading()\r
+{\r
+       gnLoadedImages++;\r
+       if(gnImages==gnLoadedImages)\r
+               loadDataAfter();\r
+       else\r
+               loadImage(gaImgs[gnLoadedImages]);      \r
+}\r
+\r
+function checkImageLoading()\r
+{\r
+       gnLoadedImages++;\r
+       if(gnImages==gnLoadedImages)\r
+               loadDataAfter();\r
+       else\r
+               loadImage(gaImgs[gnLoadedImages]);      \r
+}\r
+\r
+function window_unload()\r
+{\r
+       UnRegisterListener2(this,WH_MSG_PROJECTREADY);\r
+       UnRegisterListener2(this,WH_MSG_SYNCTOC);\r
+       UnRegisterListener2(this,WH_MSG_SHOWTOC);\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       if(oMsg)\r
+       {\r
+               var nMsgId=oMsg.nMessageId;\r
+               if(nMsgId==WH_MSG_PROJECTREADY)\r
+               {\r
+                       loadToc();\r
+               }\r
+               else if(nMsgId==WH_MSG_SYNCTOC)\r
+               {\r
+                       if(gbReady)\r
+                       {\r
+                               syncWithPaths(oMsg.oParam);\r
+                       }\r
+               }\r
+               else if(nMsgId==WH_MSG_SHOWTOC)\r
+               {\r
+                       if(!gbNav6)\r
+                               document.body.focus();\r
+               }\r
+       }\r
+       return true;\r
+}\r
+\r
+if(window.gbWhUtil&&window.gbWhVer&&window.gbWhMsg&&window.gbWhProxy)\r
+{\r
+       RegisterListener2(this,WH_MSG_PROJECTREADY);\r
+       RegisterListener2(this,WH_MSG_SYNCTOC);\r
+       RegisterListener2(this,WH_MSG_SHOWTOC);\r
+       goFont=new whFont("Verdana","8pt","#000000","normal","normal","none");\r
+       goHFont=new whFont("Verdana","8pt","#007f00","normal","normal","underline");\r
+\r
+       window.onload=window_OnLoad;\r
+       window.onbeforeunload=window_BUnload;\r
+       window.onunload=window_unload;\r
+       gbWhTHost=true;\r
+}\r
+else\r
+       document.location.reload();
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whtopic.js b/doc/salome/gui/GAUSS/whtopic.js
new file mode 100644 (file)
index 0000000..8a53281
--- /dev/null
@@ -0,0 +1,724 @@
+//     WebHelp 5.10.005\r
+var gsPPath="";\r
+var gaPaths=new Array();\r
+var gaAvenues=new Array();\r
+\r
+var goFrame=null;\r
+var gsStartPage="";\r
+var gsRelCurPagePath="";\r
+var gsSearchFormHref="";\r
+var gnTopicOnly=-1;\r
+var gnOutmostTopic=-1;\r
+\r
+var BTN_TEXT=1;\r
+var BTN_IMG=2;\r
+\r
+var goSync=null;\r
+\r
+var goShow=null;\r
+var goHide=null;\r
+\r
+var goPrev=null;\r
+var goNext=null;\r
+var gnForm=0;\r
+var goShowNav=null;\r
+var goHideNav=null;\r
+\r
+var goWebSearch=null;\r
+\r
+var gsBtnStyle="";\r
+var gaButtons=new Array();\r
+var gaTypes=new Array();\r
+var whtopic_foldUnload=null;\r
+var gbWhTopic=false;\r
+var gbCheckSync=false;\r
+var gbSyncEnabled=false;\r
+\r
+function setButtonFont(sType,sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration)\r
+{\r
+       var vFont=new whFont(sFontName,sFontSize,sFontColor,sFontStyle,sFontWeight,sFontDecoration);\r
+       gsBtnStyle+=".whtbtn"+sType+"{"+getFontStyle(vFont)+"}";\r
+}\r
+\r
+function writeBtnStyle()\r
+{\r
+       if(gaButtons.length>0)\r
+       {\r
+               if(gsBtnStyle.length>0)\r
+               {\r
+                       var sStyle="<style type='text/css'>";\r
+                       sStyle+=gsBtnStyle+"</style>";\r
+                       document.write(sStyle);\r
+               }\r
+       }\r
+}\r
+\r
+function button(sText,nWidth,nHeight)\r
+{\r
+       this.sText=sText;\r
+       this.nWidth=nWidth;\r
+       this.nHeight=nHeight;\r
+       \r
+       this.aImgs=new Array();\r
+       var i=0;\r
+       while(button.arguments.length>i+3)\r
+       {\r
+               this.aImgs[i]=button.arguments[3+i];\r
+               i++;\r
+       }\r
+}\r
+\r
+//project info\r
+function setRelStartPage(sPath)\r
+{\r
+       if(gsPPath.length==0)\r
+       {\r
+               gsPPath=_getFullPath(_getPath(document.location.href),_getPath(sPath));\r
+               gsStartPage=_getFullPath(_getPath(document.location.href),sPath);\r
+               gsRelCurPagePath=_getRelativeFileName(gsStartPage,document.location.href);\r
+       }\r
+}\r
+\r
+function getImage(oImage,sType)\r
+{\r
+       var sImg="";\r
+       if(oImage&&oImage.aImgs&&(oImage.aImgs.length>0))\r
+       {\r
+               sImg+="<img alt=\""+sType+"\" src=\""+oImage.aImgs[0]+"\"";\r
+               if(oImage.nWidth>0)\r
+                       sImg+=" width="+oImage.nWidth;\r
+               if(oImage.nHeight>0)\r
+                       sImg+=" height="+oImage.nHeight;\r
+               sImg+=" border=0>";\r
+       }\r
+       return sImg;\r
+}\r
+\r
+function addTocInfo(sTocPath)\r
+{\r
+       gaPaths[gaPaths.length]=sTocPath;\r
+}\r
+\r
+function addAvenueInfo(sName,sPrev,sNext)\r
+{\r
+       gaAvenues[gaAvenues.length]=new avenueInfo(sName,sPrev,sNext);  \r
+}\r
+\r
+function addButton(sType,nStyle,sText,sHref,sOnClick,sOnMouseOver,sOnLoad,nWidth,nHeight,sImg1,sImg2,sImg3)\r
+{\r
+       var sButton="";\r
+       var nBtn=gaButtons.length;\r
+       if(sType=="prev")\r
+       {\r
+               if(canGo(false))\r
+               {\r
+                       var sTitle="Previous Topic";\r
+                       goPrev=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnprev\" href=\"javascript:void(0);\" onclick=\"goAvenue(false);return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goPrev.sText;\r
+                       else\r
+                               sButton+=getImage(goPrev,sTitle);\r
+                       sButton+="</a>";\r
+               }\r
+       }\r
+       else if(sType=="next")\r
+       {\r
+               if(canGo(true))\r
+               {\r
+                       var sTitle="Next Topic";\r
+                       goNext=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnnext\" href=\"javascript:void(0);\" onclick=\"goAvenue(true);return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goNext.sText;\r
+                       else\r
+                               sButton+=getImage(goNext,sTitle);\r
+                       sButton+="</a>";\r
+               }\r
+       }\r
+       else if(sType=="show")\r
+       {\r
+               if(isTopicOnly()&&(!gbOpera6||gbOpera7))\r
+               {\r
+                       var sTitle="Show Navigation Component";\r
+                       goShow=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnshow\" href=\"javascript:void(0);\" onclick=\"show();return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goShow.sText;\r
+                       else\r
+                               sButton+=getImage(goShow,sTitle);\r
+                       sButton+="</a>";\r
+               }\r
+       }\r
+       else if(sType=="hide")\r
+       {\r
+               if(!isTopicOnly()&&!gbOpera6)\r
+               {\r
+                       var sTitle="Hide Navigation Component";\r
+                       goHide=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnhide\" href=\"javascript:void(0);\" onclick=\"hide();return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goHide.sText;\r
+                       else\r
+                               sButton+=getImage(goHide,sTitle);\r
+                       sButton+="</a>";\r
+               }\r
+       }\r
+       else if(sType=="shownav")\r
+       {\r
+               if(isShowHideEnable())\r
+               {\r
+                       var sTitle="Show Navigation Component";\r
+                       goShowNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnshownav\" href=\"javascript:void(0);\" onclick=\"showHidePane(true);return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goShowNav.sText;\r
+                       else\r
+                               sButton+=getImage(goShowNav,sTitle);\r
+                       sButton+="</a>";\r
+               }\r
+       }\r
+       else if(sType=="hidenav")\r
+       {\r
+               if(isShowHideEnable())\r
+               {\r
+                       var sTitle="Hide Navigation Component";\r
+                       goHideNav=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnhidenav\" href=\"javascript:void(0);\" onclick=\"showHidePane(false);return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goHideNav.sText;\r
+                       else\r
+                               sButton+=getImage(goHideNav,sTitle);\r
+                       sButton+="</a>";\r
+               }\r
+       }\r
+       else if(sType=="synctoc")\r
+       {\r
+               if(gaPaths.length>0)\r
+               {\r
+                       var sTitle="Sync TOC";\r
+                       goSync=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnsynctoc\" href=\"javascript:void(0);\" onclick=\"syncWithShow();return false;\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goSync.sText;\r
+                       else\r
+                               sButton+=getImage(goSync,sTitle);\r
+                       sButton+="</a>";\r
+               }\r
+       }\r
+       else if(sType=="websearch")\r
+       {\r
+               if(gsSearchFormHref.length>0)\r
+               {\r
+                       var sTitle="WebSearch";\r
+                       goWebSearch=new button(sText,nWidth,nHeight,sImg1,sImg2,sImg3);\r
+                       sButton="<a title=\""+sTitle+"\" class=\"whtbtnwebsearch\" href=\""+gsSearchFormHref+"\">";\r
+                       if(nStyle==BTN_TEXT)\r
+                               sButton+=goWebSearch.sText;\r
+                       else\r
+                               sButton+=getImage(goWebSearch,sTitle);\r
+                       sButton+="</a>";\r
+               }\r
+       }\r
+       else if(sType=="searchform")\r
+       {\r
+               gaButtons[nBtn]="NeedSearchForm";\r
+               gaTypes[nBtn]=sType;\r
+       }\r
+       if(sButton.length!=0)\r
+       {\r
+               if(nStyle==BTN_TEXT)\r
+                       sButton+="&nbsp;";\r
+               gaButtons[nBtn]="<td>"+sButton+"</td>";\r
+               gaTypes[nBtn]=sType;\r
+       }\r
+}\r
+\r
+function isSyncEnabled()\r
+{\r
+       if(!gbCheckSync)\r
+       {\r
+               var oMsg=new whMessage(WH_MSG_ISSYNCSSUPPORT,this,1,null);\r
+               if(SendMessage(oMsg))\r
+               {\r
+                       gbSyncEnabled=oMsg.oParam;\r
+               }\r
+               gbCheckSync=true;\r
+       }\r
+       return gbSyncEnabled;\r
+}\r
+\r
+function isInPopup()\r
+{\r
+       return (window.name.indexOf("BSSCPopup")!=-1);\r
+}\r
+\r
+function getIntopicBar(sAlign)\r
+{\r
+       var sHTML="";\r
+       if(gaButtons.length>0)\r
+       {\r
+               sHTML+="<div align="+sAlign+">";\r
+\r
+               sHTML+="<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\"><tr>";\r
+               for(var i=0;i<gaButtons.length;i++)\r
+               {\r
+                       if(gaTypes[i]!="synctoc"||isSyncEnabled())\r
+                       {\r
+                               if(gaButtons[i]=="NeedSearchForm")\r
+                                       sHTML+=getSearchFormHTML();\r
+                               else\r
+                                       sHTML+=gaButtons[i];\r
+                       }\r
+               }\r
+               sHTML+="</tr></table>";\r
+\r
+               sHTML+="</div>";\r
+       }\r
+       return sHTML;\r
+}\r
+\r
+\r
+function writeIntopicBar(nAligns)\r
+{\r
+       if(isInPopup()) return;\r
+       if(gaButtons.length>0)\r
+       {\r
+               var sHTML="";\r
+               if(nAligns!=0)\r
+               {\r
+                       sHTML+="<table width=100%><tr>"\r
+                       if(nAligns&1)\r
+                               sHTML+="<td width=33%>"+getIntopicBar("left")+"</td>";\r
+                       if(nAligns&2)\r
+                               sHTML+="<td width=34%>"+getIntopicBar("center")+"</td>";\r
+                       if(nAligns&4)\r
+                               sHTML+="<td width=33%>"+getIntopicBar("right")+"</td>";\r
+                       sHTML+="</tr></table>";\r
+                       document.write(sHTML);\r
+               }\r
+       }\r
+}\r
+\r
+function sendAveInfoOut()\r
+{\r
+       if(!isInPopup())\r
+               setTimeout("sendAveInfo();",100);\r
+}\r
+\r
+function sendAveInfo()\r
+{\r
+       var oMsg=new whMessage(WH_MSG_AVENUEINFO,this,1,gaAvenues);\r
+       SendMessage(oMsg);\r
+}\r
+\r
+\r
+function onNext()\r
+{\r
+       var oMsg=new whMessage(WH_MSG_NEXT,this,1,null);\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function onPrev()\r
+{\r
+       var oMsg=new whMessage(WH_MSG_PREV,this,1,null);\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function createSyncInfo()\r
+{\r
+       var oParam=new Object();\r
+       if(gsPPath.length==0)\r
+               gsPPath=_getPath(document.location.href);\r
+       oParam.sPPath=gsPPath;\r
+       oParam.sTPath=document.location.href;\r
+       oParam.aPaths=gaPaths;\r
+       return oParam;\r
+}\r
+\r
+function syncWithShow()\r
+{\r
+       if(isTopicOnly())\r
+               show();\r
+       else\r
+       {\r
+               sync();\r
+               showTocPane();\r
+       }\r
+}\r
+\r
+function showTocPane()\r
+{\r
+       var oMsg=new whMessage(WH_MSG_SHOWTOC,this,1,null);\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function sendSyncInfo()\r
+{\r
+       if(!isInPopup())\r
+       {\r
+               var oParam=null;\r
+               if(gaPaths.length>0)\r
+               {\r
+                       oParam=createSyncInfo();\r
+               }\r
+               var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,oParam);\r
+               SendMessage(oMsg);\r
+       }\r
+}\r
+\r
+function sendInvalidSyncInfo()\r
+{\r
+       if(!isInPopup())\r
+       {\r
+               var oMsg=new whMessage(WH_MSG_SYNCINFO,this,1,null);\r
+               SendMessage(oMsg);\r
+       }\r
+}\r
+\r
+function enableWebSearch(bEnable)\r
+{\r
+       if(!isInPopup())\r
+       {\r
+               var oMsg=new whMessage(WH_MSG_ENABLEWEBSEARCH,this,1,bEnable);\r
+               SendMessage(oMsg);\r
+       }\r
+}\r
+\r
+function autoSync(nSync)\r
+{\r
+       if(nSync==0) return;\r
+       if(isInPopup()) return;\r
+       if(isOutMostTopic())\r
+               sync();\r
+}\r
+\r
+function isOutMostTopic()\r
+{\r
+       if(gnOutmostTopic==-1)\r
+       {\r
+               var oMessage=new whMessage(WH_MSG_ISINFRAMESET,this,1,null);\r
+               if(SendMessage(oMessage))\r
+                       gnOutmostTopic=0;\r
+               else\r
+                       gnOutmostTopic=1;\r
+       }\r
+       return (gnOutmostTopic==1);\r
+}\r
+\r
+function sync()\r
+{\r
+       if(gaPaths.length>0)\r
+       {\r
+               var oParam=createSyncInfo();\r
+               var oMessage=new whMessage(WH_MSG_SYNCTOC,this,1,oParam);\r
+               SendMessage(oMessage);\r
+       }\r
+}\r
+\r
+\r
+function avenueInfo(sName,sPrev,sNext)\r
+{\r
+       this.sName=sName;\r
+       this.sPrev=sPrev;\r
+       this.sNext=sNext;\r
+}\r
+\r
+function getCurrentAvenue()\r
+{\r
+       var oParam=new Object();\r
+       oParam.sAvenue=null;\r
+       var oMessage=new whMessage(WH_MSG_GETCURRENTAVENUE,this,1,oParam);\r
+       SendMessage(oMessage);\r
+       return oParam.sAvenue;\r
+}\r
+\r
+function unRegisterListener()\r
+{\r
+       sendInvalidSyncInfo();\r
+       enableWebSearch(false);\r
+       if(whtopic_foldUnload)\r
+               whtopic_foldUnload();\r
+}\r
+\r
+function onSendMessage(oMsg)\r
+{\r
+       var nMsgId=oMsg.nMessageId;\r
+       if(nMsgId==WH_MSG_GETAVIAVENUES)\r
+       {\r
+               oMsg.oParam.aAvenues=gaAvenues;\r
+               return false;\r
+       }\r
+       else if(nMsgId==WH_MSG_GETTOCPATHS)\r
+       {\r
+               if(isOutMostTopic())\r
+               {\r
+                       oMsg.oParam.oTocInfo=createSyncInfo();\r
+                       return false;           \r
+               }\r
+               else\r
+                       return true;\r
+       }\r
+       else if(nMsgId==WH_MSG_NEXT)\r
+       {\r
+               goAvenue(true);\r
+       }\r
+       else if(nMsgId==WH_MSG_PREV)\r
+       {\r
+               goAvenue(false);\r
+       }\r
+       else if(nMsgId==WH_MSG_WEBSEARCH)\r
+       {\r
+               websearch();\r
+       }\r
+       return true;\r
+}\r
+\r
+function goAvenue(bNext)\r
+{\r
+       var sTopic=null;\r
+       var sAvenue=getCurrentAvenue();\r
+       var nAvenue=-1;\r
+       if(sAvenue!=null&&sAvenue!="")\r
+       {\r
+               for(var i=0;i<gaAvenues.length;i++)\r
+               {\r
+                       if(gaAvenues[i].sName==sAvenue)\r
+                       {\r
+                               nAvenue=i;\r
+                               break;\r
+                       }\r
+               }\r
+               if(nAvenue!=-1)\r
+               {\r
+                       if(bNext)\r
+                               sTopic=gaAvenues[nAvenue].sNext;\r
+                       else\r
+                               sTopic=gaAvenues[nAvenue].sPrev;\r
+               }\r
+       }\r
+       else\r
+       {\r
+               for(var i=0;i<gaAvenues.length;i++)\r
+               {\r
+                       if(gaAvenues[i].sNext!=null&&gaAvenues[i].sNext.length>0&&bNext)\r
+                       {\r
+                               sTopic=gaAvenues[i].sNext;\r
+                               break;\r
+                       }\r
+                       else if(gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext)\r
+                       {\r
+                               sTopic=gaAvenues[i].sPrev;\r
+                               break;\r
+                       }\r
+               }\r
+       }\r
+       \r
+       if(sTopic!=null&&sTopic!="")\r
+       {\r
+               if(gsPPath!=null&&gsPPath!="")\r
+               {\r
+                       sFullTopicPath=_getFullPath(gsPPath,sTopic);\r
+                       document.location=sFullTopicPath;\r
+               }\r
+       }\r
+}\r
+\r
+function canGo(bNext)\r
+{\r
+       for(var i=0;i<gaAvenues.length;i++)\r
+       {\r
+               if((gaAvenues[i].sNext!=null&&gaAvenues[i].sNext.length>0&&bNext)||\r
+                       (gaAvenues[i].sPrev!=null&&gaAvenues[i].sPrev.length>0&&!bNext))\r
+                       return true;\r
+       }\r
+       return false;\r
+}\r
+\r
+function show()\r
+{\r
+       if(gsStartPage!="")\r
+               window.location=gsStartPage+"#"+gsRelCurPagePath;\r
+}\r
+\r
+function hide()\r
+{\r
+       if(goFrame!=null)\r
+       {\r
+               goFrame.location=window.location;\r
+       }\r
+}\r
+\r
+function isTopicOnly()\r
+{\r
+       if(gnTopicOnly==-1)\r
+       {\r
+               var oParam=new Object();\r
+               oParam.oFrame=null;\r
+               var oMsg=new whMessage(WH_MSG_GETSTARTFRAME,this,1,oParam);\r
+               if(SendMessage(oMsg))\r
+               {\r
+                       goFrame=oParam.oFrame;\r
+                       gnTopicOnly=0;\r
+               }\r
+               else\r
+                       gnTopicOnly=1;\r
+       }\r
+       if(gnTopicOnly==1)\r
+               return true;\r
+       else\r
+               return false;\r
+}\r
+\r
+function websearch()\r
+{\r
+       if(gbNav4)\r
+       {\r
+               if(document.ehelpform)\r
+                       document.ehelpform.submit();\r
+       }\r
+       else\r
+       {\r
+               if(window.ehelpform)\r
+                       window.ehelpform.submit();\r
+       }\r
+}\r
+\r
+function addSearchFormHref(sHref)\r
+{\r
+       gsSearchFormHref=sHref;\r
+       enableWebSearch(true);\r
+}\r
+\r
+function searchB(nForm)\r
+{\r
+       var sValue=eval("document.searchForm"+nForm+".searchString.value");\r
+       var oMsg=new whMessage(WH_MSG_SEARCHTHIS,this,1,sValue);\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function getSearchFormHTML()\r
+{\r
+       var sHTML="";\r
+       gnForm++;\r
+       var sFormName="searchForm"+gnForm;\r
+       var sButton="<form name=\""+sFormName+"\" method=\"POST\" action=\"javascript:searchB("+gnForm+")\">"\r
+       sButton+="<input type=\"text\" name=\"searchString\" value=\"- Full Text search -\" size=\"20\"/>";\r
+       if(""=="text")\r
+       {\r
+               sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\""+sFormName+".submit();return false;\"></a>";\r
+       }\r
+       else if(""=="image")\r
+       {\r
+               sButton+="<a class=\"searchbtn\" href=\"javascript:void(0);\" onclick=\""+sFormName+".submit();return false;\">"\r
+               sButton+="<img src=\"\" border=0></a>";\r
+       }\r
+       sButton+="</form>";\r
+       sHTML="<td align=\"center\">"+sButton+"</td>";\r
+       return sHTML;\r
+}\r
+\r
+function showHidePane(bShow)\r
+{\r
+       var oMsg=null;\r
+       if(bShow)\r
+               oMsg=new whMessage(WH_MSG_SHOWPANE,this,1,null);\r
+       else\r
+               oMsg=new whMessage(WH_MSG_HIDEPANE,this,1,null);\r
+       SendMessage(oMsg);\r
+}\r
+\r
+function isShowHideEnable()\r
+{\r
+       if(gbIE4)\r
+               return true;\r
+       else\r
+               return false;\r
+}\r
+\r
+\r
+function PickupDialog_Invoke()\r
+{\r
+       if(!gbIE4||gbMac)\r
+       {\r
+               if(typeof(_PopupMenu_Invoke)=="function")\r
+                       return _PopupMenu_Invoke(PickupDialog_Invoke.arguments);\r
+       }\r
+       else\r
+       {\r
+               if(PickupDialog_Invoke.arguments.length>2)\r
+               {\r
+                       var sPickup="whskin_pickup.htm";\r
+                       var sPickupPath=gsPPath+sPickup;\r
+                       if(gbIE4)\r
+                       {\r
+                               var sFrame=PickupDialog_Invoke.arguments[1];\r
+                               var aTopics=new Array();\r
+                               for(var i=2;i<PickupDialog_Invoke.arguments.length;i+=2)\r
+                               {\r
+                                       var j=aTopics.length;\r
+                                       aTopics[j]=new Object();\r
+                                       aTopics[j].m_sName=PickupDialog_Invoke.arguments[i];\r
+                                       aTopics[j].m_sURL=PickupDialog_Invoke.arguments[i+1];\r
+                               }\r
+\r
+                               if(aTopics.length>1)\r
+                               {\r
+                                       var nWidth=300;\r
+                                       var nHeight=180;\r
+                                       var     nScreenWidth=screen.width;\r
+                                       var     nScreenHeight=screen.height;\r
+                                       var nLeft=(nScreenWidth-nWidth)/2;\r
+                                       var nTop=(nScreenHeight-nHeight)/2;\r
+                                       if(gbIE4)\r
+                                       {\r
+                                               var vRet=window.showModalDialog(sPickupPath,aTopics,"dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;resizable:yes;status:no;scroll:no;help:no;center:yes;");\r
+                                               if(vRet)\r
+                                               {\r
+                                                       var sURL=vRet.m_url;\r
+                                                       if(sFrame)\r
+                                                               window.open(sURL,sFrame);\r
+                                                       else\r
+                                                               window.open(sURL,"_self");\r
+                                               }\r
+                                       }\r
+                               }\r
+                               else if(aTopics.length==1)\r
+                               {\r
+                                       var sURL=aTopics[0].m_sURL\r
+                                       if(sFrame)\r
+                                               window.open(sURL,sFrame);\r
+                                       else\r
+                                               window.open(sURL,"_self");\r
+                               }\r
+                       }\r
+               }\r
+       }\r
+}\r
+\r
+if(window.gbWhUtil&&window.gbWhMsg&&window.gbWhVer&&window.gbWhProxy)\r
+{\r
+       RegisterListener("bsscright",WH_MSG_GETAVIAVENUES);\r
+       RegisterListener("bsscright",WH_MSG_GETTOCPATHS);\r
+       RegisterListener("bsscright",WH_MSG_NEXT);\r
+       RegisterListener("bsscright",WH_MSG_PREV);\r
+       RegisterListener("bsscright",WH_MSG_WEBSEARCH);\r
+       if(gbMac&&gbIE4)\r
+       {\r
+               if(typeof(window.onunload)!="unknown")\r
+                       if(window.onunload.toString!=unRegisterListener.toString)\r
+                               whtopic_foldUnload=window.onunload;\r
+       }\r
+       else\r
+       {\r
+               if(window.onunload)\r
+                       if(window.onunload.toString!=unRegisterListener.toString)\r
+                               whtopic_foldUnload=window.onunload;\r
+       }\r
+       window.onunload=unRegisterListener;\r
+       setButtonFont("show","","10pt","","","","");\r
+\r
+       gbWhTopic=true;\r
+}\r
+else\r
+       document.location.reload();
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whutils.js b/doc/salome/gui/GAUSS/whutils.js
new file mode 100644 (file)
index 0000000..85fae7e
--- /dev/null
@@ -0,0 +1,527 @@
+//     WebHelp 5.10.004\r
+var gsFileName="";\r
+var gsDivName="";\r
+var xmlDoc=null;\r
+var sdocPath=null;\r
+var gsInsertBeforeEndHTML="";\r
+var sReplaceStringsSrc=new Array();\r
+var gsDivName="dataDiv";\r
+var gnLoadDivNum=0;\r
+sReplaceStringsSrc[0]="&amp;";\r
+sReplaceStringsSrc[1]="&gt;";\r
+sReplaceStringsSrc[2]="&lt;";\r
+sReplaceStringsSrc[3]="&quot;";\r
+sReplaceStringsSrc[4]=String.fromCharCode(8364);\r
+sReplaceStringsSrc[5]="&nbsp;";\r
+\r
+var sReplaceStringsDst=new Array();\r
+sReplaceStringsDst[0]="&";\r
+sReplaceStringsDst[1]=">";\r
+sReplaceStringsDst[2]="<";\r
+sReplaceStringsDst[3]="\"";\r
+sReplaceStringsDst[4]=String.fromCharCode(128);\r
+sReplaceStringsDst[5]=" ";\r
+var goHighLighted=null;\r
+\r
+function _getRelativePath(strParentPath,strCurrentPath)\r
+{\r
+       if(_isAbsPath(strCurrentPath)) return _getPath(strCurrentPath);\r
+       strParentPath=_replaceSlash(strParentPath);\r
+       strParentPath=_getPath(strParentPath);\r
+       strCurrentPath=_replaceSlash(strCurrentPath);\r
+       strCurrentPath=_getPath(strCurrentPath);\r
+       for(var i=0;i<strParentPath.length&&i<strCurrentPath.length;i++)\r
+       {\r
+               if(strParentPath.charAt(i)!=strCurrentPath.charAt(i))\r
+                       break;\r
+       }\r
+       \r
+       strParentPath=strParentPath.substring(i);\r
+       strCurrentPath=strCurrentPath.substring(i);     \r
+       \r
+       var nPathPos=0;\r
+       while(nPathPos!=-1)\r
+       {\r
+               nPathPos=strParentPath.indexOf("/");\r
+               if(nPathPos!=-1)\r
+               {\r
+                       strParentPath=strParentPath.substring(nPathPos+1);\r
+                       strCurrentPath="../"+strCurrentPath;\r
+               }\r
+       }\r
+       return strCurrentPath;\r
+}\r
+\r
+function _getRelativeFileName(strParentPath,strCurrentPath)\r
+{\r
+       strParentPath=_replaceSlash(strParentPath);\r
+       strParentPath=_getPath(strParentPath);\r
+       strCurrentPath=_replaceSlash(strCurrentPath);\r
+       for(var i=0;i<strParentPath.length&&i<strCurrentPath.length;i++)\r
+       {\r
+               if(strParentPath.charAt(i)!=strCurrentPath.charAt(i))\r
+                       break;\r
+       }\r
+       \r
+       strParentPath=strParentPath.substring(i);\r
+       strCurrentPath=strCurrentPath.substring(i);     \r
+       \r
+       var nPathPos=0;\r
+       while(nPathPos!=-1)\r
+       {\r
+               nPathPos=strParentPath.indexOf("/");\r
+               if(nPathPos!=-1)\r
+               {\r
+                       strParentPath=strParentPath.substring(nPathPos+1);\r
+                       strCurrentPath="../"+strCurrentPath;\r
+               }\r
+       }\r
+       return strCurrentPath;\r
+}\r
+\r
+function _isAbsPathToHost(sPath)\r
+{\r
+       return (sPath.indexOf("/")==0);\r
+}\r
+\r
+function _getHost(sPath)\r
+{\r
+       var nPos=sPath.indexOf("//");\r
+       if(nPos>0)\r
+       {\r
+               var nPosx=sPath.indexOf("/",nPos+2);\r
+               if(nPosx>0)\r
+                       return sPath.substring(0,nPosx);\r
+               else\r
+                       return sPath;\r
+       }\r
+       return sPath;\r
+}\r
+\r
+function _getFullPath(sPath,sRelPath)\r
+{\r
+       if(_isAbsPath(sRelPath))\r
+               return sRelPath;\r
+       else if(_isAbsPathToHost(sRelPath))\r
+               return _getHost(sPath)+sRelPath;\r
+       else\r
+       {\r
+               var sFullPath=sPath;\r
+               var nPathPos=0;\r
+               while(nPathPos!=-1)\r
+               {\r
+                       var nPathPos=sRelPath.indexOf("../");\r
+                       if(nPathPos!=-1)\r
+                       {\r
+                               sRelPath=sRelPath.substring(nPathPos+3);\r
+                               sFullPath=sFullPath.substring(0,sFullPath.length-1);\r
+                               var nPos2=sFullPath.lastIndexOf("/");\r
+                               if(nPos2!=-1)\r
+                                       sFullPath=sFullPath.substring(0,nPos2+1);\r
+                               else\r
+                                       break;\r
+                       }\r
+               }\r
+               sFullPath+=sRelPath;\r
+               return sFullPath;\r
+       }       \r
+}\r
+\r
+function _isAbsPath(strPath)\r
+{\r
+       var strUpper=strPath.toUpperCase();\r
+       return (strUpper.indexOf(":")!=-1||strUpper.indexOf("\\\\")==0);\r
+}\r
+\r
+function _replaceSlash(strURL)\r
+{      \r
+       var re=new RegExp("\\\\","g");\r
+       var strReplacedURL=strURL.replace(re,"/");\r
+       return strReplacedURL;\r
+}\r
+\r
+function _getPath(strURL)\r
+{\r
+       pathpos=strURL.lastIndexOf("/");\r
+       if(pathpos>0)\r
+               return strURL.substring(0,pathpos+1);\r
+       else\r
+               return "";\r
+}\r
+\r
+function removeItemFromArray(oArray,i)\r
+{\r
+       if(oArray.length&&i>=0&&i<oArray.length)\r
+       {\r
+               var len=oArray.length;\r
+               for(var s=i;s<len-1;s++)\r
+                       oArray[s]=oArray[s+1];\r
+               oArray.length=len-1;\r
+       }\r
+}\r
+\r
+function insertItemIntoArray(oArray,i,obj)\r
+{\r
+       if(oArray.length&&i>=0&&i<=oArray.length)\r
+       {\r
+               var len=oArray.length;\r
+               for(var s=len;s>i;s--)\r
+                       oArray[s]=oArray[s-1];\r
+               oArray[i]=obj;          \r
+       }\r
+}\r
+\r
+function loadData(sFileName)\r
+{\r
+       var i=gnLoadDivNum;\r
+       var sName=gsDivName+gnLoadDivNum++;\r
+       loadData_2(sFileName,sName);\r
+}\r
+\r
+function loadData_2(sFileName,sDivName)\r
+{\r
+       if(!getElement(sDivName))\r
+       {\r
+               if(!insertDataDiv(sDivName))\r
+               {\r
+                       gsFileName=sFileName;\r
+                       gsDivName=sDivName;\r
+                       return;\r
+               }\r
+       }\r
+       var sHTML="";\r
+       if(gbMac)\r
+               sHTML+="<iframe src=\""+sFileName+"\"></iframe>";\r
+       else\r
+               sHTML+="<iframe style=\"visibility:hidden;width:0;height:0\" src=\""+sFileName+"\"></iframe>";\r
+       \r
+       var oDivCon=getElement(sDivName);\r
+       if(oDivCon)\r
+       {\r
+               if(gbNav6)\r
+               {\r
+                       if(oDivCon.getElementsByTagName&&oDivCon.getElementsByTagName("iFrame").length>0)\r
+                       {\r
+                               oDivCon.getElementsByTagName("iFrame")[0].src=sFileName;\r
+                       }\r
+                       else\r
+                               oDivCon.innerHTML=sHTML;\r
+               }\r
+               else\r
+                       oDivCon.innerHTML=sHTML;\r
+       }\r
+}\r
+\r
+function loadDataXML(sFileName)\r
+{\r
+       var sCurrentDocPath=_getPath(document.location.href);\r
+       sdocPath=_getFullPath(sCurrentDocPath,sFileName);\r
+       if(gbIE5)\r
+       {\r
+               xmlDoc=new ActiveXObject("Microsoft.XMLDOM");\r
+               xmlDoc.async=true;\r
+               xmlDoc.onreadystatechange=checkState;\r
+               if(document.body!=null)\r
+                       xmlDoc.load(sdocPath);\r
+       }\r
+       else if(gbNav6)\r
+       {\r
+               xmlDoc=document.implementation.createDocument("","",null);\r
+               xmlDoc.addEventListener("load",initializeData,false);\r
+               xmlDoc.load(sdocPath,"text/xml");\r
+       }\r
+}\r
+\r
+function initializeData()\r
+{\r
+       if(xmlDoc!=null)\r
+               putDataXML(xmlDoc,sdocPath);\r
+}\r
+\r
+function checkState()\r
+{\r
+       if(xmlDoc!=null)\r
+       {\r
+               var state=xmlDoc.readyState;\r
+               if(state==4)\r
+               {\r
+                       var err=xmlDoc.parseError;\r
+                       if(err.errorCode==0)\r
+                               putDataXML(xmlDoc,sdocPath);\r
+                       else\r
+                               onLoadXMLError();\r
+               }\r
+       }\r
+}\r
+\r
+function insertDataDiv(sName)\r
+{\r
+       var sHTML="";\r
+       if(gbMac)\r
+               sHTML+="<div id="+sName+" style=\"display:none;\"></div>";\r
+       else\r
+               sHTML+="<div id="+sName+" style=\"visibility:hidden\"></div>";\r
+       if((gbIE5||gbNav6)&&document.body)\r
+               document.body.insertAdjacentHTML("beforeEnd",sHTML);\r
+       else\r
+       {\r
+               gsInsertBeforeEndHTML=sHTML;\r
+               setTimeout("insertWhenBodyReady();",100);\r
+               return false;\r
+       }\r
+       return true;\r
+}\r
+\r
+function insertWhenBodyReady()\r
+{\r
+       if(gsInsertBeforeEndHTML=="") return;\r
+       if(document.body)\r
+       {\r
+               document.body.insertAdjacentHTML("beforeEnd",gsInsertBeforeEndHTML);\r
+               gsInsertBeforeEndHTML="";\r
+               loadData_2(gsFileName,gsDivName);\r
+       }\r
+       else\r
+       {\r
+               setTimeout("insertWhenBodyReady();",100);\r
+       }\r
+}\r
+\r
+function window_BUnload()\r
+{\r
+       for(var i=0;i<gnLoadDivNum;i++)\r
+       {\r
+               var oDivCon=getElement(gsDivName+i);\r
+               if(oDivCon)\r
+                       oDivCon.innerHTML="";\r
+       }\r
+}\r
+\r
+function removeThis(obj)\r
+{\r
+       if(obj.parentNode)\r
+               obj.parentNode.removeChild(obj);\r
+       else\r
+               obj.outerHTML="";\r
+}\r
+\r
+function getParentNode(obj)\r
+{\r
+       if(obj.parentNode)\r
+               return obj.parentNode;\r
+       else if(obj.parentElement)\r
+               return obj.parentElement;\r
+       return null;\r
+}\r
+\r
+function getElement(sID)\r
+{\r
+       if(document.getElementById)\r
+               return document.getElementById(sID);\r
+       else if(document.all)\r
+               return document.all(sID);\r
+       return null;\r
+}\r
+\r
+function getChildrenByTag(obj,sTagName)\r
+{\r
+       if(obj.getElementsByTagName)\r
+       {\r
+               var aChildren=new Array();\r
+               var aElements=getElementsByTag(obj,sTagName);\r
+               if(aElements!=null)\r
+               {\r
+                       for(var i=0;i<aElements.length;i++)\r
+                       {\r
+                               if(aElements[i].parentNode==obj)\r
+                                       aChildren[aChildren.length]=aElements[i];\r
+                       }\r
+                       return aChildren;\r
+               }\r
+               else\r
+                       return new Array();\r
+       }\r
+       else if(obj.children)\r
+               return obj.children.tags(sTagName);\r
+}\r
+\r
+function getElementsByTag(obj,sTagName)\r
+{\r
+       if(obj.getElementsByTagName)\r
+               return obj.getElementsByTagName(sTagName);\r
+       else if(obj.all)\r
+               return obj.all.tags(sTagName);\r
+       return null;\r
+}\r
+\r
+function _htmlToText(sHTML)\r
+{\r
+       if(sHTML==null) return null;\r
+       var sText=sHTML;\r
+       for(var i=0;i<sReplaceStringsSrc.length;i++)\r
+       {\r
+               var re=new RegExp(sReplaceStringsSrc[i],"g");\r
+               sText=sText.replace(re,sReplaceStringsDst[i]);\r
+       }       \r
+       return sText;\r
+}\r
+\r
+function _textToHtml_nonbsp(sText)\r
+{\r
+       if(sText==null) return null;\r
+       var sHTML=sText;\r
+       for(var i=0;i<sReplaceStringsSrc.length-1;i++)\r
+       {\r
+               var re=new RegExp(sReplaceStringsDst[i],"g");\r
+               sHTML=sHTML.replace(re,sReplaceStringsSrc[i]);\r
+       }       \r
+       return sHTML;\r
+}\r
+\r
+function _textToHtml(sText)\r
+{\r
+       if(sText==null) return null;\r
+       var sHTML=sText;\r
+       for(var i=0;i<sReplaceStringsSrc.length;i++)\r
+       {\r
+               var re=new RegExp(sReplaceStringsDst[i],"g");\r
+               sHTML=sHTML.replace(re,sReplaceStringsSrc[i]);\r
+       }       \r
+       return sHTML;\r
+}\r
+\r
+\r
+function getInnerText(obj)\r
+{\r
+       var renbsp2sp=new RegExp("\xa0","g");\r
+       if(obj.innerText)\r
+       {\r
+               var sText=obj.innerText;\r
+               sText=sText.replace(renbsp2sp," ");\r
+               return sText;\r
+       }\r
+       else\r
+       {\r
+               if(obj.nodeValue)\r
+               {\r
+                       var sValue=obj.nodeValue;\r
+                       sValue=sValue.replace(renbsp2sp," ");\r
+                       return sValue;\r
+               }\r
+               else\r
+               {\r
+                       var sText="";\r
+                       var oChild=obj.firstChild;\r
+                       while(oChild!=null)\r
+                       {\r
+                               sText+=getInnerText(oChild);\r
+                               oChild=oChild.nextSibling;\r
+                       }\r
+                       return sText;\r
+               }\r
+       }\r
+               \r
+}\r
+\r
+function HighLightElement(obj,sHighLightColor,sNormalColor)\r
+{\r
+       if(obj!=null)\r
+       {\r
+               resetHighLight(sNormalColor);\r
+               if (obj.style)\r
+                       obj.style.backgroundColor=sHighLightColor;\r
+               goHighLighted=obj;\r
+       }\r
+}\r
+\r
+function resetHighLight(sNormalColor)\r
+{\r
+       if(goHighLighted!=null)\r
+       {\r
+               if (goHighLighted.style)\r
+                       goHighLighted.style.backgroundColor=sNormalColor;\r
+               goHighLighted=null;\r
+       }\r
+}\r
+\r
+function whFont(sName,sSize,sColor,sStyle,sWeight,sDecoration)\r
+{\r
+       this.sName=sName;\r
+       this.sSize=sSize;\r
+       this.sColor=sColor;\r
+       this.sStyle=sStyle;\r
+       this.sWeight=sWeight;\r
+       this.sDecoration=sDecoration;\r
+}\r
+\r
+function getFontStyle(oFont)\r
+{\r
+       var sStyle="";\r
+       if(oFont)\r
+       {\r
+               sStyle+="font-family:"+oFont.sName+";";\r
+               if(gbMac)\r
+               {\r
+                       var nSize=parseInt(oFont.sSize);\r
+                       if(gbIE5)\r
+                               nSize+=2;\r
+                       else\r
+                               nSize+=4;\r
+                       sStyle+="font-size:"+nSize+"pt;";\r
+               }\r
+               else\r
+                       sStyle+="font-size:"+oFont.sSize+";";\r
+                       \r
+               sStyle+="font-style:"+oFont.sStyle+";";\r
+               sStyle+="font-weight:"+oFont.sWeight+";";\r
+               sStyle+="text-decoration:"+oFont.sDecoration+";";\r
+               sStyle+="color:"+oFont.sColor+";";\r
+       }\r
+       return sStyle;\r
+}\r
+\r
+function _browserStringToText(sBStr)\r
+{\r
+       var sText="";\r
+       // change %xxx back to the real char.\r
+       var nPos=sBStr.indexOf('%');\r
+       while(nPos!=-1)\r
+       {\r
+               sText+=sBStr.substring(0,nPos);\r
+               sBStr=sBStr.substring(nPos+1);\r
+               var sNum="";\r
+               var i=0;\r
+               while(sBStr.charAt(i)>='0'&&sBStr.charAt(i)<='9')\r
+               {\r
+                       sNum+=sBStr.charAt(i++);        \r
+               }\r
+               if(sNum!=""){\r
+                       var nNum=parseInt(sNum,16);\r
+                       sText+=String.fromCharCode(nNum);\r
+                       sBStr=sBStr.substring(i);\r
+               }\r
+               nPos=sBStr.indexOf('%');\r
+       }\r
+       sText+=sBStr;\r
+       return sText;\r
+}\r
+\r
+function excapeSingleQuotandSlash(str)\r
+{\r
+       if(str==null) return null;\r
+       var nPos=0;\r
+       var sRes="";\r
+       var nPosNew=str.indexOf("\\",nPos);\r
+       while(nPosNew!=-1){\r
+               sRes+=str.substring(nPos,nPosNew+1)+"\\";\r
+               nPos=nPosNew+1;\r
+               nPosNew=str.indexOf("\\",nPos);\r
+       }\r
+       if(nPos<str.length)\r
+               sRes+=str.substring(nPos);\r
+       var re=new RegExp("'","g");\r
+       sRes=sRes.replace(re,"\\'");\r
+       return sRes;\r
+}\r
+\r
+var gbWhUtil=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whver.js b/doc/salome/gui/GAUSS/whver.js
new file mode 100644 (file)
index 0000000..ff59763
--- /dev/null
@@ -0,0 +1,103 @@
+//     WebHelp 5.10.006\r
+var gbNav=false;\r
+var gbNav6=false;\r
+var gbNav61=false;\r
+var gbNav7=false;\r
+var gbNav4=false;\r
+var gbIE4=false;\r
+var gbIE=false;\r
+var gbIE5=false;\r
+var gbIE55=false;\r
+var gbOpera6=false;\r
+var gbOpera7=false;\r
+var gbKonqueror3=false;\r
+\r
+var gAgent=navigator.userAgent.toLowerCase();\r
+var gbMac=(gAgent.indexOf("mac")!=-1);\r
+var gbSunOS=(gAgent.indexOf("sunos")!=-1);\r
+var gbOpera=(gAgent.indexOf("opera")!=-1);\r
+var gbKonqueror=(gAgent.indexOf("konqueror")!= -1);\r
+var gbSafari=(gAgent.indexOf("safari")!= -1);\r
+var gbWindows=((gAgent.indexOf('win')!= -1)||(gAgent.indexOf('16bit')!= -1));\r
+var gbMozilla=((gAgent.indexOf('gecko')!=-1) && (gAgent.indexOf('netscape')==-1));\r
+\r
+\r
+var gVersion=navigator.appVersion.toLowerCase();\r
+\r
+var gnVerMajor=parseInt(gVersion);\r
+var gnVerMinor=parseFloat(gVersion);\r
+\r
+if(!gbOpera&&!gbKonqueror&&!gbSafari) // opera can mimic IE or Netscape by settings.\r
+{\r
+       gbIE=(navigator.appName.indexOf("Microsoft")!=-1);\r
+       gbNav=(gAgent.indexOf('mozilla')!=-1) && ((gAgent.indexOf('spoofer')==-1) && (gAgent.indexOf('compatible')==-1));\r
+       if(gnVerMajor>=4)\r
+       {\r
+               if(navigator.appName=="Netscape")\r
+               {\r
+                       gbNav4=true;\r
+                       if(gnVerMajor>=5)\r
+                               gbNav6=true;\r
+               }\r
+               gbIE4=(navigator.appName.indexOf("Microsoft")!=-1);\r
+       }\r
+       if(gbNav6)\r
+       {\r
+               var nPos=gAgent.indexOf("gecko");\r
+               if(nPos!=-1)\r
+               {\r
+                       var nPos2=gAgent.indexOf("/", nPos);\r
+                       if(nPos2!=-1)\r
+                       {\r
+                               var nVersion=parseFloat(gAgent.substring(nPos2+1));\r
+                               if(nVersion>=20010726)\r
+                               {\r
+                                       gbNav61=true;\r
+                                       if (nVersion>=20020823)\r
+                                               gbNav7=true;\r
+                               }\r
+                       }\r
+               }\r
+       }else if(gbIE4)\r
+       {\r
+               var nPos=gAgent.indexOf("msie");\r
+               if(nPos!=-1)\r
+               {\r
+                       var nVersion=parseFloat(gAgent.substring(nPos+5));\r
+                       if(nVersion>=5)\r
+                       {\r
+                               gbIE5=true;\r
+                               if(nVersion>=5.5)\r
+                                       gbIE55=true;\r
+                       }\r
+               }\r
+       }\r
+}\r
+else if (gbOpera)\r
+{\r
+       var nPos = gAgent.indexOf("opera");\r
+       if(nPos!=-1)\r
+       {\r
+               var nVersion=parseFloat(gAgent.substring(nPos+6));\r
+               if(nVersion>=6)\r
+               {\r
+                       gbOpera6=true;\r
+                       if(nVersion>=7)\r
+                               gbOpera7=true;\r
+               }\r
+       }\r
+}\r
+else if (gbKonqueror)\r
+{\r
+       var nPos = gAgent.indexOf("konqueror");\r
+       if(nPos!=-1)\r
+       {\r
+               var nVersion = parseFloat(gAgent.substring(nPos+10));\r
+               if (nVersion >= 3)\r
+               {\r
+                       gbKonqueror3=true;\r
+               }\r
+       }\r
+}\r
+\r
+var gbWhVer=true;
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whxdata/whftdata0.xml b/doc/salome/gui/GAUSS/whxdata/whftdata0.xml
new file mode 100644 (file)
index 0000000..c1bb198
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<ftstdata>\r
+<topic name="Activation of commands display results" url="activation_of_commands_display_results.htm" />\r
+<topic name="Animation function" url="animation_function.htm" />\r
+<topic name="Cameras" url="cameras.htm" />\r
+<topic name="Command Activation" url="command_activation.htm" />\r
+<topic name="Command Activation in Display Meshes" url="command_activation_in_display_meshes.htm" />\r
+<topic name="Command Activation picking" url="command_activation_picking.htm" />\r
+<topic name="Command Activation Segmentation" url="command_activation_segmentation.htm" />\r
+<topic name="Command activation timestamps animation" url="command_activation_timestamps_animation.htm" />\r
+<topic name="Command deactivation" url="command_deactivation.htm" />\r
+<topic name="Command Description in Display Meshes" url="command_description_in_display_meshes.htm" />\r
+<topic name="Command description segmentation" url="command_description_segmentation.htm" />\r
+<topic name="Command description timestamps animation" url="command_description_timestamps_animation.htm" />\r
+<topic name="Command Result" url="command_result.htm" />\r
+<topic name="Description of commands display results" url="description_of_commands_display_results.htm" />\r
+<topic name="Description of the picking functionality" url="description_of_the_picking_functionality.htm" />\r
+<topic name="Display Meshes General" url="display_meshes_general.htm" />\r
+<topic name="Display results at Gauss Points_General" url="display_results_at_gauss_points_general.htm" />\r
+<topic name="Data Loading General" url="general.htm" />\r
+<topic name="General Navigation within the scene" url="general_navigation_within_the_scene.htm" />\r
+<topic name="General Storage of produced data" url="general_storage_of_produced_data.htm" />\r
+<topic name="General timestamps animation" url="general_timestamps_animation.htm" />\r
+<topic name="Introduction" url="index.htm" />\r
+<topic name="Loading of previously saved data" url="loading_of_previously_saved_data.htm" />\r
+<topic name="Making an AVI clip" url="making_an_avi_clip.htm" />\r
+<topic name="Managing configurations" url="managing_configurations.htm" />\r
+<topic name="Navigation using the keyboard" url="navigation_using_the_keyboard.htm" />\r
+<topic name="Navigation using the mouse" url="navigation_using_the_mouse.htm" />\r
+<topic name="Navigation using the spacemouse" url="navigation_using_the_spacemouse.htm" />\r
+<topic name="Picking General" url="picking_general.htm" />\r
+<topic name="SALOME-VISU preferences display results" url="salome-visu_preferences_display_results.htm" />\r
+<topic name="SALOME-VISU preferences" url="salome_visu_preferences.htm" />\r
+<topic name="Salome-Visu preferences Navigation within the scene" url="salome_visu_preferences_navigation_within_the_scene.htm" />\r
+<topic name="Salome-Visu preferences picking" url="salome_visu_preferences_picking.htm" />\r
+<topic name="Segmentation General" url="segmentation_general.htm" />\r
+<topic name="Specific additional commands for Fields items" url="specific_additional_commands_for_fields_items.htm" />\r
+\r
+</ftstdata>  \r
diff --git a/doc/salome/gui/GAUSS/whxdata/whfts.xml b/doc/salome/gui/GAUSS/whxdata/whfts.xml
new file mode 100644 (file)
index 0000000..9206def
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<fts>\r
+<chunkinfo url="whfwdata0.xml" first="0" last="detection"/>\r
+<chunkinfo url="whfwdata1.xml" first="development" last="nb"/>\r
+<chunkinfo url="whfwdata2.xml" first="nbrfac" last="task"/>\r
+<chunkinfo url="whfwdata3.xml" first="technical" last="zoom"/>\r
+\r
+<tchunkinfo first="0" last="34" url="whftdata0.xml" />\r
+\r
+</fts>\r
diff --git a/doc/salome/gui/GAUSS/whxdata/whfwdata0.xml b/doc/salome/gui/GAUSS/whxdata/whfwdata0.xml
new file mode 100644 (file)
index 0000000..dc599bb
--- /dev/null
@@ -0,0 +1,253 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<ftswdata>\r
+<key name="0"> 10,13,32, </key>\r
+<key name="01"> 13, </key>\r
+<key name="1"> 3,9,11,13,14,25,27, </key>\r
+<key name="10"> 9,10,13,27,29, </key>\r
+<key name="100"> 13,32, </key>\r
+<key name="11"> 13,27, </key>\r
+<key name="12"> 13, </key>\r
+<key name="13"> 13, </key>\r
+<key name="14"> 13, </key>\r
+<key name="15"> 13, </key>\r
+<key name="16"> 13, </key>\r
+<key name="16x16"> 13, </key>\r
+<key name="17"> 13, </key>\r
+<key name="18"> 13,29, </key>\r
+<key name="19"> 13, </key>\r
+<key name="2"> 1,2,9,10,12,13,14,27,31,33, </key>\r
+<key name="20"> 13, </key>\r
+<key name="200"> 13, </key>\r
+<key name="21"> 13, </key>\r
+<key name="22"> 13, </key>\r
+<key name="23"> 13, </key>\r
+<key name="24"> 13, </key>\r
+<key name="25"> 13, </key>\r
+<key name="256"> 13, </key>\r
+<key name="26"> 13, </key>\r
+<key name="27"> 34, </key>\r
+<key name="28"> 34, </key>\r
+<key name="29"> 7, </key>\r
+<key name="2d"> 13, </key>\r
+<key name="3"> 1,9,11,13,26, </key>\r
+<key name="30"> 11, </key>\r
+<key name="31"> 11, </key>\r
+<key name="32"> 23, </key>\r
+<key name="33"> 13,23, </key>\r
+<key name="34"> 26, </key>\r
+<key name="35"> 27, </key>\r
+<key name="36"> 27, </key>\r
+<key name="37"> 2, </key>\r
+<key name="38"> 2, </key>\r
+<key name="39"> 24, </key>\r
+<key name="3d"> 0,2,5,6,9,10,12,13,14,15,16,18,23,24,27,28,31,32,34, </key>\r
+<key name="4"> 0,2,9,34, </key>\r
+<key name="40"> 24, </key>\r
+<key name="41"> 24, </key>\r
+<key name="42"> 31, </key>\r
+<key name="43"> 31, </key>\r
+<key name="44"> 28, </key>\r
+<key name="45"> 28, </key>\r
+<key name="46"> 5,6, </key>\r
+<key name="47"> 14, </key>\r
+<key name="48"> 14, </key>\r
+<key name="49"> 32, </key>\r
+<key name="5"> 0,10,14, </key>\r
+<key name="50"> 13,32, </key>\r
+<key name="51"> 10, </key>\r
+<key name="512"> 13, </key>\r
+<key name="52"> 10, </key>\r
+<key name="53"> 10, </key>\r
+<key name="54"> 10, </key>\r
+<key name="55"> 10, </key>\r
+<key name="56"> 10, </key>\r
+<key name="57"> 10, </key>\r
+<key name="58"> 10, </key>\r
+<key name="59"> 10, </key>\r
+<key name="6"> 0,13,27,32, </key>\r
+<key name="60"> 10, </key>\r
+<key name="61"> 19, </key>\r
+<key name="62"> 19, </key>\r
+<key name="63"> 22, </key>\r
+<key name="7"> 0, </key>\r
+<key name="8"> 13, </key>\r
+<key name="9"> 13, </key>\r
+<key name="ability"> 10, </key>\r
+<key name="abl"> 24, </key>\r
+<key name="abscissa"> 13, </key>\r
+<key name="absolut"> 13, </key>\r
+<key name="acceptabl"> 13, </key>\r
+<key name="acces"> 16,19,30, </key>\r
+<key name="accessibl"> 0,2,3,4,15, </key>\r
+<key name="accord"> 2,10,13,24,27, </key>\r
+<key name="act"> 5,6,11, </key>\r
+<key name="action"> 4,9,24,25,26,27,28,34, </key>\r
+<key name="activ"> 5,6,10,13,14,23,24,25,27, </key>\r
+<key name="activat"> 2,5,6,7,9,10,13,23,24,28,34, </key>\r
+<key name="activation"> 0,3,4,5,6,7,8, </key>\r
+<key name="actor"> 28, </key>\r
+<key name="ad"> 0,5,6,10,16,24,27,29, </key>\r
+<key name="adapt"> 14, </key>\r
+<key name="adaptabl"> 13, </key>\r
+<key name="addition"> 9,10,14, </key>\r
+<key name="additional"> 30,29,34, </key>\r
+<key name="adjust"> 10, </key>\r
+<key name="advanc"> 1,33, </key>\r
+<key name="affect"> 9,24, </key>\r
+<key name="algorithm"> 0, </key>\r
+<key name="allow"> 1,2,3,9,11,13,15,16,19,24,28,31,32,34, </key>\r
+<key name="alon"> 9, </key>\r
+<key name="along"> 10, </key>\r
+<key name="alpha"> 13, </key>\r
+<key name="already"> 4,9,11,17,13,14,24, </key>\r
+<key name="amplify"> 13, </key>\r
+<key name="analys"> 14,34, </key>\r
+<key name="angular"> 2,31, </key>\r
+<key name="animat"> 11, </key>\r
+<key name="animation"> 1,7,11,20,23,34, </key>\r
+<key name="anoth"> 2,5,6,11,14,18,24,28, </key>\r
+<key name="any"> 2,8,23,25,26,27,28, </key>\r
+<key name="anyway"> 0, </key>\r
+<key name="ap"> 2,9,13,24, </key>\r
+<key name="apex"> 32, </key>\r
+<key name="appli"> 0,4,9,10,13,31,34, </key>\r
+<key name="applicabl"> 10,13,14,29,34, </key>\r
+<key name="application"> 9, </key>\r
+<key name="apply"> 24, </key>\r
+<key name="area"> 11,28, </key>\r
+<key name="around"> 10, </key>\r
+<key name="array"> 28, </key>\r
+<key name="assign"> 0, </key>\r
+<key name="associat"> 12,13,32, </key>\r
+<key name="attribut"> 2,5,6,24, </key>\r
+<key name="auto"> 13, </key>\r
+<key name="automatic"> 24, </key>\r
+<key name="automatical"> 10,14,19, </key>\r
+<key name="availabl"> 10,11,13,23,27,28, </key>\r
+<key name="averag"> 13, </key>\r
+<key name="avi"> 23, </key>\r
+<key name="axi"> 10,27, </key>\r
+<key name="axo"> 2, </key>\r
+<key name="back"> 2,10, </key>\r
+<key name="background"> 23, </key>\r
+<key name="backward"> 11,27, </key>\r
+<key name="bar"> 0,4,5,6,8,10,13,14,15,16,19,22,28,29, </key>\r
+<key name="bas"> 9,27,32, </key>\r
+<key name="be"> 14, </key>\r
+<key name="becom"> 14, </key>\r
+<key name="behavior"> 2, </key>\r
+<key name="behaviour"> 2,5,9,17,13,16,19,20,28,30,33, </key>\r
+<key name="below"> 10,27,32, </key>\r
+<key name="besid"> 13,33, </key>\r
+<key name="bicolor"> 13, </key>\r
+<key name="big"> 13,30, </key>\r
+<key name="bitmap"> 11, </key>\r
+<key name="black"> 13,14, </key>\r
+<key name="block"> 13, </key>\r
+<key name="blu"> 13, </key>\r
+<key name="both"> 9,10,13,14,28,32, </key>\r
+<key name="bottom"> 10,13, </key>\r
+<key name="bound"> 10, </key>\r
+<key name="boundari"> 9, </key>\r
+<key name="boundary"> 10,32, </key>\r
+<key name="box"> 3,6,10,13,24,28,33, </key>\r
+<key name="brief"> 17,16,20, </key>\r
+<key name="brightnes"> 13, </key>\r
+<key name="brows"> 0,2,3,4,7,9,12,19,22,24,28, </key>\r
+<key name="button"> 0,1,3,4,5,6,7,9,10,11,13,14,22,23,24,26,27,28,31, </key>\r
+<key name="cad"> 10, </key>\r
+<key name="cal"> 10, </key>\r
+<key name="calculation"> 16, </key>\r
+<key name="camera"> 2,13,14,18,19,24,31,32, </key>\r
+<key name="cancel"> 0,9,10,13, </key>\r
+<key name="cannot"> 13, </key>\r
+<key name="cap"> 27, </key>\r
+<key name="capabiliti"> 10,17, </key>\r
+<key name="capability"> 16,26,27, </key>\r
+<key name="car"> 2, </key>\r
+<key name="cas"> 0,2,5,6,8,9,10,13,14,23,34, </key>\r
+<key name="cel"> 13, </key>\r
+<key name="cell"> 9,28, </key>\r
+<key name="cent"> 2,14, </key>\r
+<key name="centr"> 10,14,25,26,32, </key>\r
+<key name="certain"> 2,10,25,34, </key>\r
+<key name="chang"> 2,9,10,13,14,20,24,27,31, </key>\r
+<key name="channel"> 13, </key>\r
+<key name="chapt"> 10,11,34, </key>\r
+<key name="characteristic"> 13, </key>\r
+<key name="check"> 0,5,6,11,13,14,30, </key>\r
+<key name="child"> 2,24, </key>\r
+<key name="choic"> 3,9,13, </key>\r
+<key name="choos"> 10,13,31,32, </key>\r
+<key name="chosen"> 13, </key>\r
+<key name="clamp"> 13, </key>\r
+<key name="clear"> 9,11,22, </key>\r
+<key name="click"> 0,1,2,3,4,7,14,24,30, </key>\r
+<key name="clip"> 23, </key>\r
+<key name="clockwis"> 27, </key>\r
+<key name="clos"> 9,11, </key>\r
+<key name="co"> 27, </key>\r
+<key name="code_ast"> 21, </key>\r
+<key name="collaps"> 12, </key>\r
+<key name="color"> 9,10,13,14,28, </key>\r
+<key name="colour"> 13, </key>\r
+<key name="combin"> 27,31, </key>\r
+<key name="command"> 0,2,3,4,5,6,7,8,9,10,11,12,13,15,16,19,20,22,24,26,27,30,29,34, </key>\r
+<key name="component"> 13,14, </key>\r
+<key name="comput"> 0,2,4,11,13,31, </key>\r
+<key name="computation"> 0,13, </key>\r
+<key name="concern"> 0,2,4,21, </key>\r
+<key name="config"> 24, </key>\r
+<key name="configur"> 10,31, </key>\r
+<key name="configuration"> 10,11,13,19,24,29,31,32, </key>\r
+<key name="connect"> 5,26, </key>\r
+<key name="connectivity"> 26, </key>\r
+<key name="consid"> 11,16, </key>\r
+<key name="consider"> 11,13, </key>\r
+<key name="consist"> 2,17,33, </key>\r
+<key name="contain"> 0,10, </key>\r
+<key name="content"> 10,13,23, </key>\r
+<key name="contextual"> 0,2,4,15,16, </key>\r
+<key name="continu"> 13,23, </key>\r
+<key name="control"> 10,13,23,27, </key>\r
+<key name="convenienc"> 14,28, </key>\r
+<key name="convention"> 26,33, </key>\r
+<key name="coordinat"> 0,10,14,27, </key>\r
+<key name="corn"> 32, </key>\r
+<key name="correct"> 0, </key>\r
+<key name="correspond"> 2,4,5,6,10,11,12,13,14,15,16,23,27,28,31,34, </key>\r
+<key name="could"> 0, </key>\r
+<key name="counterclockwis"> 27, </key>\r
+<key name="creat"> 2,4,10,19,22,24,25, </key>\r
+<key name="ctrl"> 25,26, </key>\r
+<key name="current"> 0,2,4,8,9,12,13,14,16,24,27,32,34, </key>\r
+<key name="cursor"> 10,13,14,19,24,32,33, </key>\r
+<key name="customiz"> 13,29,31,32, </key>\r
+<key name="cut"> 33, </key>\r
+<key name="d"> 10, </key>\r
+<key name="dat"> 1, </key>\r
+<key name="data"> 0,4,12,19,21,22,28,32,34, </key>\r
+<key name="deactivation"> 5,6,8, </key>\r
+<key name="debug"> 0, </key>\r
+<key name="decid"> 24, </key>\r
+<key name="decreas"> 25,26,27, </key>\r
+<key name="dedicat"> 0,13, </key>\r
+<key name="default"> 4,10,13,14,26,27,30,29,31, </key>\r
+<key name="defin"> 1,2,3,4,5,9,10,11,13,14,15,16,19,20,23,24,25,26,27,28,30,29,31,32,33, </key>\r
+<key name="definition"> 10,13,32, </key>\r
+<key name="deform"> 13, </key>\r
+<key name="deformation"> 13, </key>\r
+<key name="degre"> 27,31, </key>\r
+<key name="delet"> 2,9,24, </key>\r
+<key name="demand"> 30, </key>\r
+<key name="depend"> 0,10,13, </key>\r
+<key name="depth"> 10,24, </key>\r
+<key name="describ"> 2,10,11,16,18,21,28,34, </key>\r
+<key name="description"> 2,9,10,11,13,14,27,32,34, </key>\r
+<key name="design"> 13, </key>\r
+<key name="desktop"> 10, </key>\r
+<key name="detail"> 32, </key>\r
+<key name="detect"> 14,28, </key>\r
+<key name="detection"> 14, </key>\r
+\r
+</ftswdata>  \r
diff --git a/doc/salome/gui/GAUSS/whxdata/whfwdata1.xml b/doc/salome/gui/GAUSS/whxdata/whfwdata1.xml
new file mode 100644 (file)
index 0000000..f7373c9
--- /dev/null
@@ -0,0 +1,245 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<ftswdata>\r
+<key name="development"> 13, </key>\r
+<key name="diagonal"> 10, </key>\r
+<key name="dialog"> 2,3,9,10,11,13,19,22,23,24,28,29,31,32,34, </key>\r
+<key name="diamet"> 10, </key>\r
+<key name="differenc"> 13, </key>\r
+<key name="different"> 0,10,13,14,34, </key>\r
+<key name="dimension"> 13, </key>\r
+<key name="direct"> 10, </key>\r
+<key name="direction"> 10,24,25,26,27, </key>\r
+<key name="directory"> 13,22, </key>\r
+<key name="disabl"> 13,23,27,34, </key>\r
+<key name="discus"> 13, </key>\r
+<key name="disk"> 11,13,19, </key>\r
+<key name="displacement"> 2,31, </key>\r
+<key name="display"> 0,1,3,4,5,6,8,9,10,12,13,14,15,16,24,28,29,31,32,34, </key>\r
+<key name="distanc"> 2,14,24,31,32, </key>\r
+<key name="distinguish"> 9, </key>\r
+<key name="divid"> 10,13,27, </key>\r
+<key name="do"> 17,25,27,28,33, </key>\r
+<key name="dock"> 10, </key>\r
+<key name="document"> 19,22,24, </key>\r
+<key name="documentation"> 21, </key>\r
+<key name="dominant"> 27,31, </key>\r
+<key name="don"> 5,6,9,13, </key>\r
+<key name="down"> 2,27, </key>\r
+<key name="drag"> 10, </key>\r
+<key name="draw"> 9, </key>\r
+<key name="driv"> 28, </key>\r
+<key name="duplicat"> 34, </key>\r
+<key name="dynamic"> 2,13,14,25,26,27, </key>\r
+<key name="dynamical"> 13,32, </key>\r
+<key name="e"> 2,9,10,12,13, </key>\r
+<key name="edf"> 28, </key>\r
+<key name="edg"> 9,28, </key>\r
+<key name="edit"> 10,13,24,34, </key>\r
+<key name="editabl"> 13, </key>\r
+<key name="edition"> 10,13,24,34, </key>\r
+<key name="effect"> 10,13, </key>\r
+<key name="eith"> 5,6,9,12,13,28, </key>\r
+<key name="element"> 0,2,4,8,9,10,14,16,24,28, </key>\r
+<key name="els"> 13, </key>\r
+<key name="embed"> 15, </key>\r
+<key name="enabl"> 5,6, </key>\r
+<key name="end"> 10,13,28,32, </key>\r
+<key name="enhancement"> 17, </key>\r
+<key name="ensur"> 2, </key>\r
+<key name="entiti"> 0,12,15, </key>\r
+<key name="entri"> 4, </key>\r
+<key name="entry"> 0,2,24, </key>\r
+<key name="environment"> 13, </key>\r
+<key name="equal"> 10,13, </key>\r
+<key name="equivalent"> 9,34, </key>\r
+<key name="eras"> 5,6,8,9,10,14,24, </key>\r
+<key name="establish"> 33, </key>\r
+<key name="even"> 24, </key>\r
+<key name="exampl"> 10, </key>\r
+<key name="exceed"> 13, </key>\r
+<key name="except"> 8, </key>\r
+<key name="execut"> 19, </key>\r
+<key name="exist"> 0,9,17,13,16,24,28, </key>\r
+<key name="exit"> 8,9,10,11,13, </key>\r
+<key name="expand"> 12, </key>\r
+<key name="expect"> 10, </key>\r
+<key name="expectation"> 28, </key>\r
+<key name="explain"> 5,10,17,13,20, </key>\r
+<key name="explanation"> 11,26, </key>\r
+<key name="explod"> 9, </key>\r
+<key name="extend"> 1,9,20,34, </key>\r
+<key name="extension"> 13, </key>\r
+<key name="extra"> 26, </key>\r
+<key name="fac"> 13,28, </key>\r
+<key name="factor"> 13, </key>\r
+<key name="famili"> 0,4,9,34, </key>\r
+<key name="far"> 13, </key>\r
+<key name="featur"> 13, </key>\r
+<key name="few"> 9,30,29, </key>\r
+<key name="field"> 0,1,7,11,28,34, </key>\r
+<key name="fig"> 0,2,3,5,6,7,9,10,11,12,13,14,19,22,23,24,26,27,28,29,31,32,34, </key>\r
+<key name="figur"> 2, </key>\r
+<key name="fil"> 0,2,3,4,11,12,13,19,22,23,30, </key>\r
+<key name="filt"> 13,28,31, </key>\r
+<key name="final"> 2,13, </key>\r
+<key name="first"> 0,10,11,17,13,14,19,23,32, </key>\r
+<key name="fix"> 13,32, </key>\r
+<key name="flyto"> 31, </key>\r
+<key name="focal"> 2,14,24,25,26,31,32, </key>\r
+<key name="focu"> 2,14, </key>\r
+<key name="follow"> 2,8,10,11,13,14,20,23,24,25,26,27,28,31,32,33,34, </key>\r
+<key name="font"> 13, </key>\r
+<key name="forth"> 13, </key>\r
+<key name="forward"> 11,27, </key>\r
+<key name="found"> 13, </key>\r
+<key name="fram"> 1,9,10,11,13,20,24,26, </key>\r
+<key name="fre"> 24,26,31, </key>\r
+<key name="freedom"> 27, </key>\r
+<key name="front"> 2,10, </key>\r
+<key name="ful"> 16,28,30, </key>\r
+<key name="full"> 30, </key>\r
+<key name="function"> 1,8,10,13,20,28,31,32,33,34, </key>\r
+<key name="functionality"> 2,5,6,9,10,14,15,16,20,21,23,28,32, </key>\r
+<key name="futur"> 10, </key>\r
+<key name="gaus"> 0,1,5,6,8,10,17,13,14,16,20,21,24,27,28,29,31,32,33,34, </key>\r
+<key name="general"> 17,15,16,18,20,28,33, </key>\r
+<key name="generat"> 11,32, </key>\r
+<key name="geometrical"> 10,13, </key>\r
+<key name="geometry"> 0,13,28, </key>\r
+<key name="giv"> 0,31, </key>\r
+<key name="given"> 13,34, </key>\r
+<key name="global"> 13, </key>\r
+<key name="glyph"> 10, </key>\r
+<key name="go"> 0,11,18,30, </key>\r
+<key name="graphic"> 13,14,18,28, </key>\r
+<key name="graphical"> 4,10,21,28, </key>\r
+<key name="great"> 13, </key>\r
+<key name="grey"> 13, </key>\r
+<key name="group"> 4,9,23,34, </key>\r
+<key name="gui"> 11,16,21,23, </key>\r
+<key name="half"> 13,33, </key>\r
+<key name="handl"> 17, </key>\r
+<key name="hardwar"> 13, </key>\r
+<key name="hdf"> 19,22, </key>\r
+<key name="head"> 27, </key>\r
+<key name="height"> 13,32, </key>\r
+<key name="her"> 17,13,16, </key>\r
+<key name="hierarchical"> 12, </key>\r
+<key name="hierarchy"> 3, </key>\r
+<key name="high"> 13, </key>\r
+<key name="highlight"> 10,14,24,28, </key>\r
+<key name="him"> 0, </key>\r
+<key name="homothetic"> 9, </key>\r
+<key name="horizontal"> 13, </key>\r
+<key name="how"> 17,18,20, </key>\r
+<key name="i"> 2,9,10,12,13,14, </key>\r
+<key name="icon"> 2,5,6, </key>\r
+<key name="id"> 14, </key>\r
+<key name="if"> 0,4,8,11,13,14,24,32, </key>\r
+<key name="ii"> 14, </key>\r
+<key name="immediate"> 10,13, </key>\r
+<key name="implement"> 5,6,9,23,32, </key>\r
+<key name="implementation"> 32, </key>\r
+<key name="import"> 3, </key>\r
+<key name="improvement"> 10, </key>\r
+<key name="inactiv"> 13, </key>\r
+<key name="includ"> 9,13, </key>\r
+<key name="incorrect"> 0, </key>\r
+<key name="increas"> 14,25,26,27, </key>\r
+<key name="increment"> 25,27,31, </key>\r
+<key name="incremental"> 24, </key>\r
+<key name="independent"> 24,27, </key>\r
+<key name="individual"> 14, </key>\r
+<key name="info"> 5,28,34, </key>\r
+<key name="inform"> 0,14, </key>\r
+<key name="information"> 8,10,13,14,16,19,28,32, </key>\r
+<key name="initial"> 2, </key>\r
+<key name="input"> 2,9,24, </key>\r
+<key name="insid"> 9,10, </key>\r
+<key name="insidefram"> 9, </key>\r
+<key name="inspect"> 10,13,14,33, </key>\r
+<key name="integ"> 24, </key>\r
+<key name="intend"> 10, </key>\r
+<key name="intensity"> 13, </key>\r
+<key name="interfac"> 21, </key>\r
+<key name="intermediary"> 31, </key>\r
+<key name="interpolat"> 2, </key>\r
+<key name="introduc"> 24,26,27,34, </key>\r
+<key name="introduction"> 21, </key>\r
+<key name="item"> 0,2,4,5,6,9,14,24,28,34, </key>\r
+<key name="keep"> 19, </key>\r
+<key name="kept"> 2,9,11, </key>\r
+<key name="key"> 10,13,14,25,26,27,31, </key>\r
+<key name="keyboard"> 10,13,14,18,25,26,27,31, </key>\r
+<key name="kind"> 31, </key>\r
+<key name="known"> 16, </key>\r
+<key name="label"> 13, </key>\r
+<key name="largest"> 13, </key>\r
+<key name="last"> 13,24, </key>\r
+<key name="latest"> 0, </key>\r
+<key name="latitud"> 13, </key>\r
+<key name="launch"> 11, </key>\r
+<key name="left"> 2,5,6,10,13,14,27,28,32, </key>\r
+<key name="length"> 13,32, </key>\r
+<key name="let"> 0, </key>\r
+<key name="level"> 2,34, </key>\r
+<key name="lik"> 0,9, </key>\r
+<key name="limit"> 13, </key>\r
+<key name="lin"> 9,13,14, </key>\r
+<key name="linear"> 9,13, </key>\r
+<key name="list"> 9,11, </key>\r
+<key name="load"> 4,12,13,15,22,30, </key>\r
+<key name="local"> 13,27, </key>\r
+<key name="locat"> 2,10,13, </key>\r
+<key name="location"> 10,13,19, </key>\r
+<key name="logical"> 12, </key>\r
+<key name="longitud"> 13, </key>\r
+<key name="look"> 13, </key>\r
+<key name="lot"> 1,11,13, </key>\r
+<key name="low"> 10, </key>\r
+<key name="m"> 13, </key>\r
+<key name="magnification"> 13,27,31, </key>\r
+<key name="main"> 2,5,9,10,13,23,24, </key>\r
+<key name="mak"> 23, </key>\r
+<key name="manag"> 23,24,27, </key>\r
+<key name="manual"> 10, </key>\r
+<key name="mark"> 5,6,8,14, </key>\r
+<key name="marker"> 13, </key>\r
+<key name="matrix"> 13, </key>\r
+<key name="max"> 13, </key>\r
+<key name="maximum"> 13, </key>\r
+<key name="mb1"> 26, </key>\r
+<key name="mb2"> 26, </key>\r
+<key name="mb3"> 26, </key>\r
+<key name="mean"> 13, </key>\r
+<key name="memoriz"> 24, </key>\r
+<key name="memory"> 11,30, </key>\r
+<key name="menu"> 0,1,2,3,4,5,6,7,9,11,14,15,16,19,22,24,28,30,29,32,34, </key>\r
+<key name="mesh"> 0,4,8,9,10,13,14,15,16,19,28,33, </key>\r
+<key name="messag"> 0,13, </key>\r
+<key name="millimetr"> 31, </key>\r
+<key name="min"> 13, </key>\r
+<key name="minimum"> 10,13, </key>\r
+<key name="mm"> 10, </key>\r
+<key name="mod"> 0,4,9,11,13,14,16,23,29,34, </key>\r
+<key name="model"> 0,27, </key>\r
+<key name="modeles"> 9,11, </key>\r
+<key name="modifi"> 0,2,17,13,14,16,31,32, </key>\r
+<key name="modification"> 13,14,19, </key>\r
+<key name="modify"> 0,10,13,15,34, </key>\r
+<key name="modul"> 3,9,17,15,16,30,29,33, </key>\r
+<key name="modulu"> 13, </key>\r
+<key name="mous"> 0,1,2,4,7,10,14,18,24,26,28,31, </key>\r
+<key name="mov"> 0,10,11,13,14,27,28,31, </key>\r
+<key name="movement"> 2,14,18,25,26,27,31,32, </key>\r
+<key name="multip"> 10,13,27, </key>\r
+<key name="multipli"> 10,13,32, </key>\r
+<key name="mutual"> 22, </key>\r
+<key name="my"> 10, </key>\r
+<key name="n"> 13, </key>\r
+<key name="nam"> 2,9,12,14,19,24,33, </key>\r
+<key name="navigat"> 18,24,25,27,31, </key>\r
+<key name="navigation"> 12,13,24,25,26,27,31, </key>\r
+<key name="nb"> 13, </key>\r
+\r
+</ftswdata>  \r
diff --git a/doc/salome/gui/GAUSS/whxdata/whfwdata2.xml b/doc/salome/gui/GAUSS/whxdata/whfwdata2.xml
new file mode 100644 (file)
index 0000000..71592bf
--- /dev/null
@@ -0,0 +1,244 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<ftswdata>\r
+<key name="nbrfac"> 13, </key>\r
+<key name="ne"> 17, </key>\r
+<key name="necessity"> 13, </key>\r
+<key name="need"> 30,32, </key>\r
+<key name="negativ"> 13, </key>\r
+<key name="nev"> 4,13, </key>\r
+<key name="nevertheles"> 13, </key>\r
+<key name="new"> 0,2,5,6,9,10,13,16,19,22,24,26,27,28,29,33,34, </key>\r
+<key name="next"> 4,10,11,14,16, </key>\r
+<key name="nod"> 2,9,12,16,24,28, </key>\r
+<key name="normal"> 10, </key>\r
+<key name="not"> 0,5,6,9,10,13,14,16,24,27, </key>\r
+<key name="noth"> 12, </key>\r
+<key name="notification"> 0,13, </key>\r
+<key name="notify"> 13, </key>\r
+<key name="nth"> 13,14, </key>\r
+<key name="null"> 13, </key>\r
+<key name="numb"> 2,10,13,31,34, </key>\r
+<key name="object"> 28, </key>\r
+<key name="objectiv"> 17, </key>\r
+<key name="occur"> 14, </key>\r
+<key name="ok"> 9,13, </key>\r
+<key name="on"> 0,2,7,9,10,11,13,14,16,18,23,29,31, </key>\r
+<key name="onc"> 9,10,13,14,22,30, </key>\r
+<key name="opacity"> 9, </key>\r
+<key name="opaqu"> 32, </key>\r
+<key name="open"> 2,3,7,9,10,11,13,19,22,24,28, </key>\r
+<key name="opengl"> 10,13, </key>\r
+<key name="operation"> 0,13, </key>\r
+<key name="optimisation"> 32, </key>\r
+<key name="optimiz"> 30, </key>\r
+<key name="option"> 0,1,2,4,5,6,7,9,13,14,19,30,29,34, </key>\r
+<key name="ord"> 23, </key>\r
+<key name="ordinat"> 13,27, </key>\r
+<key name="orientation"> 2,10,13, </key>\r
+<key name="origin"> 10,13,24, </key>\r
+<key name="out"> 0,10, </key>\r
+<key name="output"> 23, </key>\r
+<key name="outsid"> 10, </key>\r
+<key name="own"> 23, </key>\r
+<key name="º"> 3,5,6,19,22,28,30,29,31,32, </key>\r
+<key name="p"> 14, </key>\r
+<key name="pagedn"> 25, </key>\r
+<key name="pageup"> 25, </key>\r
+<key name="palet"> 13, </key>\r
+<key name="pan"> 25,26,27,31, </key>\r
+<key name="paragraph"> 2,4,13,16,28, </key>\r
+<key name="paramet"> 2,13,31,32, </key>\r
+<key name="parameter"> 2,10,13,24,30,29,32,34, </key>\r
+<key name="parameterisation"> 10, </key>\r
+<key name="parameteriz"> 13, </key>\r
+<key name="parent"> 8,14, </key>\r
+<key name="part"> 10,13, </key>\r
+<key name="path"> 2, </key>\r
+<key name="pathnam"> 19, </key>\r
+<key name="paus"> 23, </key>\r
+<key name="pc"> 3, </key>\r
+<key name="percentag"> 10, </key>\r
+<key name="perfect"> 10, </key>\r
+<key name="perform"> 8,13,23, </key>\r
+<key name="persistenc"> 2,24, </key>\r
+<key name="physical"> 30, </key>\r
+<key name="pick"> 2,5,6,8,10,14,24,28,32,34, </key>\r
+<key name="pictur"> 10, </key>\r
+<key name="pixel"> 13, </key>\r
+<key name="plan"> 6,10,33, </key>\r
+<key name="play"> 11,23, </key>\r
+<key name="plu"> 13, </key>\r
+<key name="point"> 0,1,2,5,6,8,9,10,17,13,14,16,18,20,21,24,25,26,27,28,29,31,32,33,34, </key>\r
+<key name="pointer"> 31, </key>\r
+<key name="populat"> 12, </key>\r
+<key name="popup"> 0,1,2,4,5,6,7,9,11,14,15,16,24,28,34, </key>\r
+<key name="position"> 2,14,24,31,32, </key>\r
+<key name="positiv"> 13, </key>\r
+<key name="possib"> 14, </key>\r
+<key name="possibility"> 0,10,13,14, </key>\r
+<key name="possibl"> 0,4,5,6,10,12,13,14,23,28,32,34, </key>\r
+<key name="post"> 2,24,30,29,31,32, </key>\r
+<key name="pr"> 2,10,14,28, </key>\r
+<key name="predefin"> 2,10, </key>\r
+<key name="preferenc"> 2,13,27,30,29,31,32, </key>\r
+<key name="pres"> 3,5,6,9,10,12,13,22,23,28, </key>\r
+<key name="present"> 13,16, </key>\r
+<key name="presentation"> 0,4,5,6,9,10,11,13,14,16,24,28,29,34, </key>\r
+<key name="previou"> 2,10,13, </key>\r
+<key name="previous"> 22,23,25, </key>\r
+<key name="primitiv"> 10,13,14,29, </key>\r
+<key name="pro"> 2,24,30,29,31,32, </key>\r
+<key name="proces"> 12,13,16, </key>\r
+<key name="produc"> 14, </key>\r
+<key name="progres"> 13, </key>\r
+<key name="progression"> 13, </key>\r
+<key name="project"> 2,9,10,13,16,20,24,26, </key>\r
+<key name="prompt"> 13, </key>\r
+<key name="properti"> 9,11,13,15, </key>\r
+<key name="property"> 9, </key>\r
+<key name="propos"> 4,9,10,23,24, </key>\r
+<key name="provid"> 2,5,6,10,19,22,25,27,31, </key>\r
+<key name="pseudo"> 34, </key>\r
+<key name="publish"> 19, </key>\r
+<key name="pull"> 27, </key>\r
+<key name="purpos"> 0,2,9,13,16,24,34, </key>\r
+<key name="push"> 23,27, </key>\r
+<key name="pyramid"> 14,32, </key>\r
+<key name="quadrangular"> 9, </key>\r
+<key name="quadratic"> 9, </key>\r
+<key name="quality"> 33, </key>\r
+<key name="quit"> 13, </key>\r
+<key name="radiu"> 10, </key>\r
+<key name="rainbow"> 13, </key>\r
+<key name="rang"> 11,13, </key>\r
+<key name="ratio"> 10,13,25,26,27,32, </key>\r
+<key name="read"> 13, </key>\r
+<key name="real"> 2,9,10,13, </key>\r
+<key name="realiz"> 2,9,24, </key>\r
+<key name="recommend"> 30, </key>\r
+<key name="record"> 11,23, </key>\r
+<key name="red"> 13, </key>\r
+<key name="redefin"> 2,9,24,28, </key>\r
+<key name="redisplay"> 28, </key>\r
+<key name="referenc"> 13, </key>\r
+<key name="refin"> 13,29, </key>\r
+<key name="refresh"> 28, </key>\r
+<key name="regard"> 13, </key>\r
+<key name="register"> 2,24, </key>\r
+<key name="regular"> 13, </key>\r
+<key name="relat"> 9,28, </key>\r
+<key name="releas"> 5,6, </key>\r
+<key name="remain"> 2,5,6,13, </key>\r
+<key name="remark"> 9, </key>\r
+<key name="remind"> 5,6,17, </key>\r
+<key name="remov"> 2,8,9,24, </key>\r
+<key name="renam"> 2,9,19,24, </key>\r
+<key name="rend"> 13, </key>\r
+<key name="render"> 10,13, </key>\r
+<key name="represent"> 9, </key>\r
+<key name="representation"> 4,9, </key>\r
+<key name="representativ"> 13, </key>\r
+<key name="request"> 23, </key>\r
+<key name="requir"> 0,13, </key>\r
+<key name="resolution"> 13, </key>\r
+<key name="resourc"> 15, </key>\r
+<key name="resp"> 13,24,25, </key>\r
+<key name="respective"> 10,13,27, </key>\r
+<key name="restor"> 2,24, </key>\r
+<key name="result"> 0,1,8,10,12,13,14,16,19,20,28,29,33,34, </key>\r
+<key name="retriev"> 2,24, </key>\r
+<key name="revers"> 14, </key>\r
+<key name="reversib"> 5,6,16,30, </key>\r
+<key name="right"> 0,1,2,4,7,10,13,24,27, </key>\r
+<key name="root"> 24, </key>\r
+<key name="rotat"> 10,27, </key>\r
+<key name="rotation"> 2,14,25,26,27,31, </key>\r
+<key name="rough"> 13, </key>\r
+<key name="run"> 19,20, </key>\r
+<key name="s"> 14, </key>\r
+<key name="salom"> 2,3,17,14,15,16,19,20,21,22,24,25,26,27,28,30,29,31,32,33, </key>\r
+<key name="salomed"> 2,24, </key>\r
+<key name="sam"> 2,9,10,13,14,23,24,27,29,34, </key>\r
+<key name="sampl"> 14, </key>\r
+<key name="sat"> 23, </key>\r
+<key name="satisfy"> 23, </key>\r
+<key name="sav"> 2,11,19,22, </key>\r
+<key name="scal"> 13, </key>\r
+<key name="scalar"> 0,8,10,13,14,29, </key>\r
+<key name="scen"> 2,10,13,18,23,25,27,31, </key>\r
+<key name="scop"> 0,10, </key>\r
+<key name="screen"> 27, </key>\r
+<key name="se"> 2,6,8,10,11,12,13,24,28,32, </key>\r
+<key name="search"> 32, </key>\r
+<key name="second"> 0,5,10,11,17,13, </key>\r
+<key name="section"> 13,18,20,32, </key>\r
+<key name="seen"> 2,13, </key>\r
+<key name="segment"> 23, </key>\r
+<key name="segmentation"> 5,6,10,13,19,23,24,33, </key>\r
+<key name="select"> 0,2,4,8,11,13,14,22,24,28,32,34, </key>\r
+<key name="selection"> 2,3,4,5,6,10,11,14,24,28,34, </key>\r
+<key name="semi"> 10,14, </key>\r
+<key name="separate"> 23, </key>\r
+<key name="session"> 19,22,23,24,25,27,30, </key>\r
+<key name="set"> 9,10,13,14, </key>\r
+<key name="setting"> 2, </key>\r
+<key name="setup"> 11, </key>\r
+<key name="shad"> 9,13,28, </key>\r
+<key name="shap"> 13, </key>\r
+<key name="should"> 0,23, </key>\r
+<key name="show"> 10,11,13,14,20, </key>\r
+<key name="shown"> 2, </key>\r
+<key name="shrink"> 9, </key>\r
+<key name="sid"> 5,6,13, </key>\r
+<key name="similar"> 13,16, </key>\r
+<key name="simpl"> 2,13,33, </key>\r
+<key name="simplify"> 26, </key>\r
+<key name="simultaneous"> 10,13, </key>\r
+<key name="sinc"> 5,6,28, </key>\r
+<key name="situation"> 2,14, </key>\r
+<key name="six"> 14, </key>\r
+<key name="siz"> 10,13, </key>\r
+<key name="skin"> 9, </key>\r
+<key name="slid"> 9, </key>\r
+<key name="slow"> 2, </key>\r
+<key name="smallest"> 13, </key>\r
+<key name="smesh"> 9,33, </key>\r
+<key name="smooth"> 2,14, </key>\r
+<key name="so"> 9,11,13,23,30,32,33, </key>\r
+<key name="spac"> 13,33, </key>\r
+<key name="spacemous"> 13,18,27,31, </key>\r
+<key name="spe"> 11,25,27,31, </key>\r
+<key name="spec"> 11, </key>\r
+<key name="specific"> 2,14,34, </key>\r
+<key name="specification"> 0,13,16, </key>\r
+<key name="spher"> 6,10,13,33, </key>\r
+<key name="sprit"> 10,13,32, </key>\r
+<key name="stamp"> 0,13,28, </key>\r
+<key name="standard"> 2,9,10,17,13,15,19,20,24,26,28,31,34, </key>\r
+<key name="star"> 27, </key>\r
+<key name="start"> 12,23, </key>\r
+<key name="stat"> 2,23, </key>\r
+<key name="step"> 2,13,31, </key>\r
+<key name="still"> 12, </key>\r
+<key name="stop"> 11,23, </key>\r
+<key name="stor"> 2,19,24, </key>\r
+<key name="storag"> 19, </key>\r
+<key name="structur"> 12,13,22,32, </key>\r
+<key name="study"> 2,7,9,12,19,22,24,30, </key>\r
+<key name="sub"> 0,4,9, </key>\r
+<key name="suggest"> 13, </key>\r
+<key name="suitabl"> 28, </key>\r
+<key name="support"> 0,17,25,26,27, </key>\r
+<key name="surfac"> 9, </key>\r
+<key name="surfacefram"> 9, </key>\r
+<key name="sweep"> 29,34, </key>\r
+<key name="switch"> 27, </key>\r
+<key name="synchroniz"> 13, </key>\r
+<key name="system"> 0,2,8,13,27, </key>\r
+<key name="systematical"> 13, </key>\r
+<key name="tab"> 10,13, </key>\r
+<key name="tak"> 2, </key>\r
+<key name="taken"> 13, </key>\r
+<key name="task"> 8,23, </key>\r
+\r
+</ftswdata>  \r
diff --git a/doc/salome/gui/GAUSS/whxdata/whfwdata3.xml b/doc/salome/gui/GAUSS/whxdata/whfwdata3.xml
new file mode 100644 (file)
index 0000000..121414a
--- /dev/null
@@ -0,0 +1,88 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<ftswdata>\r
+<key name="technical"> 13, </key>\r
+<key name="tensor"> 13, </key>\r
+<key name="term"> 24, </key>\r
+<key name="text"> 13, </key>\r
+<key name="textur"> 13, </key>\r
+<key name="them"> 24,27, </key>\r
+<key name="therefor"> 0,10,13,24, </key>\r
+<key name="thos"> 23, </key>\r
+<key name="thought"> 13, </key>\r
+<key name="thre"> 10,13,23, </key>\r
+<key name="threshold"> 13, </key>\r
+<key name="thu"> 5,6,13,14,25,27, </key>\r
+<key name="till"> 10, </key>\r
+<key name="tilt"> 27, </key>\r
+<key name="tim"> 0,9,10,12,13,14,19,23,24,25,27,28,34, </key>\r
+<key name="timestamp"> 1,5,6,11,20,24, </key>\r
+<key name="toggl"> 5,6,9,14,27,30, </key>\r
+<key name="toolbar"> 0,4,5,6,10,15,16,23, </key>\r
+<key name="top"> 2,10,32, </key>\r
+<key name="total"> 13, </key>\r
+<key name="touch"> 32, </key>\r
+<key name="transformation"> 2,9, </key>\r
+<key name="translation"> 0,10,25,26,31, </key>\r
+<key name="transparency"> 9,13,32, </key>\r
+<key name="transparent"> 10,14,32, </key>\r
+<key name="tre"> 0,2,4,7,12,19,24,34, </key>\r
+<key name="triangl"> 9, </key>\r
+<key name="twic"> 13, </key>\r
+<key name="twist"> 27, </key>\r
+<key name="two"> 0,2,9,10,11,13,14, </key>\r
+<key name="typ"> 18,31, </key>\r
+<key name="unchang"> 13, </key>\r
+<key name="uncheck"> 30, </key>\r
+<key name="underly"> 32, </key>\r
+<key name="understand"> 2,10,13, </key>\r
+<key name="understood"> 0,31, </key>\r
+<key name="uniqu"> 4,10,13, </key>\r
+<key name="unit"> 9,13, </key>\r
+<key name="unselect"> 8,14, </key>\r
+<key name="unshrink"> 9, </key>\r
+<key name="up"> 10,13,22,27, </key>\r
+<key name="updat"> 6,10,12,13,14,19,24, </key>\r
+<key name="us"> 0,1,2,3,4,5,6,8,9,10,11,13,14,15,16,18,19,21,22,23,24,25,26,27,28,29,31,32,34, </key>\r
+<key name="usag"> 30, </key>\r
+<key name="v"> 10, </key>\r
+<key name="validat"> 3,13, </key>\r
+<key name="validation"> 12, </key>\r
+<key name="valu"> 0,9,10,13,14,31,32,34, </key>\r
+<key name="variabl"> 10,11,13,24, </key>\r
+<key name="vector"> 0,13, </key>\r
+<key name="version"> 1, </key>\r
+<key name="vertex"> 13, </key>\r
+<key name="vertical"> 13, </key>\r
+<key name="very"> 13, </key>\r
+<key name="video"> 14,23, </key>\r
+<key name="view"> 0,1,2,5,6,9,10,12,13,14,15,16,18,21,23,24,27,28,32,34, </key>\r
+<key name="visibl"> 10,13,19, </key>\r
+<key name="visu"> 0,3,17,13,14,15,16,25,27,30,29,31,32,33,34, </key>\r
+<key name="visualiz"> 16, </key>\r
+<key name="visualization"> 0, </key>\r
+<key name="volum"> 28, </key>\r
+<key name="vtk"> 13,23,31, </key>\r
+<key name="vtkpointlocator"> 32, </key>\r
+<key name="vtkpointpick"> 32, </key>\r
+<key name="vtkrenderwindowinteractor"> 31, </key>\r
+<key name="want"> 11,23, </key>\r
+<key name="way"> 2,13,14,15,16,19,20,23,24,25,27,34, </key>\r
+<key name="well"> 13, </key>\r
+<key name="whatev"> 13, </key>\r
+<key name="wheth"> 0, </key>\r
+<key name="whol"> 0,13, </key>\r
+<key name="width"> 9,13, </key>\r
+<key name="will"> 0,1,2,5,6,9,10,17,13,16,19,20,23,24,25,26,27,28,29,32,34, </key>\r
+<key name="window"> 8,10,14,32, </key>\r
+<key name="wirefram"> 9,14, </key>\r
+<key name="within"> 10,12,13,14,15,18,19,22,24,25,27,31, </key>\r
+<key name="without"> 2,8,14,19,24, </key>\r
+<key name="work"> 17, </key>\r
+<key name="written"> 13, </key>\r
+<key name="x"> 13,14,24,27, </key>\r
+<key name="y"> 13,27, </key>\r
+<key name="yet"> 4,12,14, </key>\r
+<key name="z"> 27, </key>\r
+<key name="zoom"> 13,14,25,26,27,31,32, </key>\r
+\r
+</ftswdata>  \r
diff --git a/doc/salome/gui/GAUSS/whxdata/whglo.xml b/doc/salome/gui/GAUSS/whxdata/whglo.xml
new file mode 100644 (file)
index 0000000..3866c5b
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<glossary>\r
+\r
+</glossary>
\ No newline at end of file
diff --git a/doc/salome/gui/GAUSS/whxdata/whidx.xml b/doc/salome/gui/GAUSS/whxdata/whidx.xml
new file mode 100644 (file)
index 0000000..ac66bb9
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<index>\r
+\r
+</index>\r
diff --git a/doc/salome/gui/GAUSS/whxdata/whtdata0.xml b/doc/salome/gui/GAUSS/whxdata/whtdata0.xml
new file mode 100644 (file)
index 0000000..94002f0
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<tocdata>\r
+<book name="Introduction to Gauss Points Viewer" >\r
+  <item name="Introduction" url="index.htm" />\r
+</book>\r
+<book name=" Loading of data" >\r
+  <item name="General" url="general.htm" />\r
+  <item name="Command Activation" url="command_activation.htm" />\r
+  <item name="Command Result" url="command_result.htm" />\r
+  <item name="Salome-Visu preferences" url="salome_visu_preferences.htm" />\r
+</book>\r
+<book name="Display of meshes and mesh groups " >\r
+  <item name="General" url="display_meshes_general.htm" />\r
+  <item name="Activation of commands" url="command_activation_in_display_meshes.htm" />\r
+  <item name="Description of commands" url="command_description_in_display_meshes.htm" />\r
+</book>\r
+<book name="Display results at Gauss points" >\r
+  <item name="General" url="display_results_at_gauss_points_general.htm" />\r
+  <item name="Activation of commands" url="activation_of_commands_display_results.htm" />\r
+  <item name="Description of commands" url="description_of_commands_display_results.htm" />\r
+  <item name="Specific additional commands for Fields items" url="specific_additional_commands_for_fields_items.htm" />\r
+  <item name="Animation function" url="animation_function.htm" />\r
+  <item name="Salome-Visu preferences" url="salome-visu_preferences_display_results.htm" />\r
+</book>\r
+<book name="Timestamps animation" >\r
+  <item name="General" url="general_timestamps_animation.htm" />\r
+  <item name="Command activation" url="command_activation_timestamps_animation.htm" />\r
+  <item name="Command description" url="command_description_timestamps_animation.htm" />\r
+</book>\r
+<book name="Making an AVI clip" >\r
+  <item name="Making an AVI clip" url="making_an_avi_clip.htm" />\r
+</book>\r
+<book name="Navigation within the scene" >\r
+  <item name="General" url="general_navigation_within_the_scene.htm" />\r
+  <item name="Navigation using the mouse" url="navigation_using_the_mouse.htm" />\r
+  <item name="Navigation using the keyboard" url="navigation_using_the_keyboard.htm" />\r
+  <item name="Navigation using the spacemouse" url="navigation_using_the_spacemouse.htm" />\r
+  <item name="Cameras" url="cameras.htm" />\r
+  <item name="Managing configurations" url="managing_configurations.htm" />\r
+  <item name="Salome-Visu preferences" url="salome_visu_preferences_navigation_within_the_scene.htm" />\r
+</book>\r
+<book name="Picking" >\r
+  <item name="General" url="picking_general.htm" />\r
+  <item name="Command activation" url="command_activation_picking.htm" />\r
+  <item name="Description of the picking functionality" url="description_of_the_picking_functionality.htm" />\r
+  <item name="Command deactivation" url="command_deactivation.htm" />\r
+  <item name="Salome-Visu preferences" url="salome_visu_preferences_picking.htm" />\r
+</book>\r
+<book name="Segmentation" >\r
+  <item name="General" url="segmentation_general.htm" />\r
+  <item name="Command Activation" url="command_activation_segmentation.htm" />\r
+  <item name="Command description" url="command_description_segmentation.htm" />\r
+</book>\r
+<book name="Storage of produced data" >\r
+  <item name="Saving data" url="general_storage_of_produced_data.htm" />\r
+</book>\r
+<book name="Loading of previously saved data" >\r
+  <item name="Loading previously saved data" url="loading_of_previously_saved_data.htm" />\r
+</book>\r
+\r
+</tocdata>\r
diff --git a/doc/salome/gui/GAUSS/whxdata/whtoc.xml b/doc/salome/gui/GAUSS/whxdata/whtoc.xml
new file mode 100644 (file)
index 0000000..a271ba7
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<toc root="whtdata0.xml">\r
+\r
+</toc>\r
index e03160f157d2f37ede3d4a85ed68f87adfe27f70..805d892e822bf039ba874f2a82ad822a3a51637d 100644 (file)
@@ -16,6 +16,7 @@ VPATH=.:@srcdir@
 
 docs:
        cp -fr $(srcdir)/VISU ./
+       cp -fr $(srcdir)/GAUSS ./
        -find $(PWD) -name CVS -exec rm -rf {} \;
 
 clean:
@@ -23,11 +24,14 @@ clean:
 
 distclean: clean
        rm -fr VISU
+       rm -fr GAUSS
 
 install:
        mkdir -p $(docdir)/gui
        cp -rf VISU $(docdir)/gui
+       cp -rf GAUSS $(docdir)/gui
        -find $(PWD) -name CVS -exec rm -rf {} \;
 
 uninstall:
        rm -rf $(docdir)/gui/VISU
+       rm -rf $(docdir)/gui/GAUSS
index e4d7a67d73a166c093cdd1f76670cec6ee365e94..41139fc80ea295c08a021b32fcc2dd6864ce95c1 100755 (executable)
@@ -1,73 +1,89 @@
-# Doxyfile 1.3-rc1
+# Doxyfile 1.3.7
 
 #---------------------------------------------------------------------------
-# General configuration options
+# Project related configuration options
 #---------------------------------------------------------------------------
 PROJECT_NAME           = "SALOME - VISU - v.3.1.0"
 PROJECT_NUMBER         = id#1.1
 OUTPUT_DIRECTORY       = ../
+CREATE_SUBDIRS         = NO
 OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = NO
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = 
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = NO
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 5
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = YES
+SUBGROUPING            = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
 EXTRACT_ALL            = YES
 EXTRACT_PRIVATE        = YES
 EXTRACT_STATIC         = YES
 EXTRACT_LOCAL_CLASSES  = YES
-HIDE_UNDOC_MEMBERS     = NO
-HIDE_UNDOC_CLASSES     = NO
+EXTRACT_LOCAL_METHODS  = NO
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
 HIDE_FRIEND_COMPOUNDS  = NO
 HIDE_IN_BODY_DOCS      = NO
-BRIEF_MEMBER_DESC      = YES
-REPEAT_BRIEF           = NO
-ALWAYS_DETAILED_SEC    = YES
-INLINE_INHERITED_MEMB  = YES
-FULL_PATH_NAMES        = NO
-STRIP_FROM_PATH        = 
 INTERNAL_DOCS          = YES
 CASE_SENSE_NAMES       = YES
-SHORT_NAMES            = NO
 HIDE_SCOPE_NAMES       = NO
-VERBATIM_HEADERS       = YES
 SHOW_INCLUDE_FILES     = YES
-JAVADOC_AUTOBRIEF      = YES
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP         = NO
-INHERIT_DOCS           = YES
 INLINE_INFO            = YES
 SORT_MEMBER_DOCS       = NO
-DISTRIBUTE_GROUP_DOC   = NO
-TAB_SIZE               = 5
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
 GENERATE_TODOLIST      = YES
 GENERATE_TESTLIST      = YES
 GENERATE_BUGLIST       = YES
 GENERATE_DEPRECATEDLIST= YES
-ALIASES                = 
 ENABLED_SECTIONS       = 
 MAX_INITIALIZER_LINES  = 25
-OPTIMIZE_OUTPUT_FOR_C  = YES
-OPTIMIZE_OUTPUT_JAVA   = YES
 SHOW_USED_FILES        = NO
+
 #---------------------------------------------------------------------------
 # configuration options related to warning and progress messages
 #---------------------------------------------------------------------------
 QUIET                  = NO
 WARNINGS               = YES
 WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
 WARN_FORMAT            = "$file:$line: $text"
 WARN_LOGFILE           = log.txt
+
 #---------------------------------------------------------------------------
 # configuration options related to the input files
 #---------------------------------------------------------------------------
-INPUT                  = ../../../share/salome/idl/VISU_Gen.idl
-FILE_PATTERNS          = 
-RECURSIVE              = NO
+INPUT                  = ../../../share/salome/src \
+                        ../../../share/salome/idl
+FILE_PATTERNS          = *.idl *.h *.hh *.hxx *.c *.cc *.cxx *.ixx *.jxx
+RECURSIVE              = YES
 EXCLUDE                = 
 EXCLUDE_SYMLINKS       = NO
 EXCLUDE_PATTERNS       = 
 EXAMPLE_PATH           = 
 EXAMPLE_PATTERNS       = 
-EXAMPLE_RECURSIVE      = NO
+EXAMPLE_RECURSIVE      = YES
 IMAGE_PATH             = sources/
 INPUT_FILTER           = 
 FILTER_SOURCE_FILES    = YES
+
 #---------------------------------------------------------------------------
 # configuration options related to source browsing
 #---------------------------------------------------------------------------
@@ -76,12 +92,15 @@ INLINE_SOURCES         = NO
 STRIP_CODE_COMMENTS    = YES
 REFERENCED_BY_RELATION = NO
 REFERENCES_RELATION    = YES
+VERBATIM_HEADERS       = YES
+
 #---------------------------------------------------------------------------
 # configuration options related to the alphabetical class index
 #---------------------------------------------------------------------------
 ALPHABETICAL_INDEX     = NO
 COLS_IN_ALPHA_INDEX    = 5
 IGNORE_PREFIX          = 
+
 #---------------------------------------------------------------------------
 # configuration options related to the HTML output
 #---------------------------------------------------------------------------
@@ -102,6 +121,7 @@ DISABLE_INDEX          = YES
 ENUM_VALUES_PER_LINE   = 4
 GENERATE_TREEVIEW      = YES
 TREEVIEW_WIDTH         = 250
+
 #---------------------------------------------------------------------------
 # configuration options related to the LaTeX output
 #---------------------------------------------------------------------------
@@ -116,6 +136,8 @@ LATEX_HEADER           =
 PDF_HYPERLINKS         = NO
 USE_PDFLATEX           = NO
 LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+
 #---------------------------------------------------------------------------
 # configuration options related to the RTF output
 #---------------------------------------------------------------------------
@@ -125,6 +147,7 @@ COMPACT_RTF            = NO
 RTF_HYPERLINKS         = NO
 RTF_STYLESHEET_FILE    = 
 RTF_EXTENSIONS_FILE    = 
+
 #---------------------------------------------------------------------------
 # configuration options related to the man page output
 #---------------------------------------------------------------------------
@@ -132,16 +155,21 @@ GENERATE_MAN           = NO
 MAN_OUTPUT             = man
 MAN_EXTENSION          = .3
 MAN_LINKS              = NO
+
 #---------------------------------------------------------------------------
 # configuration options related to the XML output
 #---------------------------------------------------------------------------
 GENERATE_XML           = NO
+XML_OUTPUT             = xml
 XML_SCHEMA             = 
 XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+
 #---------------------------------------------------------------------------
 # configuration options for the AutoGen Definitions output
 #---------------------------------------------------------------------------
 GENERATE_AUTOGEN_DEF   = NO
+
 #---------------------------------------------------------------------------
 # configuration options related to the Perl module output
 #---------------------------------------------------------------------------
@@ -149,6 +177,7 @@ GENERATE_PERLMOD       = NO
 PERLMOD_LATEX          = NO
 PERLMOD_PRETTY         = YES
 PERLMOD_MAKEVAR_PREFIX = 
+
 #---------------------------------------------------------------------------
 # Configuration options related to the preprocessor   
 #---------------------------------------------------------------------------
@@ -161,14 +190,16 @@ INCLUDE_FILE_PATTERNS  =
 PREDEFINED             = 
 EXPAND_AS_DEFINED      = 
 SKIP_FUNCTION_MACROS   = NO
+
 #---------------------------------------------------------------------------
-# Configuration::addtions related to external references   
+# Configuration::additions related to external references   
 #---------------------------------------------------------------------------
 TAGFILES               = 
 GENERATE_TAGFILE       = 
 ALLEXTERNALS           = NO
 EXTERNAL_GROUPS        = YES
 PERL_PATH              = /usr/bin/perl
+
 #---------------------------------------------------------------------------
 # Configuration options related to the dot tool   
 #---------------------------------------------------------------------------
@@ -177,24 +208,22 @@ HIDE_UNDOC_RELATIONS   = NO
 HAVE_DOT               = YES
 CLASS_GRAPH            = YES
 COLLABORATION_GRAPH    = NO
+UML_LOOK               = NO
 TEMPLATE_RELATIONS     = YES
 INCLUDE_GRAPH          = YES
 INCLUDED_BY_GRAPH      = NO
+CALL_GRAPH             = NO
 GRAPHICAL_HIERARCHY    = YES
 DOT_IMAGE_FORMAT       = jpg
 DOT_PATH               = 
 DOTFILE_DIRS           = 
 MAX_DOT_GRAPH_WIDTH    = 1024
 MAX_DOT_GRAPH_HEIGHT   = 1200
+MAX_DOT_GRAPH_DEPTH    = 0
 GENERATE_LEGEND        = NO
 DOT_CLEANUP            = YES
+
 #---------------------------------------------------------------------------
-# Configuration::addtions related to the search engine   
+# Configuration::additions related to the search engine   
 #---------------------------------------------------------------------------
 SEARCHENGINE           = NO
-CGI_NAME               = search.cgi
-CGI_URL                = 
-DOC_URL                = 
-DOC_ABSPATH            = 
-BIN_ABSPATH            = /usr/local/bin/
-EXT_DOC_PATHS          = 
index 480ae6e3be1d44d062b91442ff6c556ce0ce6b36..79237353a4071602bad112f7cfc6ad3d40f777c1 100644 (file)
@@ -59,6 +59,7 @@ module VISU {
     TSCALARMAP, /*!< Scalarmap 3D presentation object */
     TISOSURFACE, /*!< Iso surface 3D presentation object */
     TDEFORMEDSHAPE, /*!< Deformed shape 3D presentation object */
+    TGAUSSPOINTS, /*!< Gauss Points 3D presentation object */
     TPLOT3D, /*!< Plot3D 3D presentation object */
     TCUTPLANES, /*!< Cut planes 3D presentation object */
     TCUTLINES, /*!< Cut lines 3D presentation object */
@@ -70,6 +71,7 @@ module VISU {
     TXYPLOT, /*!< 2D XY plot consisting of one or several curve lines */
     TTABLEVIEW, /*!< Table view is used for displaying data tables */
     TVIEW3D, /*!< 3D view is used for displaying 3D graphical presentations */
+    TGAUSSVIEW, /*!< 3D view is used for displaying Gauss Points graphical presentations */
     TENTITY, /*!< An element composing a mesh: node, edge, face or cell */
     TFAMILY, /*!< The whole mesh can be divided into one or several submeshes, called families, which are defined by the user. Each family in its turn is composed of entities of a definite type. */
     TGROUP, /*!< A group of families */
@@ -364,8 +366,9 @@ module VISU {
     PresentationType GetPresentationType();
   };
 
+
   //-------------------------------------------------------
-  /*! \brief Interface of the %Scalar Map
+  /*! \brief Basic Interface for the %Colored 3D Presentations
    *
    * This interface is responsable for coloring of 3D field presentations
    * according the scalar values applied to different cells.
@@ -373,7 +376,7 @@ module VISU {
    * bar is displayed along with each colored field presentation and serves for
    * consulting the correspondance between colors and data values.
    */
-  interface ScalarMap : Prs3d {
+  interface ColoredPrs3d : Prs3d {
     /*! Sets the method of coloring of the elements composing a 3D presentation.
      */
     void SetScalarMode(in long theScalarMode);
@@ -382,24 +385,6 @@ module VISU {
      */
     long GetScalarMode();
 
-    /*!
-     * Sets the type of scaling of the values reflected by the scalar bar.
-     * \param theScaling The value of this parameter is taken from the <VAR>Scaling</VAR> enumeration.
-     */
-    void SetScaling(in Scaling theScaling);
-
-    /*!
-     * Gets the type of scaling of the values reflected by this presentation.
-     */
-    Scaling GetScaling();
-
-    /*!
-     * Sets scalar range - min and max boundaries of the scalar bar.
-     * \param theMin  Min boundary of the scalar bar.
-     * \param theMax  Max boundary of the scalar bar.
-     */
-    void SetRange(in double theMin, in double theMax);
-
     /*!
      * Gets the min boundary of the scalar bar.
      */
@@ -410,24 +395,6 @@ module VISU {
      */
     double GetMax();
 
-    /*! %Orientation of the scalar bar. */
-    enum Orientation {
-      HORIZONTAL, /*!< Horizontal orientation of the scalar bar.*/
-      VERTICAL    /*!< Vertical orientation of the scalar bar.*/
-    };
-
-    /*!
-     * Sets the type of orientation of the scalar bar.
-     * \param theOrientation This parameter defines the orientation of the scalar bar.
-     *                       It is taken from the <VAR>Orientaton</VAR> enumeration.
-     */
-    void SetBarOrientation(in Orientation theOrientation);
-
-    /*!
-     * Gets the type of orientation of the scalar bar.
-     */
-    Orientation GetBarOrientation();
-
     /*! \brief Position of the scalar bar.
      *
      * Sets the position of the scalar bar origin on the screen.
@@ -505,7 +472,63 @@ module VISU {
     string GetTitle();
   };
 
+
   //-------------------------------------------------------
+  /*! \brief Interface of the %Scalar Map
+   *
+   * This interface is responsable for coloring of 3D field presentations
+   * according the scalar values applied to different cells.
+   * As well it contains presentation parameters of the scalar bar. The scalar
+   * bar is displayed along with each colored field presentation and serves for
+   * consulting the correspondance between colors and data values.
+   */
+  interface ScalarMap : ColoredPrs3d {
+    /*!
+     * Sets the type of scaling of the values reflected by the scalar bar.
+     * \param theScaling The value of this parameter is taken from the <VAR>Scaling</VAR> enumeration.
+     */
+    void SetScaling(in Scaling theScaling);
+
+    /*!
+     * Gets the type of scaling of the values reflected by this presentation.
+     */
+    Scaling GetScaling();
+
+    /*!
+     * Sets scalar range - min and max boundaries of the scalar bar.
+     * \param theMin  Min boundary of the scalar bar.
+     * \param theMax  Max boundary of the scalar bar.
+     */
+    void SetRange(in double theMin, in double theMax);
+
+    /*! %Orientation of the scalar bar (to provide backward compatibility). */
+    enum Orientation {
+      HORIZONTAL, /*!< Horizontal orientation of the scalar bar.*/
+      VERTICAL    /*!< Vertical orientation of the scalar bar.*/
+    };
+
+    /*!
+     * Sets the type of orientation of the scalar bar (to provide backward compatibility).
+     * \param theOrientation This parameter defines the orientation of the scalar bar.
+     *                       It is taken from the <VAR>Orientaton</VAR> enumeration.
+     */
+    void SetBarOrientation(in Orientation theOrientation);
+
+    /*!
+     * Gets the type of orientation of the scalar bar (to provide backward compatibility).
+     */
+    Orientation GetBarOrientation();
+  };
+
+  //-------------------------------------------------------
+  /*! \brief Gauss Points presentation interface
+   *
+   * Presentation parameters of the Gauss Points presentation.
+   */
+  //-------------------------------------------------------
+  interface GaussPoints : ColoredPrs3d {
+  };
+
   /*! \brief Deformed shape presentation interface
    *
    * Presentation parameters of the deformed shape presentation.
@@ -1127,7 +1150,7 @@ module VISU {
 
     /*!
      */
-    ScalarMap getPresentation(in long theField, in long theFrame);
+    ColoredPrs3d getPresentation(in long theField, in long theFrame);
 
     /*! Sets the type of presentation (vectors, deformed shape etc.)
      *  which will be generated by the method <VAR>generatePresentations</VAR>.
@@ -1237,10 +1260,33 @@ module VISU {
    * for further construction of graphical presentations.
    */
   interface Result : RemovableObject, SALOME::GenericObj {
-    //interface Result : Base{
     /*! Reads all data from the corresponding sources. By default the data is loaded on demand.
      */
     boolean BuildAll();
+
+    /*! Start to parse the source MED file and publish all its entities into the study*/
+    boolean Build(in boolean theIsBuildAll, in boolean theIsAtOnce);
+
+    /*! Allow to check is all requested MED entites already loaded or not */
+    boolean IsDone();
+
+    /*! Allow to check is corresponding MED entites already loaded or not */
+    boolean IsEntitiesDone();
+
+    /*! Choose to parse MED fields and perform global min / max on the MED timestamps.*/
+    void SetBuildFields(in boolean theIsBuildFields, in boolean theIsCalculateMinMax);
+
+    /*! Allow to check is corresponding MED fields already loaded or not */
+    boolean IsFieldsDone();
+
+    /*! Choose to parse MED groups.*/
+    void SetBuildGroups(in boolean theIsBuildGroups);
+
+    /*! Allow to check is corresponding MED groups and families already loaded or not */
+    boolean IsGroupsDone();
+
+    /*! Allow to check is min / max calculation over field's components already perfrormed or not */
+    boolean IsMinMaxDone();
   };
 
   //-------------------------------------------------------
@@ -1285,6 +1331,13 @@ module VISU {
      */
     Result ImportFile(in string theFileName);
 
+    /*!
+     * Create result and initialize its with the file. The access to this file will be conserved outside of the application.
+     * \param theFileName String parameter defining the name of the file
+     *                    from which the data will be imported.
+     */
+    Result CreateResult(in string theFileName);
+
     /*!
      * Imports data from a file. The access to this file will closed.
      * \param theFileName String parameter defining the name of the file
@@ -1340,6 +1393,18 @@ module VISU {
                               in Entity theEntity, in string theFieldName,
                               in double theIteration);
 
+    /*!
+     * Creates a Gauss Points presentation.
+     * \param theResult    Data generated in other sources. (MED object or file)
+     * \param theMeshName  One of the meshes presented in MED file
+     * \param theEntity    Type of entity where the field is defined
+     * \param theFieldName Group of data attributed to the %MESH. The data can be scalar or vector.
+     * \param theIteration Number of iteration on the field
+     */
+    GaussPoints GaussPointsOnField(in Result theResult, in string theMeshName,
+                                  in Entity theEntity, in string theFieldName,
+                                  in double theIteration);
+
     /*!
      * Creates a deformed shape presentation.
      * \param theResult    Data generated in other sources. (MED object or file)
diff --git a/resources/Vertex_Program_ARB.txt b/resources/Vertex_Program_ARB.txt
new file mode 100755 (executable)
index 0000000..ce6147f
--- /dev/null
@@ -0,0 +1,21 @@
+attribute float mode;
+attribute float clampSize;
+attribute float geomSize;
+attribute float minSize;
+attribute float maxSize;
+attribute float magnification;
+
+void main()
+{
+  gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
+
+  gl_FrontColor = gl_Color;
+
+  float size;
+  if( mode == 0 )   // Results
+    size = minSize + ( maxSize - minSize ) * ( 1 - gl_Color.w / 241.0f );
+  else              // Geometry and Uniform colored outside cursor
+    size = geomSize;
+
+  gl_PointSize = clamp( magnification * size * gl_ProjectionMatrix[1].y, 2.0, clampSize );
+}
diff --git a/resources/Visu_PlaneSegmentation.png b/resources/Visu_PlaneSegmentation.png
new file mode 100644 (file)
index 0000000..eb538d0
Binary files /dev/null and b/resources/Visu_PlaneSegmentation.png differ
diff --git a/resources/Visu_SphereSegmentation.png b/resources/Visu_SphereSegmentation.png
new file mode 100644 (file)
index 0000000..e27ca1c
Binary files /dev/null and b/resources/Visu_SphereSegmentation.png differ
diff --git a/resources/Visu_gauss_points.png b/resources/Visu_gauss_points.png
new file mode 100644 (file)
index 0000000..3410cce
Binary files /dev/null and b/resources/Visu_gauss_points.png differ
diff --git a/resources/Visu_load_texture.png b/resources/Visu_load_texture.png
new file mode 100755 (executable)
index 0000000..d9953b6
Binary files /dev/null and b/resources/Visu_load_texture.png differ
diff --git a/resources/Visu_recording_pause.png b/resources/Visu_recording_pause.png
new file mode 100644 (file)
index 0000000..6f37d3f
Binary files /dev/null and b/resources/Visu_recording_pause.png differ
diff --git a/resources/Visu_recording_play.png b/resources/Visu_recording_play.png
new file mode 100644 (file)
index 0000000..62b8224
Binary files /dev/null and b/resources/Visu_recording_play.png differ
diff --git a/resources/Visu_recording_start.png b/resources/Visu_recording_start.png
new file mode 100644 (file)
index 0000000..aef1bb2
Binary files /dev/null and b/resources/Visu_recording_start.png differ
diff --git a/resources/Visu_recording_stop.png b/resources/Visu_recording_stop.png
new file mode 100644 (file)
index 0000000..c6134cc
Binary files /dev/null and b/resources/Visu_recording_stop.png differ
diff --git a/resources/Visu_vvtk_switch.png b/resources/Visu_vvtk_switch.png
new file mode 100644 (file)
index 0000000..b0a9c80
Binary files /dev/null and b/resources/Visu_vvtk_switch.png differ
diff --git a/resources/sprite_alpha.bmp b/resources/sprite_alpha.bmp
new file mode 100644 (file)
index 0000000..30a0fde
Binary files /dev/null and b/resources/sprite_alpha.bmp differ
diff --git a/resources/sprite_texture.bmp b/resources/sprite_texture.bmp
new file mode 100644 (file)
index 0000000..8ace201
Binary files /dev/null and b/resources/sprite_texture.bmp differ
index 8805f3d64c07f82f0c55f3fc39dc476faf8a433a..590571588214873b0a07fc620fbf0c79ca176632 100644 (file)
@@ -32,12 +32,25 @@ VPATH=.:@srcdir@
 
 @COMMENCE@
 
-EXPORT_HEADERS = VISU_Convertor.hxx  VISU_Convertor_impl.hxx  VISU_ConvertorUtils.hxx  VISU_ExtractUnstructuredGrid.hxx
+EXPORT_HEADERS = \
+       VISU_IDMapper.hxx \
+       VISU_Convertor.hxx  \
+       VISU_ConvertorDef.hxx  \
+       VISU_Convertor_impl.hxx  \
+       VISU_ConvertorUtils.hxx  \
+       VISU_MergeFilter.hxx \
+       VISU_ExtractUnstructuredGrid.hxx
 
 # Libraries targets
 
 LIB = libVisuConvertor.la
-LIB_SRC = VISU_Convertor.cxx VISU_Convertor_impl.cxx VISU_ConvertorUtils.cxx VISU_ExtractUnstructuredGrid.cxx \
+LIB_SRC = \
+       VISU_IDMapper.cxx \
+       VISU_Convertor.cxx \
+       VISU_Convertor_impl.cxx \
+       VISU_ConvertorUtils.cxx \
+       VISU_ExtractUnstructuredGrid.cxx \
+       VISU_MergeFilter.cxx \
        VISU_MedConvertor.cxx
 
 # Executables targets
@@ -45,7 +58,16 @@ BIN = VISUConvertor
 BIN_SRC = 
 
 CPPFLAGS+= -ftemplate-depth-32 $(VTK_INCLUDES) $(HDF5_INCLUDES) $(QT_INCLUDES) \
-       -I${KERNEL_ROOT_DIR}/include/salome -I${MED_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS)
-LDFLAGS+= $(VTK_LIBS) $(QT_LIBS) -L${MED_ROOT_DIR}/lib/salome -lMEDWrapper
-LDFLAGSFORBIN=$(LDFLAGS) $(HDF5_LIBS) -lMEDWrapper_V2_2 -lMEDWrapper_V2_1 -lMEDWrapperBase
+       -I${KERNEL_ROOT_DIR}/include/salome \
+       -I${MED_ROOT_DIR}/include/salome \
+       -I${GUI_ROOT_DIR}/include/salome \
+       $(BOOST_CPPFLAGS)
+
+LDFLAGS+= $(VTK_LIBS) $(QT_LIBS) \
+       $(BOOST_LIBS) -lboost_thread-mt \
+       -L${MED_ROOT_DIR}/lib/salome -lMEDWrapper \
+       -L${GUI_ROOT_DIR}/lib/salome -lVTKViewer
+
+LDFLAGSFORBIN=$(LDFLAGS) -lMEDWrapper_V2_2 -lMEDWrapper_V2_1 -lMEDWrapperBase -lmed_V2_1 -lVTKViewer -lsuit -lqtx
+
 @CONCLUDE@
index c81e39e099d4ad76498499be833e56ac746dd95f..273b62a8554cff3e323e2aa28dda5a1e9e13591d 100644 (file)
@@ -34,6 +34,9 @@
 #include <qfileinfo.h>
 #include <qstringlist.h>
 #include <memory>      
+#include "VISU_Convertor_impl.hxx"
+
+#include <vtkUnstructuredGrid.h>
 
 using namespace std;
 
@@ -43,19 +46,33 @@ static int MYDEBUG = 1;
 static int MYDEBUG = 0;
 #endif
 
-void parseFile(const char* theFileName) {
-  //try{
+//#define _DEXCEPT_
+
+typedef vtkUnstructuredGrid TOutput;
+
+void parseFile(const char* theFileName) 
+{
+#ifndef _DEXCEPT_
+  try{
+#endif
     MSG(MYDEBUG,"'"<<theFileName<<"'...");
     auto_ptr<VISU_Convertor> aCon(CreateConvertor(theFileName));
     //aCon->GetSize();
     //return;
+    aCon->BuildEntities();
+    aCon->BuildFields();
+    aCon->BuildMinMax();
     const VISU::TMeshMap& aMeshMap = aCon->GetMeshMap();
+    //return;
     VISU::TMeshMap::const_iterator aMeshMapIter = aMeshMap.begin();
     for(; aMeshMapIter != aMeshMap.end(); aMeshMapIter++){
+      //continue;
+
       const string& aMeshName = aMeshMapIter->first;
       const VISU::PMesh& aMesh = aMeshMapIter->second;
       const VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
       VISU::TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter;
+
       //Import fields
       aMeshOnEntityMapIter = aMeshOnEntityMap.begin();
       for(; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++){
@@ -70,12 +87,36 @@ void parseFile(const char* theFileName) {
          VISU::TValField::const_iterator aValFieldIter = aValField.begin();
          for(; aValFieldIter != aValField.end(); aValFieldIter++){
            int aTimeStamp = aValFieldIter->first;
-           aCon->GetTimeStampOnMesh(aMeshName,anEntity,aFieldName,aTimeStamp);
+
+           if(anEntity != VISU::NODE_ENTITY){
+             VISU::PGaussPtsIDMapper aGaussMesh = 
+               aCon->GetTimeStampOnGaussPts(aMeshName,anEntity,aFieldName,aTimeStamp);
+             VISU::TVTKOutput* aDataSet = aGaussMesh->GetVTKOutput();
+             /*
+             int aNbCells = aDataSet->GetNumberOfCells();
+             for(int anCellId = 0; anCellId < aNbCells; anCellId++){
+               VISU::TGaussPointID anObjID = aGaussMesh->GetObjID(anCellId);
+               cout<<anObjID.first<<"; "<<anObjID.second<<endl;
+             }
+             */
+           }else{
+             VISU::PIDMapper anIDMapper = 
+               aCon->GetTimeStampOnMesh(aMeshName,anEntity,aFieldName,aTimeStamp);
+             VISU::TVTKOutput* aDataSet = anIDMapper->GetVTKOutput();
+             /*
+             int aNbCells = aDataSet->GetNumberOfCells();
+             for(int anCellId = 0; anCellId < aNbCells; anCellId++){
+               int anObjID = anIDMapper->GetElemObjID(anCellId);
+               int aVTKID  = anIDMapper->GetElemVTKID(anObjID);
+               cout<<anObjID<<"; "<<aVTKID<<endl;
+             }
+             */
+           }
            //goto OK;
          }
        }
       }
-      //continue;
+
       //Importing groups
       const VISU::TGroupMap& aGroupMap = aMesh->myGroupMap;
       VISU::TGroupMap::const_iterator aGroupMapIter = aGroupMap.begin();
@@ -83,6 +124,28 @@ void parseFile(const char* theFileName) {
        const string& aGroupName = aGroupMapIter->first;
        aCon->GetMeshOnGroup(aMeshName,aGroupName);
       }
+
+      //continue;
+
+      //Import mesh on entity
+      aMeshOnEntityMapIter = aMeshOnEntityMap.begin();
+      for(; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++){
+       const VISU::TEntity& anEntity = aMeshOnEntityMapIter->first;
+       VISU::PIDMapper anIDMapper = aCon->GetMeshOnEntity(aMeshName,anEntity);
+       VISU::TVTKOutput* aDataSet = anIDMapper->GetVTKOutput();
+       {
+         /*
+         int aNbCells, anCellId, anObjID, aVTKID;
+         aNbCells = aDataSet->GetNumberOfCells();
+         for(anCellId = 0; anCellId < aNbCells; anCellId++){
+           anObjID = anIDMapper->GetElemObjID(anCellId);
+           aVTKID  = anIDMapper->GetElemVTKID(anObjID);
+           cout<<anObjID<<"; "<<aVTKID<<endl;
+         }
+         */
+       }
+      }
+
       //Import families
       aMeshOnEntityMapIter = aMeshOnEntityMap.begin();
       for(; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++){
@@ -93,48 +156,39 @@ void parseFile(const char* theFileName) {
        VISU::TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.begin();
        for(; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++){
          const string& aFamilyName = aFamilyMapIter->first;
-         aCon->GetMeshOnEntity(aMeshName,anEntity,aFamilyName);
+         aCon->GetFamilyOnEntity(aMeshName,anEntity,aFamilyName);
        }
       }
-      //Import mesh on entity
-      aMeshOnEntityMapIter = aMeshOnEntityMap.begin();
-      for(; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++){
-       const VISU::TEntity& anEntity = aMeshOnEntityMapIter->first;
-       aCon->GetMeshOnEntity(aMeshName,anEntity);
-      }
     }
+  OK:
     MSG(MYDEBUG,"OK");
-//   }catch(std::exception& exc){
-//    MSG(MYDEBUG,"Follow exception was occured in file:"<<theFileName<<"\n"<<exc.what());
-//   }catch(...){
-//    MSG(MYDEBUG,"Unknown exception was occured in VISU_Convertor_impl in file:"<<theFileName);
-//   } 
+#ifndef _DEXCEPT_
+  }catch(std::exception& exc){
+    MSG(MYDEBUG,"Follow exception was occured in file:"<<theFileName<<"\n"<<exc.what());
+  }catch(...){
+    MSG(MYDEBUG,"Unknown exception was occured in VISU_Convertor_impl in file:"<<theFileName);
+  } 
+#endif
 }
 
 int main(int argc, char** argv){ 
-  //try{
-    if(argc > 1){
-      QFileInfo fi(argv[1]);
-      for(int i = 0; i < 1; i++){
-       if(fi.exists()){
-          if(fi.isDir()){
-           QDir aDir(fi.absFilePath());
-           QStringList aStringList = aDir.entryList("*.med",QDir::Files);
-           int jEnd = aStringList.count();
-           for(int j = 0; j < jEnd; j++){
-              parseFile(aDir.filePath(aStringList[j]).latin1());
-           }
-          }else{
-           parseFile(argv[1]);
+  if(argc > 1){
+    QFileInfo fi(argv[1]);
+    for(int i = 0; i < 1; i++){
+      if(fi.exists()){
+       if(fi.isDir()){
+         QDir aDir(fi.absFilePath());
+         QStringList aStringList = aDir.entryList("*.med",QDir::Files);
+         int jEnd = aStringList.count();
+         for(int j = 0; j < jEnd; j++){
+           parseFile(aDir.filePath(aStringList[j]).latin1());
          }
+       }else{
+         parseFile(argv[1]);
        }
       }
-      return 0;
     }
-  //}catch(std::exception& exc){
-  //  MSG(MYDEBUG,"Follow exception was occured :\n"<<exc.what());
-  //}catch(...){
-  //  MSG(MYDEBUG,"Unknown exception was occured in VISU_Convertor_impl");
-  //} 
+    return 0;
+  }
   return 1;
 }
index c08d9a6122a46ecc94e955509b7745b49a0125cd..f417ad07a5c079b770a87d1c2c9196039d062163 100644 (file)
@@ -33,7 +33,10 @@ using namespace std;
 
 namespace VISU{
 
-  inline int GetNbOfPoints(int theVTKCellType){
+  inline
+  int
+  GetNbOfPoints(int theVTKCellType)
+  {
     switch(theVTKCellType){
     case VTK_VERTEX : return 1;
     case VTK_LINE : return 2;
@@ -46,67 +49,21 @@ namespace VISU{
     default: return -1;
     }
   }
-
-  pair<int,int> TMeshOnEntity::GetCellsDims(const string& theFamilyName) const
-  {
-    if(theFamilyName == "")
-      return make_pair(myNbCells,myCellsSize);
-    TFamilyMap::const_iterator aFamilyMapIter = myFamilyMap.find(theFamilyName);
-    if(aFamilyMapIter == myFamilyMap.end())
-      throw std::runtime_error("GetCellsDims >> There is no family on the mesh with entity !!!");
-    const PFamily& aFamily = aFamilyMapIter->second; 
-    return make_pair(aFamily->myNbCells,aFamily->myCellsSize);
-  }
-  
-  const PField TMesh::GetField(const string& theFieldName) const {
-    TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = myMeshOnEntityMap.begin();
-    for(; aMeshOnEntityMapIter != myMeshOnEntityMap.end(); aMeshOnEntityMapIter++){
-      const TFieldMap& aFieldMap = aMeshOnEntityMapIter->second->myFieldMap;
-      TFieldMap::const_iterator aFieldMapIter = aFieldMap.begin();
-      for(; aFieldMapIter != aFieldMap.end(); aFieldMapIter++)
-       if(theFieldName == aFieldMapIter->first) 
-         return aFieldMapIter->second;
-    }
-    return PField();
-  }
-
-
-  PFamily FindFamily(VISU::PMesh theMesh, const string& theFamilyName)
-  {
-    PFamily aFamily;
-    const TMeshOnEntityMap& aMeshOnEntityMap = theMesh->myMeshOnEntityMap;
-    TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.begin();
-    for(; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++){
-      const PMeshOnEntity aMeshOnEntity = aMeshOnEntityMapIter->second;
-      aFamily = GetFamily(aMeshOnEntity,theFamilyName);
-      if(aFamily)
-       break;
-    }
-    return aFamily;
-  }
-  
-
-  PFamily GetFamily(VISU::PMeshOnEntity theMeshOnEntity, const string& theFamilyName)
-  {
-    PFamily aFamily;
-    if(theFamilyName != ""){
-      TFamilyMap& aFamilyMap = theMeshOnEntity->myFamilyMap;
-      TFamilyMap::iterator aFamilyMapIter = aFamilyMap.find(theFamilyName);
-      if(aFamilyMapIter != aFamilyMap.end())
-       aFamily = aFamilyMapIter->second;
-    }
-    return aFamily;
-  }
 }
 
 
-const VISU::TMeshMap& VISU_Convertor::GetMeshMap() { 
-  if(!myIsDone) { myIsDone = true;  Build();}
+const VISU::TMeshMap& 
+VISU_Convertor
+::GetMeshMap() 
+{ 
   return myMeshMap;
 }
 
 
-string VISU_Convertor::GenerateName(const VISU::TTime& aTime){
+string
+VISU_Convertor
+::GenerateName(const VISU::TTime& aTime)
+{
   static QString aName;
   const string aUnits = aTime.second, tmp(aUnits.size(),' ');
   if(aUnits == "" || aUnits == tmp)
@@ -117,7 +74,11 @@ string VISU_Convertor::GenerateName(const VISU::TTime& aTime){
   return aName.latin1();
 }
 
-string VISU_Convertor::GenerateName(const string& theName, unsigned int theTimeId) {
+string
+VISU_Convertor
+::GenerateName(const string& theName, 
+              unsigned int theTimeId) 
+{
   static QString aName;
   aName = QString(theName.c_str()).simplifyWhiteSpace();
   int iEnd = strlen(aName);
index bebb26f096e3f5f67ab41d21ed26f03d0741a983..4a5ac9938b7fbae890518416cf237ed3be38c058 100644 (file)
 #ifndef VISU_Convertor_HeaderFile
 #define VISU_Convertor_HeaderFile
 
-#include <stdio.h>
+/*! 
+  \file VISU_Convertor.hxx
+  \brief The file contains definitions for basic classes of the VISU CONVERTER package
+*/
+
+#include "VISU_IDMapper.hxx"
+#include "VISU_ConvertorDef.hxx"
+
+#include "MED_Vector.hxx"
 
-#include <list>
 #include <map>
 #include <set>
 #include <utility>
-#include <vector>
 #include <string>
 #include <stdexcept>
 
-#include <boost/shared_ptr.hpp>
+namespace VISU
+{
+  using MED::TVector;
 
-class vtkUnstructuredGrid;
+  //---------------------------------------------------------------
+  typedef std::string TName;
 
-namespace VISU{
+  typedef TVector<TName> TNames;
 
-  template<class T> class shared_ptr: public boost::shared_ptr<T>
+  //---------------------------------------------------------------
+  //! Define a basic class for all MED entites which can be identified by its number
+  struct TIntId: virtual TBaseStructure
   {
-  public:
-    shared_ptr() {}
-
-    template<class Y>
-    explicit shared_ptr(Y * p)
-    {
-      reset(p);
-    }
-
-    template<class Y>
-    shared_ptr(shared_ptr<Y> const & r):
-      boost::shared_ptr<T>(r,boost::detail::dynamic_cast_tag())
+    vtkIdType myId;
+
+    TIntId(): myId(0)
     {}
+  };
 
-    template<class Y>
-    shared_ptr & operator=(shared_ptr<Y> const & r)
-    {
-      shared_ptr<T>(r).swap(*this);
-      return *this;
-    }
-
-    template<class Y> shared_ptr& operator()(Y * p) // Y must be complete
-    {
-      if(T* pt = dynamic_cast<T*>(p))
-       boost::shared_ptr<T>::reset(pt);
-      else
-       boost::throw_exception(std::bad_cast());
-      return *this;
-    }
 
+  //---------------------------------------------------------------
+  typedef std::map<TEntity,PMeshOnEntity> TMeshOnEntityMap;
+  typedef std::map<TName,PGroup> TGroupMap;
+
+  //! Define a basic class which corresponds to MED MESH entity
+  /*!
+    This class in its turn contains map of TMeshOnEntity and TGroup substructures,
+    also it keeps name and dimention of corresponding MED MESH entity.
+  */
+  struct TMesh: virtual TBaseStructure
+  {
+    TMeshOnEntityMap myMeshOnEntityMap; //!< Contains corresponding meshes for MED ENTITIES
+    TGroupMap myGroupMap; //!< Contains map of bounded MED GROUPS
+    TName myName; //! Name of the corresponding MED MESH
+    int myDim; //! Dimension of the corresponding MED MESH
+
+    TMesh(): myDim(0)
+    {}
   };
+  typedef std::map<std::string,PMesh> TMeshMap;
 
 
-  enum  TEntity {NODE_ENTITY, EDGE_ENTITY, FACE_ENTITY, CELL_ENTITY};
+  //---------------------------------------------------------------
+  //! Define a basic class which corresponds to MED PROFILE entity
+  struct TSubProfile: virtual TBaseStructure
+  {};
 
-  typedef std::pair<std::string,TEntity> TFamilyAndEntity;
-  typedef std::set<TFamilyAndEntity> TFamilyAndEntitySet;
-  typedef std::set<std::string> TBindGroups;
 
-  typedef std::pair<double,std::string> TTime;
+  //---------------------------------------------------------------
+  //! Define a containerfor MED PROFILE entities which belongs to the same MED ENTITY
+  struct TProfile: virtual TNamedIDMapper
+  {};
 
-  struct TMesh;
-  typedef shared_ptr<TMesh> PMesh;
-  typedef std::map<std::string,PMesh> TMeshMap;
 
-  struct TMeshOnEntity;
-  typedef shared_ptr<TMeshOnEntity> PMeshOnEntity;
-  typedef std::map<TEntity,PMeshOnEntity> TMeshOnEntityMap;
+  //---------------------------------------------------------------
+  bool
+  operator<(const PSubProfile& theLeft, const PSubProfile& theRight);
 
-  struct TFamily;
-  typedef shared_ptr<TFamily> PFamily;
-  typedef std::map<std::string,PFamily> TFamilyMap;
+  typedef std::set<PSubProfile> TProfileKey;
+  typedef std::map<TProfileKey,PProfile> TProfileMap;
 
-  struct TGroup;
-  typedef shared_ptr<TGroup> PGroup;
-  typedef std::map<std::string,PGroup> TGroupMap;
 
-  struct TField;
-  typedef shared_ptr<TField> PField;
-  typedef std::map<std::string,PField> TFieldMap;
+  //---------------------------------------------------------------
+  //! Define a basic class for MED GAUSS entity
+  struct TGauss: virtual TBaseStructure
+  {};
 
-  struct TValForTime;
-  typedef shared_ptr<TValForTime> PValForTime;
-  typedef std::map<int,PValForTime> TValField;
 
-  struct TBaseStructure{
-    virtual ~TBaseStructure(){}
+  //---------------------------------------------------------------
+  //! Define a container for mesh generated from MED GAUSS and corresponding MED PROFILE
+  struct TGaussSubMesh: virtual TBaseStructure
+  {
+    PSubProfile mySubProfile; //!< Keeps reference on what submesh the Gauss Points are located
   };
 
-  typedef std::vector<std::string> TNames;
+  
+  //---------------------------------------------------------------
+  //! Define a container for all TGaussSubMesh that belongs to the same MED ENTITY
+  struct TGaussMesh: virtual TGaussPtsIDMapper
+  {};
 
-  struct TMesh: TBaseStructure{
-    int myDim, myNbPoints;
-    std::string myName;
 
-    TMeshOnEntityMap myMeshOnEntityMap;
-    TGroupMap myGroupMap;
+  //---------------------------------------------------------------
+  bool
+  operator<(const PGaussSubMesh& theLeft, const PGaussSubMesh& theRight);
 
-    TMesh() : myDim(0), myNbPoints(0) {}
-    const PField GetField(const std::string& theFieldName) const;
-  };
+  typedef std::set<PGaussSubMesh> TGaussKey;
+  typedef std::map<TGaussKey,PGaussMesh> TGaussMeshMap;
+
+
+  //---------------------------------------------------------------
+
+  typedef std::map<TName,PFamily> TFamilyMap;
+  typedef std::map<TName,PField> TFieldMap;
+
+  //! Define a basic class which corresponds to MED ENTITY
+  /*!
+    This class in its turn contains map of TGaussMesh and TProfile substructures,
+    also it keeps corresponding map of MED FAMILIES and FIELDS.
+  */
+  struct TMeshOnEntity: virtual TNamedIDMapper
+  {
+    TGaussMeshMap myGaussMeshMap; //!< Contains map of Gauss mesh which exist on it
+    TProfileMap myProfileMap; //!< Contains map of Profile mesh which exist on it
 
-  struct TMeshOnEntity: TBaseStructure{
-    std::string myMeshName;
-    TEntity myEntity;
-    int myNbCells, myCellsSize;
-    TFamilyMap myFamilyMap;
-    TFieldMap myFieldMap;
-    TMeshOnEntity() : myNbCells(0), myCellsSize(0) {}
+    TFamilyMap myFamilyMap; //!< Contains map of MED FAMILIES which belongs to it
+    TFieldMap myFieldMap; //!< Contains map of MED FIELDS which belongs to it
 
-    std::pair<int,int> 
-    GetCellsDims(const std::string& theFamilyName = "") const;
+    TName myMeshName; //!< Contains name of the MED MESH where the it belongs to.
+    TEntity myEntity; //!< Referes to MED ENTITY where the it belongs to.
   };
 
-  struct TFamily: TBaseStructure{
-    int myId;
-    std::string myName;
-    TEntity myEntity;
-    TBindGroups myGroups;
-    int myNbCells, myCellsSize;
-    TFamily() : myNbCells(0), myCellsSize(0) {}
+
+  //---------------------------------------------------------------
+  //! Define a basic class for MED FAMILY entity
+  struct TFamily: virtual TIntId,
+                 virtual TIDMapper
+  {
+    TEntity myEntity; //!< Referes to MED ENTITY where the TFamily belongs to.
+    TName myName; //!< Contains name of the corresponding MED FAMILY
   };
 
-  struct TGroup: TBaseStructure{
-    std::string myName;
-    std::string myMeshName;
-    int myNbCells, myCellsSize;
-    TFamilyAndEntitySet myFamilyAndEntitySet;
-    TGroup() : myNbCells(0), myCellsSize(0) {}
+
+  //---------------------------------------------------------------
+  typedef std::set<PFamily> TFamilySet;
+
+  //! Define a basic class for MED GROUP entity
+  struct TGroup: virtual TIDMapper
+  {
+    TFamilySet myFamilySet;
   };
 
-  struct TField: TBaseStructure{
-    int myId;
-    TEntity myEntity;
-    bool myIsTrimmed;
-    std::string myName;
-    std::string myMeshName;
-    int myNbComp, myDataSize;
-    TValField myValField;
-    TNames myCompNames;
-    TNames myUnitNames;
-    TField() : myNbComp(0), myDataSize(0), myIsTrimmed(0) {}
+
+  //---------------------------------------------------------------
+  typedef std::map<vtkIdType,PValForTime> TValField;
+  typedef std::pair<float,float> TMinMax;
+
+  //! Define a basic class for MED FIELD entity
+  struct TField: virtual TIntId
+  {
+    TEntity myEntity; //!< Referes to MED ENTITY where it belongs to.
+    TName myName; //!< Contains name of the corresponding MED FIELD
+    TName myMeshName; //!< Contains name of the MED MESH where it belongs to.
+    TValField myValField; //!< Contains sequence of values for corresponding MED TIMESTAMPS
+    TNames myCompNames; //!< Contains names of components of the MED FIELD
+    TNames myUnitNames; //!< Contains names of units of the MED FIELD
+    vtkIdType myNbComp; //!< Keeps number of components for the MED FIELD
+
+    //! Calculate min/max values for each of the MED FIELD components among all its timestamps
+    /*!
+      Numeration of the components starts from 1.
+      Zero component contains min/max value for modulus of corresponding vector
+    */
+    virtual
+    TMinMax 
+    GetMinMax(vtkIdType theCompID) = 0;
+    
+    bool myIsMinMaxInitilized; //!< Is the min / max values are calculated
+
+    TField(): 
+      myNbComp(0),
+      myIsMinMaxInitilized(false)
+    {}
   };
  
-  struct TValForTime: TBaseStructure{
-    int myId;
-    TEntity myEntity;
-    std::string myMeshName;
-    std::string myFieldName;
-    int myNbComp;
-    TTime myTime;
 
-    TValForTime() : myNbComp(0) {}
-  };
+  //---------------------------------------------------------------
+  typedef std::pair<double,std::string> TTime;
 
-  PFamily FindFamily(VISU::PMesh theMesh, 
-                    const std::string& theFamilyName);
+  //! Define a basic class for MED TIMESTAMP entity
+  struct TValForTime: virtual TIntId
+  {
+    TEntity myEntity; //!< Referes to MED ENTITY where it belongs to.
+    TName myMeshName; //!< Contains name of the MED MESH where it belongs to.
+    TName myFieldName; //!< Contains name of the MED FIELD where it belongs to.
+    TTime myTime;
 
-  PFamily GetFamily(VISU::PMeshOnEntity theMeshOnEntity, 
-                   const std::string& theFamilyName);
+    PProfile myProfile; //!< Contains corresponding MED PROFILE where the MED TIEMSTMAP attached to
+    PGaussMesh myGaussMesh;
+  };
 
-  void WriteToFile(vtkUnstructuredGrid* theDataSet, 
-                  const std::string& theFileName);
 
+  //---------------------------------------------------------------
+  //! The utility function allows to write vtkUnstructuredGrid to a file with defined name
+  void 
+  WriteToFile(vtkUnstructuredGrid* theDataSet, 
+             const std::string& theFileName);
 };
 
-class VISU_Convertor{
+
+//---------------------------------------------------------------
+//! This class defines interface to read VTK interpretation of MED entities
+/*!
+  It is the main class of the VISU CONVERTER package.
+  Following MED entities can be retrived from any MED file:
+  - mesh from corresponding MED ENTITIES;
+  - MED TIMESTAMPS;
+  - MED FAMILIES;
+  - MED GROUPS.
+  The class produce its work in two main steps:
+  1. Perfrom parsing of MED file to get known what MED entities are pressent in it
+  2. Get VTK representation for any existing MED entity
+  Also, it can perform some additional work to calculate expected amount of memory to build defined VTK representation
+  
+*/
+class VISU_Convertor
+{
 protected:
   std::string myName;
   VISU::TMeshMap myMeshMap;
   int myIsDone;
+
 public:
-  virtual ~VISU_Convertor(){};
-  virtual const std::string& GetName() { return myName;}
-  virtual int IsDone() const { return myIsDone;}
-  typedef vtkUnstructuredGrid TOutput;
-
-  virtual VISU_Convertor* Build() = 0;
-  virtual const VISU::TMeshMap& GetMeshMap() ;
-  virtual float GetSize() = 0;
-
-  virtual TOutput* GetMeshOnEntity(const std::string& theMeshName, 
-                                  const VISU::TEntity& theEntity,
-                                  const std::string& theFamilyName = "") = 0;
-    
-  virtual float GetMeshOnEntitySize(const std::string& theMeshName, 
-                                   const VISU::TEntity& theEntity,
-                                   const std::string& theFamilyName = "") = 0;
+  virtual 
+  ~VISU_Convertor()
+  {};
   
-  virtual TOutput* GetMeshOnGroup(const std::string& theMeshName, 
-                                 const std::string& theGroupName) = 0;
-
-  virtual float GetMeshOnGroupSize(const std::string& theMeshName, 
-                                  const std::string& theGroupName) = 0;
-
-  virtual TOutput* GetTimeStampOnMesh(const std::string& theMeshName, 
-                                     const VISU::TEntity& theEntity,
-                                     const std::string& theFieldName,
-                                     int theStampsNum) = 0;
+  //! Get brief name of the corresponding source MED file
+  virtual
+  const std::string& 
+  GetName(){ return myName;}
+
+  //! Let known whether the source MED file parsed or not
+  virtual
+  int
+  IsDone() const { return myIsDone; }
+
+  //! Defines what subtype of vtkDataSet is used for MED to VTK mapping
+  typedef VISU::TVTKOutput TOutput;
+
+  //! This method perform first parsing of MED file to get known what MED entities are pressent in it
+  virtual
+  VISU_Convertor* 
+  Build() = 0;
+
+  //! This method perform first parsing of MED file to get known what MED mesh entities are pressent in it
+  virtual
+  VISU_Convertor* 
+  BuildEntities() = 0;
+
+  //! This method perform first parsing of MED file to get known what MED fields are pressent in it
+  virtual
+  VISU_Convertor* 
+  BuildFields() = 0;
+
+  //! This min /max calculation over existing MED fields
+  virtual
+  VISU_Convertor* 
+  BuildMinMax() = 0;
+
+  //! This method perform first parsing of MED file to get known what MED groups are pressent in it
+  virtual
+  VISU_Convertor* 
+  BuildGroups() = 0;
+
+  //! This method allow to get known what MED entities are present is the MED file
+  virtual
+  const VISU::TMeshMap& 
+  GetMeshMap();
+
+  //! Get amount of memory to build VTK representations for all existing MED entities
+  virtual
+  float
+  GetSize() = 0;
+
+  //! Get mesh for corresponding MED ENTITY
+  virtual
+  VISU::PNamedIDMapper 
+  GetMeshOnEntity(const std::string& theMeshName, 
+                 const VISU::TEntity& theEntity) = 0;
+  
+  //! Get amount of memory to build mesh for corresponding MED ENTITY
+  virtual
+  float
+  GetMeshOnEntitySize(const std::string& theMeshName, 
+                     const VISU::TEntity& theEntity) = 0;
+  
+  //! Get mesh for corresponding MED FAMILY
+  virtual 
+  VISU::PIDMapper 
+  GetFamilyOnEntity(const std::string& theMeshName, 
+                   const VISU::TEntity& theEntity,
+                   const std::string& theFamilyName) = 0;
+
+  //! Get amount of memory to build mesh for corresponding MED FAMILY
+  virtual 
+  float 
+  GetFamilyOnEntitySize(const std::string& theMeshName, 
+                       const VISU::TEntity& theEntity,
+                       const std::string& theFamilyName) = 0;
+
+  //! Get mesh for corresponding MED GROUP
+  virtual
+  VISU::PIDMapper
+  GetMeshOnGroup(const std::string& theMeshName, 
+                const std::string& theGroupName) = 0;
+  
+  //! Get amount of memory to build mesh for corresponding MED GROUP
+  virtual
+  float
+  GetMeshOnGroupSize(const std::string& theMeshName, 
+                    const std::string& theGroupName) = 0;
+  
+  //! Get mesh with attached values for corresponding MED TIMESTAMP
+  virtual
+  VISU::PIDMapper 
+  GetTimeStampOnMesh(const std::string& theMeshName, 
+                    const VISU::TEntity& theEntity,
+                    const std::string& theFieldName,
+                    int theStampsNum) = 0;
+
+  //! Get Gauss Points mesh with attached values for corresponding MED TIMESTAMP
+  virtual
+  VISU::PGaussPtsIDMapper 
+  GetTimeStampOnGaussPts(const std::string& theMeshName, 
+                        const VISU::TEntity& theEntity,
+                        const std::string& theFieldName,
+                        int theStampsNum) = 0;
    
-  virtual float GetTimeStampSize(const std::string& theMeshName, 
-                                const VISU::TEntity& theEntity,
-                                const std::string& theFieldName,
-                                int theStampsNum) = 0;
+  //! Get amount of memory to build mesh for corresponding MED TIMESTAMP
+  virtual 
+  float
+  GetTimeStampSize(const std::string& theMeshName, 
+                  const VISU::TEntity& theEntity,
+                  const std::string& theFieldName,
+                  int theStampsNum) = 0;
     
-  virtual float GetFieldOnMeshSize(const std::string& theMeshName, 
-                                  const VISU::TEntity& theEntity,
-                                  const std::string& theFieldName) = 0;
-  virtual const VISU::PField GetField(const std::string& theMeshName, 
-                                     VISU::TEntity theEntity, 
-                                     const std::string& theFieldName) = 0;
-
-  virtual const VISU::PValForTime GetTimeStamp(const std::string& theMeshName, 
-                                              const VISU::TEntity& theEntity,
-                                              const std::string& theFieldName,
-                                              int theStampsNum) = 0;
+  //! Get amount of memory to build all MED TIMESTAMPS for corresponding MED FIELD
+  virtual 
+  float
+  GetFieldOnMeshSize(const std::string& theMeshName, 
+                    const VISU::TEntity& theEntity,
+                    const std::string& theFieldName) = 0;
+  
+  //! Find MED FIELD container
+  virtual
+  const VISU::PField 
+  GetField(const std::string& theMeshName, 
+          VISU::TEntity theEntity, 
+          const std::string& theFieldName) = 0;
+  
+  //! Find MED TIMESTAMP container
+  virtual
+  const VISU::PValForTime 
+  GetTimeStamp(const std::string& theMeshName, 
+              const VISU::TEntity& theEntity,
+              const std::string& theFieldName,
+              int theStampsNum) = 0;
     
-  static std::string GenerateName(const VISU::TTime& aTime);
-  static std::string GenerateName(const std::string& theName, unsigned int theTimeId);
+  //! Allow to generate pretty name for MED TIMESTAMP
+  static 
+  std::string 
+  GenerateName(const VISU::TTime& aTime);
+
+  static 
+  std::string 
+  GenerateName(const std::string& theName, unsigned int theTimeId);
 };
 
-extern "C"{
-  VISU_Convertor* CreateConvertor(const std::string& theFileName) ;
+extern "C"
+{
+  //! Instatiate proper VISU_Convertor subclass
+  VISU_Convertor* 
+  CreateConvertor(const std::string& theFileName);
 };
 
+
 #endif
diff --git a/src/CONVERTOR/VISU_ConvertorDef.hxx b/src/CONVERTOR/VISU_ConvertorDef.hxx
new file mode 100644 (file)
index 0000000..0fedadc
--- /dev/null
@@ -0,0 +1,78 @@
+//  VISU CONVERTOR :
+//
+//  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   : 
+//  Author : 
+//  Module : 
+
+#ifndef VISU_ConvertorDef_HeaderFile
+#define VISU_ConvertorDef_HeaderFile
+
+/*! 
+  \file VISU_ConvertorDef.hxx
+  \brief The file contains predeclarations for basic classes of the VISU CONVERTER package
+*/
+
+#include "MED_SharedPtr.hxx"
+
+namespace VISU
+{
+  using MED::SharedPtr;
+
+  //---------------------------------------------------------------
+  enum  TEntity {NODE_ENTITY, EDGE_ENTITY, FACE_ENTITY, CELL_ENTITY};
+
+  struct TMesh;
+  typedef SharedPtr<TMesh> PMesh;
+
+  struct TGaussSubMesh;
+  typedef SharedPtr<TGaussSubMesh> PGaussSubMesh;
+
+  struct TGaussMesh;
+  typedef SharedPtr<TGaussMesh> PGaussMesh;
+
+  struct TSubProfile;
+  typedef SharedPtr<TSubProfile> PSubProfile;
+
+  struct TProfile;
+  typedef SharedPtr<TProfile> PProfile;
+
+  struct TMeshOnEntity;
+  typedef SharedPtr<TMeshOnEntity> PMeshOnEntity;
+
+  struct TFamily;
+  typedef SharedPtr<TFamily> PFamily;
+
+  struct TGroup;
+  typedef SharedPtr<TGroup> PGroup;
+
+  struct TField;
+  typedef SharedPtr<TField> PField;
+
+  struct TGauss;
+  typedef SharedPtr<TGauss> PGauss;
+
+  struct TValForTime;
+  typedef SharedPtr<TValForTime> PValForTime;
+}
+
+#endif
index fcfb6f9539fd6073d6c80c8670240a4b90af7c91..a4d0f3bbc85d7b8b85e39fc76a5301e8b0afc147 100644 (file)
 //  Module : VISU
 
 #include "VISU_ConvertorUtils.hxx"
+
 #include <vtkUnstructuredGridWriter.h>
+#include <vtkTimerLog.h>
+
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+#else
+static int MYDEBUG = 0;
+#endif
 
-namespace VISU{
+namespace VISU
+{
 
   void 
   WriteToFile(vtkUnstructuredGrid* theDataSet, const std::string& theFileName)
@@ -40,4 +49,32 @@ namespace VISU{
     aWriter->Delete();
   }
 
+
+  TTimerLog
+  ::TTimerLog(int theIsDebug,
+             const std::string& theName):
+    myIsDebug(MYDEBUG + theIsDebug),
+    myTimerLog(vtkTimerLog::New()),
+    myPrefixPrinter(myIsDebug == 1),
+    myName(theName)
+  {
+    myCPUTime = myTimerLog->GetCPUTime();
+    BEGMSG(myIsDebug > 1,"{\n");
+  }
+
+  TTimerLog
+  ::~TTimerLog()
+  {
+    myCPUTime = myTimerLog->GetCPUTime() - myCPUTime;
+
+    if(myIsDebug > 1){
+      BEGMSG(myIsDebug,"} = "<<myCPUTime<<" secs ("<<myName<<")\n");
+    }else{
+      BEGMSG(myIsDebug,myName<<" takes "<<myCPUTime<<" secs\n");
+    }
+    
+    myTimerLog->Delete();
+    myTimerLog = NULL;
+  }
+
 }
index 1ef42e369fbc1cee2e3853422c01a081b4536af6..154589fc7d89ee0002ba2dfcf32858da1501de80 100644 (file)
 #include "MED_Utilities.hxx"
 
 class vtkUnstructuredGrid;
+class vtkTimerLog;
+
+namespace MED
+{
+  class PrefixPrinter;
+}
 
 namespace VISU{
 
   void 
   WriteToFile(vtkUnstructuredGrid* theDataSet, const std::string& theFileName);
+
+  class TTimerLog
+  {
+    int myIsDebug;
+    double myCPUTime;
+    std::string myName;
+    vtkTimerLog* myTimerLog;
+    MED::PrefixPrinter myPrefixPrinter;
+  public:
+    TTimerLog(int theIsDebug,
+             const std::string& theName);
+    ~TTimerLog();
+  };
   
 }
 
index 477abba744880d951e2d1174ebac2ef829c7f9a3..85032edff0c5c4e4d5140dab4357a69fd42d6bcb 100644 (file)
 
 #include "VISU_Convertor_impl.hxx"
 #include "VISU_ConvertorUtils.hxx"
+#include "VTKViewer_AppendFilter.h"
+#include "VISU_MergeFilter.hxx"
+
+#include <vtkPoints.h>
+#include <vtkUnstructuredGrid.h>
 
 #include <vtkIdList.h>
 #include <vtkCellType.h>
@@ -37,7 +42,6 @@
 #include <vtkCellData.h>
 #include <vtkCellLinks.h>
 
-#include <vtkMergeDataObjectFilter.h>
 
 #include <qstring.h>
 #include <qfileinfo.h>
@@ -55,36 +59,970 @@ static int MYVTKDEBUG = 0;
 #ifdef _DEBUG_
 static int MYDEBUG = 0;
 static int MYDEBUGWITHFILES = 0;
+//#define _DEXCEPT_
 #else
 static int MYDEBUG = 0;
 static int MYDEBUGWITHFILES = 0;
 #endif
 
+namespace VISU
+{
+  //---------------------------------------------------------------
+  TIsVTKDone::TIsVTKDone(): 
+    myIsVTKDone(false),
+    myIsDone(false)
+  {}
+
+
+  //---------------------------------------------------------------
+  TSizeCounter::TSizeCounter():
+    myNbCells(0),
+    myCellsSize(0)
+  {}
+
+
+  //---------------------------------------------------------------
+  TSource::TSource()
+  {}
+
+  const TVTKSource& 
+  TSource
+  ::GetSource() const
+  {
+    if(!mySource.GetPointer()){
+      mySource = vtkUnstructuredGrid::New();
+      mySource->Delete();
+    }
+    return mySource;
+  }
+
+  TVTKOutput* 
+  TSource
+  ::GetVTKOutput()
+  {
+    return GetSource().GetPointer();
+  }
+
+
+  //---------------------------------------------------------------
+  TAppendFilter::TAppendFilter()
+  {}
+
+  const TVTKAppendFilter& 
+  TAppendFilter
+  ::GetFilter() const
+  {
+    if(!myFilter.GetPointer()){
+      myFilter = VTKViewer_AppendFilter::New();
+      myFilter->Delete();
+      myFilter->SetDoMappingFlag(true);
+    }
+    return myFilter;
+  }
+
+  TVTKOutput* 
+  TAppendFilter
+  ::GetVTKOutput()
+  {
+    GetFilter()->Update();
+    return GetFilter()->GetOutput();
+  }
+
+
+  //---------------------------------------------------------------
+  TMergeFilter::TMergeFilter()
+  {}
+
+  const TVTKMergeFilter& 
+  TMergeFilter
+  ::GetFilter() const
+  {
+    if(!myFilter.GetPointer()){
+      myFilter = VISU_MergeFilter::New();
+      myFilter->Delete();
+    }
+    return myFilter;
+  }
+
+  TVTKOutput* 
+  TMergeFilter
+  ::GetVTKOutput()
+  {
+    GetFilter()->Update();
+    return GetFilter()->GetUnstructuredGridOutput();
+  }
 
-namespace{
 
+  //---------------------------------------------------------------
+  TPointCoords
+  ::TPointCoords():
+    myPoints(vtkPoints::New())
+  {
+    myPoints->Delete();
+  }
+
+  void
+  TPointCoords
+  ::Init(vtkIdType theNbPoints,
+        vtkIdType theDim)
+  {
+    myDim = theDim;
+    myNbPoints = theNbPoints;
+    myCoord.resize(theNbPoints*theDim);
+    myPoints->SetNumberOfPoints(theNbPoints);
+  }
+
+  TCCoordSlice 
+  TPointCoords
+  ::GetCoordSlice(vtkIdType theNodeId) const
+  {
+    return TCCoordSlice(myCoord,std::slice(theNodeId*myDim,myDim,1));
+  }
+  
+  TCoordSlice 
+  TPointCoords
+  ::GetCoordSlice(vtkIdType theNodeId)
+  {
+    return TCoordSlice(myCoord,std::slice(theNodeId*myDim,myDim,1));
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  TNamedPointCoords
+  ::Init(vtkIdType theNbPoints,
+        vtkIdType theDim,
+        const TVectorID& theVectorID)
+  {
+    TPointCoords::Init(theNbPoints,theDim);
+    myPointsDim.resize(theDim);
+    myVectorID = theVectorID;
+
+    for(vtkIdType anID = 0, anEnd = theVectorID.size(); anID < anEnd; anID++)
+      myObj2VTKID[theVectorID[anID]] = anID;
+  }
+
+  std::string&
+  TNamedPointCoords
+  ::GetName(vtkIdType theDim)
+  {
+    return myPointsDim[theDim];
+  }
+
+  const std::string&
+  TNamedPointCoords
+  ::GetName(vtkIdType theDim) const
+  {
+    return myPointsDim[theDim];
+  }
+
+  vtkIdType
+  TNamedPointCoords
+  ::GetObjID(vtkIdType theID) const
+  {
+    if(myVectorID.empty())
+      return theID;
+    else
+      return myVectorID[theID];
+  }
+
+
+  vtkIdType
+  TNamedPointCoords
+  ::GetVTKID(vtkIdType theID) const
+  {
+    if(myObj2VTKID.empty())
+      return theID;
+    else{
+      TObj2VTKID::const_iterator anIter = myObj2VTKID.find(theID);
+      if(anIter != myObj2VTKID.end())
+       return anIter->second;
+    }
+    return -1;
+  }
+
+  std::string 
+  TNamedPointCoords
+  ::GetNodeName(vtkIdType theObjID) const
+  {
+    return "";
+  }
+
+  //---------------------------------------------------------------
+  TMeshImpl::TMeshImpl():
+    myPoints(vtkPoints::New()),
+    myNbPoints(0) 
+  {
+    myPoints->Delete();
+  }
+
+
+  //---------------------------------------------------------------
+  TSubProfileImpl::TSubProfileImpl():
+    myStatus(eNone),
+    myGeom(eNONE)
+  {}
+
+
+  vtkIdType
+  TSubProfileImpl
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    return theID;
+  }
+
+
+  //---------------------------------------------------------------
+  bool
+  operator<(const PSubProfile& theLeft, const PSubProfile& theRight)
+  {
+    PSubProfileImpl aLeft(theLeft), aRight(theRight);
+
+    if(aLeft->myGeom != aRight->myGeom)
+      return aLeft->myGeom < aRight->myGeom;
+
+    if(aLeft->myStatus != aRight->myStatus)
+      return aLeft->myStatus < aRight->myStatus;
+
+    return aLeft->myName < aRight->myName;
+  }
+
+
+  //---------------------------------------------------------------
+  TProfileImpl::TProfileImpl():
+    myIsAll(true),
+    myMeshOnEntity(NULL)
+  {}
+
+  vtkIdType
+  TProfileImpl
+  ::GetNodeObjID(vtkIdType theID) const
+  {
+    return myNamedPointCoords->GetObjID(theID);
+  }
+  
+  vtkIdType
+  TProfileImpl
+  ::GetNodeVTKID(vtkIdType theID) const
+  {
+    return myNamedPointCoords->GetVTKID(theID);
+  }
+
+  float*  
+  TProfileImpl
+  ::GetNodeCoord(vtkIdType theObjID)
+  {
+    if(myIsAll)
+      return myMeshOnEntity->GetNodeCoord(theObjID);
+
+    vtkIdType aVtkID = GetNodeVTKID(theObjID);
+    return GetFilter()->GetOutput()->GetPoint(aVtkID);
+  }
+
+  vtkIdType
+  TProfileImpl
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    if(myIsAll)
+      return myMeshOnEntity->GetElemObjID(theID);
+
+    vtkIdType anInputID;
+    const TVTKAppendFilter& anAppendFilter = GetFilter();
+    vtkIdType aID = anAppendFilter->GetCellInputID(theID,anInputID);
+    PSubProfileImpl aSubProfileImpl = mySubProfileArr[anInputID];
+    return aSubProfileImpl->GetElemObjID(aID);
+  }
+
+  vtkIdType
+  TProfileImpl
+  ::GetElemVTKID(vtkIdType theID) const
+  {
+    if(myIsAll)
+      return myMeshOnEntity->GetElemVTKID(theID);
+
+    if(myElemObj2VTKID.empty())
+      return theID;
+    else{
+      TID2ID::const_iterator anIter = myElemObj2VTKID.find(theID);
+      if(anIter != myElemObj2VTKID.end())
+       return anIter->second;
+    }
+    return -1;
+  }
+
+  vtkCell* 
+  TProfileImpl
+  ::GetElemCell(vtkIdType theObjID)
+  {
+    if(myIsAll)
+      return myMeshOnEntity->GetElemCell(theObjID);
+
+    vtkIdType aVtkID = GetElemVTKID(theObjID);
+    return GetFilter()->GetOutput()->GetCell(aVtkID);
+  }
+  
+  TVTKOutput* 
+  TProfileImpl
+  ::GetVTKOutput()
+  {
+    const TVTKAppendFilter& anAppendFilter = GetFilter();
+    return anAppendFilter->GetOutput();
+  }
+
+  std::string 
+  TProfileImpl
+  ::GetNodeName(vtkIdType theObjID) const
+  {
+    return myNamedPointCoords->GetNodeName(theObjID);
+  }
+
+  std::string 
+  TProfileImpl
+  ::GetElemName(vtkIdType theObjID) const
+  {
+    if(myIsAll)
+      return myMeshOnEntity->GetElemName(theObjID);
+
+    vtkIdType anInputID;
+    vtkIdType aVTKId = GetElemVTKID(theObjID);
+    const TVTKAppendFilter& anAppendFilter = GetFilter();
+    vtkIdType aSubID = anAppendFilter->GetCellInputID(aVTKId,anInputID);
+    PSubProfileImpl aSubProfileImpl = mySubProfileArr[anInputID];
+    vtkIdType anEntityObjId = aSubProfileImpl->GetElemObjID(aSubID);
+    return myMeshOnEntity->GetElemName(anEntityObjId);
+  }
+
+
+  //---------------------------------------------------------------
+  TVTKOutput* 
+  TIDMapperFilter
+  ::GetVTKOutput()
+  {
+    if(!myFilter.GetPointer()){
+      const TVTKAppendFilter& anAppendFilter = myIDMapper.GetFilter();
+      TVTKOutput* aGeometry = anAppendFilter->GetOutput();
+      
+      const TVTKSource& aSource = mySource.GetSource();
+      TDataSet* aDataSet = aSource.GetPointer();
+      aDataSet->ShallowCopy(aGeometry);
+      
+      const TVTKMergeFilter& aFilter = GetFilter();
+      aFilter->SetGeometry(aGeometry);
+      aFilter->SetScalars(aDataSet);
+      aFilter->SetVectors(aDataSet);
+      aFilter->AddField("VISU_FIELD",aDataSet);
+    }
+    return myFilter->GetUnstructuredGridOutput();
+  }
+
+  vtkIdType
+  TIDMapperFilter
+  ::GetNodeObjID(vtkIdType theID) const
+  {
+    return myIDMapper.GetNodeObjID(theID);
+  }
+  
+  vtkIdType
+  TIDMapperFilter
+  ::GetNodeVTKID(vtkIdType theID) const
+  {
+    return myIDMapper.GetNodeVTKID(theID);
+  }
+
+  float*  
+  TIDMapperFilter
+  ::GetNodeCoord(vtkIdType theObjID)
+  {
+    return myIDMapper.GetNodeCoord(theObjID);
+  }
+
+  vtkIdType
+  TIDMapperFilter
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    return myIDMapper.GetElemObjID(theID);
+  }
+
+  vtkIdType
+  TIDMapperFilter
+  ::GetElemVTKID(vtkIdType theID) const
+  {
+    return myIDMapper.GetElemVTKID(theID);
+  }
+
+  vtkCell* 
+  TIDMapperFilter
+  ::GetElemCell(vtkIdType theObjID)
+  {
+    return myIDMapper.GetElemCell(theObjID);
+  }
+  
+
+  //---------------------------------------------------------------
+  void
+  TGaussImpl
+  ::LessThan(const PGaussImpl& theGauss,
+            bool& theResult) const
+  {
+    theResult = false;
+  }
+
+
+  //---------------------------------------------------------------
+  TGaussSubMeshImpl::TGaussSubMeshImpl():
+    myStatus(eNone)
+  {}
+  
+  TGaussPointID
+  TGaussSubMeshImpl
+  ::GetObjID(vtkIdType theID) const
+  {
+    TCellID aCellID = theID / myGauss->myNbPoints;
+    TLocalPntID aLocalPntID = theID % myGauss->myNbPoints;
+    
+    return TGaussPointID(aCellID,aLocalPntID);
+  }
+
+  //---------------------------------------------------------------
+  bool
+  operator<(const PGaussSubMesh& theLeft, const PGaussSubMesh& theRight)
+  {
+    PGaussSubMeshImpl aLeft(theLeft), aRight(theRight);
+    const PGaussImpl& aGaussLeft = aLeft->myGauss;
+    const PGaussImpl& aGaussRight = aRight->myGauss;
+    
+    if(aGaussLeft->myGeom != aGaussRight->myGeom)
+      return aGaussLeft->myGeom < aGaussRight->myGeom;
+
+    if(aLeft->mySubProfile != aRight->mySubProfile)
+      return aLeft->mySubProfile < aRight->mySubProfile;
+
+    bool aResult;
+    aGaussLeft->LessThan(aGaussRight,aResult);
+
+    return aResult;
+  }
+
+
+  //---------------------------------------------------------------
+  TGaussMeshImpl
+  ::TGaussMeshImpl():
+    myParent(NULL)
+  {}
+
+  TGaussPointID 
+  TGaussMeshImpl
+  ::GetObjID(vtkIdType theID) const
+  {
+    const TVTKAppendFilter& anAppendFilter = GetFilter();
+    vtkIdType anInputDataSetID;
+    vtkIdType anInputID = anAppendFilter->GetCellInputID(theID,anInputDataSetID);
+    const TGaussSubMeshImpl& aSubMeshImpl = myGaussSubMeshArr[anInputDataSetID];
+
+    return aSubMeshImpl.GetObjID(anInputID);
+  }
+  
+  TVTKOutput* 
+  TGaussMeshImpl
+  ::GetVTKOutput()
+  {
+    return mySource.GetVTKOutput();
+  }
+
+  TNamedIDMapper* 
+  TGaussMeshImpl::
+  GetParent()
+  {
+    return myParent;
+  }
+
+
+  //---------------------------------------------------------------
+  TGaussPointID 
+  TGaussPtsIDFilter
+  ::GetObjID(vtkIdType theID) const
+  {
+    return myGaussPtsIDMapper->GetObjID(theID);
+  }
+  
+  TNamedIDMapper* 
+  TGaussPtsIDFilter::
+  GetParent()
+  {
+    return myGaussPtsIDMapper->GetParent();
+  }
+
+
+  //---------------------------------------------------------------
+  vtkIdType
+  TSubMeshImpl
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    return myStartID + theID;
+  }
+
+  std::string 
+  TSubMeshImpl
+  ::GetElemName(vtkIdType theObjID) const
+  {
+    return "";
+  }
+
+  //---------------------------------------------------------------
+  vtkIdType
+  TMeshOnEntityImpl
+  ::GetNodeVTKID(vtkIdType theID) const
+  {
+    return myNamedPointCoords->GetVTKID(theID);
+  }
+
+  vtkIdType
+  TMeshOnEntityImpl
+  ::GetNodeObjID(vtkIdType theID) const
+  {
+    return myNamedPointCoords->GetObjID(theID);
+  }
+
+  vtkIdType
+  TMeshOnEntityImpl
+  ::GetElemVTKID(vtkIdType theID) const
+  {
+    if(myElemObj2VTKID.empty())
+      return theID;
+    else{
+      TID2ID::const_iterator anIter = myElemObj2VTKID.find(theID);
+      if(anIter != myElemObj2VTKID.end())
+       return anIter->second;
+    }
+    return -1;
+  }
+
+  vtkIdType
+  TMeshOnEntityImpl
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    vtkIdType anInputID;
+    const TVTKAppendFilter& anAppendFilter = GetFilter();
+    vtkIdType aID = anAppendFilter->GetCellInputID(theID,anInputID);
+    const PSubMeshImpl& aSubMesh = mySubMeshArr[anInputID];
+    return aSubMesh->GetElemObjID(aID);
+  }
+
+  std::string 
+  TMeshOnEntityImpl
+  ::GetNodeName(vtkIdType theObjID) const
+  {
+    return myNamedPointCoords->GetNodeName(theObjID);
+  }
+
+  std::string 
+  TMeshOnEntityImpl
+  ::GetElemName(vtkIdType theObjID) const
+  {
+    vtkIdType aVTKId = GetElemVTKID(theObjID);
+    vtkIdType anInputID;
+    const TVTKAppendFilter& anAppendFilter = GetFilter();
+    vtkIdType aSubID = anAppendFilter->GetCellInputID(aVTKId,anInputID);
+    const PSubMeshImpl& aSubMesh = mySubMeshArr[anInputID];
+    return aSubMesh->GetElemName(aSubID);
+  }
+
+  //---------------------------------------------------------------
+  vtkIdType
+  TFamilyImpl
+  ::GetElemVTKID(vtkIdType theID) const
+  {
+    if(myElemObj2VTKID.empty())
+      return theID;
+    else{
+      TID2ID::const_iterator anIter = myElemObj2VTKID.find(theID);
+      if(anIter != myElemObj2VTKID.end())
+       return anIter->second;
+    }
+    return -1;
+  }
+
+  vtkIdType
+  TFamilyImpl
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    return myMeshID[theID];
+  }
+
+  vtkIdType 
+  TFamilyImpl
+  ::GetNodeObjID(vtkIdType theID) const 
+  {
+    return myNamedPointCoords->GetObjID(theID);
+  }
+
+  vtkIdType
+  TFamilyImpl
+  ::GetNodeVTKID(vtkIdType theID) const 
+  {
+    return myNamedPointCoords->GetVTKID(theID);
+  }
+
+  TVTKOutput* 
+  TFamilyImpl
+  ::GetVTKOutput()
+  {
+    return TSource::GetVTKOutput();
+  }
+
+
+  //---------------------------------------------------------------
+  TNbASizeCells 
+  TGroupImpl
+  ::GetNbASizeCells() const
+  {
+    vtkIdType aNbCells = 0, aCellsSize = 0;
+    TFamilySet::const_iterator anIter = myFamilySet.begin();
+    for(; anIter != myFamilySet.end(); anIter++){
+      PFamilyImpl aFamily = *anIter; 
+      aNbCells += aFamily->myNbCells;
+      aCellsSize += aFamily->myCellsSize;
+    }
+    return make_pair(aNbCells,aCellsSize);
+  }
+
+  vtkIdType
+  TGroupImpl
+  ::GetElemVTKID(vtkIdType theID) const
+  {
+    if(myElemObj2VTKID.empty())
+      return theID;
+    else{
+      TID2ID::const_iterator anIter = myElemObj2VTKID.find(theID);
+      if(anIter != myElemObj2VTKID.end())
+       return anIter->second;
+    }
+    return -1;
+  }
+
+  vtkIdType
+  TGroupImpl
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    vtkIdType anInputID;
+    const TVTKAppendFilter& anAppendFilter = GetFilter();
+    vtkIdType anID = anAppendFilter->GetCellInputID(theID,anInputID);
+    const PFamilyImpl& aFamily = myFamilyArr[anInputID];
+    return aFamily->GetElemObjID(anID);
+  }
+
+  vtkIdType 
+  TGroupImpl
+  ::GetNodeObjID(vtkIdType theID) const 
+  {
+    return myNamedPointCoords->GetObjID(theID);
+  }
+
+  vtkIdType
+  TGroupImpl
+  ::GetNodeVTKID(vtkIdType theID) const 
+  {
+    return myNamedPointCoords->GetVTKID(theID);
+  }
+
+  
+  //---------------------------------------------------------------
+  TFieldImpl
+  ::TFieldImpl(): 
+    myDataSize(0)
+  {}
+
+  void 
+  TFieldImpl
+  ::InitArrays(vtkIdType theNbComp)
+  {
+    myNbComp = theNbComp;
+    myCompNames.resize(theNbComp);
+    myUnitNames.resize(theNbComp);
+    myMinMaxArr.resize(theNbComp + 1);
+    for(vtkIdType iComp = 0; iComp <= theNbComp; iComp++){
+      TMinMax& aMinMax = myMinMaxArr[iComp];
+      aMinMax.first = VTK_LARGE_FLOAT;
+      aMinMax.second = -VTK_LARGE_FLOAT;
+    }
+  }
+
+  TMinMax 
+  TFieldImpl
+  ::GetMinMax(vtkIdType theCompID)
+  {
+    return myMinMaxArr[theCompID];
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  TMeshValue
+  ::Init(vtkIdType theNbElem,
+        vtkIdType theNbGauss,
+        vtkIdType theNbComp)
+  {
+    myNbElem = theNbElem;
+    myNbGauss = theNbGauss;
+    myNbComp = theNbComp;
+    
+    myStep = theNbComp*theNbGauss;
+    
+    myValue.resize(theNbElem*myStep);
+  }
+
+  TCValueSliceArr 
+  TMeshValue
+  ::GetGaussValueSliceArr(vtkIdType theElemId) const
+  {
+    TCValueSliceArr aValueSliceArr(myNbGauss);
+    vtkIdType anId = theElemId*myStep;
+    for(vtkIdType aGaussId = 0; aGaussId < myNbGauss; aGaussId++){
+      aValueSliceArr[aGaussId] =
+       TCValueSlice(myValue,std::slice(anId,myNbComp,1));
+      anId += myNbComp;
+    }
+    return aValueSliceArr;
+  }
+
+  TValueSliceArr 
+  TMeshValue
+  ::GetGaussValueSliceArr(vtkIdType theElemId)
+  {
+    TValueSliceArr aValueSliceArr(myNbGauss);
+    vtkIdType anId = theElemId*myStep;
+    for(vtkIdType aGaussId = 0; aGaussId < myNbGauss; aGaussId++){
+      aValueSliceArr[aGaussId] =
+       TValueSlice(myValue,std::slice(anId,myNbComp,1));
+      anId += myNbComp;
+    }
+    return aValueSliceArr;
+  }
+
+  TCValueSliceArr 
+  TMeshValue
+  ::GetCompValueSliceArr(vtkIdType theElemId) const
+  {
+    TCValueSliceArr aValueSliceArr(myNbComp);
+    vtkIdType anId = theElemId*myStep;
+    for(vtkIdType aCompId = 0; aCompId < myNbComp; aCompId++){
+      aValueSliceArr[aCompId] =
+       TCValueSlice(myValue,std::slice(anId,myNbGauss,myNbComp));
+      anId += 1;
+    }
+    return aValueSliceArr;
+  }
+
+  TValueSliceArr 
+  TMeshValue
+  ::GetCompValueSliceArr(vtkIdType theElemId)
+  {
+    TValueSliceArr aValueSliceArr(myNbComp);
+    vtkIdType anId = theElemId*myStep;
+    for(vtkIdType aCompId = 0; aCompId < myNbComp; aCompId++){
+      aValueSliceArr[aCompId] =
+       TValueSlice(myValue,std::slice(anId,myNbGauss,myNbComp));
+      anId += 1;
+    }
+    return aValueSliceArr;
+  }
+
+
+  //---------------------------------------------------------------
+  TValForTimeImpl
+  ::TValForTimeImpl():
+    myGaussPtsIDFilter(new TGaussPtsIDFilter()),
+    myIDMapperFilter(new TIDMapperFilter())
+  {}
+
+  const TMeshValue& 
+  TValForTimeImpl
+  ::GetMeshValue(EGeometry theGeom) const
+  {
+    TGeom2Value::const_iterator anIter = myGeom2Value.find(theGeom);
+    if(anIter == myGeom2Value.end())
+      EXCEPTION(runtime_error,"TValForTimeImpl::GetMeshValue - myGeom2Value.find(theGeom) fails");
+    return anIter->second;
+  }
+  
+  TMeshValue& 
+  TValForTimeImpl
+  ::GetMeshValue(EGeometry theGeom)
+  {
+    return myGeom2Value[theGeom];
+  }
+
+  int
+  TValForTimeImpl
+  ::GetNbGauss(EGeometry theGeom) const
+  {
+    TGeom2NbGauss::const_iterator anIter = myGeom2NbGauss.find(theGeom);
+    if(anIter == myGeom2NbGauss.end()){
+      //EXCEPTION(runtime_error,"TValForTimeImpl::GetNbGauss - myGeom2NbGauss.find(theGeom) fails");
+      return 1;
+    }
+    return anIter->second;
+  }
+  
+
+  //---------------------------------------------------------------
+  vtkIdType
+  VISUGeom2NbNodes(EGeometry theGeom)
+  { 
+    switch(theGeom){
+#ifndef VISU_ENABLE_QUADRATIC
+    case VISU::eSEG3: 
+      return 2;
+    case VISU::eTRIA6: 
+      return 3;
+    case VISU::eQUAD8: 
+      return 4;
+    case VISU::eTETRA10: 
+      return 4;
+    case VISU::eHEXA20: 
+      return 8;
+    case VISU::ePENTA15: 
+      return 6;
+    case VISU::ePYRA13: 
+      return 5;
+#endif
+    case VISU::ePOLYGONE: 
+    case VISU::ePOLYEDRE: 
+      return -1;
+    default:
+      return theGeom % 100;
+    }
+  }
+
+  vtkIdType
+  VISUGeom2VTK(EGeometry theGeom)
+  { 
+    switch(theGeom){
+    case VISU::ePOINT1: 
+      return VTK_VERTEX;
+    case VISU::eSEG2: 
+      return VTK_LINE;
+    case VISU::eTRIA3: 
+      return VTK_TRIANGLE;
+    case VISU::eQUAD4: 
+      return VTK_QUAD;
+    case VISU::eTETRA4: 
+      return VTK_TETRA;
+    case VISU::eHEXA8: 
+      return VTK_HEXAHEDRON;
+    case VISU::ePENTA6: 
+      return VTK_WEDGE;
+    case VISU::ePYRA5: 
+      return VTK_PYRAMID;
+
+    case VISU::ePOLYGONE: 
+      return VTK_POLYGON;
+    case VISU::ePOLYEDRE: 
+      return VTK_CONVEX_POINT_SET;
+
+#ifndef VISU_ENABLE_QUADRATIC
+    case VISU::eSEG3: 
+      return VTK_LINE;
+    case VISU::eTRIA6: 
+      return VTK_TRIANGLE;
+    case VISU::eQUAD8: 
+      return VTK_QUAD;
+    case VISU::eTETRA10: 
+      return VTK_TETRA;
+    case VISU::eHEXA20: 
+      return VTK_HEXAHEDRON;
+    case VISU::ePENTA15: 
+      return VTK_WEDGE;
+    case VISU::ePYRA13: 
+      return VTK_PYRAMID;
+
+#else
+
+    case VISU::eSEG3: 
+#if defined(VTK_QUADRATIC_EDGE) && defined(VISU_USE_VTK_QUADRATIC)
+      return VTK_QUADRATIC_EDGE;
+#else
+      return VTK_POLY_LINE;
+#endif
+
+    case VISU::eTRIA6: 
+#if defined(VTK_QUADRATIC_TRIANGLE) && defined(VISU_USE_VTK_QUADRATIC)
+      return VTK_QUADRATIC_TRIANGLE;
+#else
+      return VTK_POLYGON;
+#endif
+
+    case VISU::eQUAD8: 
+#if defined(VTK_QUADRATIC_QUAD) && defined(VISU_USE_VTK_QUADRATIC)
+      return VTK_QUADRATIC_QUAD;
+#else
+      return VTK_POLYGON;
+#endif
+
+    case VISU::eTETRA10: 
+#if defined(VTK_QUADRATIC_TETRA) && defined(VISU_USE_VTK_QUADRATIC)
+      return VTK_QUADRATIC_TETRA;
+#else
+      return VTK_CONVEX_POINT_SET;
+#endif
+
+    case VISU::eHEXA20: 
+#if defined(VTK_QUADRATIC_HEXAHEDRON) && defined(VISU_USE_VTK_QUADRATIC)
+      return VTK_QUADRATIC_HEXAHEDRON;
+#else
+      return VTK_CONVEX_POINT_SET;
+#endif
+
+    case VISU::ePENTA15: 
+#if defined(VTK_QUADRATIC_WEDGE) && defined(VISU_USE_VTK_QUADRATIC)
+      return VTK_QUADRATIC_WEDGE;
+#else
+      return VTK_CONVEX_POINT_SET;
+#endif
+
+    case VISU::ePYRA13: 
+#if defined(VTK_QUADRATIC_PYRAMID) && defined(VISU_USE_VTK_QUADRATIC)
+      return VTK_QUADRATIC_PYRAMID;
+#else
+      return VTK_CONVEX_POINT_SET;
+#endif
+
+#endif //VISU_ENABLE_QUADRATIC
+
+    default:
+      return -1;
+    }
+  }
+}
+
+
+namespace
+{
+  //---------------------------------------------------------------
   template<class T> 
-  std::string dtos(const std::string& fmt, T val){
+  std::string 
+  dtos(const std::string& fmt, T val)
+  {
     static QString aString;
     aString.sprintf(fmt.c_str(),val);
     return aString.latin1();
   }
 
+
+  //---------------------------------------------------------------
   enum ECoordName{eX, eY, eZ, eNone};
-  typedef VISU::TCoord (*TGetCoord)(const VISU::TMeshImpl::TPointsCoord&, int);
+  typedef VISU::TCoord (*TGetCoord)(const VISU::TCCoordSlice& theCoordSlice);
   
-  template<ECoordName TheCoordId>
+  template<ECoordName TCoordId>
   VISU::TCoord 
-  GetCoord(const VISU::TMeshImpl::TPointsCoord& thePointsCoord, 
-          int theStartPos)
+  GetCoord(const VISU::TCCoordSlice& theCoordSlice)
   {
-    return thePointsCoord[theStartPos+TheCoordId];
+    return theCoordSlice[TCoordId];
   }
   
   template<>
   VISU::TCoord 
-  GetCoord<eNone>(const VISU::TMeshImpl::TPointsCoord& thePointsCoord, 
-                 int theStartPos)
+  GetCoord<eNone>(const VISU::TCCoordSlice& theCoordSlice)
   {
     return 0.0;
   }
@@ -136,86 +1074,100 @@ namespace{
 
   
   class TCoordHelper{
-    const VISU::TMeshImpl::TPointsCoord& myPointsCoord;
     TGetCoord* myGetCoord;
   public:
-    TCoordHelper(const VISU::TMeshImpl::TPointsCoord& thePointsCoord,
-                TGetCoord* theGetCoord):
-      myPointsCoord(thePointsCoord),
+    TCoordHelper(TGetCoord* theGetCoord):
       myGetCoord(theGetCoord)
     {}
-    virtual ~TCoordHelper(){}
+
+    virtual
+    ~TCoordHelper()
+    {}
+
     VISU::TCoord 
-    GetCoord(int theStartPos, int theCoodId)
+    GetCoord(VISU::TCCoordSlice& theCoordSlice, 
+            int theCoordId)
     {
-      return (*myGetCoord[theCoodId])(myPointsCoord,theStartPos);
+      return (*myGetCoord[theCoordId])(theCoordSlice);
     }
   };
   typedef std::auto_ptr<TCoordHelper> TCoordHelperPtr;
   
-  void GetPoints(VISU::TVTKSource& theStorage, VISU::PMeshImpl theMesh) 
+
+  //---------------------------------------------------------------
+  vtkPoints*
+  GetPoints(const PMeshImpl& theMesh) 
   {
-    vtkPoints* aPoints = theMesh->myPoints.GetPointer();
-    if(!aPoints){
-      aPoints = vtkPoints::New();
+    TVTKPoints& aPoints = theMesh->myPoints;
+    const TNamedPointCoords& aCoords = theMesh->myNamedPointCoords;
+
+    if(!theMesh->myIsVTKDone){
       TCoordHelperPtr aCoordHelperPtr;
-      const VISU::TMeshImpl::TPointsCoord& anArray = theMesh->myPointsCoord;
       {
        int aMeshDimension = theMesh->myDim;
        bool anIsDimPresent[3] = {false, false, false};
        for(int iDim = 0; iDim < aMeshDimension; iDim++){
-         string aDimName = theMesh->myPointsDim[iDim];
-         if(aDimName == "x" || aDimName == "X")
+         const std::string& aName = aCoords.GetName(iDim);
+         if(aName == "x" || aName == "X")
            anIsDimPresent[eX] = true;
-         else if(aDimName == "y" || aDimName == "Y")
+         else if(aName == "y" || aName == "Y")
            anIsDimPresent[eY] = true;
-         else if(aDimName == "z" || aDimName == "Z")
+         else if(aName == "z" || aName == "Z")
            anIsDimPresent[eZ] = true;
        }
 
        switch(aMeshDimension){
        case 3:
-         aCoordHelperPtr.reset(new TCoordHelper(anArray,aXYZGetCoord));
+         aCoordHelperPtr.reset(new TCoordHelper(aXYZGetCoord));
          break;
        case 2:
          if(anIsDimPresent[eY] && anIsDimPresent[eZ])
-           aCoordHelperPtr.reset(new TCoordHelper(anArray,aYZGetCoord));
+           aCoordHelperPtr.reset(new TCoordHelper(aYZGetCoord));
          else if(anIsDimPresent[eX] && anIsDimPresent[eZ])
-           aCoordHelperPtr.reset(new TCoordHelper(anArray,aXZGetCoord));
+           aCoordHelperPtr.reset(new TCoordHelper(aXZGetCoord));
          else
-           aCoordHelperPtr.reset(new TCoordHelper(anArray,aXYGetCoord));
+           aCoordHelperPtr.reset(new TCoordHelper(aXYGetCoord));
          break;
        case 1:
          if(anIsDimPresent[eY])
-           aCoordHelperPtr.reset(new TCoordHelper(anArray,aYGetCoord));
+           aCoordHelperPtr.reset(new TCoordHelper(aYGetCoord));
          else if(anIsDimPresent[eZ])
-           aCoordHelperPtr.reset(new TCoordHelper(anArray,aZGetCoord));
+           aCoordHelperPtr.reset(new TCoordHelper(aZGetCoord));
          else
-           aCoordHelperPtr.reset(new TCoordHelper(anArray,aXGetCoord));
+           aCoordHelperPtr.reset(new TCoordHelper(aXGetCoord));
          break;
        }
       }
 
-      if(MYVTKDEBUG) aPoints->DebugOn();
-      vtkIdType iEnd = theMesh->myPointsCoord.size();
-      vtkIdType aNbPoints = iEnd / theMesh->myDim;
+      vtkIdType aNbPoints = aCoords.GetNbPoints();
       aPoints->SetNumberOfPoints(aNbPoints);
-      MSG(MYDEBUG,"GetPoints - aNbPoints = "<<aNbPoints<<"; myDim = "<<theMesh->myDim);
-      for (vtkIdType i = 0, j = 0; i < iEnd; i += theMesh->myDim, j++) 
-       aPoints->SetPoint(j,
-                         aCoordHelperPtr->GetCoord(i,eX),
-                         aCoordHelperPtr->GetCoord(i,eY),
-                         aCoordHelperPtr->GetCoord(i,eZ));
-      theMesh->myPoints = aPoints;
-      aPoints->Delete();
+      
+      INITMSG(MYDEBUG,"GetPoints - aNbPoints = "<<aNbPoints<<
+             "; aDim = "<<theMesh->myDim<<
+             endl);
+
+      for(vtkIdType aNodeId = 0; aNodeId < aNbPoints; aNodeId++){ 
+       TCCoordSlice aCoordSlice = aCoords.GetCoordSlice(aNodeId);
+       aPoints->SetPoint(aNodeId,
+                         aCoordHelperPtr->GetCoord(aCoordSlice,eX),
+                         aCoordHelperPtr->GetCoord(aCoordSlice,eY),
+                         aCoordHelperPtr->GetCoord(aCoordSlice,eZ));
+      }
+      
+      theMesh->myIsVTKDone = true;
+
+      if(MYVTKDEBUG) aPoints->DebugOn();
     }
-    theStorage->SetPoints(aPoints);
+
+    return aPoints.GetPointer();
   }
   
   
-  inline void PrintCells(int& theStartId,
-                        vtkCellArray* theConnectivity, 
-                        const VISU::TMeshOnEntityImpl::TConnect& theVector)
+  //---------------------------------------------------------------
+  void
+  PrintCells(int& theStartId,
+            vtkCellArray* theConnectivity, 
+            const VISU::TConnect& theVector)
   {
     vtkIdList *anIdList = vtkIdList::New();
     int kEnd = theVector.size();
@@ -226,469 +1178,1072 @@ namespace{
     anIdList->Delete();
   }
 
-  void GetCellsOnEntity(VISU::TVTKSource& theStorage,
-                       const VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                       const string& theFamilyName) 
+
+  //---------------------------------------------------------------
+  void
+  GetCellsOnSubMesh(const TVTKSource& theSource,
+                   const PMeshOnEntityImpl& theMeshOnEntity, 
+                   const PSubMeshImpl& theSubMesh,
+                   const vtkIdType theGeom) 
+  {
+    const VISU::TCell2Connect& anArray = theSubMesh->myCell2Connect;
+    vtkIdType aCellsSize = theSubMesh->myCellsSize;
+    vtkIdType aNbCells = theSubMesh->myNbCells;
+    INITMSG(MYDEBUG,"GetCellsOnSubMesh "<<
+           "- theGeom = "<<theGeom<<
+           "; aNbCells = "<<aNbCells<<
+           endl);
+
+
+    vtkCellArray* aConnectivity = vtkCellArray::New();
+    aConnectivity->Allocate(aCellsSize,0);
+    vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
+    aCellTypesArray->SetNumberOfComponents(1);
+    aCellTypesArray->SetNumberOfTuples(aNbCells);
+
+    for(vtkIdType anID = 0; anID < aNbCells; anID++){
+      PrintCells(anID,aConnectivity,anArray[anID]);
+      aCellTypesArray->SetValue(anID,(unsigned char)theGeom);
+    }
+
+    vtkIdType *pts = 0, npts = 0;
+    vtkIntArray* aCellLocationsArray = vtkIntArray::New();
+    aCellLocationsArray->SetNumberOfComponents(1);
+    aCellLocationsArray->SetNumberOfTuples(aNbCells);
+    aConnectivity->InitTraversal();
+    for(int i=0; aConnectivity->GetNextCell(npts,pts); i++)
+      aCellLocationsArray->SetValue(i,aConnectivity->GetTraversalLocation(npts));
+    theSource->SetCells(aCellTypesArray,aCellLocationsArray,aConnectivity);
+
+    if(MYVTKDEBUG) aConnectivity->DebugOn();
+
+    aCellLocationsArray->Delete();
+    aCellTypesArray->Delete();
+    aConnectivity->Delete();
+  } 
+  
+  
+  //---------------------------------------------------------------
+  void
+  GetCellsOnFamily(const TVTKSource& theSource,
+                  const PMeshOnEntityImpl& theMeshOnEntity, 
+                  const PFamilyImpl& theFamily) 
+  {
+    INITMSG(MYDEBUG,"GetCellsOnFamily"<<endl);
+
+    vtkIdType aNbCells = theFamily->myNbCells;
+    vtkIdType aCellsSize = theFamily->myCellsSize;
+
+    vtkCellArray* aConnectivity = vtkCellArray::New();
+    aConnectivity->Allocate(aCellsSize,0);
+    vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
+    aCellTypesArray->SetNumberOfComponents(1);
+    aCellTypesArray->SetNumberOfTuples(aNbCells);
+
+    TSubMeshID& aMeshID = theFamily->myMeshID;
+    aMeshID.resize(aNbCells);
+
+    VISU::TID2ID& anElemObj2VTKID = theFamily->myElemObj2VTKID;
+
+    const VISU::TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
+    VISU::TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.begin();
+    for(vtkIdType i = 0, j = 0; anIter != aGeom2SubMesh.end(); anIter++){
+      VISU::EGeometry aEGeom = anIter->first;
+      vtkIdType aVGeom = VISUGeom2VTK(aEGeom);
+
+      const VISU::TSubMeshImpl& aSubMesh = anIter->second;
+      const VISU::TCell2Connect& anArray = aSubMesh.myCell2Connect;
+
+      const VISU::TGeom2SubMeshID& aGeom2SubMeshID = theFamily->myGeom2SubMeshID;
+      if(aGeom2SubMeshID.empty()) 
+       EXCEPTION(runtime_error,"GetCells >> There is no elements on the family !!!");
+
+      VISU::TGeom2SubMeshID::const_iterator aGeom2SubMeshIDIter = aGeom2SubMeshID.find(aEGeom);
+      if(aGeom2SubMeshIDIter == aGeom2SubMeshID.end()) 
+       continue;
+
+      const VISU::TSubMeshID& aSubMeshID = aGeom2SubMeshIDIter->second;
+
+      INITMSG(MYDEBUG,
+             " - aEGeom = "<<aEGeom<<
+             "; aVGeom = "<<aVGeom<<
+             "; aSubMeshID.size() = "<<aSubMeshID.size()<<
+             endl);
+
+      VISU::TSubMeshID::const_iterator aSubMeshIDIter = aSubMeshID.begin();
+      for(; aSubMeshIDIter != aSubMeshID.end(); aSubMeshIDIter++, i++){
+       vtkIdType anID = *aSubMeshIDIter;
+       PrintCells(i,aConnectivity,anArray[anID]);
+       aCellTypesArray->SetValue(j++,(unsigned char)aVGeom);
+
+       anElemObj2VTKID[anID] = i;
+       aMeshID[i] = anID;
+      }
+    }
+    vtkIdType *pts = 0, npts = 0;
+    vtkIntArray* aCellLocationsArray = vtkIntArray::New();
+    aCellLocationsArray->SetNumberOfComponents(1);
+    aCellLocationsArray->SetNumberOfTuples(aNbCells);
+    aConnectivity->InitTraversal();
+    for(int i=0; aConnectivity->GetNextCell(npts,pts); i++)
+      aCellLocationsArray->SetValue(i,aConnectivity->GetTraversalLocation(npts));
+    theSource->SetCells(aCellTypesArray,aCellLocationsArray,aConnectivity);
+
+    if(MYVTKDEBUG) aConnectivity->DebugOn();
+
+    aCellLocationsArray->Delete();
+    aCellTypesArray->Delete();
+    aConnectivity->Delete();
+  }
+  
+  
+  //---------------------------------------------------------------
+  std::string
+  GenerateFieldName(const PFieldImpl& theField,
+                   const PValForTimeImpl& theValForTime)
+  {
+    const VISU::TTime& aTime = theValForTime->myTime;
+    string aFieldName = theField->myMeshName + ", " + theField->myName + ": " + 
+      VISU_Convertor::GenerateName(aTime);
+    return aFieldName;
+  }
+
+
+  //---------------------------------------------------------------
+  void 
+  GetTimeStampOnProfile(const TVTKSource& theSource,
+                       const PFieldImpl& theField, 
+                       const PValForTimeImpl& theValForTime)
+  {
+    int aNbTuples = theField->myDataSize/theField->myNbComp;
+    std::string aFieldName = GenerateFieldName(theField,theValForTime);
+    
+    vtkDataSetAttributes* aDataSetAttributes;
+    switch(theField->myEntity){
+    case VISU::NODE_ENTITY : 
+      aDataSetAttributes = theSource->GetPointData();
+      break;
+    default: 
+      aDataSetAttributes = theSource->GetCellData();
+    }
+
+    int aNbComp = theField->myNbComp;
+    vtkFloatArray *aFloatArray = vtkFloatArray::New();
+
+    switch(aNbComp) {
+    case 1:
+      aFloatArray->SetNumberOfComponents(1);
+      aDataSetAttributes->SetScalars(aFloatArray);
+      break;
+    default:
+      aFloatArray->SetNumberOfComponents(3);
+      aDataSetAttributes->SetVectors(aFloatArray);
+    }
+    aFloatArray->SetNumberOfTuples(aNbTuples);
+    aFloatArray->SetName(aFieldName.c_str());
+
+    vtkFloatArray *aDataArray = vtkFloatArray::New();
+    aDataArray->SetNumberOfComponents(aNbComp);
+    aDataArray->SetNumberOfTuples(aNbTuples);
+    aDataArray->SetName("VISU_FIELD");
+    aDataSetAttributes->AddArray(aDataArray);
+
+    int aNbComp2 = aNbComp;
+    if(aNbComp == 4)
+      aNbComp2 = 2;
+    else if(aNbComp > 4)
+      aNbComp2 = 3;
+
+    INITMSG(MYDEBUG,"GetTimeStampOnProfile "<<
+           "- aNbTuples = "<<aNbTuples<<
+           "; aNbComp = "<<aNbComp<<
+           "; aNbComp2 = "<<aNbComp2<<
+           endl);
+    
+    int aSize = max(3,aNbComp);
+    TVector<float> aDataValues(aSize,0.0);
+
+    TGeom2Value& aGeom2Value = theValForTime->myGeom2Value;
+    TGeom2Value::const_iterator anIter = aGeom2Value.begin();
+    for(int aTupleId = 0; anIter != aGeom2Value.end(); anIter++){
+      EGeometry aEGeom = anIter->first;
+      const TMeshValue& aMeshValue = anIter->second;
+      
+      int aNbElem = aMeshValue.myNbElem;
+      int aNbGauss = aMeshValue.myNbGauss;
+      INITMSG(MYDEBUG,
+             "- aEGeom = "<<aEGeom<<
+             "; aNbElem = "<<aNbElem<<
+             "; aNbGauss = "<<aNbGauss<<
+             endl);
+
+      for(int iElem = 0; iElem < aNbElem; iElem++, aTupleId++){
+       TCValueSliceArr aValueSliceArr = aMeshValue.GetCompValueSliceArr(iElem);
+       for(int iComp = 0; iComp < aNbComp; iComp++){
+         const TCValueSlice& aValueSlice = aValueSliceArr[iComp];
+         aDataValues[iComp] = 0.0;
+         for(int iGauss = 0; iGauss < aNbGauss; iGauss++){
+           aDataValues[iComp] += aValueSlice[iGauss];
+         }
+         aDataValues[iComp] /= aNbGauss;
+       }
+       aFloatArray->SetTuple(aTupleId,&aDataValues[0]);
+       aDataArray->SetTuple(aTupleId,&aDataValues[0]);
+      }
+    }
+    aFloatArray->Delete();
+    aDataArray->Delete();
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  GetCells(const TVTKSource& theSource,
+          const PSubProfileImpl& theSubProfile,
+          const PProfileImpl& theProfile,
+          const PMeshOnEntityImpl& theMeshOnEntity)
   {
-    //Check on existing family
-    PFamilyImpl aFamily = GetFamily(theMeshOnEntity,theFamilyName);
-    //Main part of code
-    pair<int,int> aCellsDim = theMeshOnEntity->GetCellsDims(theFamilyName);
-    int aNbCells = aCellsDim.first, aCellsSize = aCellsDim.second;
+    vtkIdType aNbCells = theSubProfile->myNbCells;
+    vtkIdType aCellsSize = theSubProfile->myCellsSize;
+    VISU::EGeometry aEGeom = theSubProfile->myGeom;
+    vtkIdType aNbNodes = VISUGeom2NbNodes(aEGeom);
+    vtkIdType aVGeom = VISUGeom2VTK(aEGeom);
+
+    INITMSG(MYDEBUG,"GetCells - aVGeom = "<<aVGeom<<endl);
+
+    const TSubMeshID& aSubMeshID = theSubProfile->mySubMeshID;
+
+    const VISU::TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
+    VISU::TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.find(aEGeom);
+    if(anIter == aGeom2SubMesh.end())
+      EXCEPTION(runtime_error,"GetCells >> There is no elements for the GEOM("<<aEGeom<<")");
+    
+    const VISU::TSubMeshImpl& aSubMesh = anIter->second;
+    const TCell2Connect& aCell2Connect = aSubMesh.myCell2Connect;
+    
     vtkCellArray* aConnectivity = vtkCellArray::New();
     aConnectivity->Allocate(aCellsSize,0);
     vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
     aCellTypesArray->SetNumberOfComponents(1);
     aCellTypesArray->SetNumberOfTuples(aNbCells);
-    MSG(MYDEBUG,"GetCellsOnEntity - isFamilyPresent = "<<bool(aFamily));
-    const VISU::TMeshOnEntityImpl::TCellsConn &aCellsConn = theMeshOnEntity->myCellsConn;
-    VISU::TMeshOnEntityImpl::TCellsConn::const_iterator aCellsConnIter = aCellsConn.begin();
-    for(int i = 0, j = 0; aCellsConnIter != aCellsConn.end(); aCellsConnIter++){
-      const VISU::TMeshOnEntityImpl::TConnForCellType& anArray = aCellsConnIter->second;
-      int aVtkType = aCellsConnIter->first;
-      MSG(MYDEBUG,"GetCellsOnEntity - aVtkType = "<<aVtkType<<"; anArray.size() = "<<anArray.size());
-      if(!aFamily)
-       for(int k = 0, kEnd = anArray.size(); k < kEnd; k++, i++){
-         PrintCells(i,aConnectivity,anArray[k]);
-         aCellTypesArray->SetValue(j++,(unsigned char)aVtkType);
+    
+    if(theSubProfile->myStatus == eAddAll){
+      VISU::TCell2Connect::const_iterator anIter = aCell2Connect.begin();
+      for(vtkIdType anId = 0, aConnId = 0; anIter != aCell2Connect.end(); anIter++){
+       const TConnect& anArray = aCell2Connect[anId];
+       PrintCells(aConnId,aConnectivity,anArray);
+       aCellTypesArray->SetValue(anId,(unsigned char)aVGeom);
+       aConnId += aNbNodes;
+       anId++;
+      }
+    }else{
+      VISU::TSubMeshID::const_iterator anIter = aSubMeshID.begin();
+      for(vtkIdType anId = 0, aConnId = 0; anIter != aSubMeshID.end(); anIter++){
+       vtkIdType aSubId = *anIter;
+       const TConnect& anArray = aCell2Connect[aSubId];
+       PrintCells(aConnId,aConnectivity,anArray);
+       aCellTypesArray->SetValue(anId,(unsigned char)aVGeom);
+       aConnId += aNbNodes;
+       anId++;
+      }
+    }
+    
+    vtkIdType *pts = 0, npts = 0;
+    vtkIntArray* aCellLocationsArray = vtkIntArray::New();
+    
+    aCellLocationsArray->SetNumberOfComponents(1);
+    aCellLocationsArray->SetNumberOfTuples(aNbCells);
+    aConnectivity->InitTraversal();
+    for(int i=0; aConnectivity->GetNextCell(npts,pts); i++)
+      aCellLocationsArray->SetValue(i,aConnectivity->GetTraversalLocation(npts));
+    theSource->SetCells(aCellTypesArray,aCellLocationsArray,aConnectivity);
+    
+    aCellLocationsArray->Delete();
+    aCellTypesArray->Delete();
+    aConnectivity->Delete();
+  }
+  
+  
+  //---------------------------------------------------------------
+  void
+  GetMeshOnSubProfile(const PMeshImpl& theMesh,
+                     const PMeshOnEntityImpl& theMeshOnEntity,
+                     const PProfileImpl& theProfile,
+                     const PSubProfileImpl& theSubProfile)
+  {
+    INITMSG(MYDEBUG,"GetMeshOnSubProfile - aEGeom = "<<theSubProfile->myGeom<<endl);
+    
+    const TVTKSource& aSource = theSubProfile->GetSource();
+    if(theSubProfile->myIsVTKDone)
+      return;
+    
+    aSource->SetPoints(GetPoints(theMesh));
+    INITMSGA(MYDEBUG,0,"GetNumberOfPoints - "<<aSource->GetNumberOfPoints()<<endl);
+    GetCells(aSource,theSubProfile,theProfile,theMeshOnEntity);
+    BEGMSG(MYDEBUG,"GetNumberOfCells - "<<aSource->GetNumberOfCells()<<endl);
+    
+    theSubProfile->myIsVTKDone = true;
+  }
+  
+  
+  //---------------------------------------------------------------
+  void
+  GetMeshOnProfile(const PMeshImpl& theMesh,
+                  const PMeshOnEntityImpl& theMeshOnEntity,
+                  const PProfileImpl& theProfile)
+  {
+    if(theProfile->myIsVTKDone)
+      return;
+    
+    theProfile->myMeshOnEntity = theMeshOnEntity.get();
+    const TVTKAppendFilter& anAppendFilter = theProfile->GetFilter();
+    anAppendFilter->SetPoints(GetPoints(theMesh));
+
+    if(theProfile->myIsAll){
+      TVTKOutput* aDataSet = theMeshOnEntity->GetVTKOutput();
+      anAppendFilter->AddInput(aDataSet);
+    }else{
+      const TGeom2SubProfile& aGeom2SubProfile = theProfile->myGeom2SubProfile;
+
+      TID2ID& anElemObj2VTKID = theProfile->myElemObj2VTKID;
+
+      TSubProfileArr& aSubProfileArr = theProfile->mySubProfileArr;
+      aSubProfileArr.resize(aGeom2SubProfile.size());
+
+      TGeom2SubProfile::const_iterator anIter = aGeom2SubProfile.begin();
+      for(vtkIdType anInputID = 0, aCellID = 0; anIter != aGeom2SubProfile.end(); anIter++){
+       PSubProfileImpl aSubProfile = anIter->second;
+       if(aSubProfile->myStatus == eRemoveAll)
+         continue;
+       
+       GetMeshOnSubProfile(theMesh,
+                           theMeshOnEntity,
+                           theProfile,
+                           aSubProfile);
+       
+       const TVTKSource& aSource = aSubProfile->GetSource();
+       anAppendFilter->AddInput(aSource.GetPointer());
+
+       vtkIdType aNbCells = aSource->GetNumberOfCells();
+       for(vtkIdType aCell = 0; aCell < aNbCells; aCell++, aCellID++){
+         anElemObj2VTKID[aSubProfile->GetElemObjID(aCell)] = aCellID;
+       }
+
+       aSubProfileArr[anInputID++] = aSubProfile;
+      }
+    }
+    anAppendFilter->Update(); // Fix on VTK
+    theProfile->myNamedPointCoords = theMesh->myNamedPointCoords;
+    
+    theProfile->myIsVTKDone = true;
+  }
+  
+  
+  //---------------------------------------------------------------
+  void 
+  GetTimeStampOnGaussMesh(const TVTKSource& theSource,
+                         const PFieldImpl& theField, 
+                         const PValForTimeImpl& theValForTime)
+  {
+    int aNbTuples = theSource->GetNumberOfPoints();
+    std::string aFieldName = GenerateFieldName(theField,theValForTime);
+
+    vtkDataSetAttributes* aDataSetAttributes;
+    switch(theField->myEntity){
+    case VISU::NODE_ENTITY : 
+      aDataSetAttributes = theSource->GetPointData();
+      break;
+    default: 
+      aDataSetAttributes = theSource->GetCellData();
+    }
+
+    int aNbComp = theField->myNbComp;
+    vtkFloatArray *aFloatArray = vtkFloatArray::New();
+    switch(aNbComp){
+    case 1:
+      aFloatArray->SetNumberOfComponents(1);
+      aDataSetAttributes->SetScalars(aFloatArray);
+      break;
+    default:
+      aFloatArray->SetNumberOfComponents(3);
+      aDataSetAttributes->SetVectors(aFloatArray);
+    }
+    aFloatArray->SetNumberOfTuples(aNbTuples);
+    aFloatArray->SetName(aFieldName.c_str());
+
+    vtkFloatArray *aDataArray = vtkFloatArray::New();
+    aDataArray->SetNumberOfComponents(aNbComp);
+    aDataArray->SetNumberOfTuples(aNbTuples);
+    aDataArray->SetName("VISU_FIELD");
+    aDataSetAttributes->AddArray(aDataArray);
+
+    int aNbComp2 = aNbComp;
+    if(aNbComp == 4)
+      aNbComp2 = 2;
+    else if(aNbComp > 4)
+      aNbComp2 = 3;
+
+    INITMSG(MYDEBUG,"GetTimeStampOnGaussMesh "<<
+           "- aNbTuples = "<<aNbTuples<<
+           "; aNbComp = "<<aNbComp<<
+           "; aNbComp2 = "<<aNbComp2<<
+           endl);
+    
+    int aSize = max(3,aNbComp);
+    TVector<float> aDataValues(aSize,0.0);
+
+    const TGeom2Value& aGeom2Value = theValForTime->myGeom2Value;
+
+    PGaussMeshImpl aGaussMesh = theValForTime->myGaussMesh;
+    const TGeom2GaussSubMesh& aGeom2GaussSubMesh = aGaussMesh->myGeom2GaussSubMesh;
+    TGeom2GaussSubMesh::const_iterator anIter = aGeom2GaussSubMesh.begin();
+    for(int aTupleId = 0; anIter != aGeom2GaussSubMesh.end(); anIter++){
+      EGeometry aEGeom = anIter->first;
+
+      PGaussSubMeshImpl aGaussSubMesh = anIter->second;
+      if(!aGaussSubMesh->myIsDone)
+       continue;
+      
+      TGeom2Value::const_iterator anIter2 = aGeom2Value.find(aEGeom);
+      if(anIter2 == aGeom2Value.end()){
+       EXCEPTION(runtime_error,
+                 "GetTimeStampOnGaussMesh >> Can't find values for corresponding Gauss Points SubMesh");
+      }
+      const TMeshValue& aMeshValue = anIter2->second;
+      int aNbGauss = aMeshValue.myNbGauss;
+      int aNbElem = aMeshValue.myNbElem;
+      
+      if(aNbGauss < 1)
+       continue;
+
+      const TPointCoords& aCoords = aGaussSubMesh->myPointCoords;
+
+      INITMSG(MYDEBUG,
+             "- aEGeom = "<<aEGeom<<
+             "; aNbElem = "<<aNbElem<<
+             "; aNbGauss = "<<aNbGauss<<
+             "; aCoords.GetNbPoints() = "<<aCoords.GetNbPoints()<<
+             endl);
+
+      if(aCoords.GetNbPoints() == aNbElem*aNbGauss){
+       for(int iElem = 0; iElem < aNbElem; iElem++){
+         TCValueSliceArr aValueSliceArr = aMeshValue.GetGaussValueSliceArr(iElem);
+         for(int iGauss = 0; iGauss < aNbGauss; iGauss++, aTupleId++){
+           const TCValueSlice& aValueSlice = aValueSliceArr[iGauss];
+           for(int iComp = 0; iComp < aNbComp; iComp++){
+             aDataValues[iComp] = aValueSlice[iComp];
+           }
+           aFloatArray->SetTuple(aTupleId,&aDataValues[0]);
+           aDataArray->SetTuple(aTupleId,&aDataValues[0]);
+         }
        }
-      else{
-       const VISU::TFamilyImpl::TSubMesh& aSubMesh = aFamily->mySubMesh;
-       if(aSubMesh.empty()) 
-         EXCEPTION(runtime_error,"GetCells >> There is no elements on the family !!!");
-       VISU::TFamilyImpl::TSubMesh::const_iterator aSubMeshIter = aSubMesh.find(aVtkType);
-       if(aSubMeshIter == aSubMesh.end()) continue;
-       const VISU::TFamilyImpl::TSubMeshOnCellType& aSubMeshOnCellType = aSubMeshIter->second;
-       MSG(MYDEBUG,"GetCellsOnEntity - aSubMeshOnCellType.size() = "<<aSubMeshOnCellType.size());
-       VISU::TFamilyImpl::TSubMeshOnCellType::const_iterator aSubMeshOnCellTypeIter = aSubMeshOnCellType.begin();
-       for(; aSubMeshOnCellTypeIter != aSubMeshOnCellType.end(); aSubMeshOnCellTypeIter++, i++){
-         PrintCells(i,aConnectivity,anArray[*aSubMeshOnCellTypeIter]);
-         aCellTypesArray->SetValue(j++,(unsigned char)aVtkType);
+      }else{
+       for(int iElem = 0; iElem < aNbElem; iElem++, aTupleId++){
+         TCValueSliceArr aValueSliceArr = aMeshValue.GetCompValueSliceArr(iElem);
+         for(int iComp = 0; iComp < aNbComp; iComp++){
+           const TCValueSlice& aValueSlice = aValueSliceArr[iComp];
+           aDataValues[iComp] = 0.0;
+           for(int iGauss = 0; iGauss < aNbGauss; iGauss++){
+             aDataValues[iComp] += aValueSlice[iGauss];
+           }
+           aDataValues[iComp] /= aNbGauss;
+         }
+         aFloatArray->SetTuple(aTupleId,&aDataValues[0]);
+         aDataArray->SetTuple(aTupleId,&aDataValues[0]);
        }
       }
     }
-    vtkIdType *pts = 0, npts = 0;
-    vtkIntArray* aCellLocationsArray = vtkIntArray::New();
-    aCellLocationsArray->SetNumberOfComponents(1);
-    aCellLocationsArray->SetNumberOfTuples(aNbCells);
-    aConnectivity->InitTraversal();
-    for(int i=0; aConnectivity->GetNextCell(npts,pts); i++)
-      aCellLocationsArray->SetValue(i,aConnectivity->GetTraversalLocation(npts));
-    theStorage->SetCells(aCellTypesArray,aCellLocationsArray,aConnectivity);
-    if(MYVTKDEBUG) aConnectivity->DebugOn();
-    aCellLocationsArray->Delete();
-    aCellTypesArray->Delete();
-    aConnectivity->Delete();
-  } 
-  
-  
-  void GetCellsOnGroup(VISU::TVTKSource& theStorage,
-                      VISU::PMeshImpl theMesh,
-                      const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet) 
+    aFloatArray->Delete();
+    aDataArray->Delete();
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  GetSource(const TVTKSource& theSource,
+           const PGaussSubMeshImpl& theGaussSubMesh,
+           const PMeshOnEntityImpl& theMeshOnEntity)
   {
-    //Calculate dimentions of the group
-    int aNbCells = 0, aCellsSize = 0;
-    VISU::TFamilyAndEntitySet::const_iterator aFamilyAndEntitySetIter = theFamilyAndEntitySet.begin();
-    for(; aFamilyAndEntitySetIter != theFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++){
-      const VISU::TFamilyAndEntity& aFamilyAndEntity = *aFamilyAndEntitySetIter;
-      const string& aFamilyName = aFamilyAndEntity.first;
-      const VISU::TEntity& anEntity = aFamilyAndEntity.second;
-      const VISU::PMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[anEntity];
-      pair<int,int> aCellsDim = aMeshOnEntity->GetCellsDims(aFamilyName);
-      aNbCells += aCellsDim.first;
-      aCellsSize += aCellsDim.second;
-    }
+    const TPointCoords& aCoords = theGaussSubMesh->myPointCoords;
+    vtkIdType aNbPoints = aCoords.GetNbPoints();
+    vtkIdType aDim = aCoords.GetDim();
+    
+    vtkIdType aNbCells = theGaussSubMesh->myNbCells;
+    vtkIdType aCellsSize = theGaussSubMesh->myCellsSize;
+    
     vtkCellArray* aConnectivity = vtkCellArray::New();
     aConnectivity->Allocate(aCellsSize,0);
     vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
     aCellTypesArray->SetNumberOfComponents(1);
     aCellTypesArray->SetNumberOfTuples(aNbCells);
-    aFamilyAndEntitySetIter = theFamilyAndEntitySet.begin();
-    for(int i = 0, j = 0; aFamilyAndEntitySetIter != theFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++){
-      const VISU::TFamilyAndEntity& aFamilyAndEntity = *aFamilyAndEntitySetIter;
-      const string& aFamilyName = aFamilyAndEntity.first;
-      const VISU::TEntity& anEntity = aFamilyAndEntity.second;
-      PMeshOnEntityImpl aMeshOnEntity = theMesh->myMeshOnEntityMap[anEntity];
-      PFamilyImpl aFamily = GetFamily(aMeshOnEntity,aFamilyName);
-      const VISU::TMeshOnEntityImpl::TCellsConn &aCellsConn = aMeshOnEntity->myCellsConn;
-      VISU::TMeshOnEntityImpl::TCellsConn::const_iterator aCellsConnIter = aCellsConn.begin();
-      for(; aCellsConnIter != aCellsConn.end(); aCellsConnIter++){
-       const VISU::TMeshOnEntityImpl::TConnForCellType& anArray = aCellsConnIter->second;
-       int aVtkType = aCellsConnIter->first;
-       MSG(MYDEBUG,"GetCellsOnGroup - aVtkType = "<<aVtkType<<"; anArray.size() = "<<anArray.size());
-       const VISU::TFamilyImpl::TSubMesh& aSubMesh = aFamily->mySubMesh;
-       if(aSubMesh.empty()) 
-         EXCEPTION(runtime_error,"GetCells >> There is no elements on the family !!!");
-       VISU::TFamilyImpl::TSubMesh::const_iterator aSubMeshIter = aSubMesh.find(aVtkType);
-       if(aSubMeshIter == aSubMesh.end()) continue;
-       const VISU::TFamilyImpl::TSubMeshOnCellType& aSubMeshOnCellType = aSubMeshIter->second;
-       MSG(MYDEBUG,"GetCellsOnGroup - aSubMeshOnCellType.size() = "<<aSubMeshOnCellType.size());
-       VISU::TFamilyImpl::TSubMeshOnCellType::const_iterator aSubMeshOnCellTypeIter = aSubMeshOnCellType.begin();
-       for(; aSubMeshOnCellTypeIter != aSubMeshOnCellType.end(); aSubMeshOnCellTypeIter++, i++){
-         PrintCells(i,aConnectivity,anArray[*aSubMeshOnCellTypeIter]);
-         aCellTypesArray->SetValue(j++,(unsigned char)aVtkType);
-       }
-      }
+    
+    const TVTKPoints& aPoints = aCoords.GetPoints();
+    vtkIdList *anIdList = vtkIdList::New();
+    anIdList->SetNumberOfIds(1);
+    for(vtkIdType aPointId = 0; aPointId < aNbPoints; aPointId++){
+      TCCoordSlice aSlice = aCoords.GetCoordSlice(aPointId);
+      
+      float aCoords[3] = {0.0, 0.0, 0.0};
+      for(vtkIdType aDimId = 0; aDimId < aDim; aDimId++)
+       aCoords[aDimId] = aSlice[aDimId];
+      
+      aPoints->SetPoint(aPointId,aCoords);
+      
+      anIdList->SetId(0,aPointId);
+      aConnectivity->InsertNextCell(anIdList);
+      aCellTypesArray->SetValue(aPointId,(unsigned char)VTK_VERTEX);
     }
-    vtkIdType *pts = 0, npts = 0;
+    anIdList->Delete();
+    
     vtkIntArray* aCellLocationsArray = vtkIntArray::New();
     aCellLocationsArray->SetNumberOfComponents(1);
     aCellLocationsArray->SetNumberOfTuples(aNbCells);
+    
+    vtkIdType *pts = 0, npts = 0;
     aConnectivity->InitTraversal();
     for(int i = 0; aConnectivity->GetNextCell(npts,pts); i++)
       aCellLocationsArray->SetValue(i,aConnectivity->GetTraversalLocation(npts));
-    theStorage->SetCells(aCellTypesArray,aCellLocationsArray,aConnectivity);
+    
+    const TVTKSource& aSource = theGaussSubMesh->GetSource();
+    aSource->SetCells(aCellTypesArray,aCellLocationsArray,aConnectivity);
+    aSource->SetPoints(aPoints.GetPointer());
+    
     aCellLocationsArray->Delete();
     aCellTypesArray->Delete();
     aConnectivity->Delete();
-  } 
+  }
   
   
-  void InitProfile(VISU::TVTKExtractFilter& theFilter,
-                  PMeshOnEntityImpl theMeshOnEntity, 
-                  PValForTimeImpl theValForTime)
-  {
-    const VISU::TValForTimeImpl::TValForCells& aValForCells = theValForTime->myValForCells;
-    const VISU::TMeshOnEntityImpl::TCellsConn &aCellsConn = theMeshOnEntity->myCellsConn;
-    VISU::TMeshOnEntityImpl::TCellsConn::const_iterator aCellsConnIter = aCellsConn.begin();
-    for(; aCellsConnIter != aCellsConn.end(); aCellsConnIter++){
-      const vtkIdType& aCellType = aCellsConnIter->first;
-      if(aValForCells.find(aCellType) == aValForCells.end())
-       theFilter->RemoveCellsWithType(aCellType);
-    }
-  }
-
-
-  void GetValsOnTimeStamp(vtkFloatArray *theFloatArray, 
-                         const vtkIdType& theNumberOfTuples,
-                         const std::string& theFieldName,
-                         VISU::PFieldImpl theField,
-                         VISU::PValForTimeImpl theValForTime)
-  {
-    //theFloatArray->DebugOn();
-    theFloatArray->SetNumberOfTuples(theNumberOfTuples);
-    theFloatArray->SetName(theFieldName.c_str());
-    MSG(MYDEBUG,"GetValsOnTimeStamp - theNumberOfTuples = "<<theNumberOfTuples);
-    const VISU::TValForTimeImpl::TValForCells& aValForCells = theValForTime->myValForCells;
-    VISU::TValForTimeImpl::TValForCells::const_iterator aValForCellsIter = aValForCells.begin();
-    for(int k = 0; aValForCellsIter != aValForCells.end(); aValForCellsIter++) {
-      const VISU::TValForTimeImpl::TValForCellsWithType& anArray = aValForCellsIter->second;
-      int iEnd = anArray.size()/theField->myNbComp;
-      int aVtkType = aValForCellsIter->first;
-      MSG(MYDEBUG,"GetValsOnTimeStamp -  iEnd = "<<iEnd<<"; aVtkType = "<<aVtkType);
-      switch(theField->myNbComp) {
-      case 1:
-       for (int i = 0; i < iEnd; i++) 
-         theFloatArray->SetTuple1(k++,anArray[i]);
-       break;
-      case 2:
-       for (int i = 0, ji = 0; i < iEnd; ++i, ji = i*2)
-         theFloatArray->SetTuple3(k++,anArray[ji],anArray[ji+1],0.0);
-       break;
-      case 3:
-       for (int i = 0, ji = 0; i < iEnd; ++i, ji = i*3)
-         theFloatArray->SetTuple3(k++,anArray[ji],anArray[ji+1],anArray[ji+2]);
-       break;
-      case 4:
-       for (int i = 0, ji = 0; i < iEnd; ++i, ji = i*4)
-         theFloatArray->SetTuple3(k++,anArray[ji],anArray[ji+1],0.0);
-       break;
-      case 6:
-       for (int i = 0, ji = 0; i < iEnd; ++i, ji = i*6)
-         theFloatArray->SetTuple3(k++,anArray[ji],anArray[ji+1],anArray[ji+2]);
-       break;
-      default:
-       EXCEPTION(runtime_error,"GetValsOnTimeStamp - There is no an algorithm for representation of the field !!!");
-      }
-    }
-  }
-
-  string GenerateFieldName(const VISU::PFieldImpl theField,
-                          const VISU::PValForTimeImpl theValForTime)
+  //---------------------------------------------------------------
+  void
+  GetGaussSubMesh(const PMeshImpl& theMesh,
+                 const PMeshOnEntityImpl& theMeshOnEntity,
+                 const PGaussMeshImpl& theGaussMesh,
+                 const PGaussSubMeshImpl& theGaussSubMesh)
   {
-    const VISU::TTime& aTime = theValForTime->myTime;
-    string aFieldName = theField->myMeshName + ", " + theField->myName + ": " + 
-      VISU_Convertor::GenerateName(aTime);
-    return aFieldName;
+    PGaussImpl aGauss = theGaussSubMesh->myGauss;
+    INITMSG(MYDEBUG,"GetGaussSubMesh - aVGeom = "<<aGauss->myGeom<<endl);
+    
+    if(!theGaussSubMesh->myIsDone)
+      return;
+    
+    if(theGaussSubMesh->myIsVTKDone)
+      return;
+    
+    const TVTKSource& aSource = theGaussSubMesh->GetSource();
+    GetSource(aSource,theGaussSubMesh,theMeshOnEntity);
+    INITMSGA(MYDEBUG,0,"GetNumberOfPoints - "<<aSource->GetNumberOfPoints()<<endl);
+    BEGMSG(MYDEBUG,"GetNumberOfCells - "<<aSource->GetNumberOfCells()<<endl);
+    
+    theGaussSubMesh->myIsVTKDone = true;
   }
+  
 
-  void GetTimeStamp(VISU::TVTKSource& theStorage,
-                   const VISU::PFieldImpl theField, 
-                   const VISU::PValForTimeImpl theValForTime)
+  //---------------------------------------------------------------
+  void
+  BuildGaussMesh(const PMeshImpl& theMesh,
+                const PMeshOnEntityImpl& theMeshOnEntity,
+                const PGaussMeshImpl& theGaussMesh)
   {
-    int aNumberOfTuples = theField->myDataSize/theField->myNbComp;
-    string aFieldName = GenerateFieldName(theField,theValForTime);
-    MSG(MYDEBUG,"GetTimeStamp(TVTKSource) - aFieldName = "<<aFieldName<<
-       "; aNumberOfTuples = "<<aNumberOfTuples);
-    
-    vtkDataSetAttributes* aDataSetAttributes;
-    switch(theField->myEntity){
-    case VISU::NODE_ENTITY : 
-      aDataSetAttributes = theStorage->GetPointData();
-      break;
-    default: 
-      aDataSetAttributes = theStorage->GetCellData();
+    if(theGaussMesh->myIsVTKDone)
+      return;
+
+    INITMSG(MYDEBUG,"BuildGaussMesh"<<endl);
+    const TVTKAppendFilter& anAppendFilter = theGaussMesh->GetFilter();
+    const TGeom2GaussSubMesh& aGeom2GaussSubMesh = theGaussMesh->myGeom2GaussSubMesh;
+    TGeom2GaussSubMesh::const_iterator anIter = aGeom2GaussSubMesh.begin();
+    for(; anIter != aGeom2GaussSubMesh.end(); anIter++){
+      PGaussSubMeshImpl aGaussSubMesh = anIter->second;
+      if(aGaussSubMesh->myStatus == eRemoveAll)
+       continue;
+      
+      GetGaussSubMesh(theMesh,
+                     theMeshOnEntity,
+                     theGaussMesh,
+                     aGaussSubMesh);
+      
+      const TVTKSource& aSource = aGaussSubMesh->GetSource();
+      
+      anAppendFilter->AddInput(aSource.GetPointer());
     }
+    anAppendFilter->Update(); // Fix on VTK
 
-    vtkFloatArray *aFloatArray = vtkFloatArray::New();
-    switch(theField->myNbComp) {
-    case 1:
-      aFloatArray->SetNumberOfComponents(1);
-      aDataSetAttributes->SetScalars(aFloatArray);
-      break;
-    default:
-      aFloatArray->SetNumberOfComponents(3);
-      aDataSetAttributes->SetVectors(aFloatArray);
-    }
+    theMeshOnEntity->GetVTKOutput()->Update();
 
-    GetValsOnTimeStamp(aFloatArray,aNumberOfTuples,aFieldName,theField,theValForTime);
+    vtkDataSet* aSource = anAppendFilter->GetOutput();
+    INITMSGA(MYDEBUG,0,"aNbPoints - "<<aSource->GetNumberOfPoints()<<endl);
+    BEGMSG(MYDEBUG,"aNbCells - "<<aSource->GetNumberOfCells()<<endl);
+    
+    theGaussMesh->myIsVTKDone = true;
   }
 
-  void GetTimeStamp(VISU::TVTKAttribyteFilter& theAttribyteFilter,
-                   VISU::TVTKMergetFilter& theMergeFilter,
-                   VISU::TVTKExtractFilter& theExtractFilter,
-                   const VISU::PFieldImpl theField, 
-                   const VISU::PValForTimeImpl theValForTime)
+
+  //---------------------------------------------------------------
+  void
+  PrintMemorySize(vtkUnstructuredGrid* theDataSet)
   {
-    int aNumberOfTuples = theField->myDataSize/theField->myNbComp;
-    string aFieldName = GenerateFieldName(theField,theValForTime);
-    MSG(MYDEBUG,"GetTimeStamp(TVTKAttribyteFilter) - aFieldName = "<<aFieldName<<
-       "; aNumberOfTuples = "<<aNumberOfTuples);
+    theDataSet->Update();
+    BEGMSG(1,"GetPoints() = "<<float(theDataSet->GetPoints()->GetActualMemorySize()*1000)<<endl);
+    BEGMSG(1,"GetCells() = "<<float(theDataSet->GetCells()->GetActualMemorySize()*1000)<<endl);
+    BEGMSG(1,"GetCellTypesArray() = "<<float(theDataSet->GetCellTypesArray()->GetActualMemorySize()*1000)<<endl);
+    BEGMSG(1,"GetCellLocationsArray() = "<<float(theDataSet->GetCellLocationsArray()->GetActualMemorySize()*1000)<<endl);
+    theDataSet->BuildLinks();
+    BEGMSG(1,"GetCellLinks() = "<<float(theDataSet->GetCellLinks()->GetActualMemorySize()*1000)<<endl);
+    BEGMSG(1,"GetPointData() = "<<float(theDataSet->GetPointData()->GetActualMemorySize()*1000)<<endl);
+    BEGMSG(1,"GetCellData() = "<<float(theDataSet->GetCellData()->GetActualMemorySize()*1000)<<endl);
+    BEGMSG(1,"GetActualMemorySize() = "<<float(theDataSet->GetActualMemorySize()*1000)<<endl);
+  }
+}
 
-    vtkDataObject* aDataObject = vtkDataObject::New();
-    theMergeFilter->SetDataObject(aDataObject);
-    aDataObject->Delete();
 
-    theMergeFilter->SetInput(theExtractFilter->GetOutput());
-    theAttribyteFilter->SetInput(theMergeFilter->GetOutput());
+//---------------------------------------------------------------
+VISU_Convertor_impl
+::VISU_Convertor_impl() 
+{
+  myIsDone = false;
+}
 
-    switch(theField->myEntity){
-    case VISU::NODE_ENTITY : 
-      theMergeFilter->SetOutputFieldToPointDataField();
-      theAttribyteFilter->SetInputFieldToPointDataField();
-      theAttribyteFilter->SetOutputAttributeDataToPointData();
-      break;
-    default: 
-      theMergeFilter->SetOutputFieldToCellDataField();
-      theAttribyteFilter->SetInputFieldToCellDataField();
-      theAttribyteFilter->SetOutputAttributeDataToCellData();
-    }
 
-    vtkFloatArray *aFloatArray = vtkFloatArray::New();
-    switch(theField->myNbComp) {
-    case 1:
-      aFloatArray->SetNumberOfComponents(1);
-      theAttribyteFilter->SetScalarComponent(0,aFieldName.c_str(),0);
-      break;
-    default:
-      aFloatArray->SetNumberOfComponents(3);
-      theAttribyteFilter->SetVectorComponent(0,aFieldName.c_str(),0);
-      theAttribyteFilter->SetVectorComponent(1,aFieldName.c_str(),1);
-      theAttribyteFilter->SetVectorComponent(2,aFieldName.c_str(),2);
-    }
+//---------------------------------------------------------------
+VISU_Convertor_impl
+::~VISU_Convertor_impl() 
+{}
 
-    vtkFieldData* aFieldData = aDataObject->GetFieldData();
-    aFieldData->AddArray(aFloatArray);
-    aFloatArray->Delete();
 
-    GetValsOnTimeStamp(aFloatArray,aNumberOfTuples,aFieldName,theField,theValForTime);
+//---------------------------------------------------------------
+VISU_Convertor* 
+VISU_Convertor_impl
+::Build() 
+{ 
+  if(!myIsDone){ 
+    myIsDone = true;  
+    BuildEntities();
+    BuildFields();
+    BuildMinMax();
+    BuildGroups();
   }
+  return this;
 }
 
-VISU_Convertor_impl::VISU_Convertor_impl() {
-  myIsDone = false;
+VISU_Convertor* 
+VISU_Convertor_impl
+::BuildEntities() 
+{ 
+  return this;
+}
+
+VISU_Convertor* 
+VISU_Convertor_impl
+::BuildFields() 
+{ 
+  return this;
+}
+
+VISU_Convertor* 
+VISU_Convertor_impl
+::BuildMinMax() 
+{ 
+  return this;
+}
+
+VISU_Convertor* 
+VISU_Convertor_impl
+::BuildGroups() 
+{ 
+  return this;
 }
 
-VISU_Convertor_impl::~VISU_Convertor_impl() {}
 
-VISU_Convertor::TOutput* 
-VISU_Convertor_impl::GetMeshOnEntity(const string& theMeshName, 
-                                    const VISU::TEntity& theEntity,
-                                    const string& theFamilyName)
+//---------------------------------------------------------------
+VISU::PNamedIDMapper 
+VISU_Convertor_impl
+::GetMeshOnEntity(const string& theMeshName, 
+                 const VISU::TEntity& theEntity)
 {
-  MSG(MYDEBUG,"GetMeshOnEntity - theMeshName = '"<<theMeshName<<
-      "'; theEntity = "<<theEntity<<"; theFamilyName = '"<<theFamilyName<<"'");
+  INITMSG(MYDEBUG,"GetMeshOnEntity"<<
+         "; theMeshName = '"<<theMeshName<<"'"<<
+         "; theEntity = "<<theEntity<<
+         endl);
+
   //Cheching possibility do the query
   TFindMeshOnEntity aFindMeshOnEntity = 
-    FindMeshOnEntity(theMeshName,theEntity,theFamilyName);
-  VISU::TVTKSource* pSource;
+    FindMeshOnEntity(theMeshName,theEntity);
+  
   PMeshImpl aMesh = boost::get<0>(aFindMeshOnEntity);;
-  PFamilyImpl aFamily = boost::get<2>(aFindMeshOnEntity);
   PMeshOnEntityImpl aMeshOnEntity = boost::get<1>(aFindMeshOnEntity);
-  if(aFamily)
-    pSource = &(aFamily->myStorage);
-  else
-    pSource = &(aMeshOnEntity->myStorage);
-  VISU::TVTKSource& aSource = *pSource;
+  
+  //Main part of code
+#ifndef _DEXCEPT_
+  try{
+#endif
+    if(!aMeshOnEntity->myIsVTKDone){
+      const TVTKAppendFilter& anAppendFilter = aMeshOnEntity->GetFilter();
+      if(MYVTKDEBUG) anAppendFilter->DebugOn();
+
+      LoadMeshOnEntity(aMesh,aMeshOnEntity);
+      anAppendFilter->SetPoints(GetPoints(aMesh));
+      
+      const TGeom2SubMesh& aGeom2SubMesh = aMeshOnEntity->myGeom2SubMesh;
+      TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.begin();
+
+      TID2ID& anElemObj2VTKID = aMeshOnEntity->myElemObj2VTKID;
+      TSubMeshArr& aSubMeshArr = aMeshOnEntity->mySubMeshArr;
+      aSubMeshArr.resize(aGeom2SubMesh.size());
+
+      for(vtkIdType anID = 0, aCellID = 0; anIter != aGeom2SubMesh.end(); anIter++, anID++){
+       EGeometry aEGeom = anIter->first;
+       vtkIdType aVGeom = VISUGeom2VTK(aEGeom);
+       PSubMeshImpl aSubMesh = anIter->second;
+       const TVTKSource& aSource = aSubMesh->GetSource();
+       aSource->SetPoints(GetPoints(aMesh));
+       GetCellsOnSubMesh(aSource,aMeshOnEntity,aSubMesh,aVGeom);
+       anAppendFilter->AddInput(aSource.GetPointer());
+
+       aSubMesh->myStartID = aCellID;
+       vtkIdType aNbCells = aSource->GetNumberOfCells();
+       for(vtkIdType aCell = 0; aCell < aNbCells; aCell++, aCellID++){
+         vtkIdType anObjID = aSubMesh->GetElemObjID(aCell);
+         anElemObj2VTKID[anObjID] = aCellID;
+       }
+       aSubMeshArr[anID] = aSubMesh;
+      }
+      aMeshOnEntity->myNamedPointCoords = aMesh->myNamedPointCoords;
+
+      aMeshOnEntity->myIsVTKDone = true;
+
+      if(MYDEBUGWITHFILES){
+       std::string aMeshName = QString(theMeshName.c_str()).simplifyWhiteSpace().latin1();
+       std::string aFileName = string(getenv("HOME"))+"/"+getenv("USER")+"-";
+       aFileName += aMeshName + dtos("-%d-",int(theEntity)) + "-Conv.vtk";
+       VISU::WriteToFile(anAppendFilter->GetOutput(),aFileName);
+      }
+
+      if(MYVTKDEBUG){
+       GetMeshOnEntitySize(theMeshName,theEntity);
+       PrintMemorySize(anAppendFilter->GetOutput());
+      }
+    }
+
+#ifndef _DEXCEPT_
+  }catch(...){
+    throw;
+  }
+#endif
+
+  return aMeshOnEntity;
+}
+
+
+//---------------------------------------------------------------
+VISU::PIDMapper 
+VISU_Convertor_impl
+::GetFamilyOnEntity(const std::string& theMeshName, 
+                   const VISU::TEntity& theEntity,
+                   const std::string& theFamilyName)
+{
+  INITMSG(MYDEBUG,"GetFamilyOnEntity"<<
+         "; theMeshName = '"<<theMeshName<<"'"<<
+         "; theEntity = "<<theEntity<<
+         "; theFamilyName = '"<<theFamilyName<<"'"<<
+         endl);
+
+  //Cheching possibility do the query
+  TFindFamilyOnEntity aFindFamilyOnEntity = 
+    FindFamilyOnEntity(theMeshName,theEntity,theFamilyName);
+
+  PMeshImpl aMesh = boost::get<0>(aFindFamilyOnEntity);;
+  PMeshOnEntityImpl aMeshOnEntity = boost::get<1>(aFindFamilyOnEntity);
+  PFamilyImpl aFamily = boost::get<2>(aFindFamilyOnEntity);
+
   //Main part of code
+#ifndef _DEXCEPT_
   try{
-    if(aSource.GetPointer() == NULL){
-      aSource = TOutput::New();
-      aSource->Delete();
+#endif
+    if(!aFamily->myIsVTKDone){
+      const TVTKSource& aSource = aFamily->GetSource();
       if(MYVTKDEBUG) aSource->DebugOn();
-      LoadMeshOnEntity(aMeshOnEntity,theFamilyName);
-      GetPoints(aSource,aMesh);
-      GetCellsOnEntity(aSource,aMeshOnEntity,theFamilyName);
+
+      GetMeshOnEntity(theMeshName,theEntity);
+
+      LoadFamilyOnEntity(aMesh,aMeshOnEntity,aFamily);
+      aSource->SetPoints(GetPoints(aMesh));
+      GetCellsOnFamily(aSource,aMeshOnEntity,aFamily);
+
+      aFamily->myNamedPointCoords = aMesh->myNamedPointCoords;
+
+      aFamily->myIsVTKDone = true;
+
       if(MYDEBUGWITHFILES){
-       string aMeshName = QString(theMeshName.c_str()).simplifyWhiteSpace().latin1();
-       string aFamilyName = QString(theFamilyName.c_str()).simplifyWhiteSpace().latin1();
-       string aFileName = string("/users/")+getenv("USER")+"/"+getenv("USER")+"-";
+       std::string aMeshName = QString(theMeshName.c_str()).simplifyWhiteSpace().latin1();
+       std::string aFamilyName = QString(theFamilyName.c_str()).simplifyWhiteSpace().latin1();
+       std::string aFileName = string(getenv("HOME"))+"/"+getenv("USER")+"-";
        aFileName += aMeshName + dtos("-%d-",int(theEntity)) + aFamilyName + "-Conv.vtk";
        VISU::WriteToFile(aSource.GetPointer(),aFileName);
       }
+
+      if(MYVTKDEBUG){
+       GetFamilyOnEntitySize(theMeshName,theEntity,theFamilyName);
+       PrintMemorySize(aSource.GetPointer());
+      }
     }
-    if(MYVTKDEBUG){
-      GetMeshOnEntitySize(theMeshName,theEntity,theFamilyName);
-      vtkUnstructuredGrid* aDataSet = aSource.GetPointer();
-      aDataSet->Update();
-      MSG(MYVTKDEBUG,"GetMeshOnEntity - GetPoints() = "<<float(aDataSet->GetPoints()->GetActualMemorySize()*1000));
-      MSG(MYVTKDEBUG,"GetMeshOnEntity - GetCells() = "<<float(aDataSet->GetCells()->GetActualMemorySize()*1000));
-      MSG(MYVTKDEBUG,"GetMeshOnEntity - GetCellTypesArray() = "<<float(aDataSet->GetCellTypesArray()->GetActualMemorySize()*1000));
-      MSG(MYVTKDEBUG,"GetMeshOnEntity - GetCellLocationsArray() = "<<float(aDataSet->GetCellLocationsArray()->GetActualMemorySize()*1000));
-      aDataSet->BuildLinks();
-      MSG(MYVTKDEBUG,"GetMeshOnEntity - GetCellLinks() = "<<float(aDataSet->GetCellLinks()->GetActualMemorySize()*1000));
-      MSG(MYVTKDEBUG,"GetMeshOnEntity - GetActualMemorySize() = "<<float(aDataSet->GetActualMemorySize()*1000));
-    }
+
+#ifndef _DEXCEPT_
   }catch(...){
-    aSource = vtkSmartPointerBase();
     throw;
   }
-  return aSource.GetPointer();
+#endif
+
+  return aFamily;
 }
 
-VISU_Convertor::TOutput* 
-VISU_Convertor_impl::GetMeshOnGroup(const string& theMeshName, 
-                                   const string& theGroupName)
+
+//---------------------------------------------------------------
+VISU::PIDMapper 
+VISU_Convertor_impl
+::GetMeshOnGroup(const string& theMeshName, 
+                const string& theGroupName)
 {
-  MSG(MYDEBUG,"GetMeshOnGroup - theMeshName = '"<<theMeshName<<
-      "'; theGroupName = '"<<theGroupName<<"'");
+  INITMSG(MYDEBUG,"GetMeshOnGroup\n");
+  INITMSGA(MYDEBUG,0,
+          "- theMeshName = '"<<theMeshName<<
+          "'; theGroupName = '"<<theGroupName<<"'"<<
+          endl);
+
   //Cheching possibility do the query
   TFindMeshOnGroup aFindMeshOnGroup = FindMeshOnGroup(theMeshName,theGroupName);
   PMeshImpl aMesh = boost::get<0>(aFindMeshOnGroup);
   PGroupImpl aGroup = boost::get<1>(aFindMeshOnGroup);
-  const VISU::TFamilyAndEntitySet& aFamilyAndEntitySet = aGroup->myFamilyAndEntitySet;
-  VISU::TVTKSource& aSource = aGroup->myStorage;
+
   //Main part of code
+#ifndef _DEXCEPT_
   try{
-    if(aSource.GetPointer() == NULL){
-      aSource = TOutput::New();
-      aSource->Delete();
-      LoadMeshOnGroup(aMesh,aFamilyAndEntitySet);
-      GetPoints(aSource,aMesh);
-      GetCellsOnGroup(aSource,aMesh,aFamilyAndEntitySet);
+#endif
+    if(!aGroup->myIsVTKDone){
+      const TVTKAppendFilter& anAppendFilter = aGroup->GetFilter();
+      const VISU::TFamilySet& aFamilySet = aGroup->myFamilySet;
+
+      LoadMeshOnGroup(aMesh,aFamilySet);
+      anAppendFilter->SetPoints(GetPoints(aMesh));
+
+      TFamilySet::const_iterator anIter = aFamilySet.begin();
+
+      TID2ID& anElemObj2VTKID = aGroup->myElemObj2VTKID;
+      TFamilyArr& aFamilyArr = aGroup->myFamilyArr;
+      aFamilyArr.resize(aFamilySet.size());
+
+      for(vtkIdType anID = 0; anIter != aFamilySet.end(); anIter++){
+       PFamilyImpl aFamily = *anIter;
+       const std::string& aFamilyName = aFamily->myName;
+       const VISU::TEntity& anEntity = aFamily->myEntity;
+
+       VISU::PIDMapper anIDMapper = GetFamilyOnEntity(theMeshName,anEntity,aFamilyName);
+       VISU::TVTKOutput* anOutput = anIDMapper->GetVTKOutput();
+       anAppendFilter->AddInput(anOutput);
+
+       vtkIdType aNbCells = anOutput->GetNumberOfCells();
+       for(vtkIdType aCellID = 0; aCellID < aNbCells; aCellID++){
+         anElemObj2VTKID[aFamily->GetElemObjID(aCellID)] = aCellID;
+       }
+       aFamilyArr[anID] = aFamily;
+      }
+      aGroup->myNamedPointCoords = aMesh->myNamedPointCoords;
+
+      aGroup->myIsVTKDone = true;
+
       if(MYDEBUGWITHFILES){
-       string aMeshName = QString(theMeshName.c_str()).simplifyWhiteSpace().latin1();
-       string aGroupName = QString(theGroupName.c_str()).simplifyWhiteSpace().latin1();
-       string aFileName = string("/users/")+getenv("USER")+"/"+getenv("USER")+"-";
+       std::string aMeshName = QString(theMeshName.c_str()).simplifyWhiteSpace().latin1();
+       std::string aGroupName = QString(theGroupName.c_str()).simplifyWhiteSpace().latin1();
+       std::string aFileName = string(getenv("HOME"))+"/"+getenv("USER")+"-";
        aFileName += aMeshName + "-" + aGroupName + "-Conv.vtk";
-       VISU::WriteToFile(aSource.GetPointer(),aFileName);
+       VISU::WriteToFile(anAppendFilter->GetOutput(),aFileName);
       }
     }
+#ifndef _DEXCEPT_
   }catch(...){
-    aSource = vtkSmartPointerBase();
     throw;
   }
-  return aSource.GetPointer();
+#endif
+
+  return aGroup;
 }
 
-VISU_Convertor::TOutput* 
-VISU_Convertor_impl::GetTimeStampOnMesh(const string& theMeshName, 
-                                       const VISU::TEntity& theEntity,
-                                       const string& theFieldName,
-                                       int theStampsNum)
+
+//---------------------------------------------------------------
+VISU::PIDMapper 
+VISU_Convertor_impl
+::GetTimeStampOnMesh(const string& theMeshName, 
+                    const VISU::TEntity& theEntity,
+                    const string& theFieldName,
+                    int theStampsNum)
 {
-  MSG(MYDEBUG,"GetTimeStampOnMesh - theMeshName = '"<<theMeshName<<"; theEntity = "<<theEntity);
-  MSG(MYDEBUG,"GetTimeStampOnMesh - theFieldName = '"<<theFieldName<<"'; theStampsNum = "<<theStampsNum);
+  INITMSG(MYDEBUG,"GetTimeStampOnMesh"<<
+         "; theMeshName = '"<<theMeshName<<"'"<<
+         "; theEntity = "<<theEntity<<
+         "; theFieldName = '"<<theFieldName<<"'"<<
+         "; theStampsNum = "<<theStampsNum<<
+         endl);
 
   //Cheching possibility do the query
-  TFindTimeStamp aFindTimeStamp = 
-    FindTimeStamp(theMeshName,theEntity,theFieldName,theStampsNum);
+  TFindTimeStamp aFindTimeStamp = FindTimeStamp(theMeshName,
+                                               theEntity,
+                                               theFieldName,
+                                               theStampsNum);
+
   PMeshImpl aMesh = boost::get<0>(aFindTimeStamp);
   PMeshOnEntityImpl aMeshOnEntity = boost::get<1>(aFindTimeStamp);
   PMeshOnEntityImpl aVTKMeshOnEntity = boost::get<2>(aFindTimeStamp);
   PValForTimeImpl aValForTime = boost::get<4>(aFindTimeStamp);
   PFieldImpl aField = boost::get<3>(aFindTimeStamp);
 
-  VISU::TVTKAttribyteFilter& anAttribyteFilter = aValForTime->myAttribyteFilter;
-  VISU::TVTKSource& aSource = aValForTime->myStorage;
-  TOutput* anOutput = NULL;
   //Main part of code
+  PIDMapperFilter anIDMapperFilter = aValForTime->myIDMapperFilter;
+#ifndef _DEXCEPT_
   try{
-    if(aSource.GetPointer())
-      return aSource.GetPointer();
-    else if(anAttribyteFilter.GetPointer())
-      return anAttribyteFilter->GetUnstructuredGridOutput();
-    else{
-      LoadFieldOnMesh(aMesh,aMeshOnEntity,aField,aValForTime);
-
-      VISU::TVTKExtractFilter& anExtractFilter = aField->myExtractFilter;
-      if(anExtractFilter.GetPointer() == NULL){
-       anExtractFilter = VISU_ExtractUnstructuredGrid::New();
-       anExtractFilter->Delete();
-       //anExtractFilter->DebugOn();
-       try{
-         LoadMeshOnEntity(aVTKMeshOnEntity);
-       }catch(std::exception& exc){
-         aVTKMeshOnEntity = aMeshOnEntity;
-         MSG(MYDEBUG,"Follow exception was occured :\n"<<exc.what());
-       }catch(...){
-         aVTKMeshOnEntity = aMeshOnEntity;
-         MSG(MYDEBUG,"Unknown exception was occured!");
-       }
-       GetMeshOnEntity(aVTKMeshOnEntity->myMeshName,aVTKMeshOnEntity->myEntity);
-       
-       anExtractFilter->SetInput(aVTKMeshOnEntity->myStorage.GetPointer());
-       ::InitProfile(anExtractFilter,aMeshOnEntity,aValForTime);
-      }      
-      if(!anExtractFilter->IsRemoving()){
-       aSource = TOutput::New();
-       aSource->Delete();
-       aSource->ShallowCopy(aVTKMeshOnEntity->myStorage.GetPointer());
-       ::GetTimeStamp(aSource,aField,aValForTime);
-       anOutput = aSource.GetPointer();
-      }else{
-       anAttribyteFilter = vtkFieldDataToAttributeDataFilter::New();
-       anAttribyteFilter->Delete();
-       //anAttribyteFilter->DebugOn();
-       
-       VISU::TVTKMergetFilter& aMergeFilter = aValForTime->myMergeFilter;
-       aMergeFilter = vtkMergeDataObjectFilter::New();
-       aMergeFilter->Delete();
-       //aMergeFilter->DebugOn();
-
-       ::GetTimeStamp(anAttribyteFilter,aMergeFilter,anExtractFilter,
-                      aField,aValForTime);
-       anOutput = anAttribyteFilter->GetUnstructuredGridOutput();
+#endif
+    if(!anIDMapperFilter->myIsVTKDone){
+      LoadValForTimeOnMesh(aMesh,aMeshOnEntity,aField,aValForTime);
+
+      try{
+       LoadMeshOnEntity(aMesh,aVTKMeshOnEntity);
+      }catch(std::exception& exc){
+       aVTKMeshOnEntity = aMeshOnEntity;
+       MSG(MYDEBUG,"Follow exception was occured :\n"<<exc.what());
+      }catch(...){
+       aVTKMeshOnEntity = aMeshOnEntity;
+       MSG(MYDEBUG,"Unknown exception was occured!");
+      }
+
+      GetMeshOnEntity(aVTKMeshOnEntity->myMeshName,aVTKMeshOnEntity->myEntity);     
+
+      PProfileImpl aProfile = aValForTime->myProfile;
+      GetMeshOnProfile(aMesh,aVTKMeshOnEntity,aProfile);
+
+      anIDMapperFilter->myIDMapper = aProfile;
+      TVTKOutput* anOutput = anIDMapperFilter->GetVTKOutput();
+      const TVTKSource& aSource = anIDMapperFilter->mySource.GetSource();
+      GetTimeStampOnProfile(aSource,aField,aValForTime);
+
+      anIDMapperFilter->myIsVTKDone = true;
+
+      if(MYDEBUGWITHFILES){
+       string aMeshName = QString(theMeshName.c_str()).simplifyWhiteSpace().latin1();
+       string aFieldName = QString(theFieldName.c_str()).simplifyWhiteSpace().latin1();
+       string aPrefix = string(getenv("HOME"))+"/"+getenv("USER")+"-";
+       string aFileName = aPrefix + aMeshName + dtos("-%d-",int(theEntity)) + 
+         aFieldName + dtos("-%d",theStampsNum) + "-Conv.vtk";
+       VISU::WriteToFile(anOutput,aFileName);
+      }
+      if(MYVTKDEBUG){
+       GetTimeStampSize(theMeshName,theEntity,theFieldName,theStampsNum);
+       anOutput->Update();
+       if(theEntity == VISU::NODE_ENTITY)
+         BEGMSG(MYVTKDEBUG,"GetPointData() = "<<float(anOutput->GetPointData()->GetActualMemorySize()*1000)<<endl);
+       else
+         BEGMSG(MYVTKDEBUG,"GetCellData() = "<<float(anOutput->GetCellData()->GetActualMemorySize()*1000)<<endl);
+       BEGMSG(MYVTKDEBUG,"GetActualMemorySize() = "<<float(anOutput->GetActualMemorySize()*1000)<<endl);
       }
+    }
+#ifndef _DEXCEPT_
+  }catch(std::exception& exc){
+    throw;
+  }catch(...){
+    throw;
+  }
+#endif
+
+  return anIDMapperFilter;
+}
+
+
+//---------------------------------------------------------------
+VISU::PGaussPtsIDMapper 
+VISU_Convertor_impl
+::GetTimeStampOnGaussPts(const string& theMeshName, 
+                        const VISU::TEntity& theEntity,
+                        const string& theFieldName,
+                        int theStampsNum)
+{
+  INITMSG(MYDEBUG,"GetTimeStampOnGaussPts"<<
+         "; theMeshName = '"<<theMeshName<<"'"<<
+         "; theEntity = "<<theEntity<<
+         "; theFieldName = '"<<theFieldName<<"'"<<
+         "; theStampsNum = "<<theStampsNum<<
+         endl);
+
+  //Cheching possibility do the query
+  TFindTimeStamp aFindTimeStamp = FindTimeStamp(theMeshName,
+                                               theEntity,
+                                               theFieldName,
+                                               theStampsNum);
+  
+  PMeshImpl aMesh = boost::get<0>(aFindTimeStamp);
+  PMeshOnEntityImpl aMeshOnEntity = boost::get<1>(aFindTimeStamp);
+  PMeshOnEntityImpl aVTKMeshOnEntity = aMeshOnEntity;
+  PValForTimeImpl aValForTime = boost::get<4>(aFindTimeStamp);
+  PFieldImpl aField = boost::get<3>(aFindTimeStamp);
+
+  //Main part of code
+  PGaussPtsIDFilter aGaussPtsIDFilter = aValForTime->myGaussPtsIDFilter;
+#ifndef _DEXCEPT_
+  try{
+#endif
+    if(!aGaussPtsIDFilter->myIsVTKDone){
+      LoadValForTimeOnGaussPts(aMesh,aMeshOnEntity,aField,aValForTime);
+      
+      GetMeshOnEntity(aVTKMeshOnEntity->myMeshName,aVTKMeshOnEntity->myEntity);
+      
+      PProfileImpl aProfile = aValForTime->myProfile;
+      GetMeshOnProfile(aMesh,aVTKMeshOnEntity,aProfile);
+
+      PGaussMeshImpl aGaussMesh = aValForTime->myGaussMesh;
+      TSource& aGaussPtsSource = aGaussMesh->mySource;
+      if(!aGaussPtsSource.myIsVTKDone){
+       BuildGaussMesh(aMesh,aVTKMeshOnEntity,aGaussMesh);
+       aGaussMesh->myParent = aProfile.get();
+       aGaussPtsSource.myIsVTKDone = true;
+      }
+
+      aGaussPtsIDFilter->myIDMapper = aGaussMesh;
+      aGaussPtsIDFilter->myGaussPtsIDMapper = aGaussMesh;
+      TVTKOutput* anOutput = aGaussPtsIDFilter->GetVTKOutput();
+      const TVTKSource& aSource = aGaussPtsIDFilter->mySource.GetSource();
+      GetTimeStampOnGaussMesh(aSource,aField,aValForTime);
+
+      aGaussPtsIDFilter->myIsVTKDone = true;
+
       if(MYDEBUGWITHFILES){
        string aMeshName = QString(theMeshName.c_str()).simplifyWhiteSpace().latin1();
        string aFieldName = QString(theFieldName.c_str()).simplifyWhiteSpace().latin1();
-       string aPrefix = string("/users/")+getenv("USER")+"/"+getenv("USER")+"-";
+       string aPrefix = string(getenv("HOME"))+"/"+getenv("USER")+"-";
        string aFileName = aPrefix + aMeshName + dtos("-%d-",int(theEntity)) + 
          aFieldName + dtos("-%d",theStampsNum) + "-Conv.vtk";
        VISU::WriteToFile(anOutput,aFileName);
       }
       if(MYVTKDEBUG){
        GetTimeStampSize(theMeshName,theEntity,theFieldName,theStampsNum);
-       vtkUnstructuredGrid *aDataSet = anAttribyteFilter->GetUnstructuredGridOutput();
-       aDataSet->Update();
+       anOutput->Update();
        if(theEntity == VISU::NODE_ENTITY)
-         MSG(MYVTKDEBUG,"GetTimeStampOnMesh - GetData() = "<<float(aDataSet->GetPointData()->GetActualMemorySize()*1000));
+         BEGMSG(MYVTKDEBUG,"GetPointData() = "<<float(anOutput->GetPointData()->GetActualMemorySize()*1000)<<endl);
        else
-         MSG(MYVTKDEBUG,"GetMeshOnEntity - GetData() = "<<float(aDataSet->GetCellData()->GetActualMemorySize()*1000));
-       MSG(MYVTKDEBUG,"GetTimeStampOnMesh - GetActualMemorySize() = "<<float(aDataSet->GetActualMemorySize()*1000));
+         BEGMSG(MYVTKDEBUG,"GetCellData() = "<<float(anOutput->GetCellData()->GetActualMemorySize()*1000)<<endl);
+       BEGMSG(MYVTKDEBUG,"GetActualMemorySize() = "<<float(anOutput->GetActualMemorySize()*1000)<<endl);
       }
     }
+#ifndef _DEXCEPT_
+  }catch(std::exception& exc){
+    throw;
   }catch(...){
-    aSource = vtkSmartPointerBase();
-    anAttribyteFilter = vtkSmartPointerBase();
     throw;
   }
-  return anOutput;
+#endif
+
+  return aGaussPtsIDFilter;
 }
 
+//---------------------------------------------------------------
 VISU::PMeshImpl 
-VISU_Convertor_impl::FindMesh(const string& theMeshName)
+VISU_Convertor_impl
+::FindMesh(const string& theMeshName)
 {
   GetMeshMap();
   TMeshMap::iterator aMeshMapIter = myMeshMap.find(theMeshName);
@@ -700,10 +2255,11 @@ VISU_Convertor_impl::FindMesh(const string& theMeshName)
 }
 
 
+//---------------------------------------------------------------
 VISU_Convertor_impl::TFindMeshOnEntity
-VISU_Convertor_impl::FindMeshOnEntity(const string& theMeshName,
-                                     const VISU::TEntity& theEntity,
-                                     const string& theFamilyName)
+VISU_Convertor_impl
+::FindMeshOnEntity(const string& theMeshName,
+                  const VISU::TEntity& theEntity)
 {
   PMeshImpl aMesh = FindMesh(theMeshName);
   VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
@@ -712,14 +2268,46 @@ VISU_Convertor_impl::FindMeshOnEntity(const string& theMeshName,
     EXCEPTION(runtime_error,"FindMeshOnEntity >> There is no mesh on the entity - "<<theEntity<<"!!!");
 
   PMeshOnEntityImpl aMeshOnEntity = aMeshOnEntityMapIter->second;
-
+  
   return TFindMeshOnEntity(aMesh,
-                          aMeshOnEntityMap[theEntity],
-                          GetFamily(aMeshOnEntity,theFamilyName));
+                          aMeshOnEntity);
+}
+
+
+//---------------------------------------------------------------
+VISU_Convertor_impl::TFindFamilyOnEntity
+VISU_Convertor_impl
+::FindFamilyOnEntity(const string& theMeshName,
+                    const VISU::TEntity& theEntity,
+                    const string& theFamilyName)
+{
+  if(theFamilyName != ""){
+    PMeshImpl aMesh = FindMesh(theMeshName);
+    VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
+    VISU::TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.find(theEntity);
+    if(aMeshOnEntityMapIter == aMeshOnEntityMap.end())
+      EXCEPTION(runtime_error,"FindFamilyOnEntity >> There is no mesh on the entity - "<<theEntity<<"!!!");
+
+    PMeshOnEntityImpl aMeshOnEntity = aMeshOnEntityMapIter->second;
+
+    TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap;
+    TFamilyMap::iterator aFamilyMapIter = aFamilyMap.find(theFamilyName);
+    if(aFamilyMapIter != aFamilyMap.end()){
+      const PFamily& aFamily = aFamilyMapIter->second;
+      return TFindFamilyOnEntity(aMesh,
+                                aMeshOnEntity,
+                                aFamily);
+    }
+  }
+  return TFindFamilyOnEntity();
 }
 
 
-float VISU_Convertor_impl::GetSize() {
+//---------------------------------------------------------------
+float
+VISU_Convertor_impl
+::GetSize() 
+{
   float aResult = 0.0;
   const VISU::TMeshMap& aMeshMap = GetMeshMap();
   VISU::TMeshMap::const_iterator aMeshMapIter = aMeshMap.begin();
@@ -757,7 +2345,7 @@ float VISU_Convertor_impl::GetSize() {
       VISU::TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.begin();
       for(; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++){
        const string& aFamilyName = aFamilyMapIter->first;
-       aResult += GetMeshOnEntitySize(aMeshName,anEntity,aFamilyName);
+       aResult += GetFamilyOnEntitySize(aMeshName,anEntity,aFamilyName);
       }
       //Import mesh on entity
       aResult += GetMeshOnEntitySize(aMeshName,anEntity);
@@ -768,27 +2356,65 @@ float VISU_Convertor_impl::GetSize() {
 }
 
 
-float VISU_Convertor_impl::GetMeshOnEntitySize(const std::string& theMeshName, 
-                                              const VISU::TEntity& theEntity,
-                                              const std::string& theFamilyName)
+//---------------------------------------------------------------
+float
+VISU_Convertor_impl
+::GetMeshOnEntitySize(const std::string& theMeshName, 
+                     const VISU::TEntity& theEntity)
 {
   TFindMeshOnEntity aFindMeshOnEntity = 
-    FindMeshOnEntity(theMeshName,theEntity,theFamilyName);
+    FindMeshOnEntity(theMeshName,theEntity);
+
   PMeshImpl aMesh = boost::get<0>(aFindMeshOnEntity);
-  PFamilyImpl aFamily = boost::get<2>(aFindMeshOnEntity);
   PMeshOnEntityImpl aMeshOnEntity = boost::get<1>(aFindMeshOnEntity);
 
   vtkIdType aPointsSize = 3*aMesh->myNbPoints*sizeof(VISU::TCoord);
-  vtkIdType aNbCells, aCellsSize;
+  vtkIdType aNbCells = aMeshOnEntity->myNbCells;
+  vtkIdType aCellsSize = aMeshOnEntity->myCellsSize;
+
+  vtkIdType aConnectivitySize = aCellsSize*sizeof(vtkIdType);
+  vtkIdType aTypesSize = aNbCells*sizeof(char);
+  vtkIdType aLocationsSize = aNbCells*sizeof(int);
+  float aNbCellsPerPoint = aCellsSize / aNbCells - 1;
+  vtkIdType aLinksSize = aMesh->myNbPoints * 
+    (vtkIdType(sizeof(vtkIdType)*aNbCellsPerPoint) + sizeof(vtkCellLinks::Link));
+  aLinksSize = 0;
+  vtkIdType aResult = aPointsSize + aConnectivitySize + aTypesSize + aLocationsSize + aLinksSize;
 
-  if(!aFamily){
-    aNbCells = aMeshOnEntity->myNbCells;
-    aCellsSize = aMeshOnEntity->myCellsSize;
-  }else{
-    aNbCells = aFamily->myNbCells;
-    aCellsSize = aFamily->myCellsSize;
+  MSG(MYDEBUG,"GetMeshOnEntitySize "<<
+      "- aResult = "<<float(aResult)<<
+      "; theMeshName = '"<<theMeshName<<"'"<<
+      "; theEntity = "<<theEntity);
+  if(MYDEBUG){
+    INITMSG(MYVTKDEBUG,"- aPointsSize = "<<float(aPointsSize)<<"\n");
+    BEGMSG(MYVTKDEBUG,"- aConnectivitySize = "<<float(aConnectivitySize)<<"\n");
+    BEGMSG(MYVTKDEBUG,"- aTypesSize = "<<float(aTypesSize)<<"\n");
+    BEGMSG(MYVTKDEBUG,"- aLocationsSize = "<<float(aLocationsSize)<<"\n");
+    BEGMSG(MYVTKDEBUG,"- aLinksSize = "<<float(aLinksSize)<<"\n");
   }
 
+  aResult = vtkIdType(aResult*ERR_SIZE_CALC);
+  return aResult;
+}
+
+
+//---------------------------------------------------------------
+float
+VISU_Convertor_impl
+::GetFamilyOnEntitySize(const std::string& theMeshName, 
+                       const VISU::TEntity& theEntity,
+                       const std::string& theFamilyName)
+{
+  TFindFamilyOnEntity aFindFamilyOnEntity = 
+    FindFamilyOnEntity(theMeshName,theEntity,theFamilyName);
+  PMeshImpl aMesh = boost::get<0>(aFindFamilyOnEntity);
+  PFamilyImpl aFamily = boost::get<2>(aFindFamilyOnEntity);
+  PMeshOnEntityImpl aMeshOnEntity = boost::get<1>(aFindFamilyOnEntity);
+
+  vtkIdType aPointsSize = 3*aMesh->myNbPoints*sizeof(VISU::TCoord);
+  vtkIdType aNbCells = aFamily->myNbCells;
+  vtkIdType aCellsSize = aFamily->myCellsSize;
+
   vtkIdType aConnectivitySize = aCellsSize*sizeof(vtkIdType);
   vtkIdType aTypesSize = aNbCells*sizeof(char);
   vtkIdType aLocationsSize = aNbCells*sizeof(int);
@@ -797,24 +2423,30 @@ float VISU_Convertor_impl::GetMeshOnEntitySize(const std::string& theMeshName,
     (vtkIdType(sizeof(vtkIdType)*aNbCellsPerPoint) + sizeof(vtkCellLinks::Link));
   aLinksSize = 0;
   vtkIdType aResult = aPointsSize + aConnectivitySize + aTypesSize + aLocationsSize + aLinksSize;
+
+  MSG(MYDEBUG,"GetFamilyOnEntitySize "<<
+      "- aResult = "<<float(aResult)<<
+      "; theMeshName = '"<<theMeshName<<"'"<<
+      "; theEntity = "<<theEntity<<
+      "; theFamilyName = '"<<theFamilyName<<"'");
   if(MYDEBUG){
-    MSG(MYVTKDEBUG,"GetMeshOnEntitySize - aPointsSize = "<<float(aPointsSize));
-    MSG(MYVTKDEBUG,"GetMeshOnEntitySize - aConnectivitySize = "<<float(aConnectivitySize));
-    MSG(MYVTKDEBUG,"GetMeshOnEntitySize - aTypesSize = "<<float(aTypesSize));
-    MSG(MYVTKDEBUG,"GetMeshOnEntitySize - aLocationsSize = "<<float(aLocationsSize));
-    MSG(MYVTKDEBUG,"GetMeshOnEntitySize - aLinksSize = "<<float(aLinksSize));
+    INITMSG(MYVTKDEBUG,"- aPointsSize = "<<float(aPointsSize)<<"\n");
+    BEGMSG(MYVTKDEBUG,"- aConnectivitySize = "<<float(aConnectivitySize)<<"\n");
+    BEGMSG(MYVTKDEBUG,"- aTypesSize = "<<float(aTypesSize)<<"\n");
+    BEGMSG(MYVTKDEBUG,"- aLocationsSize = "<<float(aLocationsSize)<<"\n");
+    BEGMSG(MYVTKDEBUG,"- aLinksSize = "<<float(aLinksSize)<<"\n");
   }
-  MSG(MYDEBUG,"GetMeshOnEntitySize - aResult = "<<float(aResult)<<"; theMeshName = '"<<theMeshName<<
-      "'; theEntity = "<<theEntity<<"; theFamilyName = '"<<theFamilyName<<"'");
 
   aResult = vtkIdType(aResult*ERR_SIZE_CALC);
   return aResult;
 }
 
 
+//---------------------------------------------------------------
 VISU_Convertor_impl::TFindMeshOnGroup
-VISU_Convertor_impl::FindMeshOnGroup(const std::string& theMeshName, 
-                                    const std::string& theGroupName)
+VISU_Convertor_impl
+::FindMeshOnGroup(const std::string& theMeshName, 
+                 const std::string& theGroupName)
 {
   PMeshImpl aMesh = FindMesh(theMeshName);
   VISU::TGroupMap& aGroupMap = aMesh->myGroupMap;
@@ -827,15 +2459,19 @@ VISU_Convertor_impl::FindMeshOnGroup(const std::string& theMeshName,
 }
 
 
-float VISU_Convertor_impl::GetMeshOnGroupSize(const std::string& theMeshName, 
-                                             const std::string& theGroupName)
+float
+VISU_Convertor_impl
+::GetMeshOnGroupSize(const std::string& theMeshName, 
+                    const std::string& theGroupName)
 {
   TFindMeshOnGroup aFindMeshOnGroup = FindMeshOnGroup(theMeshName,theGroupName);
   PMeshImpl aMesh = boost::get<0>(aFindMeshOnGroup);
   PGroupImpl aGroup = boost::get<1>(aFindMeshOnGroup);
 
   vtkIdType aPointsSize = 3*aMesh->myNbPoints*sizeof(VISU::TCoord);
-  vtkIdType aNbCells = aGroup->myNbCells, aCellsSize = aGroup->myCellsSize;
+  TNbASizeCells aNbASizeCells = aGroup->GetNbASizeCells();
+  vtkIdType aNbCells = aNbASizeCells.first;
+  vtkIdType aCellsSize = aNbASizeCells.second;
   vtkIdType aConnectivityAndTypesSize = aCellsSize*sizeof(vtkIdType);
   vtkIdType aLocationsSize = aNbCells*sizeof(int);
   float aNbCellsPerPoint = aCellsSize / aNbCells - 1;
@@ -856,14 +2492,17 @@ float VISU_Convertor_impl::GetMeshOnGroupSize(const std::string& theMeshName,
   return aResult;
 }
 
+
 VISU_Convertor_impl::TFindField
-VISU_Convertor_impl::FindField(const string& theMeshName, 
-                              const VISU::TEntity& theEntity, 
-                              const string& theFieldName)
+VISU_Convertor_impl
+::FindField(const string& theMeshName, 
+           const VISU::TEntity& theEntity, 
+           const string& theFieldName)
 {
-  TFindMeshOnEntity aFindMeshOnEntity = FindMeshOnEntity(theMeshName,theEntity,"");
+  TFindMeshOnEntity aFindMeshOnEntity = 
+    FindMeshOnEntity(theMeshName,theEntity);
+
   PMeshImpl aMesh = boost::get<0>(aFindMeshOnEntity);;
-  PFamilyImpl aFamily = boost::get<2>(aFindMeshOnEntity);
   PMeshOnEntityImpl aMeshOnEntity = boost::get<1>(aFindMeshOnEntity);
 
   VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
@@ -892,13 +2531,15 @@ VISU_Convertor_impl::FindField(const string& theMeshName,
 }
 
 
-float VISU_Convertor_impl::GetFieldOnMeshSize(const std::string& theMeshName, 
-                                             const VISU::TEntity& theEntity,
-                                             const std::string& theFieldName)
+float
+VISU_Convertor_impl
+::GetFieldOnMeshSize(const std::string& theMeshName, 
+                    const VISU::TEntity& theEntity,
+                    const std::string& theFieldName)
 {
   TFindField aFindField = FindField(theMeshName,theEntity,theFieldName);
   PMeshOnEntityImpl aVTKMeshOnEntity = boost::get<2>(aFindField);
-  PField aField = boost::get<3>(aFindField);
+  PFieldImpl aField = boost::get<3>(aFindField);
 
   float aMeshSize = GetMeshOnEntitySize(theMeshName,aVTKMeshOnEntity->myEntity);
   float aFieldOnMeshSize = float(aField->myDataSize*sizeof(float)*aField->myValField.size()*ERR_SIZE_CALC);
@@ -913,10 +2554,11 @@ float VISU_Convertor_impl::GetFieldOnMeshSize(const std::string& theMeshName,
 
 
 VISU_Convertor_impl::TFindTimeStamp
-VISU_Convertor_impl::FindTimeStamp(const std::string& theMeshName, 
-                                  const VISU::TEntity& theEntity, 
-                                  const std::string& theFieldName, 
-                                  int theStampsNum)
+VISU_Convertor_impl
+::FindTimeStamp(const std::string& theMeshName, 
+               const VISU::TEntity& theEntity, 
+               const std::string& theFieldName, 
+               int theStampsNum)
 {
   TFindField aFindField = FindField(theMeshName,theEntity,theFieldName);
   PField aField = boost::get<3>(aFindField);
@@ -939,15 +2581,17 @@ VISU_Convertor_impl::FindTimeStamp(const std::string& theMeshName,
 }
 
 
-float VISU_Convertor_impl::GetTimeStampSize(const std::string& theMeshName, 
-                                           const VISU::TEntity& theEntity,
-                                           const std::string& theFieldName,
-                                           int theStampsNum)
+float
+VISU_Convertor_impl
+::GetTimeStampSize(const std::string& theMeshName, 
+                  const VISU::TEntity& theEntity,
+                  const std::string& theFieldName,
+                  int theStampsNum)
 {
   TFindTimeStamp aFindTimeStamp = 
     FindTimeStamp(theMeshName,theEntity,theFieldName,theStampsNum);
   PMeshOnEntityImpl aVTKMeshOnEntity = boost::get<2>(aFindTimeStamp);
-  PField aField = boost::get<3>(aFindTimeStamp);
+  PFieldImpl aField = boost::get<3>(aFindTimeStamp);
   
   float aMeshSize = GetMeshOnEntitySize(theMeshName,aVTKMeshOnEntity->myEntity);
   float aTimeStampSize = float(aField->myDataSize*sizeof(float) * ERR_SIZE_CALC);
@@ -963,9 +2607,10 @@ float VISU_Convertor_impl::GetTimeStampSize(const std::string& theMeshName,
 
 
 const VISU::PField
-VISU_Convertor_impl::GetField(const string& theMeshName, 
-                             VISU::TEntity theEntity, 
-                             const string& theFieldName) 
+VISU_Convertor_impl
+::GetField(const string& theMeshName, 
+          VISU::TEntity theEntity, 
+          const string& theFieldName) 
 {
   TFindField aFindField = FindField(theMeshName,theEntity,theFieldName);
   PField aField = boost::get<3>(aFindField);
@@ -974,10 +2619,11 @@ VISU_Convertor_impl::GetField(const string& theMeshName,
 
 
 const VISU::PValForTime 
-VISU_Convertor_impl::GetTimeStamp(const std::string& theMeshName, 
-                                 const VISU::TEntity& theEntity,
-                                 const std::string& theFieldName,
-                                 int theStampsNum)
+VISU_Convertor_impl
+::GetTimeStamp(const std::string& theMeshName, 
+              const VISU::TEntity& theEntity,
+              const std::string& theFieldName,
+              int theStampsNum)
 {
   TFindTimeStamp aFindTimeStamp = 
     FindTimeStamp(theMeshName,theEntity,theFieldName,theStampsNum);
index 46284cba0cab26d047f6b2bc59202fec10e5121e..18e494cfd8124dc70cd398e894296da088d65a94 100644 (file)
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
 //
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
 //
 //
-//  File   : VISU_Convertor_impl.hxx
-//  Author : Alexey PETROV
-//  Module : VISU
+//
+//  File   : 
+//  Author : 
+//  Module : SALOME
+//  $Header$
 
 #ifndef VISU_Convertor_impl_HeaderFile
 #define VISU_Convertor_impl_HeaderFile
 
+#include <vtkSmartPointer.h>
+
+#include <boost/tuple/tuple.hpp>
+
+class vtkCell;
+class vtkPoints;
+class vtkUnstructuredGrid;
+class VTKViewer_AppendFilter;
+class VISU_MergeFilter;
+
 #include "VISU_Convertor.hxx"
+#include "MED_SliceArray.hxx"
 
-#include <vtkSystemIncludes.h>
+#ifndef VISU_ENABLE_QUADRATIC
+#define VISU_ENABLE_QUADRATIC
+#define VISU_USE_VTK_QUADRATIC
+#endif
 
-#include <vtkPoints.h>
-#include <vtkUnstructuredGrid.h>
-#include <vtkMergeDataObjectFilter.h>
-#include <vtkFieldDataToAttributeDataFilter.h>
-#include "VISU_ExtractUnstructuredGrid.hxx"
+namespace VISU
+{
+  //! Defines VISU enumeration of geometrical types
+  enum EGeometry {ePOINT1=1, eSEG2=102, eSEG3=103, eTRIA3=203,
+                 eQUAD4=204, eTRIA6=206,eQUAD8=208, eTETRA4=304,
+                 ePYRA5=305, ePENTA6=306, eHEXA8=308, eTETRA10=310, 
+                 ePYRA13=313, ePENTA15=315, eHEXA20=320, 
+                 ePOLYGONE=400, ePOLYEDRE=500, eNONE=-1};
 
-#include <qstring.h>
-#include <qfileinfo.h>
+  //! Get number of nodes for defined geometrical type
+  vtkIdType
+  VISUGeom2NbNodes(EGeometry theGeom);
 
-#include <vtkSmartPointer.h>
+  //! Maps VISU geometrical type to VTK one
+  vtkIdType
+  VISUGeom2VTK(EGeometry theGeom);
 
-#include <boost/tuple/tuple.hpp>
+  //---------------------------------------------------------------
+  using MED::TCSlice;
+  using MED::TSlice;
 
-namespace VISU{
+  typedef vtkUnstructuredGrid TDataSet;
 
+  typedef vtkSmartPointer<TDataSet> TVTKSource;
   typedef vtkSmartPointer<vtkPoints> TVTKPoints;
-  typedef vtkSmartPointer<vtkUnstructuredGrid> TVTKSource;
-  typedef vtkSmartPointer<vtkMergeDataObjectFilter> TVTKMergetFilter;
-  typedef vtkSmartPointer<VISU_ExtractUnstructuredGrid> TVTKExtractFilter;
-  typedef vtkSmartPointer<vtkFieldDataToAttributeDataFilter> TVTKAttribyteFilter;
+  typedef vtkSmartPointer<VISU_MergeFilter> TVTKMergeFilter;
+
+  typedef vtkSmartPointer<VTKViewer_AppendFilter> TVTKAppendFilter;
 
   typedef float TCoord;
 
-  struct TMeshImpl: TMesh{
-    TVTKPoints myPoints;
+  //---------------------------------------------------------------
+  //! Define an utility base class which is repsonsible for preventing repetion
+  struct TIsVTKDone: virtual TBaseStructure
+  {
+    TIsVTKDone();
+    bool myIsDone; //!< Say, is the corresponding MED entity already loaded into intermediate data structure 
+    bool myIsVTKDone; //!< Say, is the corresponding intermediate data structure already mapped into VTK representation  
+  };
+
+  
+  //---------------------------------------------------------------
+  //! Define an utility base class which allow to keep calculated number of cells and their size
+  struct TSizeCounter: virtual TIsVTKDone
+  {
+    TSizeCounter();
+    vtkIdType myNbCells; //!< Number of cells contained into corresponding sublclass
+    vtkIdType myCellsSize; //!< Size of cells contained into corresponding sublclass
+  };
+
+
+  //---------------------------------------------------------------
+  //! Define a container for VTK representation
+  class TSource: public virtual TSizeCounter
+  {
+  protected:
+    mutable TVTKSource mySource;
+  public:
+    TSource();
+
+    //! This method allow to create corresponding VTK data set by demand (not at once)
+    const TVTKSource& 
+    GetSource() const;
+
+    //! Reimplement the TIDMapper::GetVTKOutput
+    virtual
+    TVTKOutput* 
+    GetVTKOutput();
+  };
+
+
+  //---------------------------------------------------------------
+  //! Define a container for VTK representation
+  /*!
+    This container allow to combine other VTK representation into single one.
+  */
+  class TAppendFilter: public virtual TIsVTKDone,
+                      public virtual TIDMapper
+  {
+  protected:
+    mutable TVTKAppendFilter myFilter;
+  public:
+    TAppendFilter();
+
+    //! This method allow to create corresponding VTK filter by demand (not at once)
+    const TVTKAppendFilter& 
+    GetFilter() const;
+
+    //! Reimplement the TIDMapper::GetVTKOutput
+    virtual
+    TVTKOutput* 
+    GetVTKOutput();
+  };
+
+
+  //---------------------------------------------------------------
+  //! Define a container for VTK representation
+  /*!
+    This container allow to assign data to mesh and represent them into single VTK representation
+  */
+  class TMergeFilter: public virtual TIsVTKDone,
+                     public virtual TIDMapper
+  {
+  protected:
+    mutable TVTKMergeFilter myFilter;
+  public:
+    TMergeFilter();
+
+    //! This method allow to create corresponding VTK filter by demand (not at once)
+    const TVTKMergeFilter& 
+    GetFilter() const;
+
+    //! Reimplement the TIDMapper::GetVTKOutput
+    virtual
+    TVTKOutput* 
+    GetVTKOutput();
+  };
+
+
+  //---------------------------------------------------------------
+  typedef TVector<TCoord> TCoordArray;
+  typedef TSlice<TCoordArray> TCoordSlice;
+  typedef TCSlice<TCoordArray> TCCoordSlice;
+
+  //! This class is responsible for representation of mesh nodes
+  class TPointCoords: public virtual TBaseStructure
+  {
+  protected:
+    vtkIdType myDim; //!< Dimension of the nodal coordinates
+    vtkIdType myNbPoints; //!< Number of nodes in corresponding mesh
+
+    //! An container for coordinates of the nodes
+    /*!
+      Usage of slices allow to minimize amount of memory to store the nodal coordinates and
+      provide unifirm way of conversation with this coordinates (independant from mesh dimension)
+    */
+    TCoordArray myCoord; 
+    TVTKPoints myPoints; //!< VTK representation for the mesh nodes
+
+  public:
+    TPointCoords();
+
+    //! To initilize the class
+    void
+    Init(vtkIdType theNbPoints,
+        vtkIdType theDim);
+
+    //! Get slice of coordinates for defined node (const version)
+    TCCoordSlice
+    GetCoordSlice(vtkIdType theNodeId) const;
+
+    //! Get slice of coordinates for defined node
+    TCoordSlice 
+    GetCoordSlice(vtkIdType theNodeId);
+
+    vtkIdType
+    GetNbPoints() const { return myNbPoints; }
+
+    vtkIdType
+    GetDim() const { return myDim; }
+
+    vtkIdType
+    size() const { return GetNbPoints(); }
+
+    const TVTKPoints&
+    GetPoints() const { return myPoints;}
+  };
+  typedef SharedPtr<TPointCoords> PPointCoords;
+
+
+  //---------------------------------------------------------------
+  typedef TVector<vtkIdType> TVectorID;
+  typedef std::map<vtkIdType,vtkIdType> TObj2VTKID;
+
+  //! This class is responsible for representation of mesh nodes
+  /*!
+    In additition to its base functionlity it support mapping of VTK to object numeration and
+    keeps names for each of nodes.
+  */
+  class TNamedPointCoords: public virtual TPointCoords
+  {
+  protected:
+    typedef TVector<std::string> TPointsDim;
+    TPointsDim myPointsDim; //!< Keeps name of each dimension
+    TVectorID myVectorID; //!< Keeps object¶ numeration
+    TObj2VTKID myObj2VTKID; //!< Keeps mapping from object number to VTK one
+
+  public:
+
+    //! To initilize the class (numeration of the nodes can be missed)
+    void
+    Init(vtkIdType theNbPoints,
+        vtkIdType theDim,
+        const TVectorID& theVectorID = TVectorID());
+    
+    //! Get name for defined dimension
+    std::string&
+    GetName(vtkIdType theDim);
+    
+    //! Get name for defined dimension (const version)
+    const std::string&
+    GetName(vtkIdType theDim) const;
+
+    //! Get object number for node by its VTK one
+    virtual
+    vtkIdType
+    GetObjID(vtkIdType theID) const;
+
+    //! Get VTK number for node by its object one
+    virtual
+    vtkIdType
+    GetVTKID(vtkIdType theID) const;
+
+    //! Get name of node by its object number
+    virtual
+    std::string 
+    GetNodeName(vtkIdType theObjID) const;
+  };
+  typedef SharedPtr<TNamedPointCoords> PNamedPointCoords;
+
 
-    typedef std::vector<TCoord> TPointsCoord;
-    TPointsCoord myPointsCoord;
+  //---------------------------------------------------------------
+  //! Specialize TMesh to provide VTK mapping for nodes
+  struct TMeshImpl: virtual TMesh, 
+                   virtual TIsVTKDone
+  {
+    PNamedPointCoords myNamedPointCoords; //!< Keeps intermediate representation of the nodes
 
-    typedef std::vector<std::string> TPointsDim;
-    TPointsDim myPointsDim;
+    TVTKPoints myPoints; //!< Keeps VTK representation of the nodes
+    vtkIdType myNbPoints; //!< Keeps number of the nodes
+
+    TMeshImpl();
+  };
+  typedef SharedPtr<TMeshImpl> PMeshImpl;
+
+
+  //---------------------------------------------------------------
+  typedef TVector<vtkIdType> TSubMeshID;
+  typedef enum {eRemoveAll, eAddAll, eAddPart, eNone} ESubMeshStatus; 
+
+  //! Specialize TSubProfile to provide VTK mapping
+  struct TSubProfileImpl: virtual TSubProfile, 
+                         virtual TSource
+  {
+    TSubProfileImpl();
+
+    EGeometry myGeom; //!< Defines to what geometrical type the MED PROFILE belong to
+    std::string myName; //!< Keeps its name
+
+    //! Get object number of mesh cell by its VTK one
+    virtual 
+    vtkIdType 
+    GetElemObjID(int theVtkI) const;
+
+    //! Keeps status of the structure
+    /*!
+      In some cases MED file does not use MED PROFILES, but at VISU creates corresponding data strucutre
+      in order to construct mesh for MED TIEMSTAMPS in uniform way.
+    */
+    ESubMeshStatus myStatus; 
+    TSubMeshID mySubMeshID; //!< Keeps numbers of mesh cell which contain the MED PROFILE
   };
-  typedef shared_ptr<TMeshImpl> PMeshImpl;
+  typedef SharedPtr<TSubProfileImpl> PSubProfileImpl;
+
+
+  //---------------------------------------------------------------
+  struct TMeshOnEntityImpl;
+
+  typedef std::map<vtkIdType,vtkIdType> TID2ID;
+  typedef TVector<PSubProfileImpl> TSubProfileArr;
+  typedef std::map<EGeometry,PSubProfileImpl> TGeom2SubProfile;
+
+  //! Specialize TProfile to provide VTK mapping for MED TIMESTAMP mesh
+  struct TProfileImpl: virtual TProfile, 
+                      virtual TAppendFilter
+  {
+    TProfileImpl();
+    bool myIsAll; //!< Say, whether the MED TIMESTAMP defined on all MED ENTITY or not
+   
+    //! Reimplement the TIDMapper::GetNodeObjID
+    virtual 
+    vtkIdType 
+    GetNodeObjID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetNodeVTKID
+    virtual 
+    vtkIdType 
+    GetNodeVTKID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetNodeCoord
+    virtual 
+    float*  
+    GetNodeCoord(vtkIdType theObjID);
+
+    //! Reimplement the TIDMapper::GetElemObjID
+    virtual 
+    vtkIdType 
+    GetElemObjID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetElemVTKID
+    virtual 
+    vtkIdType 
+    GetElemVTKID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetElemCell
+    virtual
+    vtkCell* 
+    GetElemCell(vtkIdType theObjID);
+    
+    //! Reimplement the TIDMapper::GetVTKOutput
+    virtual
+    TVTKOutput* 
+    GetVTKOutput();
+
+    //! Reimplement the TNamedIDMapper::GetNodeName
+    virtual
+    std::string 
+    GetNodeName(vtkIdType theObjID) const;
+
+    //! Reimplement the TNamedIDMapper::GetElemName
+    virtual
+    std::string 
+    GetElemName(vtkIdType theObjID) const;
+
+    TID2ID myElemObj2VTKID; //!< Keeps object to VTK numeration mapping
+    TSubProfileArr mySubProfileArr; //!< Keeps sequence of TSubProfiles as they were added into TAppendFilter
+    PNamedPointCoords myNamedPointCoords; //!< Keeps reference on the same TNamedPointCoords as TMesh
+    TMeshOnEntityImpl* myMeshOnEntity; //<! Keeps backward reference to corresponding MED ENTITY mesh
+
+    TSource mySource; //!< Keeps VTK representation of the MED TIMESTAMP mesh
+    TGeom2SubProfile myGeom2SubProfile; //!< Keeps TSubProfiles according to their geometrical type
+  };
+  typedef SharedPtr<TProfileImpl> PProfileImpl;
+
+
+  //---------------------------------------------------------------
+  //! Specialize TIDMapper to provide VTK mapping for MED TIMESTAMP mesh
+  struct TIDMapperFilter: virtual TMergeFilter
+  {
+    TAppendFilter myIDMapper; //!< Responsible for numbering
+    TSource mySource; //!< Keeps assigned data
+
+    //! Reimplement the TIDMapper::GetNodeObjID
+    virtual 
+    vtkIdType 
+    GetNodeObjID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetNodeVTKID
+    virtual 
+    vtkIdType 
+    GetNodeVTKID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetNodeCoord
+    virtual 
+    float*  
+    GetNodeCoord(vtkIdType theObjID);
+
+    //! Reimplement the TIDMapper::GetElemObjID
+    virtual 
+    vtkIdType 
+    GetElemObjID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetElemVTKID
+    virtual 
+    vtkIdType 
+    GetElemVTKID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetElemCell
+    virtual
+    vtkCell* 
+    GetElemCell(vtkIdType theObjID);
+    
+    //! Reimplement the TIDMapper::GetVTKOutput
+    virtual
+    TVTKOutput* 
+    GetVTKOutput();
+  };
+  typedef SharedPtr<TIDMapperFilter> PIDMapperFilter;
+
+
+  //---------------------------------------------------------------
+  struct TGaussImpl;
+  typedef SharedPtr<TGaussImpl> PGaussImpl;
+
+  //! Specialize TGauss to provide more detail information of the MED GAUSS entity for VTK mapping
+  struct TGaussImpl: virtual TGauss
+  {
+    EGeometry myGeom; //!< Define, to which geometrical type the MED GAUSS entity belongs
+    std::string myName; //!< Keeps name of the MED GAUSS entity
+    vtkIdType myNbPoints; //<! Keeps number of points for the MED GAUSS entity
 
-  struct TMeshOnEntityImpl: TMeshOnEntity{
-    TVTKSource myStorage;
-    typedef std::vector<vtkIdType> TConnect;
-    typedef std::vector<TConnect> TConnForCellType;
-    typedef std::map<vtkIdType,TConnForCellType> TCellsConn;
-    TCellsConn myCellsConn;
+    //! To define a way to implement more detail comparision of the TGaussSubMesh instances
+    virtual
+    void
+    LessThan(const PGaussImpl& theGauss,
+            bool& theResult) const;
   };
-  typedef shared_ptr<TMeshOnEntityImpl> PMeshOnEntityImpl;
 
-  struct TFamilyImpl: TFamily{
-    TVTKSource myStorage;
 
-    typedef std::set<vtkIdType> TSubMeshOnCellType;
-    typedef std::map<vtkIdType,TSubMeshOnCellType> TSubMesh;
-    TSubMesh mySubMesh;
+  //---------------------------------------------------------------
+  //! Specialize TGaussSubMesh to provide VTK mapping for the entity
+  struct TGaussSubMeshImpl: virtual TGaussSubMesh, 
+                           virtual TSource
+  {
+    TGaussSubMeshImpl();
+
+    //! To implement the TGaussPtsIDMapper::GetObjID
+    virtual
+    TGaussPointID
+    GetObjID(vtkIdType theID) const;
+    
+    PGaussImpl myGauss; //<! Keep reference to corresponding TGauss structure
+
+    //! Keeps status of the structure
+    /*!
+      In some cases MED file does not use MED GAUSS, but at VISU creates corresponding data strucutre
+      in order to construct mesh for MED TIEMSTAMPS in uniform way.
+    */
+    ESubMeshStatus myStatus;
+
+    TPointCoords myPointCoords; //!< Keeps coordinates of Gauss Points
   };
-  typedef shared_ptr<TFamilyImpl> PFamilyImpl;
+  typedef SharedPtr<TGaussSubMeshImpl> PGaussSubMeshImpl;
+
+
+  //---------------------------------------------------------------
+  typedef TVector<PGaussSubMeshImpl> TGaussSubMeshArr;
+  typedef std::map<EGeometry,PGaussSubMeshImpl> TGeom2GaussSubMesh;
+
+  //! Specialize TGaussMesh to provide VTK mapping for the entity
+  struct TGaussMeshImpl: virtual TGaussMesh, 
+                        virtual TAppendFilter
+  {
+    TGaussMeshImpl();
+
+    //! Reimplement the TGaussPtsIDMapper::GetObjID
+    virtual
+    TGaussPointID
+    GetObjID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetVTKOutput
+    virtual
+    TVTKOutput* 
+    GetVTKOutput();
+
+    //! Reimplement the TGaussPtsIDMapper::GetParent
+    virtual 
+    TNamedIDMapper*
+    GetParent();
+
+    TSource mySource; //!< Keeps VTK representation of the Gauss Points
+    TNamedIDMapper* myParent; //!< Refer to parent mesh
+    TGaussSubMeshArr myGaussSubMeshArr; //!< Keeps sequence of TGaussSubMesh as they were added into TAppendFilter
+    TGeom2GaussSubMesh myGeom2GaussSubMesh; //!< Keeps TGaussSubMesh according to their geometrical type
+  };
+  typedef SharedPtr<TGaussMeshImpl> PGaussMeshImpl;
+
+
+  //---------------------------------------------------------------
+  //! Specialize TGaussPtsIDMapper to provide VTK mapping for MED TIMESTAMP mesh
+  struct TGaussPtsIDFilter: virtual TIDMapperFilter,
+                           virtual TGaussPtsIDMapper
+  { 
+    PGaussPtsIDMapper myGaussPtsIDMapper;
 
-  struct TGroupImpl: TGroup{
-    TVTKSource myStorage;
+    //! Reimplement the TGaussPtsIDMapper::GetObjID
+    virtual 
+    TGaussPointID 
+    GetObjID(vtkIdType theID) const;
+
+    //! Reimplement the TGaussPtsIDMapper::GetParent
+    virtual 
+    TNamedIDMapper*
+    GetParent();
   };
-  typedef shared_ptr<TGroupImpl> PGroupImpl;
+  typedef SharedPtr<TGaussPtsIDFilter> PGaussPtsIDFilter;
+
 
-  struct TFieldImpl: TField{
-    TVTKExtractFilter myExtractFilter;
-    ~TFieldImpl()
-    { 
-      if(myExtractFilter.GetPointer())
-       myExtractFilter->UnRegisterAllOutputs();
-    }
+  //---------------------------------------------------------------
+  typedef TVector<vtkIdType> TConnect;
+  typedef TVector<TConnect> TCell2Connect;
+
+  //! The class is responsible for mapping of cells of defined geometrical type  
+  struct TSubMeshImpl: virtual TSource
+  {
+    
+    //! To implement the TIDMapper::GetElemObjID
+    virtual 
+    vtkIdType 
+    GetElemObjID(vtkIdType theID) const;
+
+    //! To implement the TNamedIDMapper::GetElemName
+    virtual
+    std::string 
+    GetElemName(vtkIdType theObjID) const;
+
+    vtkIdType myStartID;
+    TCell2Connect myCell2Connect; //!< Contains connectivity for the cells
+  };
+  typedef SharedPtr<TSubMeshImpl> PSubMeshImpl;
+
+
+  //---------------------------------------------------------------
+  typedef std::map<EGeometry,PSubMeshImpl> TGeom2SubMesh;
+  typedef TVector<PSubMeshImpl> TSubMeshArr;
+
+  //! Specialize TMeshOnEntity to provide VTK mapping for the entity
+  struct TMeshOnEntityImpl: virtual TMeshOnEntity, 
+                           virtual TAppendFilter, 
+                           virtual TSizeCounter
+  {
+    //! Reimplement the TIDMapper::GetNodeVTKID
+    virtual 
+    vtkIdType 
+    GetNodeVTKID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetNodeObjID
+    virtual 
+    vtkIdType 
+    GetNodeObjID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetElemVTKID
+    virtual 
+    vtkIdType 
+    GetElemVTKID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetElemObjID
+    virtual 
+    vtkIdType 
+    GetElemObjID(vtkIdType theID) const;
+
+    //! Reimplement the TNamedIDMapper::GetNodeName
+    virtual
+    std::string 
+    GetNodeName(vtkIdType theObjID) const;
+
+    //! Reimplement the TNamedIDMapper::GetElemName
+    virtual
+    std::string 
+    GetElemName(vtkIdType theObjID) const;
+
+    TID2ID myElemObj2VTKID; //!< To support object to VTK number mapping 
+    TSubMeshArr mySubMeshArr; //!< Keeps sequence of TSubMeshImpl as they were added into TAppendFilter
+    PNamedPointCoords myNamedPointCoords; //!< Share the same instance with TMesh to implement nodal mapping
+
+    TGeom2SubMesh myGeom2SubMesh; //!< Keeps TSubMeshImpl according to their geometrical type
   };
-  typedef shared_ptr<TFieldImpl> PFieldImpl;
+  typedef SharedPtr<TMeshOnEntityImpl> PMeshOnEntityImpl;
 
-  struct TValForTimeImpl: TValForTime{
-    TVTKAttribyteFilter myAttribyteFilter;
-    TVTKMergetFilter myMergeFilter;
-    TVTKSource myStorage;
 
-    typedef std::vector<float> TValForCellsWithType;
-    typedef std::map<vtkIdType,TValForCellsWithType> TValForCells;
-    TValForCells myValForCells;
+  //---------------------------------------------------------------
+  typedef std::map<EGeometry,TSubMeshID> TGeom2SubMeshID;
 
-    ~TValForTimeImpl()
-    { 
-      if(myMergeFilter.GetPointer())
-       myMergeFilter->UnRegisterAllOutputs();
-      if(myAttribyteFilter.GetPointer())
-       myAttribyteFilter->UnRegisterAllOutputs();
-    }
+  //! Specialize TFamily to provide VTK mapping for the entity
+  struct TFamilyImpl: virtual TFamily, 
+                     virtual TSource
+  {
+    //! Reimplement the TIDMapper::GetNodeObjID
+    vtkIdType 
+    GetNodeObjID(vtkIdType theID) const ;
+
+    //! Reimplement the TIDMapper::GetNodeVTKID
+    virtual 
+    vtkIdType 
+    GetNodeVTKID(vtkIdType theID) const ;
+
+    //! Reimplement the TIDMapper::GetElemVTKID
+    virtual 
+    vtkIdType 
+    GetElemVTKID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetElemObjID
+    virtual 
+    vtkIdType 
+    GetElemObjID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetVTKOutput
+    virtual
+    TVTKOutput* 
+    GetVTKOutput();
+
+    PNamedPointCoords myNamedPointCoords;  //!< Share the same instance with TMesh to implement nodal mapping
+    TID2ID myElemObj2VTKID; //!< To support object to VTK number mapping
+    TSubMeshID myMeshID; //!< Keeps numbers of mesh elements that belongs to the MED FAMILY
+
+    TGeom2SubMeshID myGeom2SubMeshID; //!< Keeps TSubMeshID according to their geometrical type
+  };
+  typedef SharedPtr<TFamilyImpl> PFamilyImpl;
+
+
+  //---------------------------------------------------------------
+  typedef std::pair<vtkIdType,vtkIdType> TNbASizeCells;
+  typedef TVector<PFamilyImpl> TFamilyArr;
+
+  //! Specialize TGroup to provide VTK mapping for the entity
+  struct TGroupImpl: virtual TGroup, 
+                    virtual TAppendFilter
+  {
+    //! Calculate pair of values - number of cells and its size
+    TNbASizeCells 
+    GetNbASizeCells() const;
+
+    //! Reimplement the TIDMapper::GetElemVTKID
+    virtual 
+    vtkIdType 
+    GetElemVTKID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetElemObjID
+    virtual 
+    vtkIdType 
+    GetElemObjID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetNodeObjID
+    virtual 
+    vtkIdType 
+    GetNodeObjID(vtkIdType theID) const;
+
+    //! Reimplement the TIDMapper::GetNodeVTKID
+    virtual 
+    vtkIdType 
+    GetNodeVTKID(vtkIdType theID) const;
+
+    TID2ID myElemObj2VTKID; //!< To support object to VTK number mapping
+    TFamilyArr myFamilyArr; //!< Keeps sequence of TFamily as they were added into TAppendFilter
+    PNamedPointCoords myNamedPointCoords; //!< Share the same instance with TMesh to implement nodal mapping
+  };
+  typedef SharedPtr<TGroupImpl> PGroupImpl;
+
+
+  //---------------------------------------------------------------
+  typedef TVector<TMinMax> TMinMaxArr;
+
+  //! Specialize TField to provide VTK mapping for the entity
+  struct TFieldImpl: virtual TField
+  {
+    vtkIdType myDataSize; //!< Keeps size of the assigned data
+
+    TMinMaxArr myMinMaxArr; //!< Keeps min/max values for each component of the MED FIELD
+
+    //! Implement the TField::GetMinMax
+    virtual
+    TMinMax 
+    GetMinMax(vtkIdType theCompID);
+
+    //! To initialize the data structure    
+    void 
+    InitArrays(vtkIdType theNbComp);
+
+    TFieldImpl();
   };
-  typedef shared_ptr<TValForTimeImpl> PValForTimeImpl;
+  typedef SharedPtr<TFieldImpl> PFieldImpl;
+
+
+  //---------------------------------------------------------------
+  typedef TVector<float> TValue;
+  typedef TSlice<TValue> TValueSlice;
+  typedef TCSlice<TValue> TCValueSlice;
+
+  typedef TVector<TCValueSlice> TCValueSliceArr;
+  typedef TVector<TValueSlice> TValueSliceArr;
 
+  //! Define a container to get access to data assigned to mesh
+  struct TMeshValue
+  {
+    TValue myValue; //!< Keeps all values as one dimensional sequence
+
+    vtkIdType myNbElem; //!< Defines number of mesh elements where the data assigned to
+    vtkIdType myNbComp; //!< Keeps number of components of corresponding MED FIELD
+    vtkIdType myNbGauss; //!< Defines number of Gauss Points
+    vtkIdType myStep; //! Internal variable
+
+    //! To intitilize the data strucutre
+    void
+    Init(vtkIdType theNbElem,
+        vtkIdType theNbGauss,
+        vtkIdType theNbComp);
+
+    //! To get assigned values first by Gauss Points and then by components (constant version)
+    TCValueSliceArr
+    GetGaussValueSliceArr(vtkIdType theElemId) const;
+
+    //! To get assigned values first by Gauss Points and then by components
+    TValueSliceArr 
+    GetGaussValueSliceArr(vtkIdType theElemId);
+
+    //! To get assigned values first by components and then by Gauss Points (constant version)
+    TCValueSliceArr
+    GetCompValueSliceArr(vtkIdType theElemId) const;
+
+    //! To get assigned values first by components and then by Gauss Points
+    TValueSliceArr 
+    GetCompValueSliceArr(vtkIdType theElemId);
+  };
+  
+
+  //---------------------------------------------------------------
+  typedef std::map<EGeometry,TMeshValue> TGeom2Value;
+  typedef std::map<EGeometry,vtkIdType> TGeom2NbGauss;
+
+  //! Specialize TValForTime to provide VTK mapping for the entity
+  struct TValForTimeImpl: virtual TValForTime
+  {
+    PGaussPtsIDFilter myGaussPtsIDFilter; //!< Keep VTK representation for mesh and data on Gauss Points
+    PIDMapperFilter myIDMapperFilter; //!< Keep VTK representation for ordinary mesh and data
+    TGeom2Value myGeom2Value; //!< Keep value that is assigned to the mesh
+    TGeom2NbGauss myGeom2NbGauss; //!< Keep number of Gauss Points
+   
+    TValForTimeImpl();
+
+    //! Get mesh data for defined geometrical type (constant version)
+    const TMeshValue& 
+    GetMeshValue(EGeometry theGeom) const;
+
+    //! Get mesh data for defined geometrical type
+    TMeshValue& 
+    GetMeshValue(EGeometry theGeom);
+
+    //! Get number of Gauss Points for defined geometrical type
+    virtual
+    int
+    GetNbGauss(EGeometry theGeom) const;
+  };
+  typedef SharedPtr<TValForTimeImpl> PValForTimeImpl;
 }
 
-class VISU_Convertor_impl: public VISU_Convertor{
+
+//! This class perfroms mapping of intermediate data strucutres into corresponding VTK representation
+/*!
+  It implements VISU_Convertor public interface and declare new pure virtual functions
+  to fill its intermediate data structure from a MED source
+*/
+class VISU_Convertor_impl: public VISU_Convertor
+{
 public:
-  virtual float GetSize() ;
+  VISU_Convertor_impl();
 
+  virtual
+  ~VISU_Convertor_impl();
+
+  //! Just to define default behaviour
+  virtual
+  VISU_Convertor* 
+  Build();
+
+  //! Just to define default behaviour
+  virtual
+  VISU_Convertor* 
+  BuildEntities();
+
+  //! Just to define default behaviour
+  virtual
+  VISU_Convertor* 
+  BuildFields();
+
+  //! Just to define default behaviour
+  virtual
+  VISU_Convertor* 
+  BuildMinMax();
+
+  //! Just to define default behaviour
+  virtual
+  VISU_Convertor* 
+  BuildGroups();
+
+  //! Implemention of the VISU_Convertor::GetSize
+  virtual 
+  float
+  GetSize();
+
+  //! Implemention of the VISU_Convertor::GetMeshOnEntity
+  virtual 
+  VISU::PNamedIDMapper 
+  GetMeshOnEntity(const std::string& theMeshName, 
+                 const VISU::TEntity& theEntity);
+
+  //! Implemention of the VISU_Convertor::GetMeshOnEntitySize
   virtual 
   float 
   GetMeshOnEntitySize(const std::string& theMeshName, 
-                     const VISU::TEntity& theEntity,
-                     const std::string& theFamilyName = "");
+                      const VISU::TEntity& theEntity);
+
+  //! Implemention of the VISU_Convertor::GetFamilyOnEntity
+  virtual 
+  VISU::PIDMapper 
+  GetFamilyOnEntity(const std::string& theMeshName, 
+                   const VISU::TEntity& theEntity,
+                   const std::string& theFamilyName);
 
+  //! Implemention of the VISU_Convertor::GetFamilyOnEntitySize
+  virtual 
+  float 
+  GetFamilyOnEntitySize(const std::string& theMeshName, 
+                       const VISU::TEntity& theEntity,
+                       const std::string& theFamilyName);
+
+  //! Implemention of the VISU_Convertor::GetMeshOnGroup
+  virtual 
+  VISU::PIDMapper 
+  GetMeshOnGroup(const std::string& theMeshName, 
+                const std::string& theGroupName);
+  
+  //! Implemention of the VISU_Convertor::GetMeshOnGroupSize
   virtual 
   float 
   GetMeshOnGroupSize(const std::string& theMeshName, 
                     const std::string& theGroupName);
 
+  //! Implemention of the VISU_Convertor::GetTimeStampOnMesh
+  virtual
+  VISU::PIDMapper 
+  GetTimeStampOnMesh(const std::string& theMeshName, 
+                    const VISU::TEntity& theEntity,
+                    const std::string& theFieldName,
+                    int theStampsNum);
+
+  //! Implemention of the VISU_Convertor::GetTimeStampSize
   virtual 
   float 
   GetTimeStampSize(const std::string& theMeshName, 
@@ -123,18 +870,29 @@ public:
                   const std::string& theFieldName,
                   int theStampsNum);
 
+  //! Implemention of the VISU_Convertor::GetTimeStampOnGaussPts
+  virtual
+  VISU::PGaussPtsIDMapper 
+  GetTimeStampOnGaussPts(const std::string& theMeshName, 
+                        const VISU::TEntity& theEntity,
+                        const std::string& theFieldName,
+                        int theStampsNum);
+  
+  //! Implemention of the VISU_Convertor::GetFieldOnMeshSize
   virtual 
   float 
   GetFieldOnMeshSize(const std::string& theMeshName, 
                     const VISU::TEntity& theEntity,
                     const std::string& theFieldName);
 
+  //! Implemention of the VISU_Convertor::GetField
   virtual 
   const VISU::PField 
   GetField(const std::string& theMeshName, 
           VISU::TEntity theEntity, 
           const std::string& theFieldName);
 
+  //! Implemention of the VISU_Convertor::GetTimeStamp
   virtual 
   const VISU::PValForTime 
   GetTimeStamp(const std::string& theMeshName, 
@@ -142,46 +900,31 @@ public:
               const std::string& theFieldName,
               int theStampsNum);
 
-public:
-  VISU_Convertor_impl();
-
-  virtual ~VISU_Convertor_impl();
-
-  virtual VISU_Convertor* Build()  { return this;};
-
-  virtual 
-  TOutput* 
-  GetMeshOnEntity(const std::string& theMeshName, 
-                 const VISU::TEntity& theEntity,
-                 const std::string& theFamilyName = "");
-
-  virtual 
-  TOutput* 
-  GetMeshOnGroup(const std::string& theMeshName, 
-                const std::string& theGroupName);
-  
-  virtual
-  TOutput* 
-  GetTimeStampOnMesh(const std::string& theMeshName, 
-                    const VISU::TEntity& theEntity,
-                    const std::string& theFieldName,
-                    int theStampsNum);
-
 protected:
+  //! An utility method to find TMesh by its name
   VISU::PMeshImpl 
   FindMesh(const std::string& theMeshName);
 
-  typedef boost::tuple<VISU::PMeshImpl,VISU::PMeshOnEntityImpl,VISU::PFamilyImpl> TFindMeshOnEntity;
+  //! An utility method to find TMeshOnEntity by name of its parent mesh and entity
+  typedef boost::tuple<VISU::PMeshImpl,VISU::PMeshOnEntityImpl> TFindMeshOnEntity;
   TFindMeshOnEntity
   FindMeshOnEntity(const std::string& theMeshName,
-                  const VISU::TEntity& theEntity,
-                  const std::string& theFamilyName);
+                  const VISU::TEntity& theEntity);
+
+  //! An utility method to find TFamily by name of its parent mesh, corresponding entity and its name
+  typedef boost::tuple<VISU::PMeshImpl,VISU::PMeshOnEntityImpl,VISU::PFamilyImpl> TFindFamilyOnEntity;
+  TFindFamilyOnEntity
+  FindFamilyOnEntity(const std::string& theMeshName,
+                   const VISU::TEntity& theEntity,
+                   const std::string& theFamilyName);
 
+  //! An utility method to find Group by name of its parent mesh and its name
   typedef boost::tuple<VISU::PMeshImpl,VISU::PGroupImpl> TFindMeshOnGroup;
   TFindMeshOnGroup
   FindMeshOnGroup(const std::string& theMeshName, 
                  const std::string& theGroupName);
 
+  //! An utility method to find TField by name of its parent mesh, corresponding entity and its name
   typedef boost::tuple<VISU::PMeshImpl,
                       VISU::PMeshOnEntityImpl,
                       VISU::PMeshOnEntityImpl,
@@ -191,6 +934,7 @@ protected:
            const VISU::TEntity& theEntity, 
            const std::string& theFieldName);
 
+  //! An utility method to find TTimeStamp by name of its parent mesh, corresponding entity, field name and its number
   typedef boost::tuple<VISU::PMeshImpl,
                       VISU::PMeshOnEntityImpl,
                       VISU::PMeshOnEntityImpl,
@@ -203,16 +947,40 @@ protected:
                int theStampsNum);
   
 protected:
-  virtual int LoadMeshOnEntity(VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                              const std::string& theFamilyName = "") = 0;
+  //! To fill intermeiate representation of TMeshOnEntity from a MED source
+  virtual
+  int
+  LoadMeshOnEntity(VISU::PMeshImpl theMesh,
+                  VISU::PMeshOnEntityImpl theMeshOnEntity) = 0;
 
-  virtual int LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
-                             const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet) = 0;
+  //! To fill intermeiate representation of TFamily from a MED source
+  virtual
+  int
+  LoadFamilyOnEntity(VISU::PMeshImpl theMesh,
+                    VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                    VISU::PFamilyImpl theFamily) = 0;
 
-  virtual int LoadFieldOnMesh(VISU::PMeshImpl theMesh, 
-                             VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                             VISU::PFieldImpl theField, 
-                             VISU::PValForTimeImpl theValForTime) = 0;
+  //! To fill intermeiate representation of TGroup from a MED source
+  virtual 
+  int
+  LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
+                 const VISU::TFamilySet& theFamilySet) = 0;
+
+  //! To fill intermeiate representation of TValForTime for ordinary mesh from a MED source
+  virtual 
+  int
+  LoadValForTimeOnMesh(VISU::PMeshImpl theMesh, 
+                      VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                      VISU::PFieldImpl theField, 
+                      VISU::PValForTimeImpl theValForTime) = 0;
+
+  //! To fill intermeiate representation of TValForTime for mesh on Gauss Points from a MED source
+  virtual 
+  int
+  LoadValForTimeOnGaussPts(VISU::PMeshImpl theMesh, 
+                          VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                          VISU::PFieldImpl theField, 
+                          VISU::PValForTimeImpl theValForTime) = 0;
 };
 
 #endif
diff --git a/src/CONVERTOR/VISU_IDMapper.cxx b/src/CONVERTOR/VISU_IDMapper.cxx
new file mode 100644 (file)
index 0000000..c1f07b5
--- /dev/null
@@ -0,0 +1,77 @@
+//  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:
+//  Author:
+//  Module : VISU
+
+#include "VISU_IDMapper.hxx"
+
+#include <vtkUnstructuredGrid.h>
+
+namespace VISU
+{
+  //---------------------------------------------------------------
+  float*  
+  TIDMapper
+  ::GetNodeCoord(vtkIdType theObjID)
+  {
+    vtkIdType aVTKID = GetNodeVTKID(theObjID);
+    return GetVTKOutput()->GetPoint(aVTKID);
+  }
+
+  vtkIdType
+  TIDMapper
+  ::GetNodeVTKID(vtkIdType theID) const
+  {
+    return theID;
+  }
+
+  vtkIdType
+  TIDMapper
+  ::GetNodeObjID(vtkIdType theID) const
+  {
+    return theID;
+  }
+
+  vtkCell* 
+  TIDMapper
+  ::GetElemCell(int theObjID)
+  {
+    vtkIdType aVtkID = GetElemVTKID(theObjID);
+    return GetVTKOutput()->GetCell(aVtkID);
+  }
+
+  vtkIdType
+  TIDMapper
+  ::GetElemVTKID(vtkIdType theID) const
+  {
+    return theID;
+  }
+
+  vtkIdType
+  TIDMapper
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    return theID;
+  }  
+}
diff --git a/src/CONVERTOR/VISU_IDMapper.hxx b/src/CONVERTOR/VISU_IDMapper.hxx
new file mode 100644 (file)
index 0000000..57cf9ee
--- /dev/null
@@ -0,0 +1,150 @@
+//  VISU CONVERTOR :
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//  File   : VISU_Convertor.hxx
+//  Author : Alexey PETROV
+//  Module : VISU
+
+#ifndef VISU_IDMapper_HeaderFile
+#define VISU_IDMapper_HeaderFile
+
+/*! 
+  \file VISU_IDMapper.hxx
+  \brief The file contains declarations for basic interfaces that defines mapping of mesh elements
+*/
+
+#include "MED_SharedPtr.hxx"
+
+#include <vtkSystemIncludes.h>
+#include <string>
+
+class vtkUnstructuredGrid;
+class vtkCell;
+
+namespace VISU
+{
+  using MED::SharedPtr;
+
+  //---------------------------------------------------------------
+  //! Defines a basic class for intemediate data structures
+  struct TBaseStructure
+  {
+    //! Just to provide possibility of dynamic navigation through the class hierarchy
+    virtual ~TBaseStructure()
+    {}
+
+    std::string myEntry; //!< To simplify publication of the object tree
+  };
+  typedef SharedPtr<TBaseStructure> PBaseStructure;
+
+  //---------------------------------------------------------------
+  typedef vtkUnstructuredGrid TVTKOutput;
+
+  //! Defines a basic abstract interface for VTK to object ID's and backward mapping
+  /*!
+    Where object ID means ID which attached to corresponding MED entity.
+    For example, each MED node can have its own ID as well as any other mesh cell
+  */
+  struct TIDMapper: virtual TBaseStructure
+  {
+    //! Get node object ID for corresponding VTK ID
+    virtual 
+    vtkIdType 
+    GetNodeObjID(vtkIdType theID) const;
+
+    //! Get node VTK ID for corresponding object ID
+    virtual 
+    vtkIdType 
+    GetNodeVTKID(vtkIdType theID) const;
+
+    //! Get coordinates of node for corresponding object ID
+    virtual
+    float* 
+    GetNodeCoord(vtkIdType theObjID);
+
+    //! Get cell object ID for corresponding VTK ID
+    virtual 
+    vtkIdType 
+    GetElemObjID(vtkIdType theID) const;
+
+    //! Get cell VTK ID for corresponding object ID
+    virtual 
+    vtkIdType 
+    GetElemVTKID(vtkIdType theID) const;
+
+    //! Get VTK representation of mesh cell for corresponding object ID
+    virtual
+    vtkCell* 
+    GetElemCell(vtkIdType theObjID);
+
+    //! Get VTK representation of mesh for corresponding MED entity
+    virtual
+    TVTKOutput*
+    GetVTKOutput() = 0;
+  };
+  typedef SharedPtr<TIDMapper> PIDMapper;
+  
+
+  //---------------------------------------------------------------
+  //! Defines an abstract interface for VTK to object ID's and backward mapping
+  /*!
+    This class defines some additional methods that allow get names for corresponding mesh elements
+  */
+  struct TNamedIDMapper: virtual TIDMapper
+  {
+    //! Get name of mesh node for corresponding object ID
+    virtual
+    std::string 
+    GetNodeName(vtkIdType theObjID) const = 0;
+
+    //! Get name of mesh cell for corresponding object ID
+    virtual
+    std::string 
+    GetElemName(vtkIdType theObjID) const = 0;
+  };
+  typedef SharedPtr<TNamedIDMapper> PNamedIDMapper;
+  
+
+  //---------------------------------------------------------------
+  typedef vtkIdType TCellID; 
+  typedef vtkIdType TLocalPntID;
+  //! Defines a type that represent complex ID for defined Gauss Point
+  typedef std::pair<TCellID,TLocalPntID> TGaussPointID;
+
+  struct TGaussPtsIDMapper: virtual TIDMapper
+  {
+    //! Gets complex Gauss Point ID by its VTK ID
+    virtual 
+    TGaussPointID 
+    GetObjID(vtkIdType theID) const = 0;
+
+    //! Gets parent TNamedIDMapper, which contains reference mesh cells
+    virtual 
+    TNamedIDMapper*
+    GetParent() = 0;
+  };
+  typedef SharedPtr<TGaussPtsIDMapper> PGaussPtsIDMapper;
+
+  //---------------------------------------------------------------
+}
+
+#endif
index 5c47189b9081756454c329f21a91ca5a9cdfc6f0..1d51be103ab942f4d6167f2ad9b864254b7e707f 100644 (file)
 
 #include "MED_Factory.hxx"
 #include "MED_Algorithm.hxx"
+#include "MED_GaussUtils.hxx"
 #include "MED_Utilities.hxx"
 
-#include <vtkCellType.h>
+#include <boost/thread/thread.hpp>
+#include <boost/bind.hpp>
 
-#define _EDF_NODE_IDS_
+#include <vtkCellType.h>
 
 using namespace std;
-using namespace MED;
 using namespace VISU;
 
+using MED::TInt;
+using MED::TFloat;
+using MED::EBooleen;
+
 #ifdef _DEBUG_
 static int MYDEBUG = 0;
+static int MYVALUEDEBUG = 0;
+static int MY_FAMILY_DEBUG = 0;
+static int MY_GROUP_DEBUG = 0;
+//#define _DEXCEPT_
 #else
 static int MYDEBUG = 0;
+static int MYVALUEDEBUG = 0;
+static int MY_FAMILY_DEBUG = 0;
+static int MY_GROUP_DEBUG = 0;
 #endif
 
+#define _LOAD_FAMILIES_
+#define _EDF_NODE_IDS_
 
-namespace{
-
-  using namespace MED;
-  using namespace VISU;
-  
-  int MEDGeom2NbNodes(MED::EGeometrieElement theMEDGeomType)
+namespace
+{
+  //---------------------------------------------------------------
+  vtkIdType
+  MEDGeom2NbNodes(MED::EGeometrieElement theMEDGeomType)
   { 
     return theMEDGeomType % 100;
   }
 
-  int MEDGeomToVTK(MED::EGeometrieElement theMEDGeomType)
-  { 
-    switch(theMEDGeomType){
-    case ePOINT1: return VTK_VERTEX;
-    case eSEG2: return VTK_LINE;
-    case eSEG3: return VTK_LINE;
-    case eTRIA3: return VTK_TRIANGLE;
-    case eTRIA6: return VTK_TRIANGLE;
-    case eQUAD4: return VTK_QUAD;
-    case eQUAD8: return VTK_QUAD;
-    case eTETRA4: return VTK_TETRA;
-    case eTETRA10: return VTK_TETRA;
-    case eHEXA8: return VTK_HEXAHEDRON;
-    case eHEXA20: return VTK_HEXAHEDRON;
-    case ePENTA6: return VTK_WEDGE;
-    case ePENTA15: return VTK_WEDGE;
-    case ePYRA5: return VTK_PYRAMID;
-    case ePYRA13: return VTK_PYRAMID;
-    case ePOLYGONE: return VTK_POLYGON;
-    case ePOLYEDRE: return VTK_CONVEX_POINT_SET;
-    }
-    return -1;
-  }
 
-  int VTKGeom2NbNodes(int theVTKGeomType)
+  //---------------------------------------------------------------
+  VISU::EGeometry
+  MEDGeom2VISU(MED::EGeometrieElement theGeom)
   { 
-    switch(theVTKGeomType){
-    case VTK_VERTEX: return 1;
-    case VTK_LINE: return 2;
-    case VTK_TRIANGLE: return 3;
-    case VTK_QUAD: return 4;
-    case VTK_TETRA: return 4;
-    case VTK_HEXAHEDRON: return 8;
-    case VTK_WEDGE: return 6;
-    case VTK_PYRAMID: return 5;
+    switch(theGeom){
+    case MED::ePOINT1: return VISU::ePOINT1;
+    case MED::eSEG2: return VISU::eSEG2;
+    case MED::eTRIA3: return VISU::eTRIA3;
+    case MED::eQUAD4: return VISU::eQUAD4;
+    case MED::eTETRA4: return VISU::eTETRA4;
+    case MED::eHEXA8: return VISU::eHEXA8;
+    case MED::ePENTA6: return VISU::ePENTA6;
+    case MED::ePYRA5: return VISU::ePYRA5;
+
+    case MED::eSEG3: return VISU::eSEG3;
+    case MED::eTRIA6: return VISU::eTRIA6;
+    case MED::eQUAD8: return VISU::eQUAD8;
+    case MED::eTETRA10: return VISU::eTETRA10;
+    case MED::eHEXA20: return VISU::eHEXA20;
+    case MED::ePENTA15: return VISU::ePENTA15;
+    case MED::ePYRA13: return VISU::ePYRA13;
+
+    case MED::ePOLYGONE: return VISU::ePOLYGONE;
+    case MED::ePOLYEDRE: return VISU::ePOLYEDRE;
     }
-    return -1;
+    return VISU::eNONE;
   }
 
-  MED::EGeometrieElement VTKGeomToMED(int theVTKGeomType)
+
+  //---------------------------------------------------------------
+  MED::EGeometrieElement 
+  VISUGeom2MED(int theGeom)
   { 
-    switch(theVTKGeomType){
-    case VTK_VERTEX: return ePOINT1;
-    case VTK_LINE: return eSEG2;
-    case VTK_TRIANGLE: return eTRIA3;
-    case VTK_QUAD: return eQUAD4;
-    case VTK_TETRA: return eTETRA4;
-    case VTK_HEXAHEDRON: return eHEXA8;
-    case VTK_WEDGE: return ePENTA6;
-    case VTK_PYRAMID: return ePYRA5;
-    case VTK_POLYGON: return ePOLYGONE;
-    case VTK_CONVEX_POINT_SET: return ePOLYEDRE;
+    switch(theGeom){
+    case VISU::ePOINT1: return MED::ePOINT1;
+    case VISU::eSEG2: return MED::eSEG2;
+    case VISU::eTRIA3: return MED::eTRIA3;
+    case VISU::eQUAD4: return MED::eQUAD4;
+    case VISU::eTETRA4: return MED::eTETRA4;
+    case VISU::eHEXA8: return MED::eHEXA8;
+    case VISU::ePENTA6: return MED::ePENTA6;
+    case VISU::ePYRA5: return MED::ePYRA5;
+
+    case VISU::eSEG3: return MED::eSEG3;
+    case VISU::eTRIA6: return MED::eTRIA6;
+    case VISU::eQUAD8: return MED::eQUAD8;
+    case VISU::eTETRA10: return MED::eTETRA10;
+    case VISU::eHEXA20: return MED::eHEXA20;
+    case VISU::ePENTA15: return MED::ePENTA15;
+    case VISU::ePYRA13: return MED::ePYRA13;
+
+    case VISU::ePOLYGONE: return MED::ePOLYGONE;
+    case VISU::ePOLYEDRE: return MED::ePOLYEDRE;
     }
-    return EGeometrieElement(-1);
+    return MED::EGeometrieElement(-1);
   }
 
-  TEntity MEDEntityToVTK(MED::EEntiteMaillage theMEDEntity)
+
+  //---------------------------------------------------------------
+  VISU::TEntity
+  MEDEntityToVTK(MED::EEntiteMaillage theMEDEntity)
   {
     switch(theMEDEntity){
-    case eNOEUD: return NODE_ENTITY;
-    case eARETE: return EDGE_ENTITY;
-    case eFACE: return FACE_ENTITY;
-    case eMAILLE: return CELL_ENTITY;
+    case MED::eNOEUD: return NODE_ENTITY;
+    case MED::eARETE: return EDGE_ENTITY;
+    case MED::eFACE: return FACE_ENTITY;
+    case MED::eMAILLE: return CELL_ENTITY;
     }
-    return TEntity(-1);
+    return VISU::TEntity(-1);
   }
 
-  MED::EEntiteMaillage VTKEntityToMED(TEntity theVTKEntity)
+
+  //---------------------------------------------------------------
+  MED::EEntiteMaillage 
+  VTKEntityToMED(TEntity theVTKEntity)
   {
     switch(theVTKEntity){
-    case NODE_ENTITY: return eNOEUD;
-    case EDGE_ENTITY: return eARETE;
-    case FACE_ENTITY: return eFACE;
-    case CELL_ENTITY: return eMAILLE;
+    case NODE_ENTITY: return MED::eNOEUD;
+    case EDGE_ENTITY: return MED::eARETE;
+    case FACE_ENTITY: return MED::eFACE;
+    case CELL_ENTITY: return MED::eMAILLE;
     }
     return MED::EEntiteMaillage(-1);
   }
 
-}
-
-extern "C"
-VISU_Convertor* CreateConvertor(const string& theFileName)
-{
-  return new VISU_MedConvertor(theFileName);
-}
-
-VISU_MedConvertor::VISU_MedConvertor(const string& theFileName)  {
-  myFileInfo.setFile(QString(theFileName.c_str()));
-  myName = myFileInfo.baseName().latin1();
-}
 
-VISU_Convertor* VISU_MedConvertor::Build()  {
-  PWrapper aMed = CrWrapper(myFileInfo.absFilePath().latin1());
-  TInt aNbMeshes = aMed->GetNbMeshes();
-  TMeshMap& aMeshMap = myMeshMap;
+  //---------------------------------------------------------------
+  PMEDSubProfile
+  CrSubProfile(const MED::PWrapper& theMEDWrapper,
+              const MED::PMeshInfo& theMeshInfo,
+              MED::EEntiteMaillage theMEntity,
+              MED::EGeometrieElement theMGeom,
+              const MED::TGeom2Size& theGeom2Size,
+              const MED::TGeom2Profile& theGeom2Profile)
+  {
+    VISU::EGeometry aEGeom = MEDGeom2VISU(theMGeom);
+    vtkIdType aVNbNodes = VISUGeom2NbNodes(aEGeom);
+
+    PMEDSubProfile aSubProfile(new TMEDSubProfile());
+    aSubProfile->myGeom = aEGeom;
+    aSubProfile->myMGeom = theMGeom;
+    aSubProfile->myStatus = eAddAll;
+
+    MED::TGeom2Size::const_iterator aTimeStampIter = theGeom2Size.find(theMGeom);
+    if(aTimeStampIter == theGeom2Size.end())
+      aSubProfile->myStatus = eRemoveAll;
+    else{
+      MED::TGeom2Profile::const_iterator aProfileIter = theGeom2Profile.find(theMGeom);
+      if(aProfileIter != theGeom2Profile.end()){
+       MED::PProfileInfo aProfileInfo = aProfileIter->second;
+
+       aSubProfile->myName = aProfileInfo->GetName();
+       aSubProfile->myStatus = eAddPart;
+
+       const MED::TElemNum& anElemNum = aProfileInfo->myElemNum;
+       TInt aNbElem = anElemNum.size();
+       aSubProfile->myNbCells = aNbElem;
+       switch(theMGeom){
+       case MED::ePOLYGONE: {
+         MED::PPolygoneInfo aPolygoneInfo = 
+           theMEDWrapper->GetPPolygoneInfo(theMeshInfo,theMEntity,theMGeom);
+         for(TInt anElemId = 0; anElemId < aNbElem ; anElemId++){
+           TInt aNbConn = aPolygoneInfo->GetNbConn(anElemNum[anElemId]);
+           aSubProfile->myCellsSize += aNbConn;
+         }
+         break;
+       }
+       case MED::ePOLYEDRE: {
+         MED::PPolyedreInfo aPolyedreInfo = 
+           theMEDWrapper->GetPPolyedreInfo(theMeshInfo,theMEntity,theMGeom);
+         for(TInt anElemId = 0; anElemId < aNbElem ; anElemId++){
+           MED::TCConnSliceArr aConnSliceArr = 
+             aPolyedreInfo->GetConnSliceArr(anElemNum[anElemId]);
+           TInt aNbFaces = aConnSliceArr.size();
+           TInt aCellSize = 0;
+           for(TInt iFace = 0; iFace < aNbFaces; iFace++){
+             MED::TCConnSlice aConnSlice = aConnSliceArr[iFace];
+             TInt aNbConn = aConnSlice.size();
+             aCellSize += aNbConn;
+           }
+           aSubProfile->myCellsSize += aCellSize;
+         }
+         break;
+       }
+       default: {
+         aSubProfile->myCellsSize = aSubProfile->myNbCells*aVNbNodes;
+       }}
+      }else{
+       TInt aNbElem = aTimeStampIter->second;
+       aSubProfile->myNbCells = aNbElem;
+       switch(theMGeom){
+       case MED::ePOLYGONE: {
+         MED::PPolygoneInfo aPolygoneInfo = 
+           theMEDWrapper->GetPPolygoneInfo(theMeshInfo,theMEntity,theMGeom);
+         for(TInt anElemId = 0; anElemId < aNbElem ; anElemId++){
+           TInt aNbConn = aPolygoneInfo->GetNbConn(anElemId);
+           aSubProfile->myCellsSize += aNbConn;
+         }
+         break;
+       }
+       case MED::ePOLYEDRE: {
+         MED::PPolyedreInfo aPolyedreInfo = 
+           theMEDWrapper->GetPPolyedreInfo(theMeshInfo,theMEntity,theMGeom);
+         for(TInt anElemId = 0; anElemId < aNbElem ; anElemId++){
+           MED::TCConnSliceArr aConnSliceArr = 
+             aPolyedreInfo->GetConnSliceArr(anElemId);
+           TInt aNbFaces = aConnSliceArr.size();
+           TInt aCellSize = 0;
+           for(TInt iFace = 0; iFace < aNbFaces; iFace++){
+             MED::TCConnSlice aConnSlice = aConnSliceArr[iFace];
+             TInt aNbConn = aConnSlice.size();
+             aCellSize += aNbConn;
+           }
+           aSubProfile->myCellsSize += aCellSize;
+         }
+         break;
+       }
+       default: {
+         aSubProfile->myCellsSize = aSubProfile->myNbCells*aVNbNodes;
+       }}
+      }
+    }
+    INITMSG(MYDEBUG,
+           "- aMGeom = "<<theMGeom<<
+           "; aEGeom = "<<aEGeom<<
+           "; aName = '"<<aSubProfile->myName<<"'"<<
+           "; aStatus = "<<aSubProfile->myStatus<<
+           "; aNbCells = "<<aSubProfile->myNbCells<<
+           "; aCellsSize = "<<aSubProfile->myCellsSize<<
+           endl);
+    
+    return aSubProfile;
+  }
 
-  MSG(MYDEBUG,"VISU_MedConvertor::Build()");
-  INITMSG(MYDEBUG,"GetNbMeshes() = "<<aNbMeshes<<"\n");
 
-  for (TInt iMesh = 1; iMesh <= aNbMeshes; iMesh++) {
-    try {
-    PMeshInfo aMeshInfo = aMed->GetPMeshInfo(iMesh);
+  //---------------------------------------------------------------
+  TProfileKey
+  GetProfileKey(const MED::PWrapper& theMEDWrapper,
+               const MED::PMeshInfo& theMeshInfo,
+               const MED::TTimeStampVal& theTimeStampVal,
+               const VISU::TMEDMeshOnEntity& theMeshOnEntity,
+               MED::EEntiteMaillage theMEntity,
+               const MED::TGeom2Size& theGeom2Size)
+  {
+    INITMSG(MYDEBUG,"GetProfileKey"<<endl);
+    
+    TProfileKey aProfileKey;
+    const MED::TGeom2Profile& aGeom2Profile = theTimeStampVal.GetGeom2Profile();
+
+    const MED::TGeom2Size& aGeom2Size = theMeshOnEntity.myGeom2Size;
+    MED::TGeom2Size::const_iterator anIter = aGeom2Size.begin();
+    for(; anIter != aGeom2Size.end(); anIter++){
+      MED::EGeometrieElement aMGeom = anIter->first;
+      PSubProfile aSubProfile = CrSubProfile(theMEDWrapper,
+                                            theMeshInfo,
+                                            theMEntity,
+                                            aMGeom,
+                                            theGeom2Size,
+                                            aGeom2Profile);
+      aProfileKey.insert(aSubProfile);
+    }
+    
+    return aProfileKey;
+  }
+  
 
-    PNodeInfo aNodeInfo = aMed->GetPNodeInfo(aMeshInfo);
+  //---------------------------------------------------------------
+  void
+  InitProfile(const MED::PWrapper& theMEDWrapper,
+             const MED::PMeshInfo& theMeshInfo,
+             MED::TTimeStampVal& theTimeStampVal,
+             VISU::TMEDMeshOnEntity& theMeshOnEntity,
+             MED::EEntiteMaillage theMEntity,
+             const MED::TGeom2Size& theGeom2Size,
+             VISU::TMEDValForTime& theValForTime)
+  {
+    TTimerLog aTimerLog(MYDEBUG,"InitProfile");
+    INITMSG(MYDEBUG,"InitProfile"<<endl);
+    
+    TProfileMap& aProfileMap = theMeshOnEntity.myProfileMap;
     
-    MED::TEntityInfo aEntityInfo = aMed->GetEntityInfo(aMeshInfo);
+    TProfileKey aProfileKey = GetProfileKey(theMEDWrapper,
+                                           theMeshInfo,
+                                           theTimeStampVal,
+                                           theMeshOnEntity,
+                                           theMEntity,
+                                           theGeom2Size);
     
-    TElemGroup aElemGroup = GetElemsByEntity(aMed,aMeshInfo,aEntityInfo);
+    TProfileMap::const_iterator anIter = aProfileMap.find(aProfileKey);
+    if(anIter != aProfileMap.end()){
+      theValForTime.myProfile = anIter->second;
+      INITMSG(MYDEBUG,"aProfileMap.find(aProfileKey)"<<endl);
+    }else{
+      PMEDProfile aProfile(new TMEDProfile());
+      TGeom2SubProfile& aGeom2SubProfile = aProfile->myGeom2SubProfile;
+      
+      TProfileKey::const_iterator anIter = aProfileKey.begin();
+      for(; anIter != aProfileKey.end(); anIter++){
+       PMEDSubProfile aSubProfile(*anIter);
 
-    TFamilyGroup aFamilyGroup = GetFamilies(aMed,aMeshInfo);
+       if(aProfile->myIsAll && aSubProfile->myStatus != eAddAll)
+         aProfile->myIsAll = false;
 
-    TFamilyByEntity aFamilyByEntity = GetFamiliesByEntity(aMed,aElemGroup,aFamilyGroup);
+       VISU::EGeometry aEGeom = aSubProfile->myGeom;
+       aGeom2SubProfile[aEGeom] = aSubProfile;
+      }
 
-    TGroupInfo aGroupInfo = GetFamiliesByGroup(aFamilyGroup);
+      aProfileMap[aProfileKey] = aProfile;
+      theValForTime.myProfile = aProfile;
+    }
+  }
 
-    // creating TMesh structure and TMeshOnEntityMap
-    typedef map<TInt,TInt> TFamilyCounterMap;
-    TFamilyCounterMap aFamilyNbCellsCounterMap, aFamilyCellsSizeCounterMap;
 
-    TInt aDim = aMeshInfo->GetDim();
-    const string& aMeshName = aMeshInfo->GetName();
-    
-    PMEDMesh aMesh = aMeshMap[aMeshName](new TMEDMesh());
-    aMesh->myDim = aDim;
-    aMesh->myName = aMeshName;
-    aMesh->myNbPoints = aNodeInfo->GetNbElem();
-    aMesh->myMeshInfo = aMeshInfo;
-    aMesh->myEntityInfo = aEntityInfo;
-
-    INITMSG(MYDEBUG,"aMeshName = '"<<aMeshName<<
-           "'; myNbPoints = "<<aMesh->myNbPoints<<
-           "; aDim = "<<aDim<<"\n");
+  //---------------------------------------------------------------
+  TGaussKey
+  GetGaussKey(const MED::TTimeStampVal& theTimeStampVal,
+             const VISU::TMEDMeshOnEntity& theMeshOnEntity,
+             const MED::TGeom2Size& theGeom2Size,
+             VISU::TMEDValForTime& theValForTime)
+  {
+    TTimerLog aTimerLog(MYDEBUG,"GetGaussKey");
+    INITMSG(MYDEBUG,"GetGaussKey"<<endl);
+
+    TGaussKey aGaussKey;
+    PMEDProfile aProfile = theValForTime.myProfile;
+    TGeom2SubProfile& aGeom2SubProfile = aProfile->myGeom2SubProfile;
+
+    const MED::TTimeStampInfo& aTimeStampInfo = theTimeStampVal.GetTimeStampInfo();
+    const MED::TGeom2Gauss& aGeom2Gauss = aTimeStampInfo.GetGeom2Gauss();
+
+    const MED::TGeom2Size& aGeom2Size = theMeshOnEntity.myGeom2Size;
+    MED::TGeom2Size::const_iterator anIter = aGeom2Size.begin();
+    for(; anIter != aGeom2Size.end(); anIter++){
+      MED::EGeometrieElement aMGeom = anIter->first;
+      VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+
+      TGeom2SubProfile::iterator anIter2 = aGeom2SubProfile.find(aEGeom);
+      if(anIter2 == aGeom2SubProfile.end()){
+       INITMSG(MYDEBUG,"anIter2 == aGeom2SubProfile.end!!"<<endl);
+       continue;
+      }
+      PMEDSubProfile aSubProfile = anIter2->second;
+
+      MED::TGeom2Size::const_iterator aTimeStampIter = theGeom2Size.find(aMGeom);
+      if(aTimeStampIter != theGeom2Size.end()){
+       TInt aNbCells = aTimeStampIter->second;
+       if(aSubProfile->myStatus == eAddPart)
+         aNbCells = aSubProfile->myNbCells;
+
+       PMEDGaussSubMesh aGaussSubMesh(new TMEDGaussSubMesh());
+       aGaussSubMesh->mySubProfile = aSubProfile;
+       aGaussSubMesh->myStatus = aSubProfile->myStatus;
+         
+       PMEDGauss aGauss(new TMEDGauss());
+       aGaussSubMesh->myGauss = aGauss;
+       aGauss->myGeom = aEGeom;
+       aGauss->myNbPoints = 1;
+
+       MED::TGeom2Gauss::const_iterator aGaussIter = aGeom2Gauss.find(aMGeom);
+       if(aGaussIter != aGeom2Gauss.end()){
+         MED::PGaussInfo aGaussInfo = aGaussIter->second;
+         aGauss->myGaussInfo = aGaussInfo;
+         aGauss->myName = aGaussInfo->GetName();
+         aGauss->myNbPoints = aGaussInfo->GetNbGauss();
+       }
+       
+       aGaussSubMesh->myNbCells = aNbCells*aGauss->myNbPoints;
+       aGaussSubMesh->myCellsSize = aGaussSubMesh->myNbCells*2;
+
+       aGaussKey.insert(aGaussSubMesh);
+
+       INITMSGA(MYDEBUG,0,
+                "- aEGeom = "<<aGauss->myGeom<<
+                "; aName = '"<<aGauss->myName<<"'"<<
+                "; aNbGauss = "<<aGauss->myNbPoints<<
+                "; aStatus = "<<aGaussSubMesh->myStatus<<
+                "; aNbCells = "<<aGaussSubMesh->myNbCells<<
+                "; aCellsSize = "<<aGaussSubMesh->myCellsSize<<
+                endl);
+      }
+    }
+
+    return aGaussKey;
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  InitGaussMesh(MED::TTimeStampVal& theTimeStampVal,
+               VISU::TMEDMeshOnEntity& theMeshOnEntity,
+               const MED::TGeom2Size& theGeom2Size,
+               VISU::TMEDValForTime& theValForTime)
+  {
+    TTimerLog aTimerLog(MYDEBUG,"InitGaussMesh");
+    INITMSG(MYDEBUG,"InitGaussMesh"<<endl);
+
+    if(theMeshOnEntity.myEntity == NODE_ENTITY)
+      return;
+
+    TGaussMeshMap& aGaussMeshMap = theMeshOnEntity.myGaussMeshMap;
     
-    BEGMSG(MYDEBUG,"aEntityInfo.size() = "<<aEntityInfo.size()<<"\n");
+    TGaussKey aGaussKey = GetGaussKey(theTimeStampVal,
+                                     theMeshOnEntity,
+                                     theGeom2Size,
+                                     theValForTime);
+
+    TGaussMeshMap::const_iterator anIter = aGaussMeshMap.find(aGaussKey);
+    if(anIter != aGaussMeshMap.end()){
+      theValForTime.myGaussMesh = anIter->second;
+      INITMSG(MYDEBUG,"aGaussMeshMap.find(aGaussKey)"<<endl);
+    }else{
+      PMEDGaussMesh aGaussMesh(new TMEDGaussMesh());
+      TGeom2GaussSubMesh& aGeom2GaussSubMesh = aGaussMesh->myGeom2GaussSubMesh;
+      {
+       TGaussKey::const_iterator anIter = aGaussKey.begin();
+       for(; anIter != aGaussKey.end(); anIter++){
+         PMEDGaussSubMesh aGaussSubMesh(*anIter);
+         PMEDGauss aGauss = aGaussSubMesh->myGauss;
+         VISU::EGeometry aEGeom = aGauss->myGeom;
+         aGeom2GaussSubMesh[aEGeom] = aGaussSubMesh;
+       }
+      }
+      {
+       TGaussSubMeshArr& aGaussSubMeshArr = aGaussMesh->myGaussSubMeshArr;
+       aGaussSubMeshArr.resize(aGeom2GaussSubMesh.size());
+       TGeom2GaussSubMesh::const_iterator anIter = aGeom2GaussSubMesh.begin();
+       for(TInt anID = 0; anIter != aGeom2GaussSubMesh.end(); anIter++, anID++){
+         const PGaussSubMeshImpl& aGaussSubMesh = anIter->second;
+         aGaussSubMeshArr[anID] = aGaussSubMesh;
+       }
+      }
+      INITMSG(MYDEBUG,"aGaussMeshMap[aGaussKey] = aGaussMesh"<<endl);
+      aGaussMeshMap[aGaussKey] = aGaussMesh;
+      theValForTime.myGaussMesh = aGaussMesh;
+    }
+  }
 
-    TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
-    MED::TEntityInfo::iterator anEntityIter = aEntityInfo.begin();
-    for(; anEntityIter != aEntityInfo.end(); anEntityIter++){
-      const EEntiteMaillage& aMEntity = anEntityIter->first;
-      const MED::TGeom& aTGeom = anEntityIter->second;
 
+  //---------------------------------------------------------------
+  void
+  InitGaussProfile(const MED::PWrapper& theMEDWrapper,
+                  const MED::PMeshInfo& theMeshInfo,
+                  MED::TTimeStampVal& theTimeStampVal,
+                  VISU::TMEDMeshOnEntity& theMeshOnEntity,
+                  MED::EEntiteMaillage theMEntity,
+                  const MED::TGeom2Size& theGeom2Size,
+                  VISU::TMEDValForTime& theValForTime)
+  {
+    TTimerLog aTimerLog(MYDEBUG,"InitGaussProfile");
+    INITMSG(MYDEBUG,"InitGaussProfile"<<endl);
+
+    // The order of the function calls is important
+    InitProfile(theMEDWrapper,
+               theMeshInfo,
+               theTimeStampVal,
+               theMeshOnEntity,
+               theMEntity,
+               theGeom2Size,
+               theValForTime);
+
+    InitGaussMesh(theTimeStampVal,
+                 theMeshOnEntity,
+                 theGeom2Size,
+                 theValForTime);
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  BuildMeshOnEntityMap(PMEDMesh theMesh,
+                      const MED::TEntityInfo& theEntityInfo,
+                      const MED::PNodeInfo& theNodeInfo,
+                      const MED::PWrapper& theMEDWrapper)
+  {
+    TTimerLog aTimerLog(MYDEBUG,"BuildMeshOnEntityMap");
+    INITMSG(MYDEBUG,"BuildMeshOnEntityMap"<<endl);
+
+    MED::PMeshInfo aMeshInfo = theMesh->myMeshInfo;
+    const std::string& aMeshName = theMesh->myName;
+    TMeshOnEntityMap& aMeshOnEntityMap = theMesh->myMeshOnEntityMap;
+    MED::TEntityInfo::const_iterator anEntityIter = theEntityInfo.begin();
+    for(; anEntityIter != theEntityInfo.end(); anEntityIter++){
+      const MED::EEntiteMaillage& aMEntity = anEntityIter->first;
+      const MED::TGeom2Size& aGeom2Size = anEntityIter->second;
+      
       TEntity aVEntity = MEDEntityToVTK(aMEntity);
       PMEDMeshOnEntity aMeshOnEntity = aMeshOnEntityMap[aVEntity](new TMEDMeshOnEntity());
       aMeshOnEntity->myEntity = aVEntity;
       aMeshOnEntity->myMeshName = aMeshName;
-      aMeshOnEntity->myGeom = aTGeom;
+      aMeshOnEntity->myGeom2Size = aGeom2Size;
+      TFamilyID2CellsSize& aFamilyID2CellsSize = aMeshOnEntity->myFamilyID2CellsSize;
 
-      INITMSG(MYDEBUG,"aMEntity = "<<aMEntity<<"; aVEntity = "<<aVEntity<<"\n");
-
-      if(aMEntity == eNOEUD){
-       aMeshOnEntity->myNbCells = aMesh->myNbPoints;
-       aMeshOnEntity->myCellsSize = 2*aMesh->myNbPoints;
+      INITMSG(MYDEBUG,
+             "- aMEntity = "<<aMEntity<<
+             "; aVEntity = "<<aVEntity<<
+             endl);
+      
+      if(aMEntity == MED::eNOEUD){
+       aMeshOnEntity->myNbCells = theMesh->myNbPoints;
+       aMeshOnEntity->myCellsSize = 2*theMesh->myNbPoints;
        
-       for(TInt iElem = 0; iElem < aMesh->myNbPoints; iElem++){
-         TInt aFamId = aNodeInfo->GetFamNum(iElem);
-         if(aFamId != 0){
-           aFamilyNbCellsCounterMap[aFamId] += 1;
-           aFamilyCellsSizeCounterMap[aFamId] += 2;
-         }
+       for(TInt iElem = 0; iElem < theMesh->myNbPoints; iElem++){
+         TInt aFamId = theNodeInfo->GetFamNum(iElem);
+         if(aFamId != 0)
+           aFamilyID2CellsSize[aFamId] += 2;
        }
-
-       INITMSG(MYDEBUG,"myNbCells = "<<aMeshOnEntity->myNbCells<<
-               "; myCellsSize = "<<aMeshOnEntity->myCellsSize<<"\n");;
-
+       
+       INITMSG(MYDEBUG,
+               "- myNbCells = "<<aMeshOnEntity->myNbCells<<
+               "; myCellsSize = "<<aMeshOnEntity->myCellsSize<<
+               endl);;
+       
       }else{
-       MED::TGeom::const_iterator anTGeomIter = aTGeom.begin();
+       MED::TGeom2Size::const_iterator aGeom2SizeIter = aGeom2Size.begin();
        aMeshOnEntity->myNbCells = 0;
        aMeshOnEntity->myCellsSize = 0;
-       for(; anTGeomIter != aTGeom.end(); anTGeomIter++){
-         const EGeometrieElement& aGeom = anTGeomIter->first;
-
-         switch(aGeom){
-         case ePOLYGONE:
-           {
-             PPolygoneInfo aPolygoneInfo = aMed->GetPPolygoneInfo(aMeshInfo,aMEntity,aGeom);
-             TInt aNbElem = aPolygoneInfo->GetNbElem();
-             TElemNum aConn  = aPolygoneInfo->GetConnectivite();
-             TElemNum aIndex = aPolygoneInfo->GetIndex();
-             TInt aNbIndex = aIndex.size();
-             TInt aNbConn  = aConn.size();
-
-             aMeshOnEntity->myNbCells += aNbElem;
-             
-             for (int ii = 0; ii<aNbElem ; ii++){
-               int aNbConnii = aPolygoneInfo->GetNbConn(ii);
-               aMeshOnEntity->myCellsSize += aNbConnii;
-             }
-             INITMSG(MYDEBUG,"aGeom = "<<aGeom<<"; aNbElem = "<<aNbElem<<
-                     "; myNbPolygones = "<<aNbElem<<
-                     "; nbConn= "<<aNbConn<<"\n");
-             
-             for(TInt iElem = 0; iElem < aNbElem; iElem++){
-               TInt aFamId = aPolygoneInfo->GetFamNum(iElem);
-               if(aFamId != 0){
-                 aFamilyNbCellsCounterMap[aFamId] += 1;
-                 ADDMSG(MYDEBUG,"aFamId="<<aFamId<<" ");
-                 aFamilyCellsSizeCounterMap[aFamId] += aPolygoneInfo->GetNbConn(iElem) + 1;
-               }
-             }
-             ADDMSG(MYDEBUG,endl);
-             break;
-           }
-         case ePOLYEDRE:
-           {
-             PPolyedreInfo aPolyedreInfo = aMed->GetPPolyedreInfo(aMeshInfo,aMEntity,aGeom);
-             TInt aNbElem = aPolyedreInfo->GetNbElem();
-             TElemNum aConn  = aPolyedreInfo->GetConnectivite();
-             TElemNum aIndex = aPolyedreInfo->GetIndex();
-             TInt aNbIndex = aIndex.size();
-             TInt aNbConn  = aConn.size();
-
-             aMeshOnEntity->myNbCells += aNbElem;
-             
-             for (int ii = 0; ii<aNbElem ; ii++){
-               int aNbConnii = aPolyedreInfo->GetNbConn(ii);
-               aMeshOnEntity->myCellsSize += aNbConnii;
-             }
-             INITMSG(MYDEBUG,"aGeom = "<<aGeom<<"; aNbElem = "<<aNbElem<<
-                     "; myNbPolyedres = "<<aNbElem<<
-                     "; nbConn= "<<aNbConn<<"\n");
-             
-             for(TInt iElem = 0; iElem < aNbElem; iElem++){
-               TInt aFamId = aPolyedreInfo->GetFamNum(iElem);
-               std::string aName = aPolyedreInfo->GetElemName(iElem);
-               if(aFamId != 0){
-                 aFamilyNbCellsCounterMap[aFamId] += 1;
-                 ADDMSG(MYDEBUG,"(aFamId="<<aFamId<<";Name='"<<aName<<"') ");
-                 aFamilyCellsSizeCounterMap[aFamId] += aPolyedreInfo->GetNbConn(iElem) + 1;
-               }
-             }
-             ADDMSG(MYDEBUG,endl);
-             break;
+       for(; aGeom2SizeIter != aGeom2Size.end(); aGeom2SizeIter++){
+         const MED::EGeometrieElement& aMGeom = aGeom2SizeIter->first;
+         
+         switch(aMGeom){
+         case MED::ePOLYGONE: {
+           MED::PPolygoneInfo aPolygoneInfo = theMEDWrapper->GetPPolygoneInfo(aMeshInfo,aMEntity,aMGeom);
+           TInt aNbElem = aPolygoneInfo->GetNbElem();
+           
+           INITMSG(MYDEBUG,
+                   "- aMGeom = "<<aMGeom<<
+                   "; aNbElem = "<<aNbElem<<
+                   endl);
+           
+           aMeshOnEntity->myNbCells += aNbElem;      
+           for(TInt anElemId = 0; anElemId < aNbElem ; anElemId++){
+             TInt aNbConn = aPolygoneInfo->GetNbConn(anElemId);
+             aMeshOnEntity->myCellsSize += aNbConn;
+             TInt aFamId = aPolygoneInfo->GetFamNum(anElemId);
+             if(aFamId != 0)
+               aFamilyID2CellsSize[aFamId] += aNbConn + 1;
            }
-         default:
-           {
-             int aVNbNodes = VTKGeom2NbNodes(MEDGeomToVTK(aGeom));
-             PCellInfo aCellInfo = aMed->GetPCellInfo(aMeshInfo,aMEntity,aGeom);
-             TInt aNbElem = aCellInfo->GetNbElem();
-             aMeshOnEntity->myNbCells += aNbElem;
-             aMeshOnEntity->myCellsSize += aNbElem*(aVNbNodes+1);
-             INITMSG(MYDEBUG,"aGeom = "<<aGeom<<"; aNbElem = "<<aNbElem<<
-                     "; myNbCells = "<<aMeshOnEntity->myNbCells<<
-                     "; myCellsSize = "<<aMeshOnEntity->myCellsSize<<"\n");
-             
-             for(TInt iElem = 0; iElem < aNbElem; iElem++){
-               TInt aFamId = aCellInfo->GetFamNum(iElem);
-               if(aFamId != 0){
-                 aFamilyNbCellsCounterMap[aFamId] += 1;
-                 ADDMSG(MYDEBUG,"aFamId = "<<aFamId<<" ");
-                 aFamilyCellsSizeCounterMap[aFamId] += aVNbNodes + 1;
-               }
+           break;
+         }
+         case MED::ePOLYEDRE: {
+           MED::PPolyedreInfo aPolyedreInfo = theMEDWrapper->GetPPolyedreInfo(aMeshInfo,aMEntity,aMGeom);
+           TInt aNbElem = aPolyedreInfo->GetNbElem();
+           
+           INITMSG(MYDEBUG,
+                   "- aMGeom = "<<aMGeom<<
+                   "; aNbElem = "<<aNbElem<<
+                   endl);
+           
+           aMeshOnEntity->myNbCells += aNbElem;
+           for(TInt anElemId = 0; anElemId < aNbElem ; anElemId++){
+             MED::TCConnSliceArr aConnSliceArr = aPolyedreInfo->GetConnSliceArr(anElemId);
+             TInt aNbFaces = aConnSliceArr.size();
+             TInt aCellSize = 0;
+             for(TInt iFace = 0; iFace < aNbFaces; iFace++){
+               MED::TCConnSlice aConnSlice = aConnSliceArr[iFace];
+               TInt aNbConn = aConnSlice.size();
+               aCellSize += aNbConn;
              }
-             ADDMSG(MYDEBUG,endl);
+             aMeshOnEntity->myCellsSize += aCellSize;
+             TInt aFamId = aPolyedreInfo->GetFamNum(anElemId);
+             if(aFamId != 0)
+               aFamilyID2CellsSize[aFamId] += aCellSize + 1;
+           }
+           break;
+         }
+         default: {
+           VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+           vtkIdType aVNbNodes = VISUGeom2NbNodes(aEGeom);
+           MED::PCellInfo aCellInfo = theMEDWrapper->GetPCellInfo(aMeshInfo,aMEntity,aMGeom);
+           TInt aNbElem = aCellInfo->GetNbElem();
+           aMeshOnEntity->myNbCells += aNbElem;
+           aMeshOnEntity->myCellsSize += aNbElem*(aVNbNodes+1);
+           
+           INITMSG(MYDEBUG,
+                   "- aMGeom = "<<aMGeom<<
+                   "; aNbElem = "<<aNbElem<<
+                   "; myNbCells = "<<aMeshOnEntity->myNbCells<<
+                   "; myCellsSize = "<<aMeshOnEntity->myCellsSize<<
+                   endl);
+           
+           for(TInt iElem = 0; iElem < aNbElem; iElem++){
+             TInt aFamId = aCellInfo->GetFamNum(iElem);
+             if(aFamId != 0)
+               aFamilyID2CellsSize[aFamId] += aVNbNodes + 1;
            }
-         } // end switch(...)
+         }} // end switch(...)
        }
       }
     }
-    
-    TFamilyByEntity::const_iterator aFamilyByEntityIter = aFamilyByEntity.begin();
-    BEGMSG(MYDEBUG,"TFamilyByEntity:\n");
-    for(; aFamilyByEntityIter != aFamilyByEntity.end(); aFamilyByEntityIter++){
-      const EEntiteMaillage& aMEntity = aFamilyByEntityIter->first;
-      const TFamilyGroup& aFamilyGroup = aFamilyByEntityIter->second;
+  }
 
-      TEntity aVEntity = MEDEntityToVTK(aMEntity);
-      VISU::PMEDMeshOnEntity aMeshOnEntity = aMesh->myMeshOnEntityMap[aVEntity];
-      VISU::TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap;
+
+  //---------------------------------------------------------------
+  void
+  BuildFieldMap(PMEDMesh theMesh,
+               const MED::TEntityInfo& theEntityInfo,
+               MED::PWrapper theMEDWrapper)
+  {
+    TTimerLog aTimerLog(MYDEBUG,"BuildFieldMap");
+    TInt aNbFields = theMEDWrapper->GetNbFields(); 
+    MED::PMeshInfo aMeshInfo = theMesh->myMeshInfo;
+    const std::string& aMeshName = theMesh->myName;
+    INITMSG(MYDEBUG,"BuildFieldMap: aNbFields = "<<aNbFields<<"\n");
+    for(TInt iField = 1; iField <= aNbFields; iField++){
+      TTimerLog aTimerLog(MYDEBUG,"GetPFieldInfo");
+      MED::PFieldInfo aFieldInfo = theMEDWrapper->GetPFieldInfo(aMeshInfo,iField);
+      TInt aNbComp = aFieldInfo->GetNbComp();
+      std::string aFieldName = aFieldInfo->GetName();
       
-      if(aFamilyGroup.empty())
+      MED::TGeom2Size aGeom2Size;
+      MED::EEntiteMaillage aMEntity;
+      TInt aNbTimeStamps = theMEDWrapper->GetNbTimeStamps(aFieldInfo,
+                                                         theEntityInfo,
+                                                         aMEntity,
+                                                         aGeom2Size);
+      if(aNbTimeStamps < 1)
        continue;
+      
+      TEntity aVEntity = MEDEntityToVTK(aMEntity);
+      PMEDMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[aVEntity];
+      TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
+      PMEDField aField = aFieldMap[aFieldName](new TMEDField());
+      aField->myId = iField;
+      aField->InitArrays(aNbComp);
+      aField->myEntity = aVEntity;
+      aField->myName = aFieldName;
+      aField->myMeshName = aMeshName;
+      aField->myDataSize = aMeshOnEntity->myNbCells * aNbComp;
+      
+      INITMSG(MYDEBUG,"myName = '"<<aField->myName<<"'"<<
+             "; myId = "<<aField->myId<<
+             "; myEntity = "<<aField->myEntity<<
+             "; myDataSize = "<<aField->myDataSize<<
+             "; myNbComp = "<<aField->myNbComp<<"\n");
+      
+      for(TInt iComp = 0; iComp < aNbComp; iComp++){
+       aField->myCompNames[iComp] = aFieldInfo->GetCompName(iComp);
+       aField->myUnitNames[iComp] = aFieldInfo->GetUnitName(iComp);
+      }
+      
+      for(TInt iTimeStamp = 1; iTimeStamp <= aNbTimeStamps; iTimeStamp++){
+       TTimerLog aTimerLog(MYDEBUG,"GetPTimeStampInfo");
+       MED::PTimeStampInfo aTimeStampInfo = theMEDWrapper->GetPTimeStampInfo(aFieldInfo,
+                                                                             aMEntity,
+                                                                             aGeom2Size,
+                                                                             iTimeStamp);
+       TFloat aDt = aTimeStampInfo->GetDt();
+       std::string anUnitDt = aTimeStampInfo->GetUnitDt();
+
+       TValField& aValField = aField->myValField;
+       PMEDValForTime aValForTime = aValField[iTimeStamp](new TMEDValForTime());
+       aValForTime->myId = iTimeStamp;
+       aValForTime->myFieldName = aField->myName;
+       aValForTime->myEntity = aField->myEntity;
+       aValForTime->myMeshName = aField->myMeshName;
+       aValForTime->myTime = VISU::TTime(aDt,anUnitDt);
+       INITMSG(MYDEBUG,"aDt = '"<<aDt<<", "<<anUnitDt<<"'\n");
+       
+       TGeom2NbGauss& aVGeom2NbGauss = aValForTime->myGeom2NbGauss;
+       const MED::TGeom2NbGauss& aMGeom2NbGauss = aTimeStampInfo->myGeom2NbGauss;
+       MED::TGeom2NbGauss::const_iterator anIter = aMGeom2NbGauss.begin();
+       for(; anIter != aMGeom2NbGauss.end(); anIter++){
+         const MED::EGeometrieElement& aMGeom = anIter->first;
+         EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+         TInt aNbGauss = anIter->second;
+         aVGeom2NbGauss[aEGeom] = aNbGauss;
+       }
+      }
+    }
+  }
+
 
-      INITMSG(MYDEBUG,"aMEntity = "<<aMEntity<<"; aVEntity = "<<aVEntity<<"\n");
-      TFamilyGroup::const_iterator aFamilyGroupIter = aFamilyGroup.begin();
-      for(; aFamilyGroupIter != aFamilyGroup.end(); aFamilyGroupIter++){
-       const PFamilyInfo& aFamilyInfo = *aFamilyGroupIter;
-       if (aFamilyInfo->GetId() == 0) 
+  //---------------------------------------------------------------
+  void
+  BuildFamilyMap(PMEDMesh theMesh,
+                const MED::TEntityInfo& theEntityInfo,
+                const MED::TEntity2TGeom2ElemInfo& theEntity2TGeom2ElemInfo,
+                const MED::TFamilyInfoSet& theFamilyInfoSet,
+                MED::PWrapper theMEDWrapper)
+  {
+    TTimerLog aTimerLog(MYDEBUG,"BuildFamilyMap");
+    INITMSG(MYDEBUG,"BuildFamilyMap\n");
+
+    MED::PMeshInfo aMeshInfo = theMesh->myMeshInfo;
+    MED::TEntity2FamilySet aEntity2FamilySet = MED::GetEntity2FamilySet(theMEDWrapper,theEntity2TGeom2ElemInfo,theFamilyInfoSet);
+    MED::TEntity2FamilySet::const_iterator aEntity2FamilySetIter = aEntity2FamilySet.begin();
+    for(; aEntity2FamilySetIter != aEntity2FamilySet.end(); aEntity2FamilySetIter++){
+      const MED::EEntiteMaillage& aMEntity = aEntity2FamilySetIter->first;
+      const MED::TFamilyTSizeSet& aFamilyTSizeSet = aEntity2FamilySetIter->second;
+      
+      TEntity aVEntity = MEDEntityToVTK(aMEntity);
+      PMEDMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[aVEntity];
+      const TFamilyID2CellsSize& aFamilyID2CellsSize = aMeshOnEntity->myFamilyID2CellsSize;
+      TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap;
+       
+      if(aFamilyTSizeSet.empty())
+       continue;
+       
+      INITMSG(MY_FAMILY_DEBUG,
+             "- aMEntity = "<<aMEntity<<
+             "; aVEntity = "<<aVEntity<<
+             endl);
+
+      MED::TFamilyTSizeSet::const_iterator aFamilyTSizeSetIter = aFamilyTSizeSet.begin();
+      for(; aFamilyTSizeSetIter != aFamilyTSizeSet.end(); aFamilyTSizeSetIter++){
+       const MED::TFamilyTSize& aFamilyTSize = *aFamilyTSizeSetIter;
+       const MED::PFamilyInfo& aFamilyInfo = boost::get<0>(aFamilyTSize);
+       TInt aSize = boost::get<1>(aFamilyTSize);
+       TInt anId = aFamilyInfo->GetId();
+       if(anId == 0) 
          continue;
+       
+       std::string aFamilyName = aFamilyInfo->GetName();
 
-       const std::string& aFamilyName = aFamilyInfo->GetName();
        PMEDFamily aFamily = aFamilyMap[aFamilyName](new TMEDFamily());
-       
-       aFamily->myId = aFamilyInfo->GetId();
-       aFamily->myName = aFamilyInfo->GetName();
+       aFamily->myId = anId;
        aFamily->myEntity = aVEntity;
-       aFamily->myNbCells = aFamilyNbCellsCounterMap[aFamily->myId];
-       aFamily->myCellsSize = aFamilyCellsSizeCounterMap[aFamily->myId];
+       aFamily->myName = aFamilyName;
+       aFamily->myNbCells = aSize;
+
+       aFamily->myCellsSize = 0;
+       TFamilyID2CellsSize::const_iterator anIter = aFamilyID2CellsSize.find(anId);
+       if(anIter != aFamilyID2CellsSize.end())
+         aFamily->myCellsSize = anIter->second;
        
-       INITMSG(MYDEBUG,"aFamilyName = '"<<aFamily->myName<<
-               "'; myId = "<<aFamily->myId<<"; "<<
+       INITMSG(MY_FAMILY_DEBUG,
+               "- aFamilyName = '"<<aFamilyName<<"'"<<
+               "; myId = "<<aFamily->myId<<"; "<<
                "; aNbAttr = "<<aFamilyInfo->GetNbAttr()<<
                "; aNbGroup = "<<aFamilyInfo->GetNbGroup()<<
-               "; myEntity = "<<aFamily->myEntity<<
+               "; aVEntity = "<<aVEntity<<
                "; myNbCells = "<<aFamily->myNbCells<<
-               "; myCellsSize = "<<aFamily->myCellsSize<<"\n");
-
-       VISU::TBindGroups& aBindGroups = aFamily->myGroups;
+               "; myCellsSize = "<<aFamily->myCellsSize<<
+               endl);
+#ifdef _DEBUG_ 
        const TInt aNbGroup = aFamilyInfo->GetNbGroup();
        for(TInt i = 0; i < aNbGroup; i++){
-         const string& aGroupName = aFamilyInfo->GetGroupName(i);
-         aBindGroups.insert(aGroupName);
-         INITMSG(MYDEBUG,"aGroupName = '"<<aGroupName<<"'\n");
+         std::string aGroupName = aFamilyInfo->GetGroupName(i);
+         INITMSG(MY_FAMILY_DEBUG,"- aGroupName = '"<<aGroupName<<"'\n");
        }
+#endif
+
       }
     }
-    
-    BEGMSG(MYDEBUG,"VISU::TGroup:\n");
+  }
 
-    VISU::TGroupMap& aGroupMap = aMesh->myGroupMap;
-    TGroupInfo::const_iterator aGroupInfoIter = aGroupInfo.begin();
-    for(;aGroupInfoIter != aGroupInfo.end(); aGroupInfoIter++){
-      const string& aGroupName = aGroupInfoIter->first;
-      const TFamilyGroup& aFamilyGroup = aGroupInfoIter->second;
-      PMEDGroup aGroup(new TMEDGroup());
-      aGroup->myName = aGroupName;
-      aGroup->myMeshName = aMesh->myName;
 
-      INITMSG(MYDEBUG,"aGroup->myName = '"<<aGroup->myName<<"'\n");
+  //---------------------------------------------------------------
+  void
+  BuildGroupMap(PMEDMesh theMesh,
+               const MED::TFamilyInfoSet& theFamilyInfoSet)
+  {
+    TTimerLog aTimerLog(MYDEBUG,"BuildGroupMap");
+    INITMSG(MYDEBUG,"BuildGroupMap\n");
 
-      TFamilyGroup::const_iterator aFamilyIter = aFamilyGroup.begin();
-      for(; aFamilyIter != aFamilyGroup.end(); aFamilyIter++){
-       const PFamilyInfo& aFamilyInfo = *aFamilyIter;
-       const string& aFamilyName = aFamilyInfo->GetName();
+    TGroupMap& aGroupMap = theMesh->myGroupMap;
+    MED::TGroupInfo aGroupInfo = MED::GetGroupInfo(theFamilyInfoSet);
+    MED::TGroupInfo::const_iterator aGroupInfoIter = aGroupInfo.begin();
+    for(; aGroupInfoIter != aGroupInfo.end(); aGroupInfoIter++){
+      const std::string& aGroupName = aGroupInfoIter->first;
+      INITMSG(MY_GROUP_DEBUG,"aGroupName = '"<<aGroupName<<"'\n");
 
-       TEntity aVEntity = TEntity(-1);
-       PFamily aFamily;
+      PMEDGroup aGroup(new TMEDGroup());
+      TFamilySet& aFamilySet = aGroup->myFamilySet;
 
+      const MED::TFamilyInfoSet& aFamilyInfoSet = aGroupInfoIter->second;
+      MED::TFamilyInfoSet::const_iterator aFamilyIter = aFamilyInfoSet.begin();
+      for(; aFamilyIter != aFamilyInfoSet.end(); aFamilyIter++){
+       const MED::PFamilyInfo& aFamilyInfo = *aFamilyIter;
+       std::string aFamilyName = aFamilyInfo->GetName();
+       
+       TEntity aVEntity = TEntity(-1);
+       PMEDFamily aFamily;
+       
        // Find aVisuEntity
-       const TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
+       const TMeshOnEntityMap& aMeshOnEntityMap = theMesh->myMeshOnEntityMap;
        TMeshOnEntityMap::const_iterator aMeshOnEntityIter = aMeshOnEntityMap.begin();
        for(; aMeshOnEntityIter != aMeshOnEntityMap.end(); aMeshOnEntityIter++){
          const PMeshOnEntity& aMeshOnEntity = aMeshOnEntityIter->second;
          const TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap;
          TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.begin();
-         for (; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++){
-           const string& aName = aFamilyMapIter->first;
+         for(; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++){
+           const std::string& aName = aFamilyMapIter->first;
            aFamily = aFamilyMapIter->second;
            if(aName == aFamilyName){
              aVEntity = aFamily->myEntity;
              goto exit_lable;
            }
          }
-       }
+       } 
       exit_lable:
        if(aFamily && aVEntity >= 0){
-         aGroup->myFamilyAndEntitySet.insert(TFamilyAndEntity(aFamilyName,aVEntity));
-         INITMSG(MYDEBUG,"aFamilyName = '"<<aFamilyName<<"'; '"<<aFamily->myName<<"'; aVEntity = "<<aVEntity<<"\n");
-         
-         aGroup->myNbCells += aFamily->myNbCells;
-         aGroup->myCellsSize += aFamily->myCellsSize;
+         aFamilySet.insert(aFamily);
+         INITMSG(MY_GROUP_DEBUG,
+                 "- aFamilyName = '"<<aFamilyName<<"'"<<
+                 "; aVEntity = "<<aVEntity<<
+                 "\n");
        }
       }
-      if(!aGroup->myFamilyAndEntitySet.empty() && aGroup->myNbCells > 0){
-       BEGMSG(MYDEBUG,"myNbCells = "<<aGroup->myNbCells<<
-              "; myCellsSize = "<<aGroup->myCellsSize<<"\n\n");
+      if(!aFamilySet.empty())
        aGroupMap.insert(VISU::TGroupMap::value_type(aGroupName,aGroup));
-      }
     }
-    
-    TInt aNbFields = aMed->GetNbFields(); 
-    BEGMSG(MYDEBUG,"VISU::TField: NbFields="<<aNbFields<<"\n");
-    for(TInt iField = 1; iField <= aNbFields; iField++){
-      PFieldInfo aFieldInfo = aMed->GetPFieldInfo(aMeshInfo,iField);
-      TInt aNbComp = aFieldInfo->GetNbComp();
-      const string& aFieldName = aFieldInfo->GetName();
+  }
 
-      MED::TErr anErr;
-      MED::TGeom aTGeom;
-      EEntiteMaillage aMEntity;
-      TInt aNbTimeStamps = aMed->GetNbTimeStamps(aFieldInfo,aEntityInfo,aMEntity,aTGeom,&anErr);
-      if (anErr < 0 || aNbTimeStamps < 1)
-       continue;
 
-      TEntity aVEntity = MEDEntityToVTK(aMEntity);
-      VISU::PMeshOnEntity aMeshOnEntity = aMesh->myMeshOnEntityMap[aVEntity];
-      TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
-      PMEDField aField = aFieldMap[aFieldName](new TMEDField());
-      aField->myId = iField;
-      aField->myNbComp = aNbComp;
-      aField->myEntity = aVEntity;
-      aField->myName = aFieldName;
-      aField->myMeshName = aMeshName;
-      aField->myDataSize = aMeshOnEntity->myNbCells * aNbComp;
-      aField->myCompNames.resize(aNbComp);
-      aField->myUnitNames.resize(aNbComp);
+  //---------------------------------------------------------------
+  void
+  TMEDNamedPointCoords
+  ::Init(vtkIdType theNbPoints,
+        vtkIdType theDim,
+        const MED::PNodeInfo& theNodeInfo)
+  {
+    if(theNodeInfo->IsElemNum())
+      TNamedPointCoords::Init(theNbPoints,theDim,theNodeInfo->myElemNum);
+    else
+      TNamedPointCoords::Init(theNbPoints,theDim);
+    if(theNodeInfo->IsElemNames())
+      myNodeInfo = theNodeInfo;
+  }
 
-      INITMSG(MYDEBUG,"myName = '"<<aField->myName<<
-             "'; myId = "<<aField->myId<<
-             "; myEntity = "<<aField->myEntity<<
-             "; myDataSize = "<<aField->myDataSize<<
-             "; myNbComp = "<<aField->myNbComp<<"\n");
+  std::string 
+  TMEDNamedPointCoords
+  ::GetNodeName(vtkIdType theObjID) const
+  {
+    if(myNodeInfo)
+      return myNodeInfo->GetElemName(theObjID);
+    return TNamedPointCoords::GetNodeName(theObjID);
+  }
 
-      for(TInt iComp = 0; iComp < aNbComp; iComp++){
-       aField->myCompNames[iComp] = aFieldInfo->GetCompName(iComp);
-       aField->myUnitNames[iComp] = aFieldInfo->GetUnitName(iComp);
-      }
 
-      for(TInt iTimeStamp = 1; iTimeStamp <= aNbTimeStamps; iTimeStamp++){
-       PTimeStampInfo aTimeStamp = aMed->GetPTimeStampInfo(aFieldInfo,
-                                                           aMEntity,
-                                                           aTGeom,
-                                                           iTimeStamp,
-                                                            &anErr);
-        if (anErr < 0)
-          continue;
-
-       TFloat aDt = aTimeStamp->GetDt();
-       const string& anUnitDt = aTimeStamp->GetUnitDt();
-       PTimeStampVal aTimeStampVal = aMed->GetPTimeStampVal(aTimeStamp,&anErr);
-       TValField& aValField = aField->myValField;
-       PMEDValForTime aValForTime = aValField[iTimeStamp](new TMEDValForTime());
-       aValForTime->myId = iTimeStamp;
-       aValForTime->myFieldName = aField->myName;
-       aValForTime->myEntity = aField->myEntity;
-       aValForTime->myMeshName = aField->myMeshName;
-       aValForTime->myNbComp = aField->myNbComp;
-       aValForTime->myTime = VISU::TTime(aDt,anUnitDt);
-       INITMSG(MYDEBUG,"aDt = "<<aDt<<", "<<anUnitDt<<"\n");
+  //---------------------------------------------------------------
+  vtkIdType
+  TMEDSubProfile
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    if(myIsElemNum)
+      return myElemNum[theID];
+    else
+      return theID;
+  }
+  
+
+  //---------------------------------------------------------------
+  void
+  TMEDGauss
+  ::LessThan(const PGaussImpl& theGauss,
+            bool& theResult) const
+  {
+    TGaussImpl::LessThan(theGauss,theResult);
+    if(myGaussInfo){
+      if(PMEDGauss aGauss = theGauss){
+       const MED::TGaussInfo& aLeft = myGaussInfo;
+       const MED::TGaussInfo& aReight = aGauss->myGaussInfo;
+       theResult = MED::TGaussInfo::TLess()(aLeft,aReight);
       }
     }
-  } catch (std::runtime_error& exc){
-    MSG(MYDEBUG,"Follow exception wqs occured in:\n"<<exc.what());
-  } catch(...){
-    EXCEPTION(runtime_error,"Unknown exception !!!");
   }
+
+
+  //---------------------------------------------------------------
+  TGaussPointID
+  TMEDGaussSubMesh
+  ::GetObjID(vtkIdType theID) const
+  {
+    TInt aNbPoints = myGauss->myNbPoints;
+    TCellID aCellID = theID / aNbPoints;
+    if(myIsElemNum)
+      aCellID = myElemNum[aCellID];
+
+    TLocalPntID aLocalPntID = theID % aNbPoints;
+
+    return TGaussPointID(aCellID,aLocalPntID);
   }
+  
 
-  return this; 
-}
+  //---------------------------------------------------------------
+  void
+  TMEDSubMesh
+  ::Init(const MED::PElemInfo& theElemInfo)
+  {
+    myIsElemNum = theElemInfo->IsElemNum();
+    myElemNum = theElemInfo->myElemNum;
+    if(theElemInfo->IsElemNames())
+      myElemInfo = theElemInfo;
+  }
 
-int VISU_MedConvertor::LoadMeshOnEntity(VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                                       const string& theFamilyName)
-{
-  PWrapper aMed = CrWrapper(myFileInfo.absFilePath().latin1());
-  const string& aMeshName = theMeshOnEntity->myMeshName;
-  const VISU::TEntity& anEntity = theMeshOnEntity->myEntity;
-  PMeshImpl aMesh = myMeshMap[aMeshName];
-  int isPointsUpdated;
-  if(anEntity == VISU::NODE_ENTITY) 
-    isPointsUpdated = LoadPoints(aMed,aMesh,theFamilyName);
-  else
-    isPointsUpdated = LoadPoints(aMed,aMesh);
-  int isCellsOnEntityUpdated = LoadCellsOnEntity(aMed,aMesh,theMeshOnEntity,theFamilyName);
+  vtkIdType
+  TMEDSubMesh
+  ::GetElemObjID(vtkIdType theID) const
+  {
+    if(myIsElemNum)
+      return myElemNum[theID];
+    else
+      return TSubMeshImpl::GetElemObjID(theID);
+  }
 
-  return (isPointsUpdated || isCellsOnEntityUpdated);
-}
+  std::string 
+  TMEDSubMesh
+  ::GetElemName(vtkIdType theObjID) const
+  {
+    if(myElemInfo)
+      return myElemInfo->GetElemName(theObjID);
+    return TSubMeshImpl::GetElemName(theObjID);
+  }
 
-int VISU_MedConvertor::LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
-                                      const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet)
-{
-  PWrapper aMed = CrWrapper(myFileInfo.absFilePath().latin1());
-  int isPointsUpdated = 0, isCellsOnEntityUpdated = 0;
-  VISU::TFamilyAndEntitySet::const_iterator aFamilyAndEntitySetIter = theFamilyAndEntitySet.begin();
-  for(; aFamilyAndEntitySetIter != theFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++){
-    const string& aFamilyName = aFamilyAndEntitySetIter->first;
-    const VISU::TEntity& anEntity = aFamilyAndEntitySetIter->second;
-    const VISU::PMEDMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[anEntity];
-    if(anEntity == VISU::NODE_ENTITY){
-      isPointsUpdated += LoadPoints(aMed,theMesh,aFamilyName);
-      isCellsOnEntityUpdated += LoadCellsOnEntity(aMed,theMesh,aMeshOnEntity);
-    }else{
-      isPointsUpdated += LoadPoints(aMed,theMesh);
-      isCellsOnEntityUpdated += LoadCellsOnEntity(aMed,theMesh,aMeshOnEntity,aFamilyName);
+  struct TSetIsDone
+  {
+    bool& myIsDone;
+    TSetIsDone(bool& theIsDone):
+      myIsDone(theIsDone)
+    {}
+
+    ~TSetIsDone()
+    {
+      myIsDone = true;
     }
-  }
 
-  return (isPointsUpdated || isCellsOnEntityUpdated);
+  };
 }
 
-int VISU_MedConvertor::LoadFieldOnMesh(VISU::PMeshImpl theMesh, 
-                                      VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                                      VISU::PFieldImpl theField, 
-                                      VISU::PValForTimeImpl theValForTime)
+
+//---------------------------------------------------------------
+extern "C"
+VISU_Convertor* 
+CreateConvertor(const string& theFileName)
 {
-  PWrapper aMed = CrWrapper(myFileInfo.absFilePath().latin1());
-  int isPointsUpdated = LoadPoints(aMed,theMesh);
-  int isCellsOnEntityUpdated = LoadCellsOnEntity(aMed,theMesh,theMeshOnEntity);
-  int isFieldUpdated = LoadField(aMed,theMesh,theMeshOnEntity,theField,theValForTime);
-  
-  return (isPointsUpdated || isCellsOnEntityUpdated || isFieldUpdated);
+  return new VISU_MedConvertor(theFileName);
 }
 
-
-int 
-VISU_MedConvertor::LoadPoints(const MED::PWrapper& theMed,
-                             VISU::PMEDMesh theMesh, 
-                             const string& theFamilyName) 
+VISU_MedConvertor
+::VISU_MedConvertor(const string& theFileName):
+  myIsEntitiesDone(false),
+  myIsFieldsDone(false),
+  myIsGroupsDone(false),
+  myIsMinMaxDone(false)
 {
-  try{
-    //Check on existing family
-    VISU::PMEDMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[VISU::NODE_ENTITY];
-    aMeshOnEntity->myEntity = VISU::NODE_ENTITY;
+  myFileInfo.setFile(QString(theFileName.c_str()));
+  myName = myFileInfo.baseName().latin1();
+}
+
+
+//---------------------------------------------------------------
+VISU_Convertor* 
+VISU_MedConvertor
+::BuildEntities()
+{
+  if(myIsEntitiesDone)
+    return this;
+
+  TSetIsDone aSetIsDone(myIsEntitiesDone);
+  TTimerLog aTimerLog(MYDEBUG,"BuildEntities");
+  MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
+
+  TInt aNbMeshes = aMed->GetNbMeshes();
+  TMeshMap& aMeshMap = myMeshMap;
+
+  INITMSG(MYDEBUG,"BuildEntities aNbMeshes = "<<aNbMeshes<<"\n");
+
+  for(TInt iMesh = 1; iMesh <= aNbMeshes; iMesh++){
+#ifndef _DEXCEPT_
+    try{
+#endif
+      TTimerLog aTimerLog(MYDEBUG,"GetPMeshInfo");
+
+      MED::PMeshInfo aMeshInfo = aMed->GetPMeshInfo(iMesh);
+      std::string aMeshName = aMeshInfo->GetName();
+      TInt aDim = aMeshInfo->GetDim();
+      
+      MED::PNodeInfo aNodeInfo = aMed->GetPNodeInfo(aMeshInfo);
+      
+      MED::TEntityInfo anEntityInfo = aMed->GetEntityInfo(aMeshInfo);
+      
+      // creating TMesh structure and TMeshOnEntityMap         
+      PMEDMesh aMesh = aMeshMap[aMeshName](new TMEDMesh());
+      aMesh->myDim = aDim;
+      aMesh->myName = aMeshName;
+      aMesh->myNbPoints = aNodeInfo->GetNbElem();
+      aMesh->myMeshInfo = aMeshInfo;
+      aMesh->myEntityInfo = anEntityInfo;
+      aMesh->myNamedPointCoords(new TMEDNamedPointCoords());
+
+      INITMSG(MYDEBUG,"aMeshName = '"<<aMeshName<<
+             "'; myNbPoints = "<<aMesh->myNbPoints<<
+             "; aDim = "<<aDim<<"\n");
+      
+#ifndef _DEXCEPT_
+      try{
+#endif
+       BEGMSG(MYDEBUG,"anEntityInfo.size() = "<<anEntityInfo.size()<<"\n");
+       
+       BuildMeshOnEntityMap(aMesh,
+                            anEntityInfo,
+                            aNodeInfo,
+                            aMed);
+       
+#ifndef _DEXCEPT_
+      }catch(std::exception& exc){
+       MSG(MYDEBUG,"Follow exception was occured in:\n"<<exc.what());
+      }catch(...){
+       MSG(MYDEBUG,"Unknown exception !!!");
+      }
+#endif
+
+#ifndef _DEXCEPT_
+    }catch(std::exception& exc){
+      MSG(MYDEBUG,"Follow exception was occured in:\n"<<exc.what());
+    }catch(...){
+      MSG(MYDEBUG,"Unknown exception !!!");
+    }
+#endif
+  } 
+
+  return this; 
+}
+
+
+//---------------------------------------------------------------
+VISU_Convertor* 
+VISU_MedConvertor
+::BuildFields()
+{
+  if(myIsFieldsDone)
+    return this;
+
+  TSetIsDone aSetIsDone(myIsFieldsDone);
+  TTimerLog aTimerLog(MYDEBUG,"BuildFields");
+  MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
+
+  TInt aNbMeshes = aMed->GetNbMeshes();
+  TMeshMap& aMeshMap = myMeshMap;
+
+  INITMSG(MYDEBUG,"BuildFields - aNbMeshes = "<<aNbMeshes<<"\n");
+
+  for(TInt iMesh = 1; iMesh <= aNbMeshes; iMesh++){
+#ifndef _DEXCEPT_
+    try{
+#endif
+      TTimerLog aTimerLog(MYDEBUG,"GetPMeshInfo");
+
+      MED::PMeshInfo aMeshInfo = aMed->GetPMeshInfo(iMesh);
+      std::string aMeshName = aMeshInfo->GetName();
+      
+      TMeshMap::const_iterator anIter = aMeshMap.find(aMeshName);
+      if(anIter == aMeshMap.end())
+       continue;
+      PMEDMesh aMesh = anIter->second;
+
+      INITMSG(MYDEBUG,"aMeshName = '"<<aMeshName<<"'\n");
+#ifndef _DEXCEPT_
+      try{
+#endif
+       MED::TEntityInfo anEntityInfo = aMed->GetEntityInfo(aMeshInfo);
+
+       BuildFieldMap(aMesh,
+                     anEntityInfo,
+                     aMed);
+#ifndef _DEXCEPT_
+      }catch(std::exception& exc){
+       MSG(MYDEBUG,"Follow exception was occured in:\n"<<exc.what());
+      }catch(...){
+       MSG(MYDEBUG,"Unknown exception !!!");
+      }
+#endif
+
+#ifndef _DEXCEPT_
+    }catch(std::exception& exc){
+      MSG(MYDEBUG,"Follow exception was occured in:\n"<<exc.what());
+    }catch(...){
+      MSG(MYDEBUG,"Unknown exception !!!");
+    }
+#endif
+  } 
+
+  return this; 
+}
+
+
+//---------------------------------------------------------------
+VISU_Convertor* 
+VISU_MedConvertor
+::BuildMinMax()
+{
+  if(myIsMinMaxDone)
+    return this;
+
+  TSetIsDone aSetIsDone(myIsMinMaxDone);
+  TTimerLog aTimerLog(MYDEBUG,"BuildMinMax");
+  MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
+
+  MED::TKey2Gauss aKey2Gauss = MED::GetKey2Gauss(aMed);
+  MED::TMKey2Profile aMKey2Profile = MED::GetMKey2Profile(aMed);
+
+  TInt aNbMeshes = aMed->GetNbMeshes();
+  TMeshMap& aMeshMap = myMeshMap;
+
+  INITMSG(MYDEBUG,"BuildMinMax - aNbMeshes = "<<aNbMeshes<<"\n");
+
+  for(TInt iMesh = 1; iMesh <= aNbMeshes; iMesh++){
+#ifndef _DEXCEPT_
+    try{
+#endif
+      TTimerLog aTimerLog(MYDEBUG,"BuildMinMax - GetPMeshInfo");
+
+      MED::PMeshInfo aMeshInfo = aMed->GetPMeshInfo(iMesh);
+      std::string aMeshName = aMeshInfo->GetName();
+      
+      TMeshMap::const_iterator anIter = aMeshMap.find(aMeshName);
+      if(anIter == aMeshMap.end())
+       continue;
+      PMEDMesh aMesh = anIter->second;
+
+#ifndef _DEXCEPT_
+      try{
+#endif
+       TInt aNbFields = aMed->GetNbFields(); 
+
+       INITMSG(MYDEBUG,
+               "- aMeshName = '"<<aMeshName<<"'"<<
+               "; aNbFields = "<<aNbFields<<"\n");
+
+       MED::TEntityInfo anEntityInfo = aMed->GetEntityInfo(aMeshInfo);
+
+       for(TInt iField = 1; iField <= aNbFields; iField++){
+         TTimerLog aTimerLog(MYDEBUG,"BuildMinMax - GetPFieldInfo()");
+         MED::PFieldInfo aFieldInfo = aMed->GetPFieldInfo(aMeshInfo,iField);
+         std::string aFieldName = aFieldInfo->GetName();
+         INITMSG(MYDEBUG,"- aFieldName = '"<<aFieldName<<"'\n");
+         
+         MED::TGeom2Size aGeom2Size;
+         MED::EEntiteMaillage aMEntity;
+         TInt aNbTimeStamps = aMed->GetNbTimeStamps(aFieldInfo,
+                                                    anEntityInfo,
+                                                    aMEntity,
+                                                    aGeom2Size);
+         if(aNbTimeStamps < 1)
+           continue;
+       
+         TEntity aVEntity = MEDEntityToVTK(aMEntity);
+         PMEDMeshOnEntity aMeshOnEntity = aMesh->myMeshOnEntityMap[aVEntity];
+         TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
+         PMEDField aField = aFieldMap[aFieldName];
+       
+         TInt aNbComp = aField->myNbComp;
+         int aNbComp2 = aNbComp;
+         if(aNbComp == 2 || aNbComp == 4)
+           aNbComp2 = 2;
+         else if(aNbComp > 4)
+           aNbComp2 = 3;
+
+         TMinMaxArr& aMinMaxArr = aField->myMinMaxArr;
+         TSetIsDone aSetIsDone(aField->myIsMinMaxInitilized);
+         for(TInt iTimeStamp = aNbTimeStamps; iTimeStamp >= 1; iTimeStamp--){
+           TTimerLog aTimerLog(MYDEBUG,"BuildMinMax - GetPTimeStampInfo()");
+           INITMSG(MYDEBUG,"- iTimeStamp = "<<iTimeStamp<<endl);
+           
+#ifndef _DEXCEPT_
+           try{
+#endif
+             MED::PTimeStampInfo aTimeStampInfo = aMed->GetPTimeStampInfo(aFieldInfo,
+                                                                          aMEntity,
+                                                                          aGeom2Size,
+                                                                          iTimeStamp);
+             
+             MED::PTimeStampVal aTimeStampVal = aMed->GetPTimeStampVal(aTimeStampInfo,
+                                                                       aMKey2Profile,
+                                                                       aKey2Gauss);
+             
+             const MED::TGeom2Gauss& aGeom2Gauss = aTimeStampInfo->GetGeom2Gauss();
+             
+             const MED::TTimeStampVal& aTimeStampValRef = aTimeStampVal;
+             
+             const MED::TGeom2Value& aGeom2Value = aTimeStampValRef.myGeom2Value;
+             MED::TGeom2Value::const_iterator anIter = aGeom2Value.begin();
+             for(; anIter != aGeom2Value.end(); anIter++){
+               const MED::TMeshValue& aMMeshValue = anIter->second;
+               MED::EGeometrieElement aMGeom = anIter->first;
+               
+               TInt aNbElem = aMMeshValue.myNbElem;
+               TInt aNbGauss = aMMeshValue.myNbGauss;
+               
+               MED::TGeom2Gauss::const_iterator aGaussIter = aGeom2Gauss.find(aMGeom);
+               if(aGaussIter == aGeom2Gauss.end())
+                 aNbGauss = 1;
+               
+               INITMSG(MYDEBUG,
+                       "- aMGeom = "<<aMGeom<<
+                       "; aNbElem = "<<aNbElem<<
+                       "; aNbGauss = "<<aNbGauss<<
+                       endl);
+               
+               // To calculate min/max per components
+               for(TInt iElem = 0; iElem < aNbElem; iElem++){
+                 MED::TCValueSliceArr aMValueSliceArr = aMMeshValue.GetCompValueSliceArr(iElem);
+                 for(TInt iComp = 0; iComp < aNbComp; iComp++){
+                   const MED::TCValueSlice& aMValueSlice = aMValueSliceArr[iComp];
+                   TMinMax& aMinMax = aMinMaxArr[iComp+1];
+                   float& aMin = aMinMax.first;
+                   float& aMax = aMinMax.second;
+                   for(TInt iGauss = 0; iGauss < aNbGauss; iGauss++){
+                     const float& aVal = aMValueSlice[iGauss];
+                     aMin = min(aMin,aVal);
+                     aMax = max(aMax,aVal);
+                   }
+                 }
+               }
+               
+               // To calculate min/max per vector modulus
+               TMinMax& aMinMax = aMinMaxArr[0];
+               float& aMin = aMinMax.first;
+               float& aMax = aMinMax.second;
+               for(TInt iElem = 0; iElem < aNbElem; iElem++){
+                 MED::TCValueSliceArr aMValueSliceArr = aMMeshValue.GetGaussValueSliceArr(iElem);
+                 for(TInt iGauss = 0; iGauss < aNbGauss; iGauss++){
+                   const MED::TCValueSlice& aMValueSlice = aMValueSliceArr[iGauss];
+                   float aValue = 0.0;
+                   for(TInt iComp = 0; iComp < aNbComp2; iComp++){
+                     float aVal = aMValueSlice[iComp];
+                     aValue += aVal*aVal;
+                   }
+                   aValue = sqrt(aValue);
+                   aMin = min(aMin,aValue);
+                   aMax = max(aMax,aValue);
+                 }
+               }
+             }
+#ifndef _DEXCEPT_
+           }catch(std::exception& exc){
+             MSG(MYDEBUG,"Follow exception was occured in:\n"<<exc.what());
+           }catch(...){
+             MSG(MYDEBUG,"Unknown exception !!!");
+           }
+#endif
+         }
+         for(TInt iComp = 0; iComp <= aNbComp; iComp++){
+           VISU::TMinMax aMinMax = aField->GetMinMax(iComp);
+           INITMSG(MYDEBUG,"- "<<iComp<<": "<<aMinMax.first<<"; "<<aMinMax.second<<endl);
+         }
+       }
+#ifndef _DEXCEPT_
+      }catch(std::exception& exc){
+       MSG(MYDEBUG,"Follow exception was occured in:\n"<<exc.what());
+      }catch(...){
+       MSG(MYDEBUG,"Unknown exception !!!");
+      }
+#endif
+
+#ifndef _DEXCEPT_
+    }catch(std::exception& exc){
+      MSG(MYDEBUG,"Follow exception was occured in:\n"<<exc.what());
+    }catch(...){
+      MSG(MYDEBUG,"Unknown exception !!!");
+    }
+#endif
+  }
+
+  return this; 
+}
+
+
+//---------------------------------------------------------------
+VISU_Convertor* 
+VISU_MedConvertor
+::BuildGroups()
+{
+  if(myIsGroupsDone)
+    return this;
+
+  TSetIsDone aSetIsDone(myIsGroupsDone);
+  TTimerLog aTimerLog(MYDEBUG,"BuildGroups");
+  MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
+
+  TInt aNbMeshes = aMed->GetNbMeshes();
+  TMeshMap& aMeshMap = myMeshMap;
+
+  INITMSG(MYDEBUG,"BuildGroups - aNbMeshes = "<<aNbMeshes<<"\n");
+
+  for(TInt iMesh = 1; iMesh <= aNbMeshes; iMesh++){
+#ifndef _DEXCEPT_
+    try{
+#endif
+      TTimerLog aTimerLog(MYDEBUG,"GetPMeshInfo");
+
+      MED::PMeshInfo aMeshInfo = aMed->GetPMeshInfo(iMesh);
+      std::string aMeshName = aMeshInfo->GetName();      
+
+      TMeshMap::const_iterator anIter = aMeshMap.find(aMeshName);
+      if(anIter == aMeshMap.end())
+       continue;
+      PMEDMesh aMesh = anIter->second;
+
+      INITMSG(MYDEBUG,"aMeshName = '"<<aMeshName<<"'\n");
+
+      MED::TEntityInfo anEntityInfo = aMed->GetEntityInfo(aMeshInfo);
+      
+      MED::TEntity2TGeom2ElemInfo anEntity2TGeom2ElemInfo = 
+       MED::GetEntity2TGeom2ElemInfo(aMed,aMeshInfo,anEntityInfo);
+      
+#ifndef _DEXCEPT_
+      try{
+#endif
+       MED::TFamilyInfoSet aFamilyInfoSet = MED::GetFamilyInfoSet(aMed,aMeshInfo);
+       
+       BuildFamilyMap(aMesh,
+                      anEntityInfo,
+                      anEntity2TGeom2ElemInfo,
+                      aFamilyInfoSet,
+                      aMed);
+       
+       BuildGroupMap(aMesh,
+                     aFamilyInfoSet);
+#ifndef _DEXCEPT_
+      }catch(std::exception& exc){
+       MSG(MYDEBUG,"Follow exception was occured in:\n"<<exc.what());
+      }catch(...){
+       MSG(MYDEBUG,"Unknown exception !!!");
+      }
+#endif
+
+#ifndef _DEXCEPT_
+    }catch(std::exception& exc){
+      MSG(MYDEBUG,"Follow exception was occured in:\n"<<exc.what());
+    }catch(...){
+      MSG(MYDEBUG,"Unknown exception !!!");
+    }
+#endif
+  } 
+
+  return this; 
+}
+
+
+//---------------------------------------------------------------
+int
+VISU_MedConvertor
+::LoadMeshOnEntity(VISU::PMeshImpl theMesh,
+                  VISU::PMeshOnEntityImpl theMeshOnEntity)
+{
+  TTimerLog aTimerLog(MYDEBUG,"LoadMeshOnEntity");
+  INITMSG(MYDEBUG,"LoadMeshOnEntity"<<endl);
+
+  MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
+  const TEntity& anEntity = theMeshOnEntity->myEntity;
+
+  int isPointsUpdated = 0, isCellsOnEntityUpdated = 0;
+  if(anEntity == NODE_ENTITY){
+    isPointsUpdated += LoadPoints(aMed,theMesh);
+  }else{
+    isPointsUpdated += LoadPoints(aMed,theMesh);
+    isCellsOnEntityUpdated += LoadCellsOnEntity(aMed,theMesh,theMeshOnEntity);
+  }
+
+  return (isPointsUpdated || isCellsOnEntityUpdated);
+}
+
+
+//---------------------------------------------------------------
+int
+VISU_MedConvertor
+::LoadFamilyOnEntity(VISU::PMeshImpl theMesh,
+                    VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                    VISU::PFamilyImpl theFamily)
+{
+  TTimerLog aTimerLog(MYDEBUG,"LoadFamilyOnEntity");
+  INITMSG(MYDEBUG,"LoadFamilyOnEntity"<<endl);
+
+  MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
+  const TEntity& anEntity = theMeshOnEntity->myEntity;
+
+  int isPointsUpdated = 0, isCellsOnEntityUpdated = 0;
+  if(anEntity == NODE_ENTITY){
+    isPointsUpdated += LoadPointsOnFamily(aMed,theMesh,theFamily);
+  }else{
+    isPointsUpdated += LoadPoints(aMed,theMesh);
+    isCellsOnEntityUpdated += LoadCellsOnFamily(aMed,theMesh,theMeshOnEntity,theFamily);
+  }
+
+  return (isPointsUpdated || isCellsOnEntityUpdated);
+}
+
+
+//---------------------------------------------------------------
+int
+VISU_MedConvertor
+::LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
+                 const VISU::TFamilySet& theFamilySet)
+{
+  TTimerLog aTimerLog(MYDEBUG,"LoadMeshOnGroup");
+  INITMSG(MYDEBUG,"LoadMeshOnGroup"<<endl);
+
+  MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
+  int isPointsUpdated = 0, isCellsOnEntityUpdated = 0;
+  TFamilySet::const_iterator aFamilyIter = theFamilySet.begin();
+  for(; aFamilyIter != theFamilySet.end(); aFamilyIter++){
+    PMEDFamily aFamily = *aFamilyIter;
+    const TEntity& anEntity = aFamily->myEntity;
+    const PMEDMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[anEntity];
+    if(anEntity == NODE_ENTITY){
+      isPointsUpdated += LoadPointsOnFamily(aMed,theMesh,aFamily);
+    }else{
+      isPointsUpdated += LoadPoints(aMed,theMesh);
+      isCellsOnEntityUpdated += LoadCellsOnFamily(aMed,theMesh,aMeshOnEntity,aFamily);
+    }
+  }
+
+  return (isPointsUpdated || isCellsOnEntityUpdated);
+}
+
+
+//---------------------------------------------------------------
+int
+VISU_MedConvertor
+::LoadValForTimeOnMesh(VISU::PMeshImpl theMesh, 
+                      VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                      VISU::PFieldImpl theField, 
+                      VISU::PValForTimeImpl theValForTime)
+{
+  TTimerLog aTimerLog(MYDEBUG,"LoadValForTimeOnMesh");
+  INITMSG(MYDEBUG,"LoadValForTimeOnMesh"<<endl);
+
+  MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
+
+  const TEntity& anEntity = theMeshOnEntity->myEntity;
+  int isPointsUpdated = 0, isCellsOnEntityUpdated = 0;
+  isPointsUpdated += LoadPoints(aMed,theMesh);
+  if(anEntity != NODE_ENTITY)
+    isCellsOnEntityUpdated += LoadCellsOnEntity(aMed,theMesh,theMeshOnEntity);
+  int isFieldUpdated = LoadValForTimeOnMesh(aMed,theMesh,theMeshOnEntity,theField,theValForTime);
+  
+  return (isPointsUpdated || isCellsOnEntityUpdated || isFieldUpdated);
+}
+
+
+//---------------------------------------------------------------
+int
+VISU_MedConvertor
+::LoadValForTimeOnGaussPts(VISU::PMeshImpl theMesh, 
+                          VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                          VISU::PFieldImpl theField, 
+                          VISU::PValForTimeImpl theValForTime)
+{
+  TTimerLog aTimerLog(MYDEBUG,"LoadValForTimeOnGaussPts");
+  INITMSG(MYDEBUG,"LoadValForTimeOnGaussPts"<<endl);
+
+  MED::PWrapper aMed = MED::CrWrapper(myFileInfo.absFilePath().latin1());
+
+  const TEntity& anEntity = theMeshOnEntity->myEntity;
+  int isPointsUpdated = 0, isCellsOnEntityUpdated = 0;
+  if(anEntity != NODE_ENTITY)
+    isCellsOnEntityUpdated += LoadCellsOnEntity(aMed,theMesh,theMeshOnEntity);
+  int isFieldUpdated = LoadValForTimeOnGaussPts(aMed,theMesh,theMeshOnEntity,theField,theValForTime);
+  
+  return (isPointsUpdated || isCellsOnEntityUpdated || isFieldUpdated);
+}
+
+
+//---------------------------------------------------------------
+int 
+VISU_MedConvertor
+::LoadPoints(const MED::PWrapper& theMed,
+            VISU::PMEDMesh theMesh) 
+{
+  TTimerLog aTimerLog(MYDEBUG,"LoadPoints");
+  try{
+    //Check on existing family
+    PMEDMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[VISU::NODE_ENTITY];
     aMeshOnEntity->myMeshName = theMesh->myName;
-    PFamilyImpl aFamily = GetFamily(aMeshOnEntity,theFamilyName);
-    //Check on loading already done
-    bool isPointsLoaded = !theMesh->myPointsCoord.empty();
-    if(isPointsLoaded) 
-      if(!aFamily) 
-       return 0;
-      else if(!aFamily->mySubMesh.empty()) 
-       return 0;
+    aMeshOnEntity->myEntity = NODE_ENTITY;
 
-    INITMSG(MYDEBUG,"LoadPoints - isPointsLoaded = "<<isPointsLoaded<<"; theFamilyName = '"<<theFamilyName<<"'\n");
+    INITMSG(MYDEBUG,"LoadPoints - theMesh->myIsDone = "<<theMesh->myIsDone<<"'\n");
+
+    //Check on loading already done
+    if(theMesh->myIsDone)
+      return 0;
 
     //Main part of code
-    PNodeInfo aNodeInfo = theMed->GetPNodeInfo(theMesh->myMeshInfo);
+    MED::PNodeInfo aNodeInfo = theMed->GetPNodeInfo(theMesh->myMeshInfo);
     TInt aNbElem = aNodeInfo->GetNbElem();
+    TInt aDim = theMesh->myDim;
 
-    if(!isPointsLoaded){
-      VISU::TMeshImpl::TPointsDim&  aPointsDim = theMesh->myPointsDim;
-      aPointsDim.resize(theMesh->myDim);
-      for(int iDim = 0; iDim < theMesh->myDim; iDim++)
-       aPointsDim[iDim] = aNodeInfo->GetCoordName(iDim);
-      
-      VISU::TMeshImpl::TPointsCoord& aPointsCoord = theMesh->myPointsCoord;
-      aPointsCoord.resize(aNbElem*theMesh->myDim);
-      for (int iElem = 0; iElem < aNbElem; iElem++) 
-       for(int iDim = 0, iElem2Dim = iElem*theMesh->myDim; iDim < theMesh->myDim; iDim++, iElem2Dim++)
-         aPointsCoord[iElem2Dim] = aNodeInfo->GetNodeCoord(iElem,iDim);
-      
-      VISU::TMeshOnEntityImpl::TConnForCellType& aConnForCellType = aMeshOnEntity->myCellsConn[VTK_VERTEX];
-      aConnForCellType.resize(aNbElem);
-      for (int iElem = 0; iElem < aNbElem; iElem++)
-       aConnForCellType[iElem] = VISU::TMeshOnEntityImpl::TConnect(1,iElem);
+    PMEDNamedPointCoords aNamedPointCoords = theMesh->myNamedPointCoords;
+    TMEDNamedPointCoords& aCoords = aNamedPointCoords;
+    aCoords.Init(aNbElem,aDim,aNodeInfo);
+    
+    for(int iDim = 0; iDim < aDim; iDim++)
+      aCoords.GetName(iDim) = aNodeInfo->GetCoordName(iDim);
+    
+    for(int iElem = 0; iElem < aNbElem; iElem++){
+      TCoordSlice aVCoordSlice = aCoords.GetCoordSlice(iElem);
+      MED::TCCoordSlice aMCoordSlice = aNodeInfo->GetCoordSlice(iElem);
+      for(int iDim = 0; iDim < aDim; iDim++)
+       aVCoordSlice[iDim] = aMCoordSlice[iDim];
     }
-    if(aFamily && aNbElem > 0){
-      VISU::TFamilyImpl::TSubMeshOnCellType& aSubMeshOnCellType = aFamily->mySubMesh[VTK_VERTEX];
-      for (int iElem = 0; iElem < aNbElem; iElem++) 
-       if(aNodeInfo->GetFamNum(iElem) == aFamily->myId)
-         aSubMeshOnCellType.insert(iElem);
+    
+    TGeom2SubMesh& aGeom2SubMesh = aMeshOnEntity->myGeom2SubMesh;
+    PMEDSubMesh aSubMesh = aGeom2SubMesh[VISU::ePOINT1](new TMEDSubMesh());
+
+    aSubMesh->Init(aNodeInfo); 
+    aSubMesh->myNbCells = theMesh->myNbPoints;
+    aSubMesh->myCellsSize = 2*theMesh->myNbPoints;
+
+    TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+    aCell2Connect.resize(aNbElem);
+    for (int iElem = 0; iElem < aNbElem; iElem++)
+      aCell2Connect[iElem] = VISU::TConnect(1,iElem);
+    
+    theMesh->myIsDone = true;
+    
+    return 1;
+
+  }catch(std::exception& exc){
+    throw;
+  }catch(...){
+    EXCEPTION(runtime_error,"Unknown exception !!!");
+  }
+
+  return 0;
+}
+
+
+//---------------------------------------------------------------
+int 
+VISU_MedConvertor
+::LoadPointsOnFamily(const MED::PWrapper& theMed,
+                    const VISU::PMEDMesh theMesh, 
+                    const VISU::PMEDFamily theFamily) 
+{
+  TTimerLog aTimerLog(MYDEBUG,"LoadPointsOnFamily");
+  try{
+    if(theFamily->myIsDone) 
+      return 0;
+
+    //Main part of code
+    MED::PNodeInfo aNodeInfo = theMed->GetPNodeInfo(theMesh->myMeshInfo);
+    TInt aNbElem = aNodeInfo->GetNbElem();
+
+    if(aNbElem > 0){
+      TInt anId = theFamily->myId;
+      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[VISU::ePOINT1];
+      for(TInt iElem = 0; iElem < aNbElem; iElem++) 
+       if(aNodeInfo->GetFamNum(iElem) == anId)
+         aSubMeshID.push_back(iElem);
     }
+
+    theFamily->myIsDone = true;
+
     return 1;
-  }catch(std::runtime_error& exc){
-    theMesh->myPointsCoord.clear();
+
+  }catch(std::exception& exc){
     throw;
   }catch(...){
-    theMesh->myPointsCoord.clear();
     EXCEPTION(runtime_error,"Unknown exception !!!");
   }
+
   return 0;
 }
 
 
+//---------------------------------------------------------------
 int 
-VISU_MedConvertor::LoadCellsOnEntity(const MED::PWrapper& theMed, 
-                                    VISU::PMEDMesh theMesh,
-                                    VISU::PMEDMeshOnEntity theMeshOnEntity,
-                                    const string& theFamilyName)
+VISU_MedConvertor
+::LoadCellsOnEntity(const MED::PWrapper& theMed,
+                   const VISU::PMEDMesh theMesh,
+                   const VISU::PMEDMeshOnEntity theMeshOnEntity)
 {
+  TTimerLog aTimerLog(MYDEBUG,"LoadCellsOnEntity");
+#ifndef _DEXCEPT_
   try{
-    //Check on existing family
-    PFamilyImpl aFamily = GetFamily(theMeshOnEntity,theFamilyName);
-    //Check on loading already done
-    bool isCellsLoaded = !theMeshOnEntity->myCellsConn.empty();
-    if(isCellsLoaded)
-      if(!aFamily) 
-       return 0;
-      else if(!aFamily->mySubMesh.empty()) 
-       return 0;
+#endif
+    const TEntity& aVEntity = theMeshOnEntity->myEntity;
+    const MED::EEntiteMaillage& aMEntity = VTKEntityToMED(aVEntity);
 
-    INITMSG(MYDEBUG,"LoadCellsOnEntity - theFamilyName = '"<<theFamilyName<<"'\n");
-    BEGMSG(MYDEBUG,"LoadCellsOnEntity - isCellsLoaded = "<<isCellsLoaded<<"; isFamilyPresent = "<<bool(aFamily)<<endl);
+    INITMSG(MYDEBUG,"LoadCellsOnEntity - aVEntity = "<<aVEntity<<"\n");
 
-    const VISU::TEntity& aVEntity = theMeshOnEntity->myEntity;
-    const EEntiteMaillage& aMEntity = VTKEntityToMED(aVEntity);
+    if(theMeshOnEntity->myIsDone)
+      return 0;
 
-    const PMeshInfo& aMeshInfo = theMesh->myMeshInfo;
-    PNodeInfo aNodeInfo = theMed->GetPNodeInfo(aMeshInfo);
+    const MED::PMeshInfo& aMeshInfo = theMesh->myMeshInfo;
+    MED::PNodeInfo aNodeInfo = theMed->GetPNodeInfo(aMeshInfo);
     TInt aNbPoints = aNodeInfo->GetNbElem();
 
     std::map<TInt,TInt> aNodeIdMap;
 #ifdef _EDF_NODE_IDS_
-    EBooleen anIsNodeNum = eFAUX;
+    EBooleen anIsNodeNum = MED::eFAUX;
 #else
     EBooleen anIsNodeNum = aNodeInfo->IsElemNum();
     if(anIsNodeNum){
@@ -640,235 +1624,715 @@ VISU_MedConvertor::LoadCellsOnEntity(const MED::PWrapper& theMed,
     }
 #endif
 
-    const MED::TGeom& aTGeom = theMeshOnEntity->myGeom;
-    MED::TGeom::const_iterator anTGeomIter = aTGeom.begin();
-    TMeshOnEntityImpl::TCellsConn& aCellsConn = theMeshOnEntity->myCellsConn;
-
-    for(; anTGeomIter != aTGeom.end(); anTGeomIter++){
-      const EGeometrieElement& aGeom = anTGeomIter->first;
-      int aVTKGeomType = MEDGeomToVTK(aGeom);
-      ADDMSG(MYDEBUG,"LoadCellsOnEntity aGeom="<<aGeom<<"\n");
-      switch(aGeom){
-      case ePOLYGONE:
-       {
-         PPolygoneInfo aPolygoneInfo = theMed->GetPPolygoneInfo(aMeshInfo,aMEntity,aGeom);
-         TInt aNbElem = aPolygoneInfo->GetNbElem();
+    const MED::TGeom2Size& aGeom2Size = theMeshOnEntity->myGeom2Size;
+    MED::TGeom2Size::const_iterator aGeom2SizeIter = aGeom2Size.begin();
+    TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
+
+    for(; aGeom2SizeIter != aGeom2Size.end(); aGeom2SizeIter++){
+      const MED::EGeometrieElement& aMGeom = aGeom2SizeIter->first;
+      VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+      INITMSG(MYDEBUG,"aMGeom = "<<aMGeom<<"; aEGeom = "<<aEGeom<<"\n");
+      switch(aMGeom){
+      case MED::ePOLYGONE: {
+       MED::PPolygoneInfo aPolygoneInfo = theMed->GetPPolygoneInfo(aMeshInfo,aMEntity,aMGeom);
+       TInt aNbElem = aPolygoneInfo->GetNbElem();
+       if(aNbElem > 0){
+         PMEDSubMesh aSubMesh = aGeom2SubMesh[aEGeom](new TMEDSubMesh());
          
-         if(!isCellsLoaded){
-           VISU::TMeshOnEntityImpl::TConnForCellType& aConnForPolygoneType = aCellsConn[aVTKGeomType];
-           aConnForPolygoneType.resize(aNbElem);
-           
-           int aMNbNodes = aPolygoneInfo->GetConnDim();
-           
-           vector<TInt> aConnect(aMNbNodes);
-           vector<TInt> aIndex = aPolygoneInfo->GetIndex();
+         aSubMesh->Init(aPolygoneInfo); 
+         aSubMesh->myNbCells = aNbElem;      
 
-           for (int iElem = 0; iElem < aNbElem; iElem++) {
-             VISU::TMeshOnEntityImpl::TConnect& anArray = aConnForPolygoneType[iElem];
-             int aNbConn = aPolygoneInfo->GetNbConn(iElem);
-
-             anArray.resize(aNbConn);
-             
-             aConnect = aPolygoneInfo->GetConnectivite();
-             
-             for (int i=0;i<aNbConn;i++){
-               anArray[i] = aConnect[aIndex[iElem]-1+i]-1;
-             }
-           }
-         }
-         if(aFamily){
-           VISU::TFamilyImpl::TSubMeshOnCellType& aSubMeshOnCellType = aFamily->mySubMesh[aVTKGeomType];
-           for(int iElem = 0; iElem < aNbElem; iElem++) 
-             if(aPolygoneInfo->GetFamNum(iElem) == aFamily->myId)
-               aSubMeshOnCellType.insert(iElem);
+         TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+         aCell2Connect.resize(aNbElem);
+         
+         for(TInt iElem = 0; iElem < aNbElem; iElem++) {
+           MED::TCConnSlice aConnSlice = aPolygoneInfo->GetConnSlice(iElem);
+           TInt aNbConn = aPolygoneInfo->GetNbConn(iElem);
+           aSubMesh->myCellsSize += aNbConn;
+           TConnect& anArray = aCell2Connect[iElem];
+           anArray.resize(aNbConn);
+           for(TInt iConn = 0; iConn < aNbConn; iConn++)
+             anArray[iConn] = aConnSlice[iConn] - 1;
          }
-         break;
        }
-      case ePOLYEDRE:
-       {
-         PPolyedreInfo aPolyedreInfo = theMed->GetPPolyedreInfo(aMeshInfo,aMEntity,aGeom);
-         TInt aNbElem = aPolyedreInfo->GetNbElem();
-
-         int aMNbNodes = aPolyedreInfo->GetNbConn();
-         vector<TInt> aConnect(aMNbNodes);
-         aConnect = aPolyedreInfo->GetConnectivite();
+       break;
+      }
+      case MED::ePOLYEDRE: {
+       MED::PPolyedreInfo aPolyedreInfo = theMed->GetPPolyedreInfo(aMeshInfo,aMEntity,aMGeom);
+       TInt aNbElem = aPolyedreInfo->GetNbElem();
+       
+       if(aNbElem > 0){
+         PMEDSubMesh aSubMesh = aGeom2SubMesh[aEGeom](new TMEDSubMesh());
          
-         if(!isCellsLoaded){
-           VISU::TMeshOnEntityImpl::TConnForCellType& aConnForPolyedreType = aCellsConn[aVTKGeomType];
-           aConnForPolyedreType.resize(aNbElem);
-           
-           vector<TInt> aFacesIndex = aPolyedreInfo->GetFacesIndex();
-           vector<TInt> aIndex = aPolyedreInfo->GetIndex();
-
-           for (int iElem = 0; iElem < aNbElem; iElem++) {
-             set<TInt> aArrayNew;
-             VISU::TMeshOnEntityImpl::TConnect& anArray = aConnForPolyedreType[iElem];
-             
-             int aInd1 = aIndex[iElem]-1;  
-             int aInd2 = aIndex[iElem+1]-2;
-             
-             for (int i=aInd1;i<=aInd2;i++){
-               for (int j=aFacesIndex[i]-1;j<aFacesIndex[i+1]-1;j++){
-                 aArrayNew.insert(aConnect[j]);
-               }
-             }
-
-             int aNbConnNew = aArrayNew.size();
-             anArray.resize(aNbConnNew);
-             set<TInt>::iterator aIter = aArrayNew.begin();
-             for (int i=0; aIter!=aArrayNew.end();aIter++, i++)
-               anArray[i] = (*aIter)-1;
+         aSubMesh->Init(aPolyedreInfo); 
+         aSubMesh->myNbCells = aNbElem;      
 
+         TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+         aCell2Connect.resize(aNbElem);
+         
+         for(TInt iElem = 0; iElem < aNbElem; iElem++){
+           MED::TCConnSliceArr aConnSliceArr = aPolyedreInfo->GetConnSliceArr(iElem);
+           TConnect& anArray = aCell2Connect[iElem];
+           typedef std::set<TInt> TConnectSet;
+           TConnectSet aConnectSet;
+           TInt aNbFaces = aConnSliceArr.size();
+           for(TInt iFace = 0; iFace < aNbFaces; iFace++){
+             MED::TCConnSlice aConnSlice = aConnSliceArr[iFace];
+             TInt aNbConn = aConnSlice.size();
+             aSubMesh->myCellsSize += aNbConn;
+             for(TInt iConn = 0; iConn < aNbConn; iConn++){
+               aConnectSet.insert(aConnSlice[iConn]);
+             }
+           }
+         
+           int aNbConn = aConnectSet.size();
+           anArray.resize(aNbConn);
+           TConnectSet::iterator anIter = aConnectSet.begin();
+           for(int i = 0; anIter != aConnectSet.end(); anIter++, i++){
+             TInt anId = *anIter;
+             anArray[i] = anId - 1;
            }
          }
-         if(aFamily){
-           VISU::TFamilyImpl::TSubMeshOnCellType& aSubMeshOnCellType = aFamily->mySubMesh[aVTKGeomType];
-           for(int iElem = 0; iElem < aNbElem; iElem++) 
-             if(aPolyedreInfo->GetFamNum(iElem) == aFamily->myId)
-               aSubMeshOnCellType.insert(iElem);
-         }
-         break;
        }
-      default:
-       {
-         int aVNbNodes = VTKGeom2NbNodes(aVTKGeomType);
-         
-         PCellInfo aCellInfo = theMed->GetPCellInfo(aMeshInfo,aMEntity,aGeom);
-         TInt aNbElem = aCellInfo->GetNbElem();
+
+       break;
+      }
+      default: {
+       vtkIdType aVNbNodes = VISUGeom2NbNodes(aEGeom);
+       INITMSG(MYDEBUG,"aVNbNodes = "<<aVNbNodes<<"\n");
+       
+       MED::PCellInfo aCellInfo = theMed->GetPCellInfo(aMeshInfo,aMEntity,aMGeom);
+       TInt aNbElem = aCellInfo->GetNbElem();
+       
+       if(aNbElem > 0){
+         PMEDSubMesh aSubMesh = aGeom2SubMesh[aEGeom](new TMEDSubMesh());
          
-         if(!isCellsLoaded){
-           VISU::TMeshOnEntityImpl::TConnForCellType& aConnForCellType = aCellsConn[aVTKGeomType];
-           aConnForCellType.resize(aNbElem);
+         aSubMesh->Init(aCellInfo); 
+         aSubMesh->myNbCells = aNbElem;      
+         aSubMesh->myCellsSize = aNbElem*(aVNbNodes+1);
+
+         TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+         aCell2Connect.resize(aNbElem);
+       
+         TInt aMNbNodes = MEDGeom2NbNodes(aMGeom);
+         TVector<TInt> aConnect(aMNbNodes);
+       
+         for(TInt iElem = 0; iElem < aNbElem; iElem++) {
+           MED::TCConnSlice aConnSlice = aCellInfo->GetConnSlice(iElem);
+           TConnect& anArray = aCell2Connect[iElem];
+           anArray.resize(aVNbNodes);
            
-           int aMNbNodes = MEDGeom2NbNodes(aGeom);
-           vector<TInt> aConnect(aMNbNodes);
-         
-           for (int iElem = 0; iElem < aNbElem; iElem++) {
-             VISU::TMeshOnEntityImpl::TConnect& anArray = aConnForCellType[iElem];
-             anArray.resize(aVNbNodes);
-             
-             if(anIsNodeNum){
-               for(int i = 0; i < aMNbNodes; i++){
-                 aConnect[i] = aNodeIdMap[aCellInfo->GetConn(iElem,i)-1];
-               }
-             }else{
-               for(int i = 0; i < aMNbNodes; i++){
-                 aConnect[i] = aCellInfo->GetConn(iElem,i)-1;
-               }
+           if(anIsNodeNum){
+             for(TInt iConn = 0; iConn < aMNbNodes; iConn++){
+               aConnect[iConn] = aNodeIdMap[aConnSlice[iConn] - 1];
              }
-             
-             switch(aGeom){
-             case eTETRA4:
-             case eTETRA10:
-               anArray[0] = aConnect[0];
-               anArray[1] = aConnect[1];
-               anArray[2] = aConnect[3];  
-               anArray[3] = aConnect[2];  
-               break;
-             case ePYRA5:
-             case ePYRA13:
-               anArray[0] = aConnect[0];
-               anArray[1] = aConnect[3];  
-               anArray[2] = aConnect[2];
-               anArray[3] = aConnect[1];  
-               anArray[4] = aConnect[4];
-               break;
-             default:
-               for(int iNode = 0; iNode < aVNbNodes; iNode++) 
-                 anArray[iNode] = aConnect[iNode];
+           }else{
+             for(int iConn = 0; iConn < aMNbNodes; iConn++){
+               aConnect[iConn] = aConnSlice[iConn] - 1;
              }
+           }
+           
+           switch(aMGeom){
+#if !(defined(VTK_QUADRATIC_EDGE) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+           case MED::eSEG3:
+             anArray[0] = aConnect[0];
+             anArray[2] = aConnect[1];  
+
+             anArray[1] = aConnect[2];
+             break;
+#endif
+#if !(defined(VTK_QUADRATIC_TRIANGLE) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+           case MED::eTRIA6:
+             anArray[0] = aConnect[0];
+             anArray[2] = aConnect[1];  
+             anArray[4] = aConnect[2];  
+
+             anArray[1] = aConnect[3];
+             anArray[3] = aConnect[4];  
+             anArray[5] = aConnect[5];  
+             break;
+#endif
+#if !(defined(VTK_QUADRATIC_QUAD) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+           case MED::eQUAD8:
+             anArray[0] = aConnect[0];
+             anArray[2] = aConnect[1];  
+             anArray[4] = aConnect[2];  
+             anArray[6] = aConnect[3];  
+
+             anArray[1] = aConnect[4];
+             anArray[3] = aConnect[5];  
+             anArray[5] = aConnect[6];  
+             anArray[7] = aConnect[7];  
+             break;
+#endif
+#if (defined(VTK_QUADRATIC_TETRA) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+           case MED::eTETRA10:
+             anArray[0] = aConnect[0];
+             anArray[1] = aConnect[2];
+             anArray[2] = aConnect[1];  
+             anArray[3] = aConnect[3];  
+
+             anArray[4] = aConnect[6];
+             anArray[5] = aConnect[5];
+             anArray[6] = aConnect[4];  
+
+             anArray[7] = aConnect[7];  
+             anArray[8] = aConnect[9];  
+             anArray[9] = aConnect[8];  
+             break;
+#endif
+           case MED::eTETRA4:
+             anArray[0] = aConnect[0];
+             anArray[1] = aConnect[2];
+             anArray[2] = aConnect[1];  
+             anArray[3] = aConnect[3];  
+             break;
+#if (defined(VTK_QUADRATIC_PYRAMID) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+           case MED::ePYRA13:
+             anArray[0] = aConnect[0];
+             anArray[1] = aConnect[3];
+             anArray[2] = aConnect[2];  
+             anArray[3] = aConnect[1];  
+             anArray[4] = aConnect[4];
+
+             anArray[5] = aConnect[5];
+             anArray[6] = aConnect[8];  
+             anArray[7] = aConnect[7];  
+             anArray[8] = aConnect[6];  
+
+             anArray[9] = aConnect[9];  
+             anArray[10] = aConnect[12];  
+             anArray[11] = aConnect[11];  
+             anArray[12] = aConnect[10];  
+             break;
+#endif
+           case MED::ePYRA5:
+             anArray[0] = aConnect[0];
+             anArray[1] = aConnect[3];  
+             anArray[2] = aConnect[2];
+             anArray[3] = aConnect[1];  
+             anArray[4] = aConnect[4];
+             break;
+           default:
              for(int iNode = 0; iNode < aVNbNodes; iNode++) 
-               if(anArray[iNode] < 0 || aNbPoints <= anArray[iNode])
-                 EXCEPTION(runtime_error,"ImportCells >> aNbPoints("<<aNbPoints<<") "<<
-                           "<= anArray["<<iElem<<"]"<<
-                           "["<<iNode<<"]"<<
-                           "("<<anArray[iNode]<<") < 0");
+               anArray[iNode] = aConnect[iNode];
            }
+           for(int iNode = 0; iNode < aVNbNodes; iNode++) 
+             if(anArray[iNode] < 0 || aNbPoints <= anArray[iNode])
+               EXCEPTION(runtime_error,"LoadCellsOnEntity - "<<
+                         " aNbPoints("<<aNbPoints<<") "<<
+                         "<= anArray["<<iElem<<"]"<<
+                         "["<<iNode<<"]"<<
+                         "("<<anArray[iNode]<<") < 0");
          }
-         //Filling aFamily SubMesh
-         if(aFamily){
-           VISU::TFamilyImpl::TSubMeshOnCellType& aSubMeshOnCellType = aFamily->mySubMesh[aVTKGeomType];
-           for(int iElem = 0; iElem < aNbElem; iElem++) 
-             if(aCellInfo->GetFamNum(iElem) == aFamily->myId)
-               aSubMeshOnCellType.insert(iElem);
+       }
+      }}
+    }
+
+    theMeshOnEntity->myIsDone = true;
+
+    return 1;
+
+#ifndef _DEXCEPT_
+  }catch(std::exception& exc){
+    throw;
+  }catch(...){
+    EXCEPTION(runtime_error,"Unknown exception !!!");
+  }
+#endif
+
+  return 0;
+}
+
+
+//---------------------------------------------------------------
+int 
+VISU_MedConvertor
+::LoadCellsOnFamily(const MED::PWrapper& theMed,
+                   const VISU::PMEDMesh theMesh,
+                   const VISU::PMEDMeshOnEntity theMeshOnEntity,
+                   const VISU::PMEDFamily theFamily)
+{
+  TTimerLog aTimerLog(MYDEBUG,"LoadCellsOnFamily");
+#ifndef _DEXCEPT_
+  try{
+#endif
+    const TEntity& aVEntity = theMeshOnEntity->myEntity;
+    const MED::EEntiteMaillage& aMEntity = VTKEntityToMED(aVEntity);
+
+    INITMSG(MYDEBUG,"LoadCellsOnFamily - aVEntity = "<<aVEntity<<"\n");
+
+    if(theFamily->myIsDone)
+      return 0;
+
+    TInt anId = theFamily->myId;
+
+    const MED::PMeshInfo& aMeshInfo = theMesh->myMeshInfo;
+    TGeom2SubMeshID& aGeom2SubMeshID = theFamily->myGeom2SubMeshID;
+
+    const MED::TGeom2Size& aGeom2Size = theMeshOnEntity->myGeom2Size;
+    MED::TGeom2Size::const_iterator aGeom2SizeIter = aGeom2Size.begin();
+    for(; aGeom2SizeIter != aGeom2Size.end(); aGeom2SizeIter++){
+      const MED::EGeometrieElement& aMGeom = aGeom2SizeIter->first;
+      MED::PElemInfo anElemInfo;
+      switch(aMGeom){
+      case MED::ePOLYGONE: {
+       anElemInfo = theMed->GetPPolygoneInfo(aMeshInfo,aMEntity,aMGeom);
+       break;
+      }
+      case MED::ePOLYEDRE: {
+       anElemInfo = theMed->GetPPolyedreInfo(aMeshInfo,aMEntity,aMGeom);
+       break;
+      }
+      default: {
+       anElemInfo = theMed->GetPCellInfo(aMeshInfo,aMEntity,aMGeom);
+       break;
+      }}
+      if(anElemInfo){
+       if(TInt aNbElem = anElemInfo->GetNbElem()){
+         TSubMeshID aSubMeshID;
+         for(TInt iElem = 0; iElem < aNbElem; iElem++) 
+           if(anElemInfo->GetFamNum(iElem) == anId)
+             aSubMeshID.push_back(iElem);
+         if(!aSubMeshID.empty()){
+           VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+           INITMSG(MYDEBUG,"aMGeom = "<<aMGeom<<"\n");
+           aGeom2SubMeshID.insert(TGeom2SubMeshID::value_type(aEGeom,aSubMeshID));
          }
        }
       }
     }
+
+    theFamily->myIsDone = true;
+
     return 1;
-  }catch(std::runtime_error& exc){
-    theMeshOnEntity->myCellsConn.clear();
+
+#ifndef _DEXCEPT_
+  }catch(std::exception& exc){
     throw;
   }catch(...){
-    theMeshOnEntity->myCellsConn.clear();
     EXCEPTION(runtime_error,"Unknown exception !!!");
   }
+#endif
+
   return 0;
 }
 
 
+//---------------------------------------------------------------
+void
+LoadProfile(const MED::PWrapper& theMed,
+           VISU::PMEDMesh theMesh,
+           MED::TTimeStampVal& theTimeStampVal,
+           VISU::TMEDValForTime& theValForTime,
+           VISU::TMEDMeshOnEntity& theMeshOnEntity)
+{
+  TTimerLog aTimerLog(MYDEBUG,"LoadProfile");
+  INITMSG(MYDEBUG,"LoadProfile"<<endl);
+
+  PMEDProfile aProfile = theValForTime.myProfile;
+  if(aProfile->myIsDone)
+    return;
+
+  const TGeom2SubProfile& aGeom2SubProfile = aProfile->myGeom2SubProfile;
+  const MED::TGeom2Profile& aGeom2Profile = theTimeStampVal.GetGeom2Profile();
+  MED::TGeom2Profile::const_iterator anIter = aGeom2Profile.begin();
+  for(; anIter != aGeom2Profile.end(); anIter++){
+    MED::PProfileInfo aProfileInfo = anIter->second;
+    MED::EGeometrieElement aMGeom = anIter->first;
+    VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+
+    TGeom2SubProfile::const_iterator anIter2 = aGeom2SubProfile.find(aEGeom);
+    if(anIter2 != aGeom2SubProfile.end()){
+      PMEDSubProfile aSubProfile = anIter2->second;
+
+      MED::TElemNum& anElemNum = aProfileInfo->myElemNum;
+      if(!anElemNum.empty()){
+       TSubMeshID& aSubMeshID = aSubProfile->mySubMeshID;
+       TInt aSize = anElemNum.size();
+       aSubMeshID.resize(aSize);
+       for(TInt anId = 0; anId < aSize; anId++)
+         aSubMeshID[anId] = anElemNum[anId] - 1;
+      }
+
+      INITMSG(MYDEBUG,
+             "- aEGeom = "<<aEGeom<<
+             "; aNbCells = "<<aSubProfile->mySubMeshID.size()<<
+             endl);
+    }
+  }
+  {
+    const MED::PMeshInfo& aMeshInfo = theMesh->myMeshInfo;
+    
+    TEntity aVEntity = theMeshOnEntity.myEntity;
+    MED::EEntiteMaillage aMEntity = VTKEntityToMED(aVEntity);
+    
+    const TGeom2SubProfile& aGeom2SubProfile = aProfile->myGeom2SubProfile;
+    TGeom2SubProfile::const_iterator anIter = aGeom2SubProfile.begin();
+    for(; anIter != aGeom2SubProfile.end(); anIter++){
+      const PMEDSubProfile& aSubProfile = anIter->second;
+      MED::EGeometrieElement aMGeom = aSubProfile->myMGeom;
+      MED::PElemInfo anElemInfo;
+      if(aMEntity == MED::eNOEUD)
+       anElemInfo = theMed->GetPNodeInfo(aMeshInfo);
+      else{
+       switch(aMGeom){
+       case MED::ePOLYGONE: {
+         anElemInfo = theMed->GetPPolygoneInfo(aMeshInfo,aMEntity,aMGeom);
+         break;
+       }
+       case MED::ePOLYEDRE: {
+         anElemInfo = theMed->GetPPolyedreInfo(aMeshInfo,aMEntity,aMGeom);
+         break;
+       }
+       default: {
+         anElemInfo = theMed->GetPCellInfo(aMeshInfo,aMEntity,aMGeom);
+         break;
+       }}
+      }
+      aSubProfile->myIsElemNum = anElemInfo->IsElemNum();
+      aSubProfile->myElemNum = anElemInfo->myElemNum;
+    }
+  }
+
+  aProfile->myIsDone = true;
+}
+
+
+//---------------------------------------------------------------
+void
+LoadGaussMesh(const MED::PWrapper& theMed,
+             VISU::PMEDMesh theMesh,
+             MED::TTimeStampVal& theTimeStampVal,
+             VISU::TMEDValForTime& theValForTime,
+             VISU::TMEDMeshOnEntity& theMeshOnEntity)
+{
+  TTimerLog aTimerLog(MYDEBUG,"LoadGaussMesh");
+  INITMSG(MYDEBUG,"LoadGaussMesh"<<endl);
+
+  PMEDGaussMesh aGaussMesh = theValForTime.myGaussMesh;
+  if(!aGaussMesh || aGaussMesh->myIsDone)
+    return;
+
+  const MED::PMeshInfo& aMeshInfo = theMesh->myMeshInfo;
+  MED::PNodeInfo aNodeInfo = theMed->GetPNodeInfo(aMeshInfo);
+
+  TEntity aVEntity = theMeshOnEntity.myEntity;
+  MED::EEntiteMaillage aMEntity = VTKEntityToMED(aVEntity);
+
+  const TGeom2GaussSubMesh& aGeom2GaussSubMesh = aGaussMesh->myGeom2GaussSubMesh;
+  const MED::TTimeStampInfo& aTimeStampInfo = theTimeStampVal.GetTimeStampInfo();
+  const MED::TGeom2Gauss& aGeom2Gauss = aTimeStampInfo.GetGeom2Gauss();
+
+  TGeom2GaussSubMesh::const_iterator aSubMeshIter = aGeom2GaussSubMesh.begin();
+  for(; aSubMeshIter != aGeom2GaussSubMesh.end(); aSubMeshIter++){
+    PMEDGaussSubMesh aGaussSubMesh = aSubMeshIter->second;
+    VISU::EGeometry aEGeom = aSubMeshIter->first;
+    
+    if(aGaussSubMesh->myIsDone)
+      continue;
+
+    PMEDSubProfile aSubProfile = aGaussSubMesh->mySubProfile;
+    const TSubMeshID& aSubMeshID = aSubProfile->mySubMeshID;
+    MED::EGeometrieElement aMGeom = aSubProfile->myMGeom;
+
+    MED::PPolygoneInfo aPolygoneInfo;
+    MED::PPolyedreInfo aPolyedreInfo;
+    MED::PCellInfo aCellInfo;
+    MED::PElemInfo anElemInfo;
+
+    switch(aMGeom){
+    case MED::ePOLYGONE: 
+      aPolygoneInfo = theMed->GetPPolygoneInfo(aMeshInfo,
+                                              aMEntity,
+                                              aMGeom);
+      anElemInfo = aPolygoneInfo;
+      break;
+    case MED::ePOLYEDRE: 
+      aPolyedreInfo = theMed->GetPPolyedreInfo(aMeshInfo,
+                                              aMEntity,
+                                              aMGeom);
+      anElemInfo = aPolyedreInfo;
+      break;
+    default:
+      aCellInfo = theMed->GetPCellInfo(aMeshInfo,
+                                      aMEntity, 
+                                      aMGeom);
+      anElemInfo = aCellInfo;
+    }
+    aGaussSubMesh->myIsElemNum = anElemInfo->IsElemNum();
+    aGaussSubMesh->myElemNum = anElemInfo->myElemNum;
+
+    std::string aName;
+    MED::TGaussCoord aGaussCoord;
+    bool anIsGaussCoord3D = false;
+
+    MED::TGeom2Gauss::const_iterator aGaussIter = aGeom2Gauss.find(aMGeom);
+    if(aGaussIter != aGeom2Gauss.end()){
+      PMEDGauss aGauss = aGaussSubMesh->myGauss;
+      MED::PGaussInfo aGaussInfo = aGauss->myGaussInfo;
+      if(aGaussInfo){
+       aName = aGaussInfo->GetName();
+       if(!aSubMeshID.empty()){
+         const std::string& aProfileName = aSubProfile->myName;
+         MED::PProfileInfo aProfileInfo = MED::GetProfileInfo(theMed,
+                                                              aProfileName);
+         if(aProfileInfo){
+           const MED::TElemNum& anElemNum = aProfileInfo->myElemNum;
+           anIsGaussCoord3D = MED::GetGaussCoord3D(aGaussInfo,
+                                                   aCellInfo,
+                                                   aNodeInfo,
+                                                   aGaussCoord,
+                                                   anElemNum);
+         }
+       }else
+         anIsGaussCoord3D = MED::GetGaussCoord3D(aGaussInfo,
+                                                 aCellInfo,
+                                                 aNodeInfo,
+                                                 aGaussCoord);
+      }
+    }else{
+      if(!aSubMeshID.empty()){
+       const std::string& aProfileName = aSubProfile->myName;
+       MED::PProfileInfo aProfileInfo = MED::GetProfileInfo(theMed,
+                                                            aProfileName);
+       if(aProfileInfo){
+         const MED::TElemNum& anElemNum = aProfileInfo->myElemNum;
+         switch(aMGeom){
+         case MED::ePOLYGONE: 
+           anIsGaussCoord3D = MED::GetBaryCenter(aPolygoneInfo,
+                                                 aNodeInfo,
+                                                 aGaussCoord,
+                                                 anElemNum);
+           break;
+         case MED::ePOLYEDRE: 
+           anIsGaussCoord3D = MED::GetBaryCenter(aPolyedreInfo,
+                                                 aNodeInfo,
+                                                 aGaussCoord,
+                                                 anElemNum);
+           break;
+         default:
+           anIsGaussCoord3D = MED::GetBaryCenter(aCellInfo,
+                                                 aNodeInfo,
+                                                 aGaussCoord,
+                                                 anElemNum);
+         }
+       }
+      }else
+       switch(aMGeom){
+       case MED::ePOLYGONE: 
+         anIsGaussCoord3D = MED::GetBaryCenter(aPolygoneInfo,
+                                               aNodeInfo,
+                                               aGaussCoord);
+         break;
+       case MED::ePOLYEDRE: 
+         anIsGaussCoord3D = MED::GetBaryCenter(aPolyedreInfo,
+                                               aNodeInfo,
+                                               aGaussCoord);
+         break;
+       default:
+         anIsGaussCoord3D = MED::GetBaryCenter(aCellInfo,
+                                               aNodeInfo,
+                                               aGaussCoord);
+       }
+    }
+    
+    if(anIsGaussCoord3D){
+      TPointCoords& aCoords = aGaussSubMesh->myPointCoords;
+      TInt aNbGauss = aGaussCoord.GetNbGauss();
+      TInt aNbElem = aGaussCoord.GetNbElem();
+      TInt aDim = aGaussCoord.GetDim();
+      vtkIdType aNbCells = aNbElem*aNbGauss;
+      aCoords.Init(aNbCells,aDim);
+      for(TInt anElemId = 0, aNodeId = 0; anElemId < aNbElem; anElemId++){
+       MED::TCoordSliceArr aCoordSliceArr = aGaussCoord.GetCoordSliceArr(anElemId);
+       for(TInt aGaussId = 0; aGaussId < aNbGauss; aGaussId++, aNodeId++){
+         MED::TCoordSlice aCoordSlice = aCoordSliceArr[aGaussId];
+         TCoordSlice aSlice = aCoords.GetCoordSlice(aNodeId);
+         for(TInt aDimId = 0; aDimId < aDim; aDimId++)
+           aSlice[aDimId] = aCoordSlice[aDimId];
+       }
+      }
+      
+      aGaussSubMesh->myIsDone = true;;
+      
+      INITMSG(MYDEBUG,
+             "- aEGeom = "<<aEGeom<<
+             "; aName = '"<<aName<<"'"<<
+             "; aStatus = "<<aGaussSubMesh->myStatus<<
+             "; aNbElem = "<<aNbElem<<
+             "; aNbGauss = "<<aNbGauss<<
+             "; aNbCells = "<<aNbCells<<
+             endl);
+    }
+  }
+  
+  aGaussMesh->myIsDone = true;
+}
+
+
+//---------------------------------------------------------------
 int 
-VISU_MedConvertor::LoadField(const MED::PWrapper& theMed,
-                            VISU::PMEDMesh theMesh,
-                            VISU::PMEDMeshOnEntity theMeshOnEntity,
-                            VISU::PMEDField theField, 
-                            VISU::PMEDValForTime theValForTime)
+LoadValForTime(const MED::PWrapper& theMed,
+              VISU::PMEDMesh theMesh,
+              VISU::PMEDMeshOnEntity theMeshOnEntity,
+              VISU::PMEDField theField, 
+              VISU::PMEDValForTime theValForTime,
+              bool theIsGauss,
+              bool& theIsDone)
 {
+  TTimerLog aTimerLog(MYDEBUG,"LoadValForTime");
+  INITMSG(MYDEBUG,"LoadValForTime - theIsGauss = "<<theIsGauss<<endl);
+
   //Check on loading already done
-  if(!theValForTime->myValForCells.empty()) return 0;
+  if(theIsDone) 
+    return 0;
 
   //Main part of code
   const std::string& aMeshName = theMeshOnEntity->myMeshName;
-  const PMeshInfo& aMeshInfo = theMesh->myMeshInfo;
-  PFieldInfo aFieldInfo = theMed->GetPFieldInfo(aMeshInfo,theField->myId);
-
-  MED::TGeom aTGeom;
-  EEntiteMaillage aMEntity;
-  theMed->GetNbTimeStamps(aFieldInfo,theMesh->myEntityInfo,aMEntity,aTGeom);
-
-  PTimeStampInfo aTimeStampInfo = theMed->GetPTimeStampInfo(aFieldInfo,
-                                                           aMEntity,
-                                                           aTGeom,
-                                                           theValForTime->myId);
-  TInt aNbGauss = aTimeStampInfo->GetNbGauss();
+  const MED::PMeshInfo& aMeshInfo = theMesh->myMeshInfo;
+  MED::PFieldInfo aFieldInfo = theMed->GetPFieldInfo(aMeshInfo,
+                                                    theField->myId);
+
+  MED::TGeom2Size aGeom2Size;
+  MED::EEntiteMaillage aMEntity;
+  theMed->GetNbTimeStamps(aFieldInfo,
+                         theMesh->myEntityInfo,
+                         aMEntity,
+                         aGeom2Size);
+
+  MED::PTimeStampInfo aTimeStampInfo = 
+    theMed->GetPTimeStampInfo(aFieldInfo,
+                             aMEntity,
+                             aGeom2Size,
+                             theValForTime->myId);
+
+  MED::TKey2Gauss aKey2Gauss = GetKey2Gauss(theMed);
+  MED::TMKey2Profile aMKey2Profile = GetMKey2Profile(theMed);
+
+  MED::PTimeStampVal aTimeStampVal = 
+    theMed->GetPTimeStampVal(aTimeStampInfo,
+                            aMKey2Profile,
+                            aKey2Gauss);
+
+  InitGaussProfile(theMed,
+                  aMeshInfo,
+                  aTimeStampVal,
+                  theMeshOnEntity,
+                  aMEntity,
+                  aGeom2Size,
+                  theValForTime);
+
+  LoadProfile(theMed,
+             theMesh,
+             aTimeStampVal,
+             theValForTime,
+             theMeshOnEntity);
+  
+  if(theIsGauss)
+    LoadGaussMesh(theMed,
+                 theMesh,
+                 aTimeStampVal,
+                 theValForTime,
+                 theMeshOnEntity);
+  
+  PMEDProfile aProfile = theValForTime->myProfile;
+  TGeom2SubProfile& aGeom2SubProfile = aProfile->myGeom2SubProfile;
+
   TInt aNbComp = theField->myNbComp;
 
-  PTimeStampVal aTimeStampVal = theMed->GetPTimeStampVal(aTimeStampInfo);
-  bool anIsTrimmed = theField->myIsTrimmed;
-  INITMSG(MYDEBUG,"LoadField - aMeshName = '"<<aMeshName<<
-         "'; aFieldName = '"<<aFieldInfo->GetName()<<
-         "'; aMEntity = "<<aMEntity<<
-         "; anId = "<<theValForTime->myId<<endl);
-  BEGMSG(MYDEBUG,"LoadField - aNbComp = "<<aNbComp<<
-        "; aNbGauss = "<<aNbGauss<<endl);
-
-  const MED::TGeom& anEntityTGeom = theMeshOnEntity->myGeom;
-  MED::TGeom::const_iterator aTGeomIter = anEntityTGeom.begin();
-  for(; aTGeomIter != anEntityTGeom.end(); aTGeomIter++){
-    const EGeometrieElement& aGeom = aTGeomIter->first;
-    const TInt& aNbElem = aTGeomIter->second;
-
-    INITMSG(MYDEBUG,"LoadField - aGeom = "<<aGeom<<"; aNbElem = '"<<aNbElem<<endl);
-
-    if(aTGeom.find(aGeom) == aTGeom.end()){
-      if(!theField->myIsTrimmed){
-       theField->myDataSize -= aNbElem*theField->myNbComp;
-       anIsTrimmed = true;
-      }
-    }else{
-      int aVTKGeomType = MEDGeomToVTK(aGeom);
-      VISU::TValForTimeImpl::TValForCellsWithType& anArray = theValForTime->myValForCells[aVTKGeomType];
-      anArray.resize(aNbComp*aNbElem);
-      for(TInt iElem = 0, anId = 0; iElem < aNbElem; iElem++){
-       for(TInt iComp = 0; iComp < aNbComp; iComp++, anId++){
-         for(TInt iGauss = 0; iGauss < aNbGauss; iGauss++){
-           anArray[anId] += aTimeStampVal->GetVal(aGeom,iElem,iComp,iGauss);
+  INITMSGA(MYDEBUG,0,
+          "- aMeshName = '"<<aMeshName<<"'"<<
+          "; aFieldName = '"<<aFieldInfo->GetName()<<"'"<<
+          "; aMEntity = "<<aMEntity<<
+          "; aNbComp = "<<aNbComp<<
+          endl);
+
+  theField->myDataSize = 0;
+
+  const MED::TTimeStampVal& aTimeStampValRef = aTimeStampVal;
+  TGeom2SubProfile::const_iterator anIter = aGeom2SubProfile.begin();
+  for(; anIter != aGeom2SubProfile.end(); anIter++){
+    VISU::EGeometry aEGeom = anIter->first;
+    PMEDSubProfile aSubProfile(anIter->second);
+
+    TInt aNbElem = aSubProfile->myNbCells;
+    theField->myDataSize += aNbElem*aNbComp;
+
+    if(aSubProfile->myStatus != eRemoveAll){
+      TInt aNbGauss = theValForTime->GetNbGauss(aEGeom);
+
+      INITMSG(MYDEBUG,
+             "- aEGeom = "<<aEGeom<<
+             "; aNbElem = "<<aNbElem<<
+             "; aNbGauss = "<<aNbGauss<<
+             endl);
+      
+      TMeshValue& aVMeshValue = theValForTime->GetMeshValue(aEGeom);
+      aVMeshValue.Init(aNbElem,aNbGauss,aNbComp);
+
+      MED::EGeometrieElement aMGeom = aSubProfile->myMGeom;
+      const MED::TMeshValue& aMMeshValue = aTimeStampValRef.GetMeshValue(aMGeom);
+      for(TInt iElem = 0; iElem < aNbElem; iElem++){
+       TValueSliceArr aVValueSliceArr = aVMeshValue.GetGaussValueSliceArr(iElem);
+       MED::TCValueSliceArr aMValueSliceArr = aMMeshValue.GetGaussValueSliceArr(iElem);
+       ADDMSG(MYVALUEDEBUG,"{");
+       for(TInt iGauss = 0; iGauss < aNbGauss; iGauss++){
+         TValueSlice& aVValueSlice = aVValueSliceArr[iGauss];
+         const MED::TCValueSlice& aMValueSlice = aMValueSliceArr[iGauss];
+         for(TInt iComp = 0; iComp < aNbComp; iComp++){
+           aVValueSlice[iComp] = aMValueSlice[iComp];
+           ADDMSG(MYVALUEDEBUG,aVValueSlice[iComp]<<" ");
          }
-         anArray[anId] /= aNbGauss;
+         ADDMSG(MYVALUEDEBUG,"| ");
        }
+       ADDMSG(MYVALUEDEBUG,"} ");
       }
+      ADDMSG(MYDEBUG,"\n");
     }
   }
-  theField->myIsTrimmed = anIsTrimmed;
+
+  theIsDone = true;
+
   return 1; 
 }
+
+
+//---------------------------------------------------------------
+int 
+VISU_MedConvertor
+::LoadValForTimeOnMesh(const MED::PWrapper& theMed,
+                      VISU::PMEDMesh theMesh,
+                      VISU::PMEDMeshOnEntity theMeshOnEntity,
+                      VISU::PMEDField theField, 
+                      VISU::PMEDValForTime theValForTime)
+{
+  PIDMapperFilter anIDMapperFilter = theValForTime->myIDMapperFilter;
+  return LoadValForTime(theMed,
+                       theMesh,
+                       theMeshOnEntity,
+                       theField,
+                       theValForTime,
+                       false,
+                       anIDMapperFilter->myIsVTKDone);
+}
+
+
+//---------------------------------------------------------------
+int 
+VISU_MedConvertor
+::LoadValForTimeOnGaussPts(const MED::PWrapper& theMed,
+                          VISU::PMEDMesh theMesh,
+                          VISU::PMEDMeshOnEntity theMeshOnEntity,
+                          VISU::PMEDField theField, 
+                          VISU::PMEDValForTime theValForTime)
+{
+  PGaussPtsIDFilter aGaussPtsIDFilter = theValForTime->myGaussPtsIDFilter;
+  return LoadValForTime(theMed,
+                       theMesh,
+                       theMeshOnEntity,
+                       theField,
+                       theValForTime,
+                       true,
+                       aGaussPtsIDFilter->myIsVTKDone);
+}
index c93ac3412872831635a548142ec02d8cc3569446..abcb6ad70549e9b5ea9ef8515fa5eb325d978c60 100644 (file)
 #include "VISU_Convertor_impl.hxx"
 
 #include "MED_Common.hxx"
+#include "MED_Structures.hxx"
 
-namespace VISU{
+#include <boost/thread/mutex.hpp>
+#include <qfileinfo.h>
 
-  struct TMEDMesh: TMeshImpl{
+namespace VISU
+{
+  typedef TVector<TName> TNames;
+
+  //---------------------------------------------------------------
+  class TMEDNamedPointCoords: public virtual TNamedPointCoords
+  {
+    MED::PNodeInfo myNodeInfo;
+    TNames myPointNames;
+  public:
+    void
+    Init(vtkIdType theNbPoints,
+        vtkIdType theDim,
+        const MED::PNodeInfo& theNodeInfo);
+
+    virtual
+    std::string 
+    GetNodeName(vtkIdType theObjID) const;
+  };
+  typedef SharedPtr<TMEDNamedPointCoords> PMEDNamedPointCoords;
+
+
+  //---------------------------------------------------------------
+  struct TMEDMesh: virtual TMeshImpl
+  {
     MED::PMeshInfo myMeshInfo;
     MED::TEntityInfo myEntityInfo;
   };
-  typedef shared_ptr<TMEDMesh> PMEDMesh;
+  typedef SharedPtr<TMEDMesh> PMEDMesh;
+
 
-  struct TMEDMeshOnEntity: TMeshOnEntityImpl{
-    MED::TGeom myGeom;
+  //---------------------------------------------------------------
+  struct TMEDSubProfile: virtual TSubProfileImpl
+  {
+    MED::EGeometrieElement myMGeom;
+
+    TMEDSubProfile():
+      myIsElemNum(MED::eFAUX)
+    {}
+
+    MED::EBooleen myIsElemNum;
+    MED::TElemNum myElemNum;
+
+    virtual 
+    vtkIdType 
+    GetElemObjID(vtkIdType theID) const;
   };
-  typedef shared_ptr<TMEDMeshOnEntity> PMEDMeshOnEntity;
+  typedef SharedPtr<TMEDSubProfile> PMEDSubProfile;
+
+
+  //---------------------------------------------------------------
+  struct TMEDProfile: virtual TProfileImpl
+  {};
+  typedef SharedPtr<TMEDProfile> PMEDProfile;
+
 
-  struct TMEDFamily: TFamilyImpl{
+  //---------------------------------------------------------------
+  struct TMEDGauss: virtual TGaussImpl
+  {
+    MED::PGaussInfo myGaussInfo;
+
+    //! To define a way to implement more detail comparision of the TGaussSubMesh instances
+    virtual
+    void
+    LessThan(const PGaussImpl& theGauss,
+            bool& theResult) const;
   };
-  typedef shared_ptr<TMEDFamily> PMEDFamily;
-  
-  struct TMEDGroup: TGroupImpl{
+  typedef SharedPtr<TMEDGauss> PMEDGauss;
+
+
+  //---------------------------------------------------------------
+  struct TMEDGaussSubMesh: virtual TGaussSubMeshImpl
+  {
+    TMEDGaussSubMesh():
+      myIsElemNum(MED::eFAUX)
+    {}
+
+    MED::EBooleen myIsElemNum;
+    MED::TElemNum myElemNum;
+
+    virtual
+    TGaussPointID
+    GetObjID(vtkIdType theID) const;
   };
-  typedef shared_ptr<TMEDGroup> PMEDGroup;
+  typedef SharedPtr<TMEDGaussSubMesh> PMEDGaussSubMesh;
+
+
+  //---------------------------------------------------------------
+  struct TMEDGaussMesh: virtual TGaussMeshImpl
+  {};
+  typedef SharedPtr<TMEDGaussMesh> PMEDGaussMesh;
+
+
+  //---------------------------------------------------------------
+  struct TMEDSubMesh: virtual TSubMeshImpl
+  {
+    TMEDSubMesh():
+      myIsElemNum(MED::eFAUX)
+    {}
+
+    MED::EBooleen myIsElemNum;
+    MED::TElemNum myElemNum;
+    MED::PElemInfo myElemInfo;
+
+    void
+    Init(const MED::PElemInfo& theElemInfo);
 
-  struct TMEDField: TFieldImpl{
+    virtual 
+    vtkIdType 
+    GetElemObjID(vtkIdType theID) const;
+
+    virtual
+    std::string 
+    GetElemName(vtkIdType theObjID) const;
   };
-  typedef shared_ptr<TMEDField> PMEDField;
+  typedef SharedPtr<TMEDSubMesh> PMEDSubMesh;
+
+
+  //---------------------------------------------------------------
+  typedef std::map<vtkIdType,vtkIdType> TFamilyID2CellsSize;
 
-  struct TMEDValForTime: TValForTimeImpl{
+  struct TMEDMeshOnEntity: virtual TMeshOnEntityImpl
+  {
+    TFamilyID2CellsSize myFamilyID2CellsSize;
+    MED::TGeom2Size myGeom2Size;
   };
-  typedef shared_ptr<TMEDValForTime> PMEDValForTime;
+  typedef SharedPtr<TMEDMeshOnEntity> PMEDMeshOnEntity;
+
+
+  //---------------------------------------------------------------
+  struct TMEDFamily: virtual TFamilyImpl
+  {};
+  typedef SharedPtr<TMEDFamily> PMEDFamily;
+  
+
+  //---------------------------------------------------------------
+  struct TMEDGroup: virtual TGroupImpl
+  {};
+  typedef SharedPtr<TMEDGroup> PMEDGroup;
+
+
+  //---------------------------------------------------------------
+  struct TMEDField: virtual TFieldImpl
+  {};
+  typedef SharedPtr<TMEDField> PMEDField;
+
+
+  //---------------------------------------------------------------
+  struct TMEDValForTime: virtual TValForTimeImpl
+  {};
+  typedef SharedPtr<TMEDValForTime> PMEDValForTime;
 
 }
 
-class VISU_MedConvertor: public VISU_Convertor_impl{
+class VISU_MedConvertor: public VISU_Convertor_impl
+{  
   VISU_MedConvertor();
   VISU_MedConvertor(const VISU_MedConvertor&);
+  
+  bool myIsEntitiesDone;
+  bool myIsFieldsDone;
+  bool myIsGroupsDone;
+  bool myIsMinMaxDone;
+
 public:
-  VISU_MedConvertor(const std::string& theFileName) ;
-  virtual VISU_Convertor* Build() ;
+  VISU_MedConvertor(const std::string& theFileName);
+
+  virtual
+  VISU_Convertor* 
+  BuildEntities();
+
+  virtual
+  VISU_Convertor* 
+  BuildFields();
+
+  virtual
+  VISU_Convertor* 
+  BuildMinMax();
+
+  virtual
+  VISU_Convertor* 
+  BuildGroups();
+
 protected:
   QFileInfo myFileInfo;
 
-  virtual int LoadMeshOnEntity(VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                              const std::string& theFamilyName = "");
+  virtual
+  int
+  LoadMeshOnEntity(VISU::PMeshImpl theMesh,
+                  VISU::PMeshOnEntityImpl theMeshOnEntity);
+  
+  virtual
+  int
+  LoadFamilyOnEntity(VISU::PMeshImpl theMesh,
+                    VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                    VISU::PFamilyImpl theFamily);
 
-  virtual int LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
-                             const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet);
+  virtual
+  int
+  LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
+                 const VISU::TFamilySet& theFamilySet);
+  
+  virtual
+  int
+  LoadValForTimeOnMesh(VISU::PMeshImpl theMesh, 
+                      VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                      VISU::PFieldImpl theField, 
+                      VISU::PValForTimeImpl theValForTime);
+  
+  virtual 
+  int
+  LoadValForTimeOnGaussPts(VISU::PMeshImpl theMesh, 
+                          VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                          VISU::PFieldImpl theField, 
+                          VISU::PValForTimeImpl theValForTime);
 
-  virtual int LoadFieldOnMesh(VISU::PMeshImpl theMesh, 
-                             VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                             VISU::PFieldImpl theField, 
-                             VISU::PValForTimeImpl theValForTime);
+  int
+  LoadPoints(const MED::PWrapper& theMed,
+            const VISU::PMEDMesh theMesh);
+  
+  int
+  LoadPointsOnFamily(const MED::PWrapper& theMed,
+                    const VISU::PMEDMesh theMesh, 
+                    const VISU::PMEDFamily theFamily);
+  
+  int
+  LoadCellsOnEntity(const MED::PWrapper& theMed,
+                   const VISU::PMEDMesh theMesh,
+                   const VISU::PMEDMeshOnEntity theMeshOnEntity);
   
-  int LoadPoints(const MED::PWrapper& theMed,
-                VISU::PMEDMesh theMesh, 
-                const std::string& theFamilyName = "");
-
-  int LoadCellsOnEntity(const MED::PWrapper& theMed,
-                       VISU::PMEDMesh theMesh,
-                       VISU::PMEDMeshOnEntity theMeshOnEntity,
-                       const std::string& theFamilyName = "");
+  int
+  LoadCellsOnFamily(const MED::PWrapper& theMed,
+                   const VISU::PMEDMesh theMesh,
+                   const VISU::PMEDMeshOnEntity theMeshOnEntity,
+                   const VISU::PMEDFamily theFamily);
   
-  int LoadField(const MED::PWrapper& theMed,
-               VISU::PMEDMesh theMesh,
-               VISU::PMEDMeshOnEntity theMeshOnEntity,
-               VISU::PMEDField theField, 
-               VISU::PMEDValForTime theValForTime);
+  int
+  LoadValForTimeOnMesh(const MED::PWrapper& theMed,
+                      VISU::PMEDMesh theMesh,
+                      VISU::PMEDMeshOnEntity theMeshOnEntity,
+                      VISU::PMEDField theField, 
+                      VISU::PMEDValForTime theValForTime);
   
+  int
+  LoadValForTimeOnGaussPts(const MED::PWrapper& theMed,
+                          VISU::PMEDMesh theMesh,
+                          VISU::PMEDMeshOnEntity theMeshOnEntity,
+                          VISU::PMEDField theField, 
+                          VISU::PMEDValForTime theValForTime);
 };
 
 #endif
diff --git a/src/CONVERTOR/VISU_MergeFilter.cxx b/src/CONVERTOR/VISU_MergeFilter.cxx
new file mode 100644 (file)
index 0000000..aa48a46
--- /dev/null
@@ -0,0 +1,418 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   : 
+//  Author : 
+//  Module : SALOME
+//  $Header$
+
+#include "VISU_MergeFilter.hxx"
+
+#include <vtkCellData.h>
+#include <vtkObjectFactory.h>
+#include <vtkPointData.h>
+#include <vtkPolyData.h>
+#include <vtkRectilinearGrid.h>
+#include <vtkStructuredGrid.h>
+#include <vtkStructuredPoints.h>
+#include <vtkUnstructuredGrid.h>
+
+namespace VISU
+{
+
+  class TFieldNode
+  {
+  public:
+    TFieldNode(const char* name, vtkDataSet* ptr=0)
+    {
+      int length = static_cast<int>(strlen(name));
+      if (length > 0) {
+       this->Name = new char[length+1];
+       strcpy(this->Name, name);
+      } else {
+        this->Name = 0;
+      }
+      this->Ptr = ptr;
+      this->Next = 0;
+    }
+    ~TFieldNode()
+    {
+      delete[] this->Name;
+    }
+
+    const char* GetName()
+    {
+      return Name;
+    }
+    vtkDataSet* Ptr;
+    TFieldNode* Next;
+  private:
+    TFieldNode(const TFieldNode&) {}
+    void operator=(const TFieldNode&) {}
+    char* Name;
+  };
+
+  class TFieldList
+  {
+  public:
+    TFieldList()
+    {
+      this->First = 0;
+      this->Last = 0;
+    }
+    ~TFieldList()
+    {
+      TFieldNode* node = this->First;
+      TFieldNode* next;
+      while(node){
+        next = node->Next;
+        delete node;
+        node = next;
+      }
+    }
+
+
+    void Add(const char* name, vtkDataSet* ptr)
+    {
+      TFieldNode* newNode = new TFieldNode(name, ptr);
+      if (!this->First) {
+       this->First = newNode;
+       this->Last = newNode;
+      } else {
+        this->Last->Next = newNode;
+        this->Last = newNode;
+      }
+    }
+
+    friend class TFieldListIterator;
+    
+  private:
+    TFieldNode* First;
+    TFieldNode* Last;
+  };
+  
+  class TFieldListIterator
+  {
+  public:
+    TFieldListIterator(TFieldList* list)
+    {
+      this->List = list;
+      this->Position = 0;
+    }
+    void Begin()
+    {
+      this->Position = this->List->First;
+    }
+    void Next()
+    {
+      if (this->Position) {
+       this->Position = this->Position->Next;
+      }
+    }
+    int End()
+    {
+      return this->Position ? 0 : 1;
+    }
+    TFieldNode* Get()
+    {
+      return this->Position;
+    }
+    
+  private:
+    TFieldNode* Position;
+    TFieldList* List;
+  };
+  
+}
+
+//------------------------------------------------------------------------------
+vtkStandardNewMacro(VISU_MergeFilter);
+
+//------------------------------------------------------------------------------
+
+// Create object with no input or output.
+VISU_MergeFilter::VISU_MergeFilter()
+{
+  this->FieldList = new VISU::TFieldList;
+}
+
+VISU_MergeFilter::~VISU_MergeFilter()
+{
+  delete this->FieldList;
+}
+
+void VISU_MergeFilter::SetScalars(vtkDataSet *input)
+{
+  this->vtkProcessObject::SetNthInput(1, input);
+}
+vtkDataSet *VISU_MergeFilter::GetScalars()
+{
+  if (this->NumberOfInputs < 2)
+    {
+    return NULL;
+    }
+  return (vtkDataSet *)(this->Inputs[1]);
+}
+
+void VISU_MergeFilter::SetVectors(vtkDataSet *input)
+{
+  this->vtkProcessObject::SetNthInput(2, input);
+}
+vtkDataSet *VISU_MergeFilter::GetVectors()
+{
+  if (this->NumberOfInputs < 3)
+    {
+    return NULL;
+    }
+  return (vtkDataSet *)(this->Inputs[2]);
+}
+
+void VISU_MergeFilter::SetNormals(vtkDataSet *input)
+{
+  this->vtkProcessObject::SetNthInput(3, input);
+}
+vtkDataSet *VISU_MergeFilter::GetNormals()
+{
+  if (this->NumberOfInputs < 4)
+    {
+    return NULL;
+    }
+  return (vtkDataSet *)(this->Inputs[3]);
+}
+
+void VISU_MergeFilter::SetTCoords(vtkDataSet *input)
+{
+  this->vtkProcessObject::SetNthInput(4, input);
+}
+vtkDataSet *VISU_MergeFilter::GetTCoords()
+{
+  if (this->NumberOfInputs < 5)
+    {
+    return NULL;
+    }
+  return (vtkDataSet *)(this->Inputs[4]);
+}
+
+void VISU_MergeFilter::SetTensors(vtkDataSet *input)
+{
+  this->vtkProcessObject::SetNthInput(5, input);
+}
+vtkDataSet *VISU_MergeFilter::GetTensors()
+{
+  if (this->NumberOfInputs < 6)
+    {
+    return NULL;
+    }
+  return (vtkDataSet *)(this->Inputs[5]);
+}
+
+void VISU_MergeFilter::AddField(const char* name, vtkDataSet* input)
+{
+  this->FieldList->Add(name, input);
+}
+
+void VISU_MergeFilter::Execute()
+{
+  vtkIdType numPts, numScalars=0, numVectors=0, numNormals=0, numTCoords=0;
+  vtkIdType numTensors=0;
+  vtkIdType numCells, numCellScalars=0, numCellVectors=0, numCellNormals=0;
+  vtkIdType numCellTCoords=0, numCellTensors=0;
+  vtkPointData *pd;
+  vtkDataArray *scalars = NULL;
+  vtkDataArray *vectors = NULL;
+  vtkDataArray *normals = NULL;
+  vtkDataArray *tcoords = NULL;
+  vtkDataArray *tensors = NULL;
+  vtkCellData *cd;
+  vtkDataArray *cellScalars = NULL;
+  vtkDataArray *cellVectors = NULL;
+  vtkDataArray *cellNormals = NULL;
+  vtkDataArray *cellTCoords = NULL;
+  vtkDataArray *cellTensors = NULL;
+  vtkDataSet *output = this->GetOutput();
+  vtkPointData *outputPD = output->GetPointData();
+  vtkCellData *outputCD = output->GetCellData();
+  
+  vtkDebugMacro(<<"Merging data!");
+
+  // geometry needs to be copied
+  output->CopyStructure(this->GetInput());
+  if ( (numPts = this->GetInput()->GetNumberOfPoints()) < 1 )
+    {
+    vtkWarningMacro(<<"Nothing to merge!");
+    }
+  numCells = this->GetInput()->GetNumberOfCells();
+  
+  if ( this->GetScalars() ) 
+    {
+    pd = this->GetScalars()->GetPointData();
+    scalars = pd->GetScalars();
+    if ( scalars != NULL )
+      {
+      numScalars = scalars->GetNumberOfTuples();
+      }
+    cd = this->GetScalars()->GetCellData();
+    cellScalars = cd->GetScalars();
+    if ( cellScalars != NULL )
+      {
+      numCellScalars = cellScalars->GetNumberOfTuples();
+      }
+    }
+
+  if ( this->GetVectors() ) 
+    {
+    pd = this->GetVectors()->GetPointData();
+    vectors = pd->GetVectors();
+    if ( vectors != NULL )
+      {
+      numVectors= vectors->GetNumberOfTuples();
+      }
+    cd = this->GetVectors()->GetCellData();
+    cellVectors = cd->GetVectors();
+    if ( cellVectors != NULL )
+      {
+      numCellVectors = cellVectors->GetNumberOfTuples();
+      }
+    }
+
+  if ( this->GetNormals() ) 
+    {
+    pd = this->GetNormals()->GetPointData();
+    normals = pd->GetNormals();
+    if ( normals != NULL )
+      {
+      numNormals= normals->GetNumberOfTuples();
+      }
+    cd = this->GetNormals()->GetCellData();
+    cellNormals = cd->GetNormals();
+    if ( cellNormals != NULL )
+      {
+      numCellNormals = cellNormals->GetNumberOfTuples();
+      }
+    }
+
+  if ( this->GetTCoords() ) 
+    {
+    pd = this->GetTCoords()->GetPointData();
+    tcoords = pd->GetTCoords();
+    if ( tcoords != NULL )
+      {
+      numTCoords= tcoords->GetNumberOfTuples();
+      }
+    cd = this->GetTCoords()->GetCellData();
+    cellTCoords = cd->GetTCoords();
+    if ( cellTCoords != NULL )
+      {
+      numCellTCoords = cellTCoords->GetNumberOfTuples();
+      }
+    }
+
+  if ( this->GetTensors() ) 
+    {
+    pd = this->GetTensors()->GetPointData();
+    tensors = pd->GetTensors();
+    if ( tensors != NULL )
+      {
+      numTensors = tensors->GetNumberOfTuples();
+      }
+    cd = this->GetTensors()->GetCellData();
+    cellTensors = cd->GetTensors();
+    if ( cellTensors != NULL )
+      {
+      numCellTensors = cellTensors->GetNumberOfTuples();
+      }
+    }
+
+  // merge data only if it is consistent
+  if ( numPts == numScalars )
+    {
+    outputPD->SetScalars(scalars);
+    }
+  if ( numCells == numCellScalars )
+    {
+    outputCD->SetScalars(cellScalars);
+    }
+
+  if ( numPts == numVectors )
+    {
+    outputPD->SetVectors(vectors);
+    }
+  if ( numCells == numCellVectors )
+    {
+    outputCD->SetVectors(cellVectors);
+    }
+    
+  if ( numPts == numNormals )
+    {
+    outputPD->SetNormals(normals);
+    }
+  if ( numCells == numCellNormals )
+    {
+    outputCD->SetNormals(cellNormals);
+    }
+
+  if ( numPts == numTCoords )
+    {
+    outputPD->SetTCoords(tcoords);
+    }
+  if ( numCells == numCellTCoords )
+    {
+    outputCD->SetTCoords(cellTCoords);
+    }
+
+  if ( numPts == numTensors )
+    {
+    outputPD->SetTensors(tensors);
+    }
+  if ( numCells == numCellTensors )
+    {
+    outputCD->SetTensors(cellTensors);
+    }
+
+  VISU::TFieldListIterator it(this->FieldList);
+  vtkDataArray* da;
+  const char* name;
+  vtkIdType num;
+  for(it.Begin(); !it.End() ; it.Next())
+    {
+    pd = it.Get()->Ptr->GetPointData();
+    cd = it.Get()->Ptr->GetCellData();
+    name = it.Get()->GetName();
+    if ( (da=pd->GetArray(name)) )
+      {
+      num = da->GetNumberOfTuples();
+      if (num == numPts)
+        {
+        outputPD->AddArray(da);
+        }
+      }
+    if ( (da=cd->GetArray(name)) )
+      {
+      num = da->GetNumberOfTuples();
+      if (num == numCells) // To fix a VTK bug
+        {
+        outputCD->AddArray(da);
+        }
+      }
+    }
+}
diff --git a/src/CONVERTOR/VISU_MergeFilter.hxx b/src/CONVERTOR/VISU_MergeFilter.hxx
new file mode 100644 (file)
index 0000000..1d15cd3
--- /dev/null
@@ -0,0 +1,99 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   : 
+//  Author : 
+//  Module : SALOME
+//  $Header$
+
+#ifndef VISU_MergeFilter_H
+#define VISU_MergeFilter_H
+
+#include <vtkDataSetToDataSetFilter.h>
+
+namespace VISU
+{
+  class TFieldList;
+}
+
+// Following class was redefined in order to fix VTK bug 
+//  (see code for more details)
+
+class VISU_MergeFilter : public vtkDataSetToDataSetFilter
+{
+public:
+  static VISU_MergeFilter *New();
+  vtkTypeMacro(VISU_MergeFilter,vtkDataSetToDataSetFilter);
+
+  // Description:
+  // Specify object from which to extract geometry information.
+  void SetGeometry(vtkDataSet *input) {this->SetInput(input);};
+  vtkDataSet *GetGeometry() {return this->GetInput();};
+
+  // Description:
+  // Specify object from which to extract scalar information.
+  void SetScalars(vtkDataSet *);
+  vtkDataSet *GetScalars();
+
+  // Description:
+  // Set / get the object from which to extract vector information.
+  void SetVectors(vtkDataSet *);
+  vtkDataSet *GetVectors();
+
+  // Description:
+  // Set / get the object from which to extract normal information.
+  void SetNormals(vtkDataSet *);
+  vtkDataSet *GetNormals();
+  
+  // Description:
+  // Set / get the object from which to extract texture coordinates
+  // information.
+  void SetTCoords(vtkDataSet *);
+  vtkDataSet *GetTCoords();
+
+  // Description:
+  // Set / get the object from which to extract tensor data.
+  void SetTensors(vtkDataSet *);
+  vtkDataSet *GetTensors();
+
+  // Description:
+  // Set the object from which to extract a field and the name
+  // of the field
+  void AddField(const char* name, vtkDataSet* input);
+
+protected:
+  VISU_MergeFilter();
+  ~VISU_MergeFilter();
+
+  // Usual data generation method
+  void Execute();
+
+  VISU::TFieldList* FieldList;
+private:
+  VISU_MergeFilter(const VISU_MergeFilter&);  // Not implemented.
+  void operator=(const VISU_MergeFilter&);  // Not implemented.
+};
+
+#endif
+
+
index 63ccfd1faaa9cfcef1dcd13faf263a8672c10875..45dc68bcc768c0fe181b93ffa050a39ba6c49ed8 100644 (file)
@@ -162,6 +162,11 @@ namespace VISU{
   }
 
 
+  Result_ptr VISU_Gen_i::CreateResult(const char* theFileName){
+    return myVisuGen->CreateResult(theFileName);
+  }
+
+
   Result_ptr VISU_Gen_i::CopyAndImportFile(const char* theFileName){
     return myVisuGen->CopyAndImportFile(theFileName);
   }
@@ -212,6 +217,16 @@ namespace VISU{
   }
 
 
+  GaussPoints_ptr VISU_Gen_i::GaussPointsOnField(Result_ptr theResult, 
+                                                const char* theMeshName, 
+                                                VISU::Entity theEntity, 
+                                                const char* theFieldName, 
+                                                CORBA::Double theIteration)
+  {
+    return myVisuGen->GaussPointsOnField(theResult,theMeshName,theEntity,theFieldName,theIteration);
+  }
+
+
   DeformedShape_ptr VISU_Gen_i::DeformedShapeOnField(Result_ptr theResult, 
                                                     const char* theMeshName, 
                                                     VISU::Entity theEntity, 
index 841c01986c484440d46c13d99826d8758c946dd7..d9c665ac349c8dd55080c6cd4ebfb27cfe96ac1b 100644 (file)
@@ -57,6 +57,7 @@ namespace VISU{
 
     //Create Result
     virtual Result_ptr ImportFile(const char* theFileName);
+    virtual Result_ptr CreateResult(const char* theFileName);
     virtual Result_ptr CopyAndImportFile(const char* theFileName);
     virtual Result_ptr ImportMed(SALOMEDS::SObject_ptr theMedSObject);
     virtual Result_ptr ImportMedField(SALOME_MED::FIELD_ptr theField);
@@ -69,6 +70,8 @@ namespace VISU{
 
     virtual ScalarMap_ptr ScalarMapOnField(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity, 
                                           const char* theFieldName, CORBA::Double theIteration);
+    virtual GaussPoints_ptr GaussPointsOnField(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity, 
+                                              const char* theFieldName, CORBA::Double theIteration);
     virtual DeformedShape_ptr DeformedShapeOnField(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity, 
                                                   const char* theFieldName, CORBA::Double theIteration);
     virtual Vectors_ptr VectorsOnField(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity, 
index b8b86f6e6d07e1a5b72515e8df411d4e235db269..7e207ca1a222ef1782939377e7a21fa0e7191d1f 100644 (file)
@@ -32,6 +32,6 @@ VPATH=.:@srcdir@
 
 @COMMENCE@
 
-SUBDIRS = CONVERTOR PIPELINE OBJECT ENGINE GUITOOLS VISU_I VISUGUI VISU_SWIG
+SUBDIRS = CONVERTOR PIPELINE OBJECT VVTK GUITOOLS VISU_I VISUGUI VISU_SWIG ENGINE
 
 @MODULE@
index 6c2ba23cc3c08eefa0a2ac8e4e059a85804483f3..e73a5816cf1bcf9f0e85d22e54c3cc8d5167f36e 100644 (file)
@@ -32,12 +32,28 @@ VPATH=.:@srcdir@:@top_srcdir@/idl
 
 @COMMENCE@
 
-EXPORT_HEADERS = VISU_Actor.h VISU_MeshAct.h VISU_ScalarMapAct.h VISU_VectorsAct.h
+EXPORT_HEADERS = \
+       VISU_ActorFactory.h \
+       VISU_GaussPtsSettings.h \
+       VISU_GaussPtsActorFactory.h \
+       VISU_Event.h \
+       VISU_Actor.h \
+       VISU_MeshAct.h \
+       VISU_ScalarMapAct.h \
+       VISU_GaussPtsAct.h \
+       VISU_VectorsAct.h
 
 # Libraries targets
 
 LIB = libVisuObject.la
-LIB_SRC = VISU_Actor.cxx VISU_MeshAct.cxx VISU_ScalarMapAct.cxx VISU_VectorsAct.cxx
+LIB_SRC = \
+       VISU_Actor.cxx \
+       VISU_MeshAct.cxx \
+       VISU_ScalarMapAct.cxx \
+       VISU_GaussPtsDeviceActor.cxx \
+       VISU_GaussPtsSettings.cxx \
+       VISU_GaussPtsAct.cxx \
+       VISU_VectorsAct.cxx
 
 LIB_CLIENT_IDL = 
 
@@ -45,9 +61,24 @@ LIB_CLIENT_IDL =
 BIN = 
 BIN_SRC        =
 
-CPPFLAGS+= $(OCC_INCLUDES) $(VTK_INCLUDES) $(QT_INCLUDES) \
-       -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome
-LDFLAGS+= $(VTK_LIBS) -lSalomeObject -lVisuPipeLine \
-       -L${KERNEL_ROOT_DIR}/lib/salome -L${GUI_ROOT_DIR}/lib/salome
+CPPFLAGS+= \
+       $(OCC_INCLUDES) \
+       $(VTK_INCLUDES) \
+       $(BOOST_CPPFLAGS) \
+       -I${MED_ROOT_DIR}/include/salome \
+       -I${GUI_ROOT_DIR}/include/salome \
+       -I${KERNEL_ROOT_DIR}/include/salome
+
+LDFLAGS+= \
+       $(VTK_LIBS)  \
+       $(BOOST_LIBS) \
+       -L${GUI_ROOT_DIR}/lib/salome \
+       -L${KERNEL_ROOT_DIR}/lib/salome 
+
+LIBS+=  \
+       -lboost_signals-mt \
+       -lSalomeObject \
+       -lVisuPipeLine \
+       -lSVTK
 
 @CONCLUDE@
index e38b8cd3a139f4aec69ef7ec76bac64a61138d5a..90e3009f12aa22ebe0801b711da8352c92b6b8c8 100644 (file)
@@ -21,8 +21,8 @@
 //
 //
 //
-//  File   : VISU_Actor.cxx
-//  Author : Laurent CORNABE with help of Nicolas REJNERI
+//  File   : 
+//  Author : 
 //  Module : VISU
 //  $Header$
 
 #include "VTKViewer_PassThroughFilter.h"
  
 #include <stdexcept>
+#include <sstream>
 
 // VTK Includes
 #include <vtkProperty.h>
-
+#include <vtkSmartPointer.h>
+#include <vtkTextMapper.h>
+#include <vtkTextActor.h>
+#include <vtkProperty2D.h>
+#include <vtkRenderer.h>
+#include <vtkCellPicker.h>
+#include <vtkCell.h>
+#include <vtkPointPicker.h>
+#include <vtkPoints.h>
+#include <vtkInteractorStyle.h>
 #include <vtkDataSet.h>
 #include <vtkPolyData.h>
 #include <vtkUnstructuredGrid.h>
@@ -48,6 +58,8 @@
 #include <vtkGeometryFilter.h>
 #include <vtkObjectFactory.h>
 
+#include <boost/bind.hpp>
+
 #include "utilities.h"
 
 using namespace std;
@@ -60,103 +72,211 @@ static int MYDEBUG = 1;
 static int MYDEBUG = 0;
 #endif
 
-//=======================================================================
+//#define ENABLE_ANNOTATION
 
+//----------------------------------------------------------------------------
 vtkStandardNewMacro(VISU_Actor);
 
-VISU_Actor::VISU_Actor(){
-  SetDebug(MYVTKDEBUG);
-  myParent = this;
-  myPipeLine = NULL;
-  myPrs3d = NULL;
+//----------------------------------------------------------------------------
+VISU_Actor
+::VISU_Actor():
+  myIsVTKMapping(false),
+  myPrs3d(NULL),
+  myActorFactory(NULL),
+  myMapper(vtkDataSetMapper::New()),
+  myIsShrunk(false),
+  myIsShrinkable(false),
+  myShrinkFilter(VTKViewer_ShrinkFilter::New()),
+  myAnnotationMapper(vtkTextMapper::New()),
+  myAnnotationActor(vtkTextActor::New())
+{
+  if(MYDEBUG) MESSAGE("VISU_Actor::VISU_Actor - this = "<<this);
+
+  myMapper->Delete();
+  myShrinkFilter->Delete();
 
   myStoreMapping = true;
 
-  myIsShrunk = false;
-  myIsShrinkable = false;
-  myShrinkFilter = VTKViewer_ShrinkFilter::New();
   myShrinkFilter->SetStoreMapping(true);
-  SetShrinkFactor();
-  
-  myMapper = vtkDataSetMapper::New();
 
-  myIO = NULL;
-  myName = "";
+  myAnnotationMapper->Delete();
+  myAnnotationActor->SetMapper(myAnnotationMapper.GetPointer());
+
+  myAnnotationActor->Delete();
+  myAnnotationActor->SetVisibility(0);
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_Actor
+::ShallowCopy(vtkProp *prop)
+{
+  VISU_Actor *anActor = VISU_Actor::SafeDownCast(prop);
+  if(anActor != NULL){
+    setName(anActor->getName());
+    if(anActor->hasIO()) setIO(anActor->getIO());
+  }
+  Superclass::ShallowCopy(prop);
 }
 
-VISU_Actor::~VISU_Actor(){
-  SALOME_Actor::SetProperty(NULL);
+void
+VISU_Actor
+::ShallowCopyPL(VISU_PipeLine* thePipeLine)
+{
+  myPipeLine->ShallowCopy(thePipeLine);
 
-  myMapper->RemoveAllInputs();
-  myMapper->Delete();
+  vtkDataSet* aDatsSet = myMapper->GetInput();
+  GetMapper()->ShallowCopy(thePipeLine->GetMapper());
 
-  if(myPipeLine) 
-    myPipeLine->UnRegister(this);
+  // To restore mapper input from pipeline
+  myMapper->SetInput(aDatsSet);
+}
 
-  myShrinkFilter->UnRegisterAllOutputs();
-  myShrinkFilter->Delete();
+//----------------------------------------------------------------------------
+VISU_Actor
+::~VISU_Actor()
+{
+  if(MYDEBUG) MESSAGE("~VISU_Actor() - this = "<<this);
+  Superclass::SetProperty(NULL);
+  SetDebug(MYVTKDEBUG);
 }
 
-void VISU_Actor::setIO(const Handle(SALOME_InteractiveObject)& theIO){
-  SALOME_Actor::setIO(theIO); 
+//----------------------------------------------------------------------------
+void 
+VISU_Actor
+::setIO(const Handle(SALOME_InteractiveObject)& theIO)
+{
+  Superclass::setIO(theIO); 
   myName = theIO->getName(); 
 }
 
-void VISU_Actor::SetPrs3d(VISU::Prs3d_i* thePrs3d){ 
+//----------------------------------------------------------------------------
+void 
+VISU_Actor
+::SetPrs3d(VISU::Prs3d_i* thePrs3d)
+{ 
   myPrs3d = thePrs3d;
 }
 
-void VISU_Actor::SetPipeLine(VISU_PipeLine* thePipeLine) {
-  if (myPipeLine != thePipeLine){
-    if (myPipeLine != NULL) myPipeLine->UnRegister(this);
-    myPipeLine = thePipeLine;
-    if (myPipeLine != NULL) myPipeLine->Register(this);
-    this->Modified();
-    vtkMapper *aMapper = myPipeLine->GetMapper();
-    vtkDataSet *aDataSet = aMapper->GetInput();
-
-    //This code has been moved into VISU::Prs3d_i::UpdateActor() for bug 9808
-    //if(!aDataSet)
-    //  throw std::runtime_error("VISU_Actor::SetPipeLine >> There is no input data !!!");
-    //aDataSet->Update();
-    //static float eps = VTK_LARGE_FLOAT * 0.1 ;
-    //if(aDataSet->GetLength() > eps)
-    //  throw std::runtime_error("VISU_Actor::SetPipeLine >> Diagonal of the actor is too large !!!");
-    //if(!aDataSet->GetNumberOfCells())
-    //  throw std::runtime_error("VISU_Actor::SetPipeLine >> There is no visible elements");
-
-    //Bug SAL4221:  Mesh with less than 10 cells : shrink mode disable
-    //SetShrinkable(aDataSet->GetNumberOfCells() > 10);
-    SetShrinkable(thePipeLine->IsShrinkable());
-    //Now, we use vtkShrinkPolyData (not vtkShrinkFilter), 
-    //and the class there is no such limitation.
-
-    myMapper->SetInput(aDataSet);
-    SetMapper(myMapper);
-  }
+VISU::Prs3d_i* 
+VISU_Actor
+::GetPrs3d()
+{ 
+  return myPrs3d;
 }
 
-void VISU_Actor::SetParent(VISU_Actor* theParent){ 
-  myParent = theParent;
+//----------------------------------------------------------------------------
+VISU::TActorFactory* 
+VISU_Actor
+::GetFactory()
+{ 
+  return myActorFactory;
 }
 
-void VISU_Actor::SetRepresentation(int theMode) { 
-  SALOME_Actor::SetRepresentation(theMode);
-  if(myRepresentation == VTK_POINTS)
-    UnShrink();
+void
+VISU_Actor
+::SetFactory(VISU::TActorFactory* theActorFactory)
+{ 
+  using namespace VISU;
+
+  if(myActorFactory == theActorFactory)
+    return;
+  
+  if(theActorFactory)
+    myDestroySignal.connect(boost::bind(&TActorFactory::RemoveActor,
+                                       theActorFactory,
+                                       _1));
+
+  myActorFactory = theActorFactory;
 }
 
-void VISU_Actor::SetOpacity(float theValue){
-  GetProperty()->SetOpacity(theValue);
+//----------------------------------------------------------------------------
+void
+VISU_Actor
+::UpdateFromFactory()
+{
+  myActorFactory->UpdateActor(this);
+  Update();
 }
 
-float VISU_Actor::GetOpacity(){ 
-  return GetProperty()->GetOpacity();
+void
+VISU_Actor
+::RemoveFromRender()
+{
+  RemoveFromRender(GetRenderer());
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_Actor
+::SetMapperInput(vtkDataSet* theDataSet) 
+{
+  myMapper->SetInput(theDataSet);
+  SetMapper(myMapper.GetPointer());
+}
+
+void
+VISU_Actor
+::SetPipeLine(VISU_PipeLine* thePipeLine) 
+{
+  myPipeLine = thePipeLine;
+  if(thePipeLine){
+    if(vtkMapper *aMapper = myPipeLine->GetMapper()){
+      if(vtkDataSet *aDataSet = aMapper->GetInput()){
+       if(!aDataSet)
+         throw std::runtime_error("VISU_Actor::SetPipeLine >> There is no input data !!!");
+
+       aDataSet->Update();
+
+       static float EPS = VTK_LARGE_FLOAT * 0.1 ;
+       if(aDataSet->GetLength() > EPS)
+         throw std::runtime_error("VISU_Actor::SetPipeLine >> Diagonal of the actor is too large !!!");
+
+       if(!aDataSet->GetNumberOfCells())
+         throw std::runtime_error("VISU_Actor::SetPipeLine >> There is no visible elements");
+
+       SetShrinkable(thePipeLine->IsShrinkable());
+
+       SetMapperInput(aDataSet);
+      }
+    }
+  }
+  this->Modified();
 }
 
+VISU_PipeLine* 
+VISU_Actor
+::GetPipeLine() 
+{ 
+  return myPipeLine.GetPointer();
+}
+
+VISU_PipeLine* 
+VISU_Actor
+::GetCurrentPL() 
+{ 
+  return GetPipeLine();
+}
 
-void VISU_Actor::SetShrink(){
-  if(!myIsShrinkable) return;
+
+//----------------------------------------------------------------------------
+void
+VISU_Actor
+::SetRepresentation(int theMode) 
+{ 
+  Superclass::SetRepresentation(theMode);
+  if(myRepresentation == VTK_POINTS)
+    UnShrink();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_Actor
+::SetShrink()
+{
+  if(!myIsShrinkable) 
+    return;
   if(vtkDataSet* aDataSet = myPassFilter[0]->GetOutput()){
     myShrinkFilter->SetInput(aDataSet);
     myPassFilter[1]->SetInput(myShrinkFilter->GetOutput());
@@ -164,8 +284,12 @@ void VISU_Actor::SetShrink(){
   }
 }
 
-void VISU_Actor::UnShrink(){
-  if(!myIsShrunk) return;
+void
+VISU_Actor
+::UnShrink()
+{
+  if(!myIsShrunk) 
+    return;
   if(vtkDataSet* aDataSet = myPassFilter[0]->GetOutput()){
     myPassFilter[1]->SetInput(aDataSet);
     myPassFilter[1]->Modified();
@@ -174,54 +298,298 @@ void VISU_Actor::UnShrink(){
   }
 }
 
-void VISU_Actor::SetShrinkable(bool theIsShrinkable){
+bool
+VISU_Actor
+::IsShrunk()
+{
+  return myIsShrunk;
+}
+
+void
+VISU_Actor
+::SetShrinkable(bool theIsShrinkable)
+{
   myIsShrinkable = theIsShrinkable;
 }
 
-void VISU_Actor::SetShrinkFactor(float theValue){
+bool
+VISU_Actor
+::IsShrunkable() 
+{ 
+  return myIsShrinkable;
+}
+
+void
+VISU_Actor
+::SetShrinkFactor(float theValue)
+{
   myShrinkFilter->SetShrinkFactor(theValue);
   Modified();
 }
 
-float VISU_Actor::GetShrinkFactor(){
+float
+VISU_Actor
+::GetShrinkFactor()
+{
   return myShrinkFilter->GetShrinkFactor();
 }
 
 
 //----------------------------------------------------------------------------
-void VISU_Actor::SetVisibility(int theMode){
-  SALOME_Actor::SetVisibility(theMode);
+void
+VISU_Actor
+::SetOpacity(float theValue)
+{
+  GetProperty()->SetOpacity(theValue);
 }
 
-int VISU_Actor::GetVisibility(){
-  return SALOME_Actor::GetVisibility();
+float
+VISU_Actor
+::GetOpacity()
+{ 
+  return GetProperty()->GetOpacity();
 }
 
-void VISU_Actor::SetLineWidth(float theLineWidth){
+void
+VISU_Actor
+::SetLineWidth(float theLineWidth)
+{
   GetProperty()->SetLineWidth(theLineWidth);
 }
 
-float VISU_Actor::GetLineWidth(){
+float
+VISU_Actor
+::GetLineWidth()
+{
   return GetProperty()->GetLineWidth();
 }
 
+//==================================================================
+// function: AddToRender
+// purpose :
+//==================================================================
+void
+VISU_Actor
+::AddToRender(vtkRenderer* theRenderer)
+{
+  Superclass::AddToRender(theRenderer);
+  theRenderer->AddActor(myAnnotationActor.GetPointer());
+}
+
+//==================================================================
+// function: RemoveFromRender
+// purpose :
+//==================================================================
+void
+VISU_Actor
+::RemoveFromRender(vtkRenderer* theRenderer)
+{
+  theRenderer->RemoveActor(myAnnotationActor.GetPointer());
+  Superclass::RemoveFromRender(theRenderer); 
+  myDestroySignal(this);
+}
+
 //----------------------------------------------------------------------------
-void VISU_Actor::ShallowCopy(vtkProp *prop){
-  VISU_Actor *anActor = VISU_Actor::SafeDownCast(prop);
-  if(anActor != NULL){
-    setName(anActor->getName());
-    if(anActor->hasIO()) setIO(anActor->getIO());
-  }
-  SALOME_Actor::ShallowCopy(prop);
+void 
+VISU_Actor
+::SetVTKMapping(bool theIsVTKMapping)
+{
+  myIsVTKMapping = theIsVTKMapping;
+}
+
+bool 
+VISU_Actor
+::IsVTKMapping() const
+{
+  return myIsVTKMapping;
 }
 
 //----------------------------------------------------------------------------
-int VISU_Actor::GetNodeObjId(int theVtkID){
-  if ( myIsShrunk ) 
-    return myShrinkFilter->GetNodeObjId(theVtkID);
-  return theVtkID;
+vtkDataSet* 
+VISU_Actor
+::GetInput()
+{
+  if(myIsVTKMapping)
+    return Superclass::GetInput();
+
+  return GetCurrentPL()->GetOutput();
 }
 
-int VISU_Actor::GetElemObjId(int theVtkID){
-  return myGeomFilter->GetElemObjId(theVtkID);
+//----------------------------------------------------------------------------
+vtkIdType
+VISU_Actor
+::GetNodeObjId(vtkIdType theID)
+{
+  if(myIsVTKMapping)
+    return Superclass::GetNodeObjId(theID);
+
+  vtkIdType anID = myGeomFilter->GetNodeObjId(theID);
+
+  if(myIsShrunk)
+   anID = myShrinkFilter->GetNodeObjId(anID);
+
+  return GetCurrentPL()->GetNodeObjID(anID);
+}
+
+vtkIdType
+VISU_Actor
+::GetNodeVTKID(vtkIdType theID)
+{
+  if(myIsVTKMapping)
+    return theID;
+
+  return GetCurrentPL()->GetNodeVTKID(theID);
+}
+
+float*
+VISU_Actor
+::GetNodeCoord(int theObjID)
+{
+  if(myIsVTKMapping)
+    return Superclass::GetNodeCoord(theObjID);
+
+  return GetCurrentPL()->GetNodeCoord(theObjID);
+}
+
+
+//----------------------------------------------------------------------------
+vtkIdType
+VISU_Actor
+::GetElemObjId(vtkIdType theID)
+{
+  if(myIsVTKMapping)
+    return Superclass::GetElemObjId(theID);
+
+  vtkIdType anID = myGeomFilter->GetElemObjId(theID);
+
+  if(myIsShrunk)
+   anID = myShrinkFilter->GetElemObjId(anID);
+
+  return GetCurrentPL()->GetElemObjID(anID);
+}
+
+vtkIdType
+VISU_Actor
+::GetElemVTKID(vtkIdType theID)
+{
+  if(myIsVTKMapping)
+    return theID;
+
+  return GetCurrentPL()->GetElemVTKID(theID);
+}
+
+vtkCell* 
+VISU_Actor
+::GetElemCell(vtkIdType theObjID)
+{
+  if(myIsVTKMapping)
+    return Superclass::GetElemCell(theObjID);
+
+  return GetCurrentPL()->GetElemCell(theObjID);
+}
+
+
+//----------------------------------------------------------------------------
+bool
+VISU_Actor
+::PreHighlight(vtkInteractorStyle* theInteractorStyle, 
+              SVTK_SelectionEvent* theSelectionEvent,
+              bool theIsHighlight)
+{
+  bool aRet = Superclass::PreHighlight(theInteractorStyle,
+                                      theSelectionEvent,
+                                      theIsHighlight);
+#ifndef ENABLE_ANNOTATION
+  return aRet;
+#endif   
+  //
+  myAnnotationActor->SetVisibility(0);
+  if(theIsHighlight){
+    switch(mySelectionMode){
+    case CellSelection:{ 
+      vtkRenderer* aRenderer = theInteractorStyle->GetCurrentRenderer();
+      myCellPicker->Pick(theSelectionEvent->myX, 
+                        theSelectionEvent->myY, 
+                        0.0, 
+                        aRenderer);
+
+      if(myCellPicker->GetActor() != this)
+       return false;
+      
+      vtkIdType aVTKId = myCellPicker->GetCellId();
+      if(aVTKId >= 0  && mySelector->IsValid(this,aVTKId,true) && hasIO()){
+       vtkIdType anObjId = GetElemObjId(aVTKId);
+       if(vtkCell* aCell = GetElemCell(anObjId)){
+         vtkPoints* aPts = aCell->GetPoints();
+         if(int aNbPts = aCell->GetNumberOfPoints()){
+           float aCoord[3] = {0.0, 0.0, 0.0};
+           for(int i = 0; i < aNbPts; i++){
+             float *aPntCoord = aPts->GetPoint(i); 
+             aCoord[0] += aPntCoord[0];
+             aCoord[1] += aPntCoord[1];
+             aCoord[2] += aPntCoord[2];
+           }
+           // Display coordinates
+           float aWorldCoord[4] = {aCoord[0]/aNbPts, aCoord[1]/aNbPts, aCoord[2]/aNbPts, 1.0};
+           aRenderer->SetWorldPoint(aWorldCoord);
+           aRenderer->WorldToDisplay();
+           float aSelectionPoint[3];
+           aRenderer->GetDisplayPoint(aSelectionPoint);
+           myAnnotationActor->SetPosition(aSelectionPoint);
+           //
+           // To prepare the annotation text
+           std::ostringstream aStr;
+           aStr<<"Cell ID: "<< anObjId;
+           std::string aString = aStr.str();
+           myAnnotationMapper->SetInput(aString.c_str());
+           
+           myAnnotationActor->SetVisibility(1);
+           return true;
+         }
+       }
+      }
+      break;
+    }
+    case NodeSelection:{ 
+      vtkRenderer* aRenderer = theInteractorStyle->GetCurrentRenderer();
+      myPointPicker->Pick(theSelectionEvent->myX, 
+                         theSelectionEvent->myY, 
+                         0.0, 
+                         aRenderer);
+      
+      if(myPointPicker->GetActor() != this)
+       return false;
+
+      vtkIdType aVtkId = myPointPicker->GetPointId();
+      if(aVtkId >= 0  && mySelector->IsValid(this,aVtkId,true) && hasIO()){
+       vtkIdType anObjId = GetNodeObjId( aVtkId );
+       if(float* aCoord = GetNodeCoord(anObjId)){
+         // Display coordinates
+         float aWorldCoord[4] = {aCoord[0], aCoord[1], aCoord[2], 1.0};
+         aRenderer->SetWorldPoint(aWorldCoord);
+         aRenderer->WorldToDisplay();
+         float aSelectionPoint[3];
+         aRenderer->GetDisplayPoint(aSelectionPoint);
+         myAnnotationActor->SetPosition(aSelectionPoint);
+         //
+         // To prepare the annotation text
+         std::ostringstream aStr;
+         aStr<<"Node ID: "<< anObjId;
+         std::string aString = aStr.str();
+         myAnnotationMapper->SetInput(aString.c_str());
+         
+         myAnnotationActor->SetVisibility(1);
+         return true;
+       }
+      }
+      break;
+    }
+    case EdgeOfCellSelection:
+      break;
+    default:
+      break;
+    }
+  }
+
+  return aRet;
 }
index 01cf5c67baa6aae216c1a3ccd49320731dfede90..ffeab72e279cbafa2fc4afd5f775057e9eb0abad 100644 (file)
@@ -21,8 +21,8 @@
 //
 //
 //
-//  File   : VISU_Actor.h
-//  Author : Laurent CORNABE with the help of Nicolas REJNERI
+//  File   : 
+//  Author : 
 //  Module : VISU
 //  $Header$
 
 #define VISU_ACTOR_H
 
 #include "SALOME_Actor.h"
+#include "VISU_ActorFactory.h"
 
 #include <string>
+#include <vtkSmartPointer.h>
+#include <boost/signals/signal1.hpp>
+#include <boost/signals/trackable.hpp>
 
 class vtkProp;
 class vtkProperty;
 class vtkDataSetMapper;
-
+class vtkTextMapper;
+class vtkTextActor;
+class vtkInteractorStyle;
 class VTKViewer_ShrinkFilter;
 class VISU_PipeLine;
 
-namespace VISU { 
-  class Prs3d_i;
-}
-
 #ifdef _WIN_32
 #define VTKOCC_EXPORT __declspec (dllexport)
 #else
 #define VTKOCC_EXPORT VTK_EXPORT
 #endif
 
-class VTKOCC_EXPORT VISU_Actor : public SALOME_Actor {
+namespace VISU 
+{
+  class Prs3d_i;
+}
+
+//----------------------------------------------------------------------------
+class VTKOCC_EXPORT VISU_Actor : 
+  public SALOME_Actor,
+  public boost::bsignals::trackable
+{
  public:
   vtkTypeMacro(VISU_Actor,SALOME_Actor);
-  void ShallowCopy(vtkProp *prop);
-  static VISU_Actor* New();
-  virtual ~VISU_Actor();
-
-  virtual void setIO(const Handle(SALOME_InteractiveObject)& theIO);
-
-  VISU::Prs3d_i* GetPrs3d(){ return myPrs3d;}
-  virtual void SetPrs3d(VISU::Prs3d_i* thePrs3d);
-
-  virtual VISU_PipeLine* GetPipeLine() { return myPipeLine;}
-  virtual void SetPipeLine(VISU_PipeLine* thePipeLine) ;
-
-  VISU_Actor* GetParent(){ return myParent;}
-  virtual void SetParent(VISU_Actor* theParent);
 
-  virtual void SetOpacity(float theValue);
-  virtual float GetOpacity();
-
-  virtual void SetRepresentation(int theMode);
-
-  virtual bool IsShrunkable() { return myIsShrinkable;}
-  virtual bool IsShrunk() { return myIsShrunk;}
-  virtual void SetShrink();
-  virtual void UnShrink(); 
-
-  virtual void SetShrinkable(bool theIsShrinkable);
-  virtual void SetShrinkFactor(float theFactor = 0.8); 
-  virtual float GetShrinkFactor();
-
-  virtual void SetVisibility(int theMode);
-  virtual int GetVisibility();
-
-  virtual void SetLineWidth(float theLineWidth);
-  virtual float GetLineWidth();
+  static 
+  VISU_Actor* 
+  New();
+
+  void
+  ShallowCopy(vtkProp *prop);
+
+  virtual
+  void
+  ShallowCopyPL(VISU_PipeLine* thePipeLine);
+
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  setIO(const Handle(SALOME_InteractiveObject)& theIO);
+
+  //----------------------------------------------------------------------------
+  VISU::Prs3d_i* 
+  GetPrs3d();
+
+  virtual
+  void
+  SetPrs3d(VISU::Prs3d_i* thePrs3d);
+
+  //----------------------------------------------------------------------------
+  VISU::TActorFactory* 
+  GetFactory();
+
+  virtual
+  void
+  SetFactory(VISU::TActorFactory* theActorFactory);
+
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  UpdateFromFactory();
+
+  virtual
+  void
+  RemoveFromRender();
+
+  //----------------------------------------------------------------------------
+  virtual
+  VISU_PipeLine* 
+  GetPipeLine();
+
+  virtual 
+  void
+  SetPipeLine(VISU_PipeLine* thePipeLine);
+
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  SetRepresentation(int theMode);
+
+  //----------------------------------------------------------------------------
+  virtual
+  bool
+  IsShrunkable();
+
+  virtual
+  bool
+  IsShrunk();
+
+  virtual
+  void
+  SetShrink();
+
+  virtual
+  void
+  UnShrink(); 
+
+  virtual
+  void
+  SetShrinkable(bool theIsShrinkable);
+
+  virtual
+  void
+  SetShrinkFactor(float theFactor = 0.8); 
+
+  virtual
+  float
+  GetShrinkFactor();
+
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  SetOpacity(float theValue);
+
+  virtual
+  float
+  GetOpacity();
+
+  virtual
+  void
+  SetLineWidth(float theLineWidth);
+
+  virtual
+  float
+  GetLineWidth();
  
-  virtual int GetNodeObjId(int theVtkID);
-  virtual int GetElemObjId(int theVtkID);
-
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  AddToRender( vtkRenderer* ); 
+
+  virtual
+  void
+  RemoveFromRender( vtkRenderer* );
+
+  //----------------------------------------------------------------------------
+  virtual
+  bool
+  PreHighlight(vtkInteractorStyle* theInteractorStyle, 
+              SVTK_SelectionEvent* theSelectionEvent,
+              bool theIsHighlight);
+
+  virtual
+  void 
+  SetVTKMapping(bool theIsVTKMapping); 
+
+  virtual
+  bool 
+  IsVTKMapping() const;
+
+  virtual
+  vtkDataSet* 
+  GetInput(); 
+
+  //----------------------------------------------------------------------------
+  virtual
+  vtkIdType
+  GetNodeObjId(vtkIdType theID);
+
+  virtual
+  vtkIdType
+  GetNodeVTKID(vtkIdType theID);
+
+  virtual
+  float* 
+  GetNodeCoord(vtkIdType theObjID);
+
+  virtual
+  vtkIdType
+  GetElemObjId(vtkIdType theID);
+
+  virtual
+  vtkIdType
+  GetElemVTKID(vtkIdType theID);
+
+  virtual
+  vtkCell* 
+  GetElemCell(vtkIdType theObjID);
+
+  //----------------------------------------------------------------------------
  protected:
   VISU_Actor();
+
+  virtual
+  ~VISU_Actor();
  
-  VISU_Actor* myParent;
+  virtual 
+  void
+  SetMapperInput(vtkDataSet* theDataSet);
+
+  virtual
+  VISU_PipeLine* 
+  GetCurrentPL();
+
+  //----------------------------------------------------------------------------
+  bool myIsVTKMapping;
   VISU::Prs3d_i* myPrs3d;
-  VISU_PipeLine* myPipeLine;
-  vtkDataSetMapper* myMapper;
+  vtkSmartPointer<VISU_PipeLine> myPipeLine;
+  vtkSmartPointer<vtkDataSetMapper> myMapper;
 
-  VTKViewer_ShrinkFilter* myShrinkFilter;
+  VISU::TActorFactory* myActorFactory;
+  boost::signal1<void,VISU_Actor*> myDestroySignal;
+
+  vtkSmartPointer<VTKViewer_ShrinkFilter> myShrinkFilter;
   bool myIsShrinkable;
   bool myIsShrunk;
+
+  vtkSmartPointer<vtkTextMapper> myAnnotationMapper;
+  vtkSmartPointer<vtkTextActor>  myAnnotationActor;
 };
 
 #endif //VISU_ACTOR_H
diff --git a/src/OBJECT/VISU_ActorFactory.h b/src/OBJECT/VISU_ActorFactory.h
new file mode 100644 (file)
index 0000000..97cee60
--- /dev/null
@@ -0,0 +1,68 @@
+//  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   : 
+//  Author : 
+//  Module : VISU
+//  $Header$
+
+#ifndef VISU_ACTOR_FACTORY_H
+#define VISU_ACTOR_FACTORY_H
+
+#include <boost/signals/trackable.hpp>
+
+class VISU_Actor;
+
+//----------------------------------------------------------------------------
+namespace VISU 
+{ 
+  //! This class defines an abstaract interface to manage actors
+  /*!
+    Actors are created by corresponding presentations and published in the defined view.
+    Each actor can be published only into one view but one presentation can have many actors.
+    Due to the complexity of the actor presentation interaction the new interface defines common 
+    and simply way to manage them properly.
+    @note
+    This interface inherits from boost::bsignals::trackable in order to provide automatic 
+    diconnection from defined signals if the object is destroyed.
+  */
+  struct TActorFactory: public virtual boost::bsignals::trackable
+  {
+    //! Just to make this class virtual
+    virtual 
+    ~TActorFactory()
+    {}
+
+    //! To update the actor
+    virtual 
+    void
+    UpdateActor(VISU_Actor* theActor) = 0;
+
+    //! To unregister the actor
+    virtual 
+    void
+    RemoveActor(VISU_Actor* theActor) = 0;
+  };
+}
+
+#endif //VISU_ACTOR_FACTORY_H
diff --git a/src/OBJECT/VISU_Event.h b/src/OBJECT/VISU_Event.h
new file mode 100644 (file)
index 0000000..7c613cf
--- /dev/null
@@ -0,0 +1,47 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   : 
+//  Author : 
+//  Module : SALOME
+//  $Header$
+
+#ifndef VISU_Event_h
+#define VISU_Event_h
+
+#include "SVTK_Event.h"
+#include "SVTK_Selection.h"
+
+namespace VISU
+{
+  enum Event 
+  {
+    SetSMDecreaseMagnificationEvent = SVTK::LastEvent + 100, 
+    SetSMIncreaseMagnificationEvent,
+    LastEvent
+  };
+}
+
+const Selection_Mode GaussPointSelection = 100;
+  
+#endif
diff --git a/src/OBJECT/VISU_GaussPtsAct.cxx b/src/OBJECT/VISU_GaussPtsAct.cxx
new file mode 100644 (file)
index 0000000..f5da6b2
--- /dev/null
@@ -0,0 +1,1511 @@
+//  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   : VISU_MeshAct.hxx
+//  Author : Laurent CORNABE with the help of Nicolas REJNERI
+//  Module : VISU
+//  $Header$
+
+#include "VISU_GaussPtsAct.h"
+#include "VISU_GaussPointsPL.hxx"
+#include "VISU_GaussPtsSettings.h"
+#include "VISU_GaussPtsDeviceActor.h"
+#include "VISU_WidgetCtrl.hxx"
+#include "VISU_SphereWidget.hxx"
+#include "VISU_OpenGLPointSpriteMapper.hxx"
+#include "VISU_ScalarBarCtrl.hxx"
+#include "VISU_ScalarBarActor.hxx"
+
+#include "SALOME_ExtractGeometry.h"
+
+#include "VISU_Event.h" 
+#include "SVTK_Actor.h"
+
+#include <vtkCamera.h>
+#include <vtkRenderer.h>
+#include <vtkPointPicker.h>
+#include <vtkScalarBarWidget.h>
+#include <vtkScalarBarActor.h>
+#include <vtkTextMapper.h>
+#include <vtkTextProperty.h>
+
+#include <vtkCellData.h>
+#include <vtkPointData.h>
+
+#include <vtkDataArray.h>
+#include <vtkFloatArray.h>
+
+#include <vtkSphereSource.h>
+#include <vtkPolyDataMapper.h>
+#include <vtkPolyData.h>
+#include <vtkActor.h>
+
+#include <vtkObjectFactory.h>
+#include <vtkCallbackCommand.h>
+#include <vtkInteractorStyle.h>
+#include <vtkRenderWindowInteractor.h>
+#include <vtkOutlineSource.h>
+
+#include <sstream>
+#include <boost/bind.hpp>
+
+#include <vtkUnstructuredGrid.h>
+#include <vtkDataSetMapper.h>
+#include <vtkRenderWindow.h>
+#include <vtkCellArray.h>
+#include <vtkCell.h>
+#include <vtkMath.h>
+
+#include <vtkViewport.h>
+
+#include "utilities.h"
+
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+static int MYDEBUG1 = 0;
+static int MYDEBUG2 = 0;
+#else
+static int MYDEBUG = 0;
+static int MYDEBUG1 = 0;
+static int MYDEBUG2 = 0;
+#endif
+
+
+//============================================================================
+vtkStandardNewMacro(VISU_GaussPtsAct);
+
+//----------------------------------------------------------------------------
+VISU_GaussPtsAct
+::VISU_GaussPtsAct():
+  myEventCallbackCommand(vtkCallbackCommand::New()),
+  myPriority(0.0),
+  myDeviceActor(VISU_GaussPtsDeviceActor::New()),
+  myWidgetCtrl(NULL),
+  myGaussPointsPL(NULL),
+  myLastObjPointID(-1),
+  myTextActor(VISU_FramedTextActor::New()),
+  myCursorPyramid(VISU_CursorPyramid::New()),
+  myCursorPyramidSelected(VISU_CursorPyramid::New()),
+  myCellSource(vtkUnstructuredGrid::New()),
+  myCellActor(SVTK_Actor::New()),
+  myScalarBarCtrl(VISU_ScalarBarCtrl::New()),
+  myBarVisibility(true),
+  myPickingSettings(NULL),
+  myInsideCursorSettings(NULL),
+  myCurrentPL(NULL)
+{
+  if(MYDEBUG) MESSAGE("VISU_GaussPtsAct::VISU_GaussPtsAct - this = "<<this);
+
+  myEventCallbackCommand->Delete();
+  myDeviceActor->Delete();
+  myTextActor->Delete();
+
+  myCursorPyramid->Delete();
+  myCursorPyramid->SetPickable(0);
+  myCursorPyramid->SetVisibility(0);
+
+  myCursorPyramidSelected->Delete();
+  myCursorPyramidSelected->SetPickable(0);
+  myCursorPyramidSelected->SetVisibility(0);
+
+  myCellSource->Delete();
+  myCellActor->Delete();
+
+  myEventCallbackCommand->SetClientData(this); 
+  myEventCallbackCommand->SetCallback(VISU_GaussPtsAct::ProcessEvents);
+
+  myDeviceActor->SetProperty(GetProperty());
+  myDeviceActor->SetVisibility(true);
+  myDeviceActor->SetPickable(false);
+
+  myTextActor->SetVisibility(false);
+  myTextActor->SetPickable(false);
+
+  myCellSource->Allocate();
+  myCellActor->Initialize();
+  myCellActor->SetRepresentation(VTK_WIREFRAME);
+  myCellActor->SetSource(myCellSource.GetPointer());
+  
+  myCellActor->SetVisibility(0);
+  myCellActor->SetPickable(0);
+  myCellActor->GetProperty()->SetAmbient(1.0);
+  myCellActor->GetProperty()->SetDiffuse(0.0);
+
+  myScalarBarCtrl->Delete();
+}
+
+VISU_GaussPtsAct
+::~VISU_GaussPtsAct()
+{
+  if(MYDEBUG) MESSAGE("VISU_GaussPtsAct::~VISU_GaussPtsAct - this = "<<this);
+  SetWidgetCtrl(NULL);
+  SetInteractor(NULL);
+  SetPickingSettings(NULL);
+  SetInsideCursorSettings(NULL);
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct
+::SetPipeLine(VISU_PipeLine* thePipeLine) 
+{
+  if(MYDEBUG) MESSAGE("VISU_GaussPtsAct::SetPipeLine - this = "<<this);
+
+  myGaussPointsPL = dynamic_cast<VISU_GaussPointsPL*>(thePipeLine);
+
+  Superclass::SetPipeLine(thePipeLine);
+}
+
+VISU_GaussPointsPL*
+VISU_GaussPtsAct
+::GetGaussPointsPL()
+{
+  return myGaussPointsPL.GetPointer();
+}
+
+void
+VISU_GaussPtsAct
+::ShallowCopyPL(VISU_PipeLine* thePipeLine)
+{
+  if(MYDEBUG) MESSAGE("VISU_GaussPtsAct::ShallowCopyPL - this = "<<this);
+
+  Superclass::ShallowCopyPL(thePipeLine);
+
+  UpdateInsideCursorSettings();
+
+  Highlight(isHighlighted());
+}
+
+
+//----------------------------------------------------------------------------
+vtkMapper* 
+VISU_GaussPtsAct
+::GetMapper()
+{
+  myMapper->Update();
+  return Superclass::GetMapper();
+}
+
+float* 
+VISU_GaussPtsAct
+::GetBounds()
+{
+  return GetMapper()->GetBounds();
+}
+
+vtkDataSet* 
+VISU_GaussPtsAct
+::GetInput()
+{
+  return GetMapper()->GetInput();
+}
+
+VISU_PipeLine* 
+VISU_GaussPtsAct
+::GetCurrentPL() 
+{ 
+  return myCurrentPL;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct
+::AddToRender(vtkRenderer* theRenderer)
+{
+  if(MYDEBUG) MESSAGE("VISU_GaussPtsAct::AddToRender - this = "<<this);
+
+  Superclass::AddToRender(theRenderer);
+
+  myDeviceActor->AddToRender(theRenderer);
+
+  theRenderer->AddActor(myTextActor.GetPointer());
+  theRenderer->AddActor(myCellActor.GetPointer());
+
+  myCursorPyramid->AddToRender(theRenderer);
+  myCursorPyramidSelected->AddToRender(theRenderer);
+  myScalarBarCtrl->AddToRender(theRenderer);
+}
+
+void 
+VISU_GaussPtsAct
+::RemoveFromRender(vtkRenderer* theRenderer)
+{
+  if(MYDEBUG) MESSAGE("VISU_GaussPtsAct::RemoveFromRender - this = "<<this);
+
+  Superclass::RemoveFromRender(theRenderer);
+
+  myDeviceActor->RemoveFromRender(theRenderer);
+  
+  theRenderer->RemoveActor(myTextActor.GetPointer());
+  theRenderer->RemoveActor(myCellActor.GetPointer());
+  
+  myCursorPyramid->RemoveFromRender(theRenderer);
+  myCursorPyramidSelected->RemoveFromRender(theRenderer);
+  myScalarBarCtrl->RemoveFromRender(theRenderer);
+}
+
+void 
+VISU_GaussPtsAct
+::SetTransform(VTKViewer_Transform* theTransform)
+{
+  Superclass::SetTransform(theTransform);
+
+  myDeviceActor->SetTransform(theTransform);
+}
+
+int
+VISU_GaussPtsAct
+::RenderOpaqueGeometry(vtkViewport *viewport)
+{
+  return 1;
+}
+
+int
+VISU_GaussPtsAct
+::RenderTranslucentGeometry(vtkViewport *viewport)
+{
+  return 1;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct
+::SetWidgetCtrl(VISU_WidgetCtrl* theWidgetCtrl)
+{
+  if(myWidgetCtrl == theWidgetCtrl)
+    return;
+
+  if(MYDEBUG) 
+    MESSAGE("VISU_GaussPtsAct::SetWidgetCtrl - this = "<<this<<"; theWidget = "<<theWidgetCtrl);
+
+  if(myWidgetCtrl)
+    myWidgetCtrl->RemoveObserver(myEventCallbackCommand.GetPointer());
+
+  if(theWidgetCtrl){
+    theWidgetCtrl->AddObserver(vtkCommand::EnableEvent, 
+                              myEventCallbackCommand.GetPointer(), 
+                              myPriority);
+    theWidgetCtrl->AddObserver(vtkCommand::DisableEvent, 
+                              myEventCallbackCommand.GetPointer(), 
+                              myPriority);
+    theWidgetCtrl->AddObserver(vtkCommand::StartInteractionEvent, 
+                              myEventCallbackCommand.GetPointer(), 
+                              myPriority);
+    theWidgetCtrl->AddObserver(vtkCommand::EndInteractionEvent, 
+                              myEventCallbackCommand.GetPointer(), 
+                              myPriority);
+  }
+
+  myWidgetCtrl = theWidgetCtrl;
+}
+
+bool
+VISU_GaussPtsAct
+::GetChangeMagnification()
+{
+  return myChangeMagnification;
+}
+
+void
+VISU_GaussPtsAct
+::ChangeMagnification( bool up )
+{
+  myEventCallbackCommand->SetAbortFlag(1);
+
+  float aMagnification = myInsideCursorSettings->GetMagnification();
+  float anIncrement = myInsideCursorSettings->GetIncrement();
+  float coefficient = up ? anIncrement : 1 / anIncrement;
+
+  myInsideCursorSettings->SetMagnification( aMagnification * coefficient );
+  myInsideCursorSettings->InvokeEvent(VISU::UpdateFromSettingsEvent,NULL);
+
+  Update();
+}
+
+//----------------------------------------------------------------------------
+namespace
+{
+  VISU_GaussPointsPL*
+  CreatePipeLine(VISU_GaussPointsPL* thePipeLine)
+  {
+    VISU_GaussPointsPL* aPipeLine = VISU_GaussPointsPL::New();
+    aPipeLine->SetGaussPtsIDMapper(thePipeLine->GetGaussPtsIDMapper());
+    aPipeLine->ShallowCopy(thePipeLine);
+    aPipeLine->Update();
+    return aPipeLine;
+  }
+}
+
+void
+VISU_GaussPtsAct
+::SetMapperInput(vtkDataSet* theDataSet) 
+{
+  if(MYDEBUG) MESSAGE("VISU_GaussPtsAct::SetMapperInput - this = "<<this);
+
+  myDeviceActor->SetPipeLine(GetGaussPointsPL());
+  myCurrentPL = myDeviceActor->GetPipeLine();
+
+  myMapper->SetInput(myCurrentPL->GetPickableDataSet());
+  SetMapper(myMapper.GetPointer());
+}
+
+
+//----------------------------------------------------------------------------
+namespace
+{
+  inline  
+  float 
+  GetRadius(vtkIdType theVTKID,
+           vtkDataArray *theScalarArray,
+           VISU_GaussPointsPL* theGaussPointsPL)
+  {
+    float aRadius = 0.5;
+    if(theGaussPointsPL->GetPSMapper()->GetPointSpriteMode() == 1) // Geometry mode
+      aRadius *= theGaussPointsPL->GetSize() * theGaussPointsPL->GetAverageCellSize();
+    else if(theGaussPointsPL->GetBicolor()){
+      float aVal = theScalarArray->GetTuple1(theVTKID);
+      if(aVal > 0.0)
+       aRadius *= theGaussPointsPL->GetMaxSize();
+      else
+       aRadius *= theGaussPointsPL->GetMinSize();
+      aRadius *= theGaussPointsPL->GetAverageCellSize();
+    }else
+      aRadius *= theGaussPointsPL->GetPointSize(theVTKID,theScalarArray);
+
+    return aRadius;
+  }
+}
+
+float
+VISU_GaussPtsAct
+::GetRadius(vtkIdType theObjID,
+           vtkIdType theVTKID,
+           vtkDataArray *theScalarArray)
+{
+  return ::GetRadius(theVTKID,theScalarArray,myDeviceActor->GetPipeLine());
+}
+
+//----------------------------------------------------------------------------
+float 
+VISU_GaussPtsAct
+::GetMagnification(vtkIdType theObjID)
+{
+  return myDeviceActor->GetPipeLine()->GetMagnification();
+}
+
+
+//----------------------------------------------------------------------------
+namespace
+{
+  inline  
+  float 
+  GetClamp(VISU_GaussPointsPL* theGaussPointsPL)
+  {
+    float aClamp = theGaussPointsPL->GetClamp();
+    if(theGaussPointsPL->GetPrimitiveType() == VISU_OpenGLPointSpriteMapper::GeomSphere)
+      return -aClamp;
+    return aClamp;
+  }
+}
+
+float 
+VISU_GaussPtsAct
+::GetClamp(vtkIdType theObjID)
+{
+  return ::GetClamp(myDeviceActor->GetPipeLine());
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct
+::SetFactory(VISU::TActorFactory* theActorFactory)
+{ 
+  using namespace VISU;
+  myGaussPtsActorFactory = dynamic_cast<TGaussPtsActorFactory*>(theActorFactory);
+  myUpdatePrs3dSignal.connect(boost::bind(&TGaussPtsActorFactory::UpdateFromActor,
+                                         myGaussPtsActorFactory,
+                                         _1));
+  Superclass::SetFactory(theActorFactory);
+}
+
+VISU::TGaussPtsActorFactory*
+VISU_GaussPtsAct
+::GetGaussPtsFactory()
+{
+  return myGaussPtsActorFactory;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct
+::SetVisibility(int theMode)
+{
+  Superclass::SetVisibility(theMode);
+  myScalarBarCtrl->SetVisibility(theMode);
+  Highlight(isHighlighted());
+}
+
+int
+VISU_GaussPtsAct
+::IsSegmentationEnabled()
+{
+  return myWidgetCtrl  && myWidgetCtrl->GetEnabled();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct
+::SetBarVisibility(bool theMode)
+{
+  myBarVisibility = theMode;
+  myScalarBarCtrl->SetCtrlVisibility(theMode); 
+  myScalarBarCtrl->SetVisibility(GetVisibility()); 
+}
+
+bool
+VISU_GaussPtsAct
+::GetBarVisibility()
+{ 
+  return myBarVisibility;
+}
+
+VISU_ScalarBarCtrl* 
+VISU_GaussPtsAct
+::GetScalarBarCtrl()
+{
+  return myScalarBarCtrl.GetPointer();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct
+::SetInteractor(vtkRenderWindowInteractor* theInteractor)
+{
+  if(theInteractor == myInteractor)
+    return;
+
+  if(myInteractor)
+    myInteractor->RemoveObserver(myEventCallbackCommand.GetPointer());
+  
+  if(theInteractor){
+    theInteractor->AddObserver(vtkCommand::CharEvent, 
+                              myEventCallbackCommand.GetPointer(), 
+                              myPriority);
+    theInteractor->AddObserver(VISU::SetSMDecreaseMagnificationEvent, 
+                              myEventCallbackCommand.GetPointer(), 
+                              myPriority);
+    theInteractor->AddObserver(VISU::SetSMIncreaseMagnificationEvent, 
+                              myEventCallbackCommand.GetPointer(), 
+                              myPriority);
+  }
+  Superclass::SetInteractor(theInteractor);
+
+  Modified();
+}
+//-------------------------------------------------------------------------
+void 
+VISU_GaussPtsAct
+::ProcessEvents(vtkObject* vtkNotUsed(theObject), 
+               unsigned long theEvent,
+               void* theClientData, 
+               void* vtkNotUsed(theCallData))
+{
+  if(vtkObject* anObject = reinterpret_cast<vtkObject*>(theClientData))
+    if(VISU_GaussPtsAct* self = dynamic_cast<VISU_GaussPtsAct*>(anObject)) {
+      if(theEvent == VISU::UpdateInsideSettingsEvent)
+       self->UpdateInsideCursorSettings();
+      else
+       self->OnInteractorEvent(theEvent);
+    }
+}
+
+//-------------------------------------------------------------------------
+void
+VISU_GaussPtsAct
+::OnInteractorEvent(unsigned long theEvent)
+{
+  switch(theEvent){
+  case vtkCommand::CharEvent: {
+    switch(myInteractor->GetKeyCode()) {
+    case 'M' :
+    case 'm' :
+    {
+      if( myWidgetCtrl->GetEnabled() )
+      {
+       this->ChangeMagnification( myInteractor->GetShiftKey() );
+       return;
+      }
+
+      myChangeMagnification = myInteractor->GetShiftKey();
+      break;
+    }
+    case 'D' :
+    case 'd' :
+    {
+      if( myWidgetCtrl->GetEnabled() && myWidgetCtrl->IsSphereActive() )
+      {
+       VISU_SphereWidget* aSphereWidget = myWidgetCtrl->GetSphereWidget();
+       aSphereWidget->ChangeRadius( myInteractor->GetShiftKey() );
+       myWidgetCtrl->InvokeEvent(vtkCommand::EndInteractionEvent,NULL);
+       myWidgetCtrl->GetInteractor()->Render();
+      }
+      return;
+    }
+    default:
+      return;
+    }
+    myUpdatePrs3dSignal(this);
+    break;
+  }
+  case VISU::SetSMDecreaseMagnificationEvent: 
+  case VISU::SetSMIncreaseMagnificationEvent: 
+    myChangeMagnification = theEvent == VISU::SetSMIncreaseMagnificationEvent;
+    myUpdatePrs3dSignal(this);
+    break;
+  case VISU::UpdatePickingSettingsEvent:
+    UpdatePickingSettings();
+    break;
+  case vtkCommand::EndInteractionEvent:
+  case vtkCommand::EnableEvent:
+  case vtkCommand::DisableEvent: 
+    myCurrentPL->GetMapper()->Update();
+    Highlight(isHighlighted());
+    break;
+  default:
+    break;
+  }
+}
+
+//----------------------------------------------------------------------------
+bool VISU_GaussPtsAct::IsInfinitive()
+{
+  if(vtkMapper* aMapper = myDeviceActor->GetMapper()){
+    if(vtkDataSet* aDataSet= aMapper->GetInput()){
+      aDataSet->Update();
+      myIsInfinite = aDataSet->GetNumberOfCells() < 2;
+    }
+  }
+  return myIsInfinite;
+}
+
+//----------------------------------------------------------------------------
+bool
+VISU_GaussPtsAct
+::PreHighlight(vtkInteractorStyle* theInteractorStyle, 
+              SVTK_SelectionEvent* theSelectionEvent,
+              bool theIsHighlight)
+{
+  myPreHighlightActor->SetVisibility(false);
+  myCursorPyramid->SetVisibility(false);  
+
+  if (!myBarVisibility) {
+    return false;
+  }
+
+  if(!theIsHighlight)
+    myLastObjPointID = -1;
+
+  Selection_Mode aSelectionMode = theSelectionEvent->mySelectionMode;
+
+  if(aSelectionMode == ActorSelection || !theIsHighlight)
+    return Superclass::PreHighlight(theInteractorStyle,
+                                   theSelectionEvent,
+                                   theIsHighlight);  
+  
+  bool anIsChanged = (mySelectionMode != aSelectionMode);
+  bool anIsPreselected = myIsPreselected;
+  myIsPreselected = false;
+  
+  if(aSelectionMode == GaussPointSelection && theIsHighlight){
+    myPointPicker->Pick(theSelectionEvent->myX, 
+                       theSelectionEvent->myY, 
+                       0.0, 
+                       theInteractorStyle->GetCurrentRenderer());
+    
+    if(myPointPicker->GetActor() != this)
+      return (anIsPreselected != myIsPreselected);
+    
+    vtkIdType aVtkId = myPointPicker->GetPointId();
+    
+    if(aVtkId >= 0 && mySelector->IsValid(this,aVtkId,true) && hasIO()){
+      vtkIdType anObjId = GetNodeObjId( aVtkId );
+      myIsPreselected = (anObjId >= 0);
+      if(myIsPreselected){
+       anIsChanged = (myLastObjPointID != anObjId);
+       if(anIsChanged){
+         float* aNodeCoord = GetNodeCoord(anObjId);
+         vtkDataSet* aDataSet = GetInput();
+         vtkCellData* aCellData = aDataSet->GetCellData();
+         if(vtkDataArray *aScalarArray = aCellData->GetScalars()){
+           float aPyramidHeight = myPickingSettings->GetPyramidHeight();
+           aPyramidHeight = aPyramidHeight*myGaussPointsPL->GetMaxPointSize();
+           //float aColor[3] = myPreHighlightActor->GetProperty()->GetColor();
+           float aColor[3];
+           theInteractorStyle->GetCurrentRenderer()->GetBackground( aColor );
+           aColor[0] = 1. - aColor[0];
+           aColor[1] = 1. - aColor[1];
+           aColor[2] = 1. - aColor[2];
+
+           myCursorPyramid->Init(aPyramidHeight,
+                                 myPickingSettings->GetCursorSize(),
+                                 GetRadius(anObjId,aVtkId,aScalarArray),
+                                 GetMagnification(anObjId),
+                                 GetClamp(anObjId),
+                                 aNodeCoord,
+                                 aColor);
+         }
+         myLastObjPointID = anObjId;
+       }
+       myCursorPyramid->SetVisibility(true);
+      }
+    }
+  }
+  
+  mySelectionMode = aSelectionMode;
+  anIsChanged |= (anIsPreselected != myIsPreselected);
+
+  return anIsChanged;
+}
+
+
+//----------------------------------------------------------------------------
+inline
+void
+ChangeZoom(VISU_PickingSettings *thePickingSettings,
+          vtkInteractorStyle* theInteractorStyle,
+          int theInitialHasIndex,
+          SVTK_Selector* theSelector,
+          const Handle(SALOME_InteractiveObject)& theIO)
+{
+  int aCurrentHasIndex = theSelector->HasIndex(theIO);
+
+  if(theInitialHasIndex + aCurrentHasIndex == 1){
+    vtkRenderer *aRenderer = theInteractorStyle->GetCurrentRenderer();
+    vtkCamera *aCamera = aRenderer->GetActiveCamera();
+    float aZoomFactor = thePickingSettings->GetZoomFactor();
+    double aScale = aCamera->GetParallelScale();
+    if (!theInitialHasIndex && aCurrentHasIndex) {
+      aCamera->SetParallelScale(aScale/aZoomFactor);
+    }
+    else {
+      aCamera->SetParallelScale(aScale*aZoomFactor);
+    }
+  }
+  
+}
+
+bool
+VISU_GaussPtsAct
+::Highlight(vtkInteractorStyle* theInteractorStyle, 
+           SVTK_SelectionEvent* theSelectionEvent,
+           bool theIsHighlight)
+{ 
+  myIsHighlighted = false;
+  Handle(SALOME_InteractiveObject) anIO = getIO();
+  int anInitialHasIndex = mySelector->HasIndex(anIO);
+
+  Selection_Mode aSelectionMode = theSelectionEvent->mySelectionMode;
+  //
+  if(!theIsHighlight && aSelectionMode == GaussPointSelection){
+    mySelector->RemoveIObject(anIO);
+
+    ChangeZoom(myPickingSettings,
+              theInteractorStyle,
+              anInitialHasIndex,
+              mySelector.GetPointer(),
+              anIO);
+
+    return true;
+  }
+  
+  if (!myBarVisibility) {
+    return false;
+  }
+  //
+  if(aSelectionMode == ActorSelection){
+    return Superclass::Highlight(theInteractorStyle,
+                                theSelectionEvent,
+                                theIsHighlight);
+  }
+  //
+  if(aSelectionMode == GaussPointSelection && !theSelectionEvent->myIsRectangle){
+
+    vtkRenderer *aRenderer = theInteractorStyle->GetCurrentRenderer();
+    myPointPicker->Pick(theSelectionEvent->myX, 
+                       theSelectionEvent->myY,
+                       0.0, 
+                       aRenderer);
+
+    if(myPointPicker->GetActor() != this) {
+      mySelector->ClearIObjects();
+
+      ChangeZoom(myPickingSettings,
+                theInteractorStyle,
+                anInitialHasIndex,
+                mySelector.GetPointer(),
+                anIO);
+
+      return true;
+    }
+
+    vtkIdType aVtkId = myPointPicker->GetPointId();
+    if( aVtkId >= 0  && mySelector->IsValid( this, aVtkId, true ) && hasIO()) {
+      vtkIdType anObjId = GetNodeObjId( aVtkId );
+      if(anObjId >= 0){
+       myIsHighlighted = true;
+       // Update the Selector
+       if(mySelector->IsSelected(myIO))
+         mySelector->AddOrRemoveIndex(myIO,anObjId,theSelectionEvent->myIsShift);
+       else{
+         if(!theSelectionEvent->myIsShift){
+           mySelector->ClearIObjects();
+         }
+         mySelector->AddOrRemoveIndex(myIO,anObjId,theSelectionEvent->myIsShift);
+         mySelector->AddIObject(this);
+       }
+       //
+       float* aNodeCoord = GetNodeCoord(anObjId);
+       //
+       // FlyTo
+       vtkRenderWindowInteractor* anInteractor = theInteractorStyle->GetInteractor();
+       float aDollyWas = anInteractor->GetDolly();
+       int aNumberOfFlyFramesWas = anInteractor->GetNumberOfFlyFrames();
+       
+       anInteractor->SetDolly(0.);
+       anInteractor->SetNumberOfFlyFrames(myPickingSettings->GetStepNumber());
+       anInteractor->FlyTo(aRenderer,aNodeCoord);
+       aRenderer->ResetCameraClippingRange();
+       anInteractor->SetDolly(aDollyWas);
+       anInteractor->SetNumberOfFlyFrames(aNumberOfFlyFramesWas);
+       
+       mySelectionMode = aSelectionMode;
+
+       ChangeZoom(myPickingSettings,
+                  theInteractorStyle,
+                  anInitialHasIndex,
+                  mySelector.GetPointer(),
+                  anIO);
+
+       return true;
+       //
+      }// if( anObjId >= 0 ) {
+    }//if( aVtkId >= 0  && mySelector->IsValid( this, aVtkId, true ) && hasIO()) 
+  }//if(!theSelectionEvent->myIsRectangle){
+
+  ChangeZoom(myPickingSettings,
+            theInteractorStyle,
+            anInitialHasIndex,
+            mySelector.GetPointer(),
+            anIO);
+  
+  return false;
+}
+
+//==================================================================
+// function : Highlight
+// purpose  :
+//==================================================================
+void
+VISU_GaussPtsAct
+::Highlight(bool theIsHighlight)
+{
+  if(!mySelector.GetPointer())
+    return;
+
+  myOutlineActor->SetVisibility(false);
+  myTextActor->SetVisibility(0);
+  myCursorPyramidSelected->SetVisibility(0);
+  myCursorPyramid->SetVisibility(0);
+  myCellActor->SetVisibility(0);
+  GetScalarBarCtrl()->SetIsMarked(false);
+  GetScalarBarCtrl()->Update();
+
+  bool anIsVisible = GetVisibility();
+
+  Selection_Mode aSelectionMode = mySelector->SelectionMode();
+
+  if(aSelectionMode == ActorSelection)
+    Superclass::highlight(theIsHighlight);
+  else if(aSelectionMode != GaussPointSelection)
+    return;
+
+  TColStd_IndexedMapOfInteger aMapIndex;
+  mySelector->GetIndex( getIO(), aMapIndex );
+  if(aMapIndex.Extent() != 1 || !myBarVisibility) {
+    return;
+  }
+  //
+  std::ostringstream aStr;
+  int anObjId = aMapIndex(1);
+  aStr<<"Global ID: "<<anObjId;
+  //
+  vtkIdType aVtkId = GetNodeVTKID(anObjId);
+  if(aVtkId >= 0){
+    float *aNodeCoord = GetNodeCoord(anObjId);
+    float aWorldCoord[4] = {aNodeCoord[0], aNodeCoord[1], aNodeCoord[2], 1.};
+    //
+    vtkDataSet* aDataSet = GetInput();
+    vtkCellData* aDataSetAttributes = aDataSet->GetCellData();
+    //
+    if(vtkDataArray* aScalarArray = aDataSetAttributes->GetScalars()){
+      float aVal = aScalarArray->GetTuple1(aVtkId);
+      //
+      GetScalarBarCtrl()->SetIsMarked(true);
+      GetScalarBarCtrl()->SetMarkValue(aVal);
+      GetScalarBarCtrl()->Update();
+      //
+      float aPyramidHeight = myPickingSettings->GetPyramidHeight();
+      aPyramidHeight = aPyramidHeight*myGaussPointsPL->GetMaxPointSize();
+      myCursorPyramidSelected->Init(aPyramidHeight,
+                                   myPickingSettings->GetCursorSize(),
+                                   GetRadius(anObjId,aVtkId,aScalarArray),
+                                   GetMagnification(anObjId),
+                                   GetClamp(anObjId),
+                                   aNodeCoord,
+                                   myHighlightActor->GetProperty()->GetColor());
+      myCursorPyramidSelected->SetVisibility(anIsVisible && theIsHighlight);
+      //
+      const VISU::PGaussPtsIDMapper& aGaussPtsIDMapper = 
+       myGaussPointsPL->GetGaussPtsIDMapper();
+      VISU::TNamedIDMapper* aParent = aGaussPtsIDMapper->GetParent();
+      
+      VISU::TGaussPointID aGaussPointID = myGaussPointsPL->GetObjID(anObjId);
+      VISU::TCellID aCellID = aGaussPointID.first;
+      VISU::TLocalPntID aLocalPntID = aGaussPointID.second;
+      aStr<<"\nParentCellID: "<<aCellID;
+      std::string aParentName = aParent->GetElemName(aCellID);
+      if(aParentName != "") {
+       aStr<<"\nParentCellName: '"<<aParentName<<"'";
+      }
+      aStr<<"\nLocalPntID: "<<aLocalPntID;
+      aStr<<"\nScalar: "<<aVal;
+    }
+
+    if(vtkDataArray* aFieldArray = aDataSetAttributes->GetArray("VISU_FIELD")){
+      if(vtkFloatArray *aFloatArray = dynamic_cast<vtkFloatArray*>(aFieldArray)){
+       int aNbComp = aFloatArray->GetNumberOfComponents();
+       aStr<<"\nData: {";
+       int anId = 0;
+       while(anId < aNbComp){
+         float aComp = aFloatArray->GetComponent(aVtkId,anId++);
+         aStr<<aComp;
+         if(anId < aNbComp)
+           aStr<<"; ";
+       }
+       aStr<<"}";
+      }
+    }
+    //
+    // myTextActor
+    std::string aString = aStr.str();
+    myTextActor->SetModePosition(myPickingSettings->GetInfoWindowPosition());
+    myTextActor->SetTransparency(myPickingSettings->GetInfoWindowTransparency());
+    myTextActor->SetWorldPoint(aWorldCoord);
+    myTextActor->SetText(aString.c_str());
+    myTextActor->SetVisibility(anIsVisible && theIsHighlight);
+    //
+    // myCellActor
+    if(myPickingSettings->GetDisplayParentMesh()){
+      const VISU::PGaussPtsIDMapper& aGaussPtsIDMapper = 
+       myGaussPointsPL->GetGaussPtsIDMapper();
+      VISU::TNamedIDMapper* aParent = aGaussPtsIDMapper->GetParent();
+      
+      myCellSource->Reset();
+      myCellSource->Modified(); // a VTK bug
+      myCellSource->SetPoints(aParent->GetVTKOutput()->GetPoints());
+      
+      VISU::TGaussPointID aGaussPointID = aGaussPtsIDMapper->GetObjID(anObjId);
+      vtkIdType aCellID = aGaussPointID.first;
+      vtkCell* aCell = aParent->GetElemCell(aCellID);
+      myCellSource->InsertNextCell(aCell->GetCellType(),aCell->GetPointIds());
+      myCellActor->SetVisibility(anIsVisible && theIsHighlight);
+      myCellActor->SetRepresentation(VTK_WIREFRAME);
+    }
+  }
+}
+
+
+//----------------------------------------------------------------
+void
+VISU_GaussPtsAct
+::SetPickingSettings(VISU_PickingSettings* thePickingSettings)
+{
+  if(myPickingSettings == thePickingSettings)
+    return;
+
+  if(myPickingSettings)
+    myPickingSettings->RemoveObserver(myEventCallbackCommand.GetPointer());
+
+  myPickingSettings = thePickingSettings;
+
+  if(thePickingSettings)
+  {
+    thePickingSettings->AddObserver(VISU::UpdatePickingSettingsEvent, 
+                                   myEventCallbackCommand.GetPointer(), 
+                                   myPriority);
+    this->UpdatePickingSettings();
+  }
+}
+
+void
+VISU_GaussPtsAct
+::UpdatePickingSettings()
+{
+  if(!myPickingSettings || myPickingSettings->GetInitial())
+    return;
+
+  myTextActor->SetModePosition(myPickingSettings->GetInfoWindowPosition());
+  myTextActor->SetTransparency(myPickingSettings->GetInfoWindowTransparency());
+
+  float aHeight = myGaussPointsPL->GetMaxPointSize()*myPickingSettings->GetPyramidHeight();
+  float aCursorSize = myPickingSettings->GetCursorSize();
+  myCursorPyramid->SetPreferences(aHeight,aCursorSize);
+  myCursorPyramidSelected->SetPreferences(aHeight,aCursorSize);
+
+  myHighlightActor->GetProperty()->SetColor( myPickingSettings->GetColor() );
+  myPointPicker->SetTolerance( myPickingSettings->GetPointTolerance() );
+
+  Highlight(isHighlighted());
+
+  Update();
+}
+
+//----------------------------------------------------------------
+void
+VISU_GaussPtsAct
+::SetInsideCursorSettings(VISU_InsideCursorSettings* theInsideCursorSettings)
+{
+  if(myInsideCursorSettings == theInsideCursorSettings)
+    return;
+
+  if(myInsideCursorSettings)
+    myInsideCursorSettings->RemoveObserver(myEventCallbackCommand.GetPointer());
+
+  myInsideCursorSettings = theInsideCursorSettings;
+
+  if(theInsideCursorSettings){
+    theInsideCursorSettings->AddObserver(VISU::UpdateInsideSettingsEvent, 
+                                        myEventCallbackCommand.GetPointer(), 
+                                        myPriority);
+    UpdateInsideCursorSettings();
+  }
+}
+
+void
+VISU_GaussPtsAct
+::UpdateInsideCursorSettings()
+{
+  UpdateInsideCursorSettings( myDeviceActor );
+}
+
+void
+VISU_GaussPtsAct
+::UpdateInsideCursorSettings( PDeviceActor theActor )
+{
+  if(!myInsideCursorSettings || myInsideCursorSettings->GetInitial())
+    return;
+
+  if(!IsSegmentationEnabled())
+    return;
+
+  VISU_GaussPointsPL* aPipeline = theActor->GetPipeLine();
+
+  SALOME_ExtractGeometry* anExtractGeometry = aPipeline->GetExtractGeometryFilter();
+  vtkImplicitFunction* anImplicitFunction = anExtractGeometry->GetImplicitFunction();
+
+  aPipeline->ShallowCopy(GetGaussPointsPL());
+
+  aPipeline->SetImplicitFunction(anImplicitFunction); // To restore
+
+  aPipeline->SetPrimitiveType( myInsideCursorSettings->GetPrimitiveType() );
+  aPipeline->SetClamp( myInsideCursorSettings->GetClamp() );
+  aPipeline->SetImageData( myInsideCursorSettings->GetTexture() );
+  aPipeline->SetAlphaThreshold( myInsideCursorSettings->GetAlphaThreshold() );
+  aPipeline->SetResolution( myInsideCursorSettings->GetResolution() );
+  aPipeline->SetMinSize( myInsideCursorSettings->GetMinSize() );
+  aPipeline->SetMaxSize( myInsideCursorSettings->GetMaxSize() );
+  aPipeline->SetMagnification( myInsideCursorSettings->GetMagnification() );
+  aPipeline->SetMagnificationIncrement( myInsideCursorSettings->GetIncrement() );
+
+  if( myInsideCursorSettings->GetPrimitiveType() != VISU_OpenGLPointSpriteMapper::GeomSphere )
+    theActor->GetProperty()->SetRepresentation( VTK_POINTS );
+  else
+    theActor->GetProperty()->SetRepresentation( VTK_SURFACE );
+
+  aPipeline->Update();
+
+  Highlight(isHighlighted());
+
+  Update();
+}
+
+//==============================================================================
+vtkStandardNewMacro(VISU_GaussPtsAct1);
+
+
+//----------------------------------------------------------------------------
+VISU_GaussPtsAct1
+::VISU_GaussPtsAct1():
+  myInsideDeviceActor(VISU_GaussPtsDeviceActor::New()),
+  myOutsideDeviceActor(VISU_GaussPtsDeviceActor::New()),
+  myOutsideCursorSettings(NULL)
+{
+  if(MYDEBUG1) MESSAGE("VISU_GaussPtsAct1::VISU_GaussPtsAct1 - this = "<<this);
+
+  myEventCallbackCommand->SetCallback(VISU_GaussPtsAct1::ProcessEvents);
+
+  myInsideDeviceActor->SetVisibility(false);
+  myInsideDeviceActor->SetPickable(false);
+  myInsideDeviceActor->Delete();
+
+  myOutsideDeviceActor->SetVisibility(false);
+  myOutsideDeviceActor->SetPickable(false);
+  myOutsideDeviceActor->Delete();
+}
+
+VISU_GaussPtsAct1
+::~VISU_GaussPtsAct1()
+{
+  if(MYDEBUG1) MESSAGE("VISU_GaussPtsAct1::~VISU_GaussPtsAct1 - this = "<<this);
+
+  SetOutsideCursorSettings(NULL);
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct1
+::ShallowCopyPL(VISU_PipeLine* thePipeLine)
+{
+  if(MYDEBUG1) MESSAGE("VISU_GaussPtsAct1::ShallowCopyPL - this = "<<this);
+
+  Superclass::ShallowCopyPL(thePipeLine);
+
+  UpdateOutsideCursorSettings();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct1
+::AddToRender(vtkRenderer* theRenderer)
+{
+  Superclass::AddToRender(theRenderer);
+
+  myInsideDeviceActor->AddToRender(theRenderer);
+  myOutsideDeviceActor->AddToRender(theRenderer);
+}
+
+void 
+VISU_GaussPtsAct1
+::RemoveFromRender(vtkRenderer* theRenderer)
+{
+  Superclass::RemoveFromRender(theRenderer);
+
+  myInsideDeviceActor->RemoveFromRender(theRenderer);
+  myOutsideDeviceActor->RemoveFromRender(theRenderer);
+}
+
+void 
+VISU_GaussPtsAct1
+::SetTransform(VTKViewer_Transform* theTransform)
+{
+  Superclass::SetTransform(theTransform);
+
+  myInsideDeviceActor->SetTransform(theTransform);
+  myOutsideDeviceActor->SetTransform(theTransform);
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct1
+::SetWidgetCtrl(VISU_WidgetCtrl* theWidgetCtrl)
+{
+  if(MYDEBUG1) MESSAGE("VISU_GaussPtsAct1::SetWidgetCtrl - this = "<<this);
+
+  if(myWidgetCtrl == theWidgetCtrl){
+    return;
+  }
+
+  if(myWidgetCtrl){
+    myInsideDeviceActor->GetPipeLine()->SetImplicitFunction(NULL);
+    myInsideDeviceActor->SetVisibility(false);
+
+    myOutsideDeviceActor->GetPipeLine()->SetImplicitFunction(NULL);  
+    myOutsideDeviceActor->SetVisibility(false);
+  }
+
+  Superclass::SetWidgetCtrl(theWidgetCtrl);
+
+  if(theWidgetCtrl){
+    myInsideDeviceActor->GetPipeLine()->SetImplicitFunction(theWidgetCtrl->ImplicitFunction());
+    myInsideDeviceActor->SetVisibility(GetVisibility() && IsSegmentationEnabled());
+
+    myOutsideDeviceActor->GetPipeLine()->SetImplicitFunction(theWidgetCtrl->ImplicitFunction());  
+    myOutsideDeviceActor->SetVisibility(GetVisibility() && IsSegmentationEnabled());
+  }
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct1
+::SetMapperInput(vtkDataSet* theDataSet) 
+{
+  if(MYDEBUG1) MESSAGE("VISU_GaussPtsAct1::SetMapperInput - this = "<<this);
+
+  Superclass::SetMapperInput(theDataSet);
+
+  if(VISU_GaussPointsPL* aPipeLine = CreatePipeLine(GetGaussPointsPL())){
+    myInsideDeviceActor->SetPipeLine(aPipeLine);
+    aPipeLine->Delete();
+  }
+
+  if(VISU_GaussPointsPL* aPipeLine = CreatePipeLine(GetGaussPointsPL())){
+    myOutsideDeviceActor->SetPipeLine(aPipeLine);
+    aPipeLine->Delete();
+
+    SALOME_ExtractGeometry* anExtractGeometry = aPipeLine->GetExtractGeometryFilter();
+    anExtractGeometry->SetExtractBoundaryCells(true);
+    anExtractGeometry->SetExtractInside(true);
+  }
+}
+
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPtsAct1
+::GetRadius(vtkIdType theObjID,
+           vtkIdType theVTKID,
+           vtkDataArray *theScalarArray)
+{
+  VISU_GaussPointsPL* aPipeLine = myDeviceActor->GetPipeLine();
+  if(IsSegmentationEnabled()){
+    if(myInsideDeviceActor->GetPipeLine()->GetNodeVTKID(theObjID) < 0)
+      aPipeLine = myOutsideDeviceActor->GetPipeLine();
+    else
+      aPipeLine = myInsideDeviceActor->GetPipeLine();
+  }
+  return ::GetRadius(theVTKID,theScalarArray,aPipeLine);
+}
+
+
+//----------------------------------------------------------------------------
+float 
+VISU_GaussPtsAct1
+::GetMagnification(vtkIdType theObjID)
+{
+  VISU_GaussPointsPL* aPipeLine = myDeviceActor->GetPipeLine();
+  if(IsSegmentationEnabled()){
+    if(myInsideDeviceActor->GetPipeLine()->GetNodeVTKID(theObjID) < 0)
+      aPipeLine = myOutsideDeviceActor->GetPipeLine();
+    else
+      aPipeLine = myInsideDeviceActor->GetPipeLine();
+  }
+  return aPipeLine->GetMagnification();
+}
+
+
+//----------------------------------------------------------------------------
+float 
+VISU_GaussPtsAct1
+::GetClamp(vtkIdType theObjID)
+{
+  if(IsSegmentationEnabled()){
+    if(myInsideDeviceActor->GetPipeLine()->GetNodeVTKID(theObjID) < 0)
+      return ::GetClamp(myOutsideDeviceActor->GetPipeLine());
+    else
+      return ::GetClamp(myInsideDeviceActor->GetPipeLine());
+  }
+  return Superclass::GetClamp(theObjID);
+}
+
+
+//----------------------------------------------------------------
+void 
+VISU_GaussPtsAct1
+::Connect(VISU_GaussPtsAct2* theActor)
+{
+  mySetVisibilitySignal.connect(boost::bind(&VISU_GaussPtsAct2::SetVisibility,theActor,_1));
+}
+
+void
+VISU_GaussPtsAct1
+::SetVisibility(int theMode)
+{
+  if(MYDEBUG1) MESSAGE("VISU_GaussPtsAct1::SetVisibility - this = "<<this);
+
+  Superclass::SetVisibility(theMode);
+
+  bool aVisisbility = GetVisibility();
+  bool anIsSegementation = IsSegmentationEnabled();
+  myDeviceActor->SetVisibility(aVisisbility && !anIsSegementation);
+  myInsideDeviceActor->SetVisibility(aVisisbility && anIsSegementation);
+  myOutsideDeviceActor->SetVisibility(aVisisbility && anIsSegementation);
+
+  mySetVisibilitySignal(GetVisibility());
+}
+
+//----------------------------------------------------------------
+void
+VISU_GaussPtsAct1
+::UpdateInsideCursorSettings()
+{
+  Superclass::UpdateInsideCursorSettings( myInsideDeviceActor );
+}
+
+//----------------------------------------------------------------
+void
+VISU_GaussPtsAct1
+::SetOutsideCursorSettings(VISU_OutsideCursorSettings* theOutsideCursorSettings)
+{
+  if(myOutsideCursorSettings == theOutsideCursorSettings)
+    return;
+
+  if(myOutsideCursorSettings)
+    myOutsideCursorSettings->RemoveObserver(myEventCallbackCommand.GetPointer());
+
+  myOutsideCursorSettings = theOutsideCursorSettings;
+
+  if(theOutsideCursorSettings)
+  {
+    theOutsideCursorSettings->AddObserver(VISU::UpdateOutsideSettingsEvent, 
+                                         myEventCallbackCommand.GetPointer(), 
+                                         myPriority);
+    UpdateOutsideCursorSettings();
+  }
+}
+
+void
+VISU_GaussPtsAct1
+::UpdateOutsideCursorSettings()
+{
+  if(!myOutsideCursorSettings || myOutsideCursorSettings->GetInitial())
+    return;
+
+  if(!IsSegmentationEnabled())
+    return;
+
+  VISU_GaussPointsPL* aPipeline = myOutsideDeviceActor->GetPipeLine();
+
+  SALOME_ExtractGeometry* anExtractGeometry = aPipeline->GetExtractGeometryFilter();
+  vtkImplicitFunction* anImplicitFunction = anExtractGeometry->GetImplicitFunction();
+  float aMagnification = aPipeline->GetMagnification();
+
+  aPipeline->ShallowCopy(GetGaussPointsPL());
+
+  aPipeline->SetImplicitFunction(anImplicitFunction); // To restore
+  anExtractGeometry->SetExtractBoundaryCells(true);
+  anExtractGeometry->SetExtractInside(true);
+  aPipeline->SetMagnification( aMagnification );
+
+  aPipeline->SetPrimitiveType( myOutsideCursorSettings->GetPrimitiveType() );
+
+  if( myOutsideCursorSettings->GetPrimitiveType() != VISU_OpenGLPointSpriteMapper::GeomSphere )
+    myOutsideDeviceActor->GetProperty()->SetRepresentation( VTK_POINTS );
+  else
+    myOutsideDeviceActor->GetProperty()->SetRepresentation( VTK_SURFACE );
+
+  aPipeline->SetClamp( myOutsideCursorSettings->GetClamp() );
+  aPipeline->SetImageData( myOutsideCursorSettings->GetTexture() );
+  aPipeline->SetAlphaThreshold( myOutsideCursorSettings->GetAlphaThreshold() );
+  aPipeline->SetResolution( myOutsideCursorSettings->GetResolution() );
+  aPipeline->SetSize( myOutsideCursorSettings->GetSize() );
+  aPipeline->SetMagnification( myOutsideCursorSettings->GetMagnification() );
+  aPipeline->SetMagnificationIncrement( myOutsideCursorSettings->GetIncrement() );
+
+  if( myOutsideCursorSettings->GetUniform() )
+  {
+    myOutsideDeviceActor->GetPSMapper()->ScalarVisibilityOff();
+    myOutsideDeviceActor->GetPSMapper()->SetPointSpriteMode( 1 ); // Geometry mode
+    myOutsideDeviceActor->GetProperty()->SetColor( myOutsideCursorSettings->GetColor() );
+  }
+  else
+  {
+    myOutsideDeviceActor->GetPSMapper()->SetPointSpriteMode( 2 ); // Outside cursor mode
+    myOutsideDeviceActor->GetPSMapper()->SetColorModeToMapScalars();
+    myOutsideDeviceActor->GetPSMapper()->ScalarVisibilityOn();
+  }
+
+  aPipeline->Update();
+
+  Highlight(isHighlighted());
+
+  Update();
+}
+
+
+//----------------------------------------------------------------
+void 
+VISU_GaussPtsAct1
+::ProcessEvents(vtkObject* theObject, 
+               unsigned long theEvent,
+               void* theClientData, 
+               void* theCallData)
+{
+  if(vtkObject* anObject = reinterpret_cast<vtkObject*>(theClientData))
+    if(VISU_GaussPtsAct1* self = dynamic_cast<VISU_GaussPtsAct1*>(anObject))
+      if(theEvent == VISU::UpdateOutsideSettingsEvent)
+       self->UpdateOutsideCursorSettings();
+
+  Superclass::ProcessEvents(theObject,theEvent,theClientData,theCallData);
+}
+
+void
+VISU_GaussPtsAct1
+::OnInteractorEvent(unsigned long theEvent)
+{
+  switch(theEvent){
+  case vtkCommand::StartInteractionEvent: 
+    myDeviceActor->SetVisibility(GetVisibility());
+    myInsideDeviceActor->SetVisibility(false);
+    myOutsideDeviceActor->SetVisibility(false);
+    break;
+  case vtkCommand::EnableEvent: 
+  case vtkCommand::DisableEvent:
+  case vtkCommand::EndInteractionEvent: {
+    bool aVisisbility = GetVisibility();
+    bool anIsSegementation = IsSegmentationEnabled();
+    myDeviceActor->SetVisibility(aVisisbility && !anIsSegementation);
+    myInsideDeviceActor->SetVisibility(aVisisbility && anIsSegementation);
+    myOutsideDeviceActor->SetVisibility(anIsSegementation);
+    break;
+  }
+  default:
+    break;
+  }
+  
+  Superclass::OnInteractorEvent(theEvent);
+}
+
+
+//==============================================================================
+vtkStandardNewMacro(VISU_GaussPtsAct2);
+
+
+//----------------------------------------------------------------------------
+VISU_GaussPtsAct2
+::VISU_GaussPtsAct2()
+{
+  if(MYDEBUG2) MESSAGE("VISU_GaussPtsAct2::VISU_GaussPtsAct2 - this = "<<this);
+  myDeviceActor->SetVisibility(false);
+}
+
+VISU_GaussPtsAct2
+::~VISU_GaussPtsAct2()
+{
+  if(MYDEBUG2) MESSAGE("VISU_GaussPtsAct2::~VISU_GaussPtsAct2 - this = "<<this);
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct2
+::ShallowCopyPL(VISU_PipeLine* thePipeLine)
+{
+  if(MYDEBUG2) MESSAGE("VISU_GaussPtsAct2::ShallowCopyPL - this = "<<this);
+
+  Superclass::ShallowCopyPL(thePipeLine);
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct2
+::SetMapperInput(vtkDataSet* theDataSet) 
+{
+  if(MYDEBUG2) MESSAGE("VISU_GaussPtsAct2::SetMapperInput - this = "<<this);
+
+  if(VISU_GaussPointsPL* aPipeLine = CreatePipeLine(GetGaussPointsPL())){
+    myDeviceActor->SetPipeLine(aPipeLine);
+    myCurrentPL = aPipeLine;
+    aPipeLine->Delete();
+
+    myMapper->SetInput(myCurrentPL->GetPickableDataSet());
+    SetMapper(myMapper.GetPointer());
+  }
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct2
+::SetWidgetCtrl(VISU_WidgetCtrl* theWidgetCtrl)
+{
+  if(MYDEBUG2) MESSAGE("VISU_GaussPtsAct2::SetWidgetCtrl - this = "<<this);
+
+  if(myWidgetCtrl == theWidgetCtrl)
+    return;
+
+  if(myWidgetCtrl){
+    theWidgetCtrl->RemoveObserver(myEventCallbackCommand.GetPointer());
+    myDeviceActor->GetPipeLine()->SetImplicitFunction(NULL);
+    myDeviceActor->SetVisibility(false);
+  }
+
+  Superclass::SetWidgetCtrl(theWidgetCtrl);
+
+  if(theWidgetCtrl){
+    myDeviceActor->GetPipeLine()->SetImplicitFunction(theWidgetCtrl->ImplicitFunction());
+    myDeviceActor->SetVisibility(GetVisibility() && IsSegmentationEnabled());
+  }
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsAct2
+::SetVisibility(int theMode)
+{
+  if(MYDEBUG2) MESSAGE("VISU_GaussPtsAct2::SetVisibility - this = "<<this);
+
+  Superclass::SetVisibility(theMode);
+
+  myDeviceActor->SetVisibility(GetVisibility() && IsSegmentationEnabled());
+}
+
+void
+VISU_GaussPtsAct2
+::OnInteractorEvent(unsigned long theEvent)
+{
+  switch(theEvent){
+  case vtkCommand::EnableEvent: 
+  case vtkCommand::DisableEvent:
+    myDeviceActor->SetVisibility(GetVisibility() && IsSegmentationEnabled());
+    if(theEvent == vtkCommand::EnableEvent)
+      Update();
+    break;
+  case vtkCommand::EndInteractionEvent:
+    Update();
+    break;
+  default:
+    break;
+  }
+  Superclass::OnInteractorEvent(theEvent);
+}
diff --git a/src/OBJECT/VISU_GaussPtsAct.h b/src/OBJECT/VISU_GaussPtsAct.h
new file mode 100644 (file)
index 0000000..822238f
--- /dev/null
@@ -0,0 +1,470 @@
+//  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   : VISU_ScalarMapAct.h
+//  Author : Laurent CORNABE with help of Nicolas REJNERI
+//  Module : VISU
+//  $Header$
+
+#ifndef VISU_GaussPtsAct_HeaderFile
+#define VISU_GaussPtsAct_HeaderFile
+
+#include "VISU_Actor.h"
+#include "VISU_GaussPtsActorFactory.h"
+
+#include <vtkCommand.h>
+#include <vtkSmartPointer.h>
+
+class VISU_GaussPointsPL;
+class VISU_WidgetCtrl;
+class VISU_OpenGLPointSpriteMapper;
+
+class vtkTextMapper;
+class vtkTextActor;
+
+class vtkSphereSource;
+class vtkPolyDataMapper;
+class vtkActor;
+class vtkImageData;
+class vtkInteractorStyle;
+
+class VISU_GaussPtsDeviceActor;
+class VISU_CursorPyramid;
+class VISU_FramedTextActor;
+
+class vtkUnstructuredGrid;
+class vtkDataSetMapper;
+
+class vtkInteractorObserver;
+class vtkCallbackCommand;
+
+class VISU_ScalarBarCtrl;
+class VISU_PickingSettings;
+class VISU_InsideCursorSettings;
+class VISU_OutsideCursorSettings;
+
+
+//============================================================================
+//! Base class for Gauss Points Actors.
+/*!
+  The actor is responsible for representation of Gauss Points.
+  It render corresponding presentation by usage of corresponding VISU_GaussPtsDeviceActor.
+  Usage of such technic of rendering gives addititional flexibility to change its behaviour in run-time.
+  Also, the base class implements the following functionality:
+  - implements a highlight and prehighlight functionality;
+  - defining a way to handle VISU_ImplicitFunctionWidget;
+  - global / local scalar bar mamangement.
+*/
+class VTKOCC_EXPORT VISU_GaussPtsAct : public VISU_Actor
+{
+ public:
+  vtkTypeMacro(VISU_GaussPtsAct,VISU_Actor);
+  typedef vtkSmartPointer<VISU_GaussPtsDeviceActor> PDeviceActor;
+
+  static
+  VISU_GaussPtsAct* 
+  New();
+
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  SetPipeLine(VISU_PipeLine* thePipeLine) ;
+  
+  VISU_GaussPointsPL*
+  GetGaussPointsPL();
+
+  virtual
+  void
+  ShallowCopyPL(VISU_PipeLine* thePipeLine);
+
+  //----------------------------------------------------------------------------
+  //! Redefined method of getting a native mapper of the actor.
+  virtual
+  vtkMapper* 
+  GetMapper();
+
+  //! Redefined method of getting an actor bounds.
+  virtual
+  float* 
+  GetBounds();
+
+  //! Redefined method of getting an actor input.
+  virtual
+  vtkDataSet* 
+  GetInput(); 
+
+  //----------------------------------------------------------------------------
+  virtual
+  void
+  SetFactory(VISU::TActorFactory* theActorFactory);
+  
+  VISU::TGaussPtsActorFactory*
+  GetGaussPtsFactory();    
+
+  //----------------------------------------------------------------------------
+  //! Add actor to the renderer.
+  virtual
+  void
+  AddToRender(vtkRenderer* theRenderer); 
+
+  //! Remove actor from the renderer.
+  virtual
+  void
+  RemoveFromRender(vtkRenderer* theRenderer);
+
+  //! Set the Render Window Interactor to the actor.
+  virtual
+  void
+  SetInteractor(vtkRenderWindowInteractor* theInteractor);
+
+  //! Apply the transform on the actor.
+  virtual
+  void
+  SetTransform(VTKViewer_Transform* theTransform);
+
+  //! Redefined method of rendering the Opaque Geometry.
+  virtual
+  int
+  RenderOpaqueGeometry(vtkViewport *viewport);
+
+  //! Redefined method of rendering the Translucent Geometry.
+  virtual
+  int
+  RenderTranslucentGeometry(vtkViewport *viewport);
+
+  //----------------------------------------------------------------------------
+  //! Set actor visibility.
+  virtual
+  void
+  SetVisibility(int theMode);
+
+  //! Get segmentation visibility.
+  virtual
+  int
+  IsSegmentationEnabled();
+
+  //! Set Scalar Bar Control to the actor.
+  VISU_ScalarBarCtrl* 
+  GetScalarBarCtrl();
+
+  //! Set the Scalar Bar Control visibility.
+  void
+  SetBarVisibility(bool theMode);
+
+  //! Get the Scalar Bar Control visibility.
+  bool
+  GetBarVisibility();
+
+  virtual void SetWidgetCtrl(VISU_WidgetCtrl* theWidgetCtrl);
+
+  //! Return the information about pipeline magnification changing.
+  /*! True indicates that magnification is increased, false - decreased. */
+  bool
+  GetChangeMagnification();
+
+  //! Change the pipeline magnification.
+  virtual
+  void
+  ChangeMagnification( bool );
+
+  //----------------------------------------------------------------------------
+  //! Internal highlight.
+  virtual
+  void
+  Highlight(bool theIsHighlight);
+  //! Redefined method of the actor's prehighlighting 
+  virtual
+  bool
+  PreHighlight(vtkInteractorStyle* theInteractorStyle, 
+              SVTK_SelectionEvent* theSelectionEvent,
+              bool theIsHighlight);
+
+  //! Redefined method of the actor's highlighting 
+  virtual
+  bool
+  Highlight(vtkInteractorStyle* theInteractorStyle, 
+           SVTK_SelectionEvent* theSelectionEvent,
+           bool theIsHighlight);
+
+  //----------------------------------------------------------------------------
+  //! Set the picking settings to the actor.
+  void
+  SetInsideCursorSettings(VISU_InsideCursorSettings* theInsideCursorSettings);
+
+  virtual void
+  UpdateInsideCursorSettings();
+
+  virtual void
+  UpdateInsideCursorSettings( PDeviceActor );
+
+  //----------------------------------------------------------------------------
+  void
+  SetPickingSettings(VISU_PickingSettings* thePickingSettings);
+
+  //! Apply the picking settings on the actor.
+  void
+  UpdatePickingSettings();
+
+  virtual
+  bool
+  IsInfinitive();
+
+ protected:
+  //----------------------------------------------------------------------------
+  VISU_GaussPtsAct();
+
+  virtual 
+  ~VISU_GaussPtsAct();
+
+  // Redefined method of setting mapper input.
+  virtual 
+  void
+  SetMapperInput(vtkDataSet* theDataSet);
+
+  virtual
+  VISU_PipeLine* 
+  GetCurrentPL();
+
+  //! To get current value of the radius of the Point Sprite
+  virtual
+  float
+  GetRadius(vtkIdType theObjID,
+           vtkIdType theVTKID,
+           vtkDataArray *theScalarArray);
+
+  //! To get current value of the magnification
+  virtual
+  float
+  GetMagnification(vtkIdType theObjID);
+
+  //! To get current value of the clamp
+  virtual
+  float
+  GetClamp(vtkIdType theObjID);
+
+  //----------------------------------------------------------------------------
+  vtkSmartPointer<vtkCallbackCommand> myEventCallbackCommand;
+
+  //! Main process VTK event method
+  static
+  void
+  ProcessEvents(vtkObject* theObject, 
+               unsigned long theEvent,
+               void* theClientData, 
+               void* theCallData);
+
+  // To process VTK event method
+  virtual
+  void
+  OnInteractorEvent(unsigned long theEvent);
+
+  float myPriority;
+  bool myChangeMagnification;
+  VISU::TGaussPtsActorFactory* myGaussPtsActorFactory;
+  boost::signal1<void,VISU_GaussPtsAct*> myUpdatePrs3dSignal;
+
+  //----------------------------------------------------------------------------
+  PDeviceActor myDeviceActor;
+
+  VISU_WidgetCtrl* myWidgetCtrl;
+
+  VISU_GaussPointsPL* myCurrentPL;
+  vtkSmartPointer<VISU_GaussPointsPL> myGaussPointsPL;
+
+  vtkIdType myLastObjPointID;
+
+  vtkSmartPointer<VISU_FramedTextActor> myTextActor;
+
+  vtkSmartPointer<VISU_CursorPyramid> myCursorPyramid;
+  vtkSmartPointer<VISU_CursorPyramid> myCursorPyramidSelected;
+  
+  vtkSmartPointer<vtkUnstructuredGrid> myCellSource;
+  vtkSmartPointer<SVTK_Actor> myCellActor;
+
+  bool myBarVisibility;
+  vtkSmartPointer<VISU_ScalarBarCtrl> myScalarBarCtrl;
+
+  VISU_InsideCursorSettings* myInsideCursorSettings;
+  VISU_PickingSettings* myPickingSettings;
+};
+
+
+//============================================================================
+class VISU_GaussPtsAct2;
+
+//! Gauss Points Actor, displayed in the Base View.
+/*!
+ * Contains device actor (VISU_GaussPtsDeviceActor),
+ * which has two representation modes - outside and
+ * inside segmentation cursor.
+ */
+class VTKOCC_EXPORT VISU_GaussPtsAct1 : public VISU_GaussPtsAct
+{
+ public:
+  vtkTypeMacro(VISU_GaussPtsAct1,VISU_GaussPtsAct);
+
+  static
+  VISU_GaussPtsAct1* 
+  New();
+
+  virtual
+  void
+  ShallowCopyPL(VISU_PipeLine* thePipeLine);
+
+  //----------------------------------------------------------------------------
+  //! Set actor visibility.
+  virtual
+  void
+  SetVisibility(int theMode);
+
+  virtual 
+  void
+  Connect(VISU_GaussPtsAct2* theActor);
+
+  //----------------------------------------------------------------------------
+  virtual void
+  UpdateInsideCursorSettings();
+
+  //----------------------------------------------------------------------------
+  //! Set the Outside Cursor Gauss Points settings to the actor.
+  void
+  SetOutsideCursorSettings(VISU_OutsideCursorSettings* theOutsideCursorSettings);
+
+  //! Apply the Outside Cursor Gauss Points settings on the actor.
+  void
+  UpdateOutsideCursorSettings();
+
+  //----------------------------------------------------------------------------
+  //! Add actor to the renderer.
+  virtual
+  void
+  AddToRender(vtkRenderer* theRenderer); 
+
+  //! Remove actor from the renderer.
+  virtual
+  void
+  RemoveFromRender(vtkRenderer* theRenderer);
+
+  //! Apply the transform on the actor.
+  virtual
+  void
+  SetTransform(VTKViewer_Transform* theTransform);
+
+  virtual void SetWidgetCtrl(VISU_WidgetCtrl* theWidgetCtrl);
+
+ protected:
+  //----------------------------------------------------------------------------
+  VISU_GaussPtsAct1();
+
+  virtual 
+  ~VISU_GaussPtsAct1();
+
+  // Redefined method of setting mapper input.
+  virtual 
+  void
+  SetMapperInput(vtkDataSet* theDataSet);
+
+  //! To get current value of the radius of the Point Sprite
+  virtual
+  float
+  GetRadius(vtkIdType theObjID,
+           vtkIdType theVTKID,
+           vtkDataArray *theScalarArray);
+
+  //! To get current value of the magnification
+  virtual
+  float
+  GetMagnification(vtkIdType theObjID);
+
+  //! To get current value of the clamp
+  virtual
+  float
+  GetClamp(vtkIdType theObjID);
+
+  //----------------------------------------------------------------------------
+  // Main process VTK event method
+  static
+  void
+  ProcessEvents(vtkObject* theObject, 
+               unsigned long theEvent,
+               void* theClientData, 
+               void* theCallData);
+
+  // To process VTK event method
+  virtual 
+  void
+  OnInteractorEvent(unsigned long theEvent);
+
+  boost::signal1<void,int> mySetVisibilitySignal;
+  VISU_OutsideCursorSettings* myOutsideCursorSettings;
+
+  //----------------------------------------------------------------------------
+  PDeviceActor myInsideDeviceActor;
+  PDeviceActor myOutsideDeviceActor;
+};
+
+
+//! Gauss Points Actor, displayed in the Segmented View.
+class VTKOCC_EXPORT VISU_GaussPtsAct2 : public VISU_GaussPtsAct
+{
+ public:
+  vtkTypeMacro(VISU_GaussPtsAct2,VISU_GaussPtsAct);
+
+  static
+  VISU_GaussPtsAct2* 
+  New();
+
+  // Redefined method of setting mapper input.
+  virtual 
+  void
+  SetMapperInput(vtkDataSet* theDataSet);
+
+  virtual
+  void
+  ShallowCopyPL(VISU_PipeLine* thePipeLine);
+
+  //----------------------------------------------------------------------------
+  //! Set actor visibility.
+  virtual
+  void
+  SetVisibility(int theMode);
+
+  virtual void SetWidgetCtrl(VISU_WidgetCtrl* theWidgetCtrl);
+
+ protected:
+  //----------------------------------------------------------------------------
+  VISU_GaussPtsAct2();
+
+  virtual 
+  ~VISU_GaussPtsAct2();
+
+  //----------------------------------------------------------------------------
+  // To process VTK event method
+  virtual 
+  void
+  OnInteractorEvent(unsigned long theEvent);
+};
+
+
+#endif
diff --git a/src/OBJECT/VISU_GaussPtsActorFactory.h b/src/OBJECT/VISU_GaussPtsActorFactory.h
new file mode 100644 (file)
index 0000000..ba785ef
--- /dev/null
@@ -0,0 +1,57 @@
+//  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   : VISU_ScalarMapAct.h
+//  Author : Laurent CORNABE with help of Nicolas REJNERI
+//  Module : VISU
+//  $Header$
+
+#ifndef VISU_GAUSSPTS_ACTOR_FACTORY_H
+#define VISU_GAUSSPTS_ACTOR_FACTORY_H
+
+#include "VISU_ActorFactory.h"
+
+class VISU_GaussPtsAct;
+class VISU_GaussPtsAct1;
+class VISU_GaussPtsAct2;
+
+//----------------------------------------------------------------------------
+namespace VISU 
+{ 
+  //! Extend an abstaract interface to manage Gauss points actors
+  struct TGaussPtsActorFactory: virtual TActorFactory
+  {
+    //! To create VISU_GaussPtsAct2 actor (segemented representation) from VISU_GaussPtsAct1 (basic representation)
+    virtual 
+    VISU_GaussPtsAct2* 
+    CloneActor(VISU_GaussPtsAct1* theActor) = 0;
+
+    //! The VISU_GaussPtsAct can update its presentation
+    virtual 
+    void
+    UpdateFromActor(VISU_GaussPtsAct* theActor) = 0;
+  };
+}
+
+
+#endif
diff --git a/src/OBJECT/VISU_GaussPtsDeviceActor.cxx b/src/OBJECT/VISU_GaussPtsDeviceActor.cxx
new file mode 100644 (file)
index 0000000..a59f4f2
--- /dev/null
@@ -0,0 +1,686 @@
+//  SMESH OBJECT : interactive object for SMESH visualization
+//
+//  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   :
+//  Author : 
+//  Module :
+//  $Header$
+
+
+#include "VISU_GaussPtsDeviceActor.h"
+
+#include "VISU_GaussPointsPL.hxx"
+#include "VISU_OpenGLPointSpriteMapper.hxx"
+
+#include "VTKViewer_Transform.h"
+#include "VTKViewer_TransformFilter.h"
+#include "VTKViewer_PassThroughFilter.h"
+
+#include <vtkObjectFactory.h>
+#include <vtkPolyData.h>
+#include <vtkRenderer.h>
+#include <vtkTextProperty.h>
+#include <vtkProperty.h>
+#include <vtkTexture.h>
+
+#include "utilities.h"
+
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+#else
+static int MYDEBUG = 0;
+#endif
+
+using namespace std;
+
+
+//----------------------------------------------------------------
+vtkStandardNewMacro(VISU_GaussPtsDeviceActor);
+
+
+VISU_GaussPtsDeviceActor
+::VISU_GaussPtsDeviceActor():
+  myGeomFilter(VTKViewer_GeometryFilter::New()),
+  myTransformFilter(VTKViewer_TransformFilter::New())
+{
+  if(MYDEBUG) MESSAGE("VISU_GaussPtsDeviceActor - "<<this);
+
+  myGeomFilter->Delete();
+  myTransformFilter->Delete();
+
+  for(int i = 0; i < 3; i++){
+    PPassThroughFilter aFilter(VTKViewer_PassThroughFilter::New());
+    myPassFilter.push_back(aFilter);
+    aFilter->Delete();
+  }
+}
+
+
+VISU_GaussPtsDeviceActor
+::~VISU_GaussPtsDeviceActor()
+{
+  if(MYDEBUG) MESSAGE("~VISU_GaussPtsDeviceActor - "<<this);
+}
+
+
+//----------------------------------------------------------------
+void
+VISU_GaussPtsDeviceActor
+::Render(vtkRenderer *ren, vtkMapper *vtkNotUsed(m))
+{
+  if (this->Mapper == NULL)
+    {
+    vtkErrorMacro("No mapper for actor.");
+    return;
+    }
+  
+  // render the property
+  if (!this->Property)
+    {
+    // force creation of a property
+    this->GetProperty();
+    }
+  this->Property->Render(this, ren);
+  if (this->BackfaceProperty)
+    {
+    this->BackfaceProperty->BackfaceRender(this, ren);
+    this->Device->SetBackfaceProperty(this->BackfaceProperty);
+    }
+  this->Device->SetProperty(this->Property);  
+  
+  // render the texture
+  if (this->Texture)
+    {
+    this->Texture->Render(ren);
+    }
+  
+  // make sure the device has the same matrix
+  vtkMatrix4x4 *matrix = this->Device->GetUserMatrix();
+  this->GetMatrix(matrix);
+  
+  this->Device->Render(ren,Mapper);  
+  this->EstimatedRenderTime = Mapper->GetTimeToDraw();
+}
+
+
+//----------------------------------------------------------------
+void
+VISU_GaussPtsDeviceActor
+::AddToRender(vtkRenderer* theRenderer)
+{
+  theRenderer->AddActor(this);
+}
+
+void 
+VISU_GaussPtsDeviceActor
+::RemoveFromRender(vtkRenderer* theRenderer)
+{
+  theRenderer->RemoveActor(this);
+}
+
+void
+VISU_GaussPtsDeviceActor
+::SetTransform(VTKViewer_Transform* theTransform)
+{
+  myTransformFilter->SetTransform(theTransform);
+}
+
+VISU_OpenGLPointSpriteMapper*
+VISU_GaussPtsDeviceActor
+::GetPSMapper()
+{
+  return myMapper.GetPointer();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPtsDeviceActor
+::SetPipeLine(VISU_GaussPointsPL* thePipeLine) 
+{
+  myPipeLine = thePipeLine;
+  myMapper = thePipeLine->GetPSMapper();
+  vtkPolyData* aDataSet = myMapper->GetInput();
+
+  int anId = 0;
+  myPassFilter[ anId ]->SetInput( aDataSet ); 
+  myPassFilter[ anId + 1 ]->SetInput( myPassFilter[ anId ]->GetOutput() );
+  
+  anId++;
+  myTransformFilter->SetInput( myPassFilter[ anId ]->GetPolyDataOutput() );
+  
+  anId++;
+  myPassFilter[ anId ]->SetInput( myTransformFilter->GetOutput() );
+  
+  myMapper->SetInput( myPassFilter[ anId ]->GetPolyDataOutput() );
+  
+  Superclass::SetMapper( myMapper.GetPointer() );
+}
+
+VISU_GaussPointsPL* 
+VISU_GaussPtsDeviceActor
+::GetPipeLine() 
+{ 
+  return myPipeLine.GetPointer();
+}
+
+void
+VISU_GaussPtsDeviceActor
+::ShallowCopyPL(VISU_GaussPointsPL* thePipeLine)
+{
+  myPipeLine->ShallowCopy(thePipeLine);
+}
+
+
+//============================================================================
+#include <vtkActor.h>
+#include <vtkProperty.h>
+#include <vtkConeSource.h>
+#include <vtkAppendPolyData.h>
+#include <vtkPolyDataMapper.h>
+
+
+//----------------------------------------------------------------------------
+vtkStandardNewMacro(VISU_CursorPyramid);
+
+//----------------------------------------------------------------------------
+VISU_CursorPyramid
+::VISU_CursorPyramid():
+  myHeight(10.0),
+  myRadius(5.0),
+  myMagnification(1.0),
+  myClamp(256.0),
+  myNbCones(6),
+  myAppendFilter(vtkAppendPolyData::New()),
+  myMapper(vtkPolyDataMapper::New())
+{
+  myAppendFilter->Delete();
+  myMapper->Delete();
+
+  myMapper->SetInput(myAppendFilter->GetOutput());
+
+  for(int i = 0; i < myNbCones; i++){
+    vtkConeSource* aConeSource = vtkConeSource::New();
+    myAppendFilter->AddInput(aConeSource->GetOutput());
+    aConeSource->SetResolution(4);
+    mySources[i] = aConeSource;
+    aConeSource->Delete();
+  }
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_CursorPyramid
+::Render(vtkRenderer *ren, vtkMapper *vtkNotUsed(m))
+{
+  if (ren == NULL)
+    {
+    vtkErrorMacro("No mapper for actor.");
+    return;
+    }
+
+  this->SetScale(1.0);
+  float aMRadius = myRadius*myMagnification;
+  Init(myHeight,aMRadius*myCursorSize);
+
+  if(myClamp > 0.0f){
+    float aPoint1[3] = {0.0, 0.0, 0.0};
+    ren->SetDisplayPoint(aPoint1);
+    ren->DisplayToWorld();
+    ren->GetWorldPoint(aPoint1);
+
+    float aPoint2[3] = {0.0, myClamp, 0.0};
+    ren->SetDisplayPoint(aPoint2);
+    ren->DisplayToWorld();
+    ren->GetWorldPoint(aPoint2);
+    
+    float aWorldClamp = 
+      (aPoint2[0] - aPoint1[0])*(aPoint2[0] - aPoint1[0]) + 
+      (aPoint2[1] - aPoint1[1])*(aPoint2[1] - aPoint1[1]) + 
+      (aPoint2[2] - aPoint1[2])*(aPoint2[2] - aPoint1[2]); 
+    
+    aWorldClamp = sqrt(aWorldClamp);
+    float aMDiameter = 2.0 * aMRadius;
+    float aCoeff = aWorldClamp / aMDiameter;
+
+    if(aCoeff < 1.0){
+      this->SetScale(aCoeff);
+      //Init(myHeight/aCoeff,aMRadius*aCoeff);
+    }
+  }
+
+  if (this->Mapper == NULL)
+    {
+    vtkErrorMacro("No mapper for actor.");
+    return;
+    }
+  
+  // render the property
+  if (!this->Property)
+    {
+    // force creation of a property
+    this->GetProperty();
+    }
+  this->Property->Render(this, ren);
+  if (this->BackfaceProperty)
+    {
+    this->BackfaceProperty->BackfaceRender(this, ren);
+    this->Device->SetBackfaceProperty(this->BackfaceProperty);
+    }
+  this->Device->SetProperty(this->Property);  
+  
+  // render the texture
+  if (this->Texture)
+    {
+    this->Texture->Render(ren);
+    }
+  
+  // make sure the device has the same matrix
+  vtkMatrix4x4 *matrix = this->Device->GetUserMatrix();
+  this->GetMatrix(matrix);
+  
+  this->Device->Render(ren,Mapper);  
+  this->EstimatedRenderTime = Mapper->GetTimeToDraw();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_CursorPyramid
+::AddToRender(vtkRenderer* theRenderer)
+{ 
+  theRenderer->AddActor(this);
+}
+
+void
+VISU_CursorPyramid
+::RemoveFromRender(vtkRenderer* theRenderer)
+{ 
+  theRenderer->RemoveActor(this);
+}
+
+//----------------------------------------------------------------------------
+void 
+VISU_CursorPyramid
+::SetPreferences(float theHeight,
+                float theCursorSize)
+{
+  Init(theHeight, theCursorSize, myRadius, myMagnification, myClamp, GetPosition(), GetProperty()->GetColor());
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_CursorPyramid
+::Init(float theHeight,
+       float theCursorSize,
+       float theRadius,
+       float theMagnification,
+       float theClamp,
+       float thePos[3],
+       float theColor[3])
+{
+  Init(theHeight,theRadius*theMagnification*theCursorSize);
+  SetPosition(thePos[0],thePos[1],thePos[2]);
+  GetProperty()->SetColor(theColor);
+  SetMapper(myMapper.GetPointer());
+
+  myHeight = theHeight;
+  myCursorSize = theCursorSize;
+
+  myRadius = theRadius;
+  myMagnification = theMagnification;
+
+  myClamp = theClamp;
+}
+
+
+void
+VISU_CursorPyramid
+::Init(float theHeight,
+       float theRadius)
+{
+  for(int i = 0; i < myNbCones; ++i){
+    vtkConeSource* aSource = mySources[i].GetPointer();
+    aSource->SetHeight(theHeight);
+    // Set the angle of the cone. As a side effect, the angle plus height sets 
+    // the base radius of the cone.
+    aSource->SetAngle(20.0);
+  }
+  
+  float aDisplacement = -0.5*theHeight - theRadius;
+  
+  // X
+  mySources[0]->SetDirection(1.0, 0.0, 0.0);
+  mySources[0]->SetCenter(aDisplacement, 0.0, 0.0);
+
+  // It is impossible to inverse direction around X axis (VTK bug)
+  mySources[1]->SetDirection(-VTK_LARGE_FLOAT, 1.0, 0.0); // A workaround
+  mySources[1]->SetCenter(-aDisplacement, 0.0, 0.0);
+  
+  // Y
+  mySources[2]->SetDirection(0.0, 1.0, 0.0);
+  mySources[2]->SetCenter(0.0, aDisplacement, 0.0);
+  
+  mySources[3]->SetDirection(0.0, -1.0, 0.0); 
+  mySources[3]->SetCenter(0.0, -aDisplacement, 0.0);
+  
+  // Z
+  mySources[4]->SetDirection(0.0, 0.0, 1.0); 
+  mySources[4]->SetCenter(0.0, 0.0, aDisplacement);
+  
+  mySources[5]->SetDirection(0.0, 0.0, -1.0); 
+  mySources[5]->SetCenter(0.0, 0.0, -aDisplacement);
+}
+
+
+//----------------------------------------------------------------------------
+#include <vtkViewport.h>
+#include <vtkWindow.h>
+#include <vtkProp.h>
+#include <vtkPolyData.h>
+#include <vtkPolyDataMapper2D.h>
+#include <vtkActor2D.h>
+#include <vtkTimeStamp.h>
+#include <vtkTextProperty.h>
+#include <vtkTextActor.h>
+#include <vtkTextMapper.h>
+#include <vtkPoints.h>
+#include <vtkCellArray.h>
+#include <vtkProperty2D.h>
+//==================================================================
+vtkCxxRevisionMacro(VISU_FramedTextActor, "$Revision$");
+vtkStandardNewMacro(VISU_FramedTextActor);
+
+//==================================================================
+// function : VISU_FramedTextActor
+// purpose  :
+//==================================================================
+VISU_FramedTextActor::VISU_FramedTextActor()
+{
+  PositionCoordinate->SetCoordinateSystemToNormalizedViewport();
+
+  myTransparency=0.;
+  myBar = vtkPolyData::New();
+  myBarMapper = vtkPolyDataMapper2D::New();
+  myBarMapper->SetInput(myBar);
+  myBarActor = vtkActor2D::New();
+  myBarActor->SetMapper(myBarMapper);
+  myBarActor->GetProperty()->SetOpacity(1.-myTransparency);  
+  myBarActor->GetProperty()->SetColor(.5, .5, .5); 
+  //
+  myTextProperty = vtkTextProperty::New();
+  myTextProperty->SetFontSize(12);
+  myTextProperty->SetBold(0);
+  myTextProperty->SetItalic(0);
+  myTextProperty->SetShadow(1);
+  myTextProperty->SetFontFamilyToArial();
+  //
+  myTextMapper=vtkTextMapper::New();
+  myTextMapper->SetInput("some text");
+  myTextMapper->GetTextProperty()->ShallowCopy(myTextProperty);
+  myTextActor=vtkActor2D::New();
+  myTextActor->SetMapper(myTextMapper);
+  //
+  myBarActor->SetVisibility(1);
+  myTextActor->SetVisibility(1);
+  myBarActor->SetPickable(0);
+  myTextActor->SetPickable(0);
+  //----------------------------------------------------------
+  myModePosition=0;// 0 -centered below the point
+                   // 1 -top left corner of the 3D view window
+  //
+  for(int i=0; i<4; i++) {
+    myWorldPoint[i] = 0.;
+  }
+  myDistance=10.;
+  //
+}
+//==================================================================
+// function : ~
+// purpose  :
+//==================================================================
+VISU_FramedTextActor::~VISU_FramedTextActor()
+{
+  myTextActor->Delete();
+  myTextMapper->Delete();
+  myTextProperty->Delete();
+  myBarActor->Delete();
+  myBarMapper->Delete();
+  myBar->Delete();
+}
+//==================================================================
+// function : SetVisibility
+// purpose  :
+//==================================================================
+void VISU_FramedTextActor::SetVisibility (int theVisibility)
+{
+  myBarActor->SetVisibility(theVisibility);
+  myTextActor->SetVisibility(theVisibility);
+}
+//==================================================================
+// function : GetVisibility
+// purpose  :
+//==================================================================
+int VISU_FramedTextActor::GetVisibility() 
+{
+  return myBarActor->GetVisibility();
+}
+//==================================================================
+// function : SetPickable
+// purpose  :
+//==================================================================
+void VISU_FramedTextActor::SetPickable (int thePickability) 
+{
+  myBarActor->SetPickable(thePickability);
+  myTextActor->SetPickable(thePickability);
+}
+//==================================================================
+// function : GetPickable
+// purpose  :
+//==================================================================
+int VISU_FramedTextActor::GetPickable()
+{
+  return myBarActor->GetPickable();
+}
+//==================================================================
+// function : SetTransparency
+// purpose  :
+//==================================================================
+void VISU_FramedTextActor::SetTransparency(const float theTransparency)
+{
+  if (theTransparency>=0.  && theTransparency<=1.){
+    myTransparency=theTransparency;
+    myBarActor->GetProperty()->SetOpacity(1.-myTransparency);  
+    Modified();
+  }
+}
+//==================================================================
+// function : GetTransparency
+// purpose  :
+//==================================================================
+float VISU_FramedTextActor::GetTransparency()const
+{
+  return myTransparency;
+}
+//==================================================================
+// function : SetText
+// purpose  :
+//==================================================================
+void VISU_FramedTextActor::SetText(const char* theText)
+{
+  myTextMapper->SetInput(theText); 
+  Modified();
+}
+//==================================================================
+// function : GetText
+// purpose  :
+//==================================================================
+char* VISU_FramedTextActor::GetText()
+{
+  return myTextMapper->GetInput();
+}
+//==================================================================
+// function : SetModePosition
+// purpose  :
+//==================================================================
+void VISU_FramedTextActor::SetModePosition(const int theMode)
+{
+  myModePosition=theMode;
+  Modified();
+}
+//==================================================================
+// function : GetModePosition
+// purpose  :
+//==================================================================
+int VISU_FramedTextActor::GetModePosition()const
+{
+  return myModePosition;
+}
+//==================================================================
+// function : SetWorldPoint
+// purpose  :
+//==================================================================
+void VISU_FramedTextActor::SetWorldPoint(const float theWorldPoint[4])
+{
+  for(int i = 0; i<4; ++i) {
+    myWorldPoint[i] = theWorldPoint[i];
+  } 
+  Modified();
+}
+//==================================================================
+// function : GetWorldPoint
+// purpose  :
+//==================================================================
+const float* VISU_FramedTextActor::GetWorldPoint()const 
+{
+  return myWorldPoint;
+}
+//==================================================================
+// function : SetDistance
+// purpose  :
+//==================================================================
+void VISU_FramedTextActor::SetDistance(const float theDistance)
+{
+  myDistance=theDistance;
+}
+//==================================================================
+// function : GetDistance
+// purpose  :
+//==================================================================
+float VISU_FramedTextActor::GetDistance()const
+{
+  return myDistance;
+}
+//==================================================================
+// function : ReleaseGraphicsResources
+// purpose  :
+//==================================================================
+void VISU_FramedTextActor::ReleaseGraphicsResources(vtkWindow *win)
+{
+  myTextActor->ReleaseGraphicsResources(win);
+  myBarActor->ReleaseGraphicsResources(win);
+}
+//==================================================================
+// function : RenderOverlay
+// purpose  :
+//==================================================================
+int VISU_FramedTextActor::RenderOverlay(vtkViewport *viewport)
+{
+  int renderedSomething = 0;
+  myBarActor->RenderOverlay(viewport);
+  renderedSomething +=myTextActor->RenderOverlay(viewport);
+  return renderedSomething;
+}
+//==================================================================
+// function : RenderOpaqueGeometry
+// purpose  :
+//==================================================================
+int 
+VISU_FramedTextActor
+::RenderOpaqueGeometry(vtkViewport *theViewport)
+{
+  int anIsRenderedSomething = 0;
+  int* aViewportSize = theViewport->GetSize();
+  if(aViewportSize[0] == 1 || aViewportSize[1] == 1)
+    return anIsRenderedSomething;
+
+  myBar->Initialize();
+
+  int aNbPoints = 4;
+  vtkPoints *aPoints = vtkPoints::New();
+  aPoints->SetNumberOfPoints(aNbPoints);
+  myBar->SetPoints(aPoints);
+  aPoints->Delete();
+
+  vtkCellArray *aPolys = vtkCellArray::New();
+  aPolys->Allocate(aPolys->EstimateSize(1,4));
+  vtkIdType aPointsIds[4] = {0, 1, 3, 2};
+  aPolys->InsertNextCell(4,aPointsIds);
+  myBar->SetPolys(aPolys);
+  aPolys->Delete(); 
+
+  int aTextSize[2]; 
+  myTextMapper->GetSize(theViewport, aTextSize);
+  int aBarWidth = aTextSize[0];
+  int aBarHeight = aTextSize[1];
+
+  if (myModePosition==0) {
+    theViewport->SetWorldPoint(myWorldPoint);
+    theViewport->WorldToDisplay();
+
+    float aSelectionPoint[3];
+    theViewport->GetDisplayPoint(aSelectionPoint);
+    float u = aSelectionPoint[0];
+    float v = aSelectionPoint[1] - myDistance;
+    theViewport->ViewportToNormalizedViewport(u, v);
+    PositionCoordinate->SetValue(u, v);
+    //
+    myTextProperty->SetJustificationToCentered();
+    myTextProperty->SetVerticalJustificationToTop();
+    //
+    aBarWidth /= 2;
+    aPoints->SetPoint(0, -aBarWidth,         0.0, 0.0);
+    aPoints->SetPoint(1, -aBarWidth, -aBarHeight, 0.0);
+    aPoints->SetPoint(2,  aBarWidth,         0.0, 0.0);
+    aPoints->SetPoint(3,  aBarWidth, -aBarHeight, 0.0);
+  }
+  else {//if (myModePosition==1) {
+    PositionCoordinate->SetValue(0.0, 1.0);
+    myTextProperty->SetJustificationToLeft();
+    myTextProperty->SetVerticalJustificationToTop();  
+    //
+    aPoints->SetPoint(0,        0.0,         0.0, 0.0);
+    aPoints->SetPoint(1,        0.0, -aBarHeight, 0.0);
+    aPoints->SetPoint(2,  aBarWidth,         0.0, 0.0);
+    aPoints->SetPoint(3,  aBarWidth, -aBarHeight, 0.0);
+  }
+  //
+  myTextMapper->GetTextProperty()->ShallowCopy(myTextProperty);
+  myBarActor ->GetPositionCoordinate()->SetReferenceCoordinate(PositionCoordinate);
+  myTextActor->GetPositionCoordinate()->SetReferenceCoordinate(PositionCoordinate);
+  //
+  myBuildTime.Modified();
+  //
+  return anIsRenderedSomething;
+}
diff --git a/src/OBJECT/VISU_GaussPtsDeviceActor.h b/src/OBJECT/VISU_GaussPtsDeviceActor.h
new file mode 100644 (file)
index 0000000..e25e925
--- /dev/null
@@ -0,0 +1,236 @@
+//  SMESH OBJECT : interactive object for SMESH visualization
+//
+//  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   : 
+//  Author : 
+//  Module : 
+//  $Header$
+
+#ifndef VISU_GAUSS_PTS_DEVICE_ACTOR_H
+#define VISU_GAUSS_PTS_DEVICE_ACTOR_H
+
+#include "VTKViewer_GeometryFilter.h"
+
+#include <vtkLODActor.h>
+#include <vtkSmartPointer.h>
+
+class VTKViewer_Transform;
+class VTKViewer_TransformFilter;
+class VTKViewer_PassThroughFilter;
+
+class VISU_OpenGLPointSpriteMapper;
+class VISU_GaussPointsPL;
+
+
+//============================================================================
+class VISU_GaussPtsDeviceActor: public vtkLODActor
+{
+ public:
+  vtkTypeMacro(VISU_GaussPtsDeviceActor,vtkLODActor);
+
+  static 
+  VISU_GaussPtsDeviceActor* 
+  New();
+
+  virtual
+  void
+  Render(vtkRenderer *, vtkMapper *);
+
+  //----------------------------------------------------------------------------
+  void
+  AddToRender(vtkRenderer* theRenderer); 
+
+  void
+  RemoveFromRender(vtkRenderer* theRenderer);
+
+  void
+  SetTransform(VTKViewer_Transform* theTransform); 
+
+  //----------------------------------------------------------------------------
+  VISU_GaussPointsPL* 
+  GetPipeLine();
+
+  void
+  SetPipeLine(VISU_GaussPointsPL* thePipeLine) ;
+
+  void
+  ShallowCopyPL(VISU_GaussPointsPL* thePipeLine);
+
+  VISU_OpenGLPointSpriteMapper*
+  GetPSMapper();
+
+ protected:
+  //----------------------------------------------------------------------------
+  vtkSmartPointer<VISU_GaussPointsPL> myPipeLine;
+  vtkSmartPointer<VISU_OpenGLPointSpriteMapper> myMapper;
+  vtkSmartPointer<VTKViewer_GeometryFilter> myGeomFilter;
+  vtkSmartPointer<VTKViewer_TransformFilter> myTransformFilter;
+
+  typedef vtkSmartPointer<VTKViewer_PassThroughFilter> PPassThroughFilter;
+  std::vector<PPassThroughFilter> myPassFilter;
+
+  VISU_GaussPtsDeviceActor();
+  ~VISU_GaussPtsDeviceActor();
+
+ private:
+  VISU_GaussPtsDeviceActor(const VISU_GaussPtsDeviceActor&); // Not implemented
+  void operator=(const VISU_GaussPtsDeviceActor&); // Not implemented
+};
+
+
+//============================================================================
+class vtkActor;
+class vtkConeSource;
+class vtkAppendPolyData;
+class vtkPolyDataMapper;
+
+#include <vtkLODActor.h>
+
+class VISU_CursorPyramid : public vtkLODActor 
+{
+public:
+  vtkTypeMacro(VISU_CursorPyramid, vtkObject);
+
+  static
+  VISU_CursorPyramid* 
+  New();
+
+  virtual
+  void
+  Render(vtkRenderer *, vtkMapper *);
+
+  void
+  AddToRender(vtkRenderer* theRenderer);
+
+  void
+  RemoveFromRender(vtkRenderer* theRenderer);
+
+  void
+  Init(float theHeight,
+       float theCursorSize,
+       float theRadius,
+       float theMagnification,
+       float theClamp,
+       float thePos[3],
+       float theColor[3]);
+
+  void SetPreferences(float theHeight,
+                     float theCursorSize);
+
+protected:
+  VISU_CursorPyramid();
+
+  void
+  Init(float theHeight,
+       float theRadius);
+
+  int myNbCones;
+  vtkSmartPointer<vtkConeSource> mySources[6];
+  vtkSmartPointer<vtkAppendPolyData> myAppendFilter;
+  vtkSmartPointer<vtkPolyDataMapper> myMapper;
+  //
+  float myHeight;
+  float myCursorSize;
+  float myRadius;
+  float myMagnification;
+  float myClamp;
+
+ private:
+  VISU_CursorPyramid(const VISU_CursorPyramid&); // Not implemented
+  void operator=(const VISU_CursorPyramid&); // Not implemented
+};
+
+
+//==================================================================
+// class VISU_FramedTextActor
+//
+#include <vtkActor2D.h>
+//
+class vtkViewport;
+class vtkProp;
+class vtkWindow;
+class vtkPolyData;
+class vtkPolyDataMapper2D;
+class vtkActor2D;
+class vtkTimeStamp;
+class vtkTextProperty;
+class vtkTextMapper;
+
+class VISU_FramedTextActor : public vtkActor2D
+{
+public:
+  // vtks
+  vtkTypeRevisionMacro(VISU_FramedTextActor,vtkActor2D);
+  static VISU_FramedTextActor *New();
+  //
+  virtual int  RenderOpaqueGeometry(vtkViewport* viewport);
+  virtual int  RenderTranslucentGeometry(vtkViewport*) { return 0; };
+  virtual int  RenderOverlay(vtkViewport* viewport);
+  virtual void ReleaseGraphicsResources(vtkWindow *);
+  virtual void SetVisibility (int );
+  virtual int  GetVisibility() ;
+  virtual void SetPickable (int ) ;
+  virtual int GetPickable();
+  //
+  // selectors
+  void SetText(const char* theText);
+  char* GetText();
+  //
+  void SetModePosition(const int theMode);
+  int  GetModePosition()const;
+  //
+  void SetWorldPoint(const float theWorldPoint[4]);
+  const float* GetWorldPoint()const;
+  //
+  void  SetDistance(const float theDistance);
+  float GetDistance()const;
+  //
+  void  SetTransparency(const float theTransparency);
+  float GetTransparency()const;
+  //
+protected:
+  VISU_FramedTextActor();
+  ~VISU_FramedTextActor();
+
+protected:
+  vtkPolyData         *myBar;
+  vtkPolyDataMapper2D *myBarMapper;
+  vtkActor2D          *myBarActor;
+  //
+  vtkTextProperty *myTextProperty;
+  vtkTextMapper   *myTextMapper;
+  vtkActor2D      *myTextActor;
+  //
+  vtkTimeStamp  myBuildTime;
+  //
+  int   myModePosition;
+  float myWorldPoint[4];
+  float myDistance;
+  float myTransparency;
+  
+private:
+ VISU_FramedTextActor(const VISU_FramedTextActor&);  // Not implemented.
+  void operator=(const VISU_FramedTextActor&);  // Not implemented.
+};
+
+#endif //VISU_GAUSS_PTS_DEVICE_ACTOR_H
diff --git a/src/OBJECT/VISU_GaussPtsSettings.cxx b/src/OBJECT/VISU_GaussPtsSettings.cxx
new file mode 100644 (file)
index 0000000..b95b162
--- /dev/null
@@ -0,0 +1,106 @@
+//  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   : 
+//  Author : 
+//  Module : VISU
+//  $Header$
+
+#include "VISU_GaussPtsSettings.h"
+
+#include <vtkObjectFactory.h>
+#include <vtkImageData.h>
+
+//----------------------------------------------------------------
+vtkStandardNewMacro( VISU_GaussPtsSettings );
+vtkStandardNewMacro( VISU_InsideCursorSettings );
+vtkStandardNewMacro( VISU_OutsideCursorSettings );
+vtkStandardNewMacro( VISU_PickingSettings );
+
+//----------------------------------------------------------------
+VISU_GaussPtsSettings::VISU_GaussPtsSettings()
+{
+  this->Initial                = true;
+
+  this->PrimitiveType          = -1;
+  this->Clamp                  = -1;
+  this->Texture                = NULL;
+  this->AlphaThreshold         = -1;
+  this->Resolution             = -1;
+  this->Magnification          = -1;
+  this->Increment              = -1;
+}
+
+VISU_GaussPtsSettings::~VISU_GaussPtsSettings()
+{
+  this->SetTexture( NULL );
+}
+
+//----------------------------------------------------------------
+VISU_InsideCursorSettings::VISU_InsideCursorSettings() :
+  VISU_GaussPtsSettings()
+{
+  this->MinSize                = -1;
+  this->MaxSize                = -1;
+}
+
+VISU_InsideCursorSettings::~VISU_InsideCursorSettings()
+{
+}
+
+//----------------------------------------------------------------
+VISU_OutsideCursorSettings::VISU_OutsideCursorSettings() :
+  VISU_GaussPtsSettings()
+{
+  this->Size                   = -1;
+  this->Uniform                = false;
+  this->Color[0]               = -1;
+  this->Color[1]               = -1;
+  this->Color[2]               = -1;
+}
+
+VISU_OutsideCursorSettings::~VISU_OutsideCursorSettings()
+{
+}
+
+//----------------------------------------------------------------
+VISU_PickingSettings::VISU_PickingSettings()
+{
+  this->Initial                = true;
+
+  this->PyramidHeight          = -1;
+  this->CursorSize             = -1;
+  this->PointTolerance         = -1;
+  this->Color[0]               = -1;
+  this->Color[1]               = -1;
+  this->Color[2]               = -1;
+  this->InfoWindowTransparency = -1;
+  this->InfoWindowPosition     = -1;
+  this->ZoomFactor             = -1;
+  this->StepNumber             = -1;
+  this->DisplayParentMesh      = false;
+}
+
+VISU_PickingSettings::~VISU_PickingSettings()
+{
+}
diff --git a/src/OBJECT/VISU_GaussPtsSettings.h b/src/OBJECT/VISU_GaussPtsSettings.h
new file mode 100644 (file)
index 0000000..1778521
--- /dev/null
@@ -0,0 +1,231 @@
+//  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   : 
+//  Author : 
+//  Module : VISU
+//  $Header$
+
+#ifndef VISU_GaussPtsSettings_HeaderFile
+#define VISU_GaussPtsSettings_HeaderFile
+
+#include <vtkObject.h>
+#include <vtkCommand.h>
+
+class vtkImageData;
+
+
+//============================================================================
+namespace VISU
+{
+  const vtkIdType UpdateFromSettingsEvent        = vtkCommand::UserEvent + 100; 
+  const vtkIdType UpdateInsideSettingsEvent      = vtkCommand::UserEvent + 101; 
+  const vtkIdType UpdateOutsideSettingsEvent     = vtkCommand::UserEvent + 102; 
+  const vtkIdType UpdatePickingSettingsEvent     = vtkCommand::UserEvent + 103; 
+}
+
+
+//! Base class of Gauss Points settings.
+class VISU_GaussPtsSettings : public vtkObject
+{
+ public:
+  vtkTypeMacro( VISU_GaussPtsSettings, vtkObject );
+
+  VISU_GaussPtsSettings();
+  virtual ~VISU_GaussPtsSettings();
+
+  static
+  VISU_GaussPtsSettings*
+  New();
+
+  vtkSetMacro( Initial, bool );
+  vtkGetMacro( Initial, bool );
+
+  vtkSetMacro( PrimitiveType, int );
+  vtkGetMacro( PrimitiveType, int );
+
+  vtkSetMacro( Clamp, float );
+  vtkGetMacro( Clamp, float );
+
+  vtkSetMacro( Texture, vtkImageData* );
+  vtkGetMacro( Texture, vtkImageData* );
+
+  vtkSetMacro( AlphaThreshold, float );
+  vtkGetMacro( AlphaThreshold, float );
+
+  vtkSetMacro( Resolution, int );
+  vtkGetMacro( Resolution, int );
+
+  vtkSetMacro( Magnification, float );
+  vtkGetMacro( Magnification, float );
+
+  vtkSetMacro( Increment, float );
+  vtkGetMacro( Increment, float );
+
+ protected:
+  bool                Initial;
+
+  int                 PrimitiveType;
+  float               Clamp;
+  vtkImageData*       Texture;
+  float               AlphaThreshold;
+  int                 Resolution;
+  float               Magnification;
+  float               Increment;
+};
+
+
+//! Class of Inside Cursor Gauss Points settings.
+/*!
+ * Contains information about the point sprite parameters:
+ * Clamp, Texture, Alpha threshold, Const size and Color.
+ * Used by Gauss Points Actor.
+ */
+class VISU_InsideCursorSettings : public VISU_GaussPtsSettings
+{
+ public:
+  vtkTypeMacro( VISU_InsideCursorSettings, vtkObject );
+
+  VISU_InsideCursorSettings();
+  virtual ~VISU_InsideCursorSettings();
+
+  static
+  VISU_InsideCursorSettings*
+  New();
+
+  vtkSetMacro( MinSize, float );
+  vtkGetMacro( MinSize, float );
+
+  vtkSetMacro( MaxSize, float );
+  vtkGetMacro( MaxSize, float );
+
+ protected:
+  float               MinSize;
+  float               MaxSize;
+};
+
+
+//============================================================================
+//! Class of Outside Cursor Gauss Points settings.
+/*!
+ * Contains information about the point sprite parameters:
+ * Clamp, Texture, Alpha threshold, Const size and Color.
+ * Used by Gauss Points Actor.
+ */
+class VISU_OutsideCursorSettings : public VISU_GaussPtsSettings
+{
+ public:
+  vtkTypeMacro( VISU_OutsideCursorSettings, vtkObject );
+
+  VISU_OutsideCursorSettings();
+  virtual ~VISU_OutsideCursorSettings();
+
+  static
+  VISU_OutsideCursorSettings*
+  New();
+
+  vtkSetMacro( Size, float );
+  vtkGetMacro( Size, float );
+
+  vtkSetMacro( Uniform, bool );
+  vtkGetMacro( Uniform, bool );
+
+  vtkSetVector3Macro( Color, float );
+  vtkGetVector3Macro( Color, float );
+
+ protected:
+  float               Size;
+  bool                Uniform;
+  float               Color[3];
+};
+
+
+//! Class of Picking settings.
+/*!
+ * Contains information about the following parameters:
+ * Cursor Pyramid height, Info Window transparency,
+ * Info Window position, Zoom factor on first selected point,
+ * Camera movement steps number and Display parent mesh.
+ * Used by Gauss Points Actor.
+ */
+class VISU_PickingSettings : public vtkObject
+{
+ public:
+  enum { BelowPoint = 0, TopLeftCorner };
+
+ public:
+  vtkTypeMacro( VISU_PickingSettings, vtkObject );
+
+  VISU_PickingSettings();
+  virtual ~VISU_PickingSettings();
+
+  static
+  VISU_PickingSettings*
+  New();
+
+  vtkSetMacro( Initial, bool );
+  vtkGetMacro( Initial, bool );
+
+  vtkSetMacro( PyramidHeight, float );
+  vtkGetMacro( PyramidHeight, float );
+
+  vtkSetMacro( CursorSize, float );
+  vtkGetMacro( CursorSize, float );
+
+  vtkSetVector3Macro( Color, float );
+  vtkGetVector3Macro( Color, float );
+
+  vtkSetMacro( PointTolerance, float );
+  vtkGetMacro( PointTolerance, float );
+
+  vtkSetMacro( InfoWindowTransparency, float );
+  vtkGetMacro( InfoWindowTransparency, float );
+
+  vtkSetMacro( InfoWindowPosition, int );
+  vtkGetMacro( InfoWindowPosition, int );
+
+  vtkSetMacro( ZoomFactor, float );
+  vtkGetMacro( ZoomFactor, float );
+
+  vtkSetMacro( StepNumber, int );
+  vtkGetMacro( StepNumber, int );
+
+  vtkSetMacro( DisplayParentMesh, bool );
+  vtkGetMacro( DisplayParentMesh, bool );
+
+private:
+  bool                Initial;
+
+  float               PyramidHeight;
+  float               CursorSize;
+  float               PointTolerance;
+  float               Color[3];
+  float               InfoWindowTransparency;
+  int                 InfoWindowPosition;
+  float               ZoomFactor;
+  int                 StepNumber;
+  bool                DisplayParentMesh;
+};
+
+
+#endif
index 68f7446a6c7e2000cd61fb7644f9004c74f5ae94..b6b812d9f569abfbc9a91fcdce4cde1dedfb733c 100644 (file)
 //
 //
 //  File   : VISU_MeshAct.cxx
-//  Author : Laurent CORNABE with the help of Nicolas REJNERI
+//  Author : 
 //  Module : VISU
 //  $Header$
 
 #include "VISU_MeshAct.h"
-#include "VTKViewer_PassThroughFilter.h"
+#include "SVTK_DeviceActor.h"
 
 #include <vtkObjectFactory.h>
 #include <vtkRenderer.h>
 #include <vtkMatrix4x4.h>
 #include <vtkMapperCollection.h>
 
+
+//----------------------------------------------------------------------------
 vtkStandardNewMacro(VISU_MeshAct);
 
-VISU_MeshAct::VISU_MeshAct(){
 
+//----------------------------------------------------------------------------
+VISU_MeshAct
+::VISU_MeshAct()
+{
   vtkMatrix4x4 *m;
   m = vtkMatrix4x4::New();
 
-  mySurfaceActor = VISU_Actor::New();
-  mySurfaceActor->SetParent(this);
-  mySurfaceActor->GetProperty()->FrontfaceCullingOff();
-  mySurfaceActor->GetProperty()->BackfaceCullingOff();
+  mySurfaceActor = SVTK_DeviceActor::New();
+  mySurfaceActor->SetRepresentation(SVTK::Representation::Surface);
   mySurfaceActor->SetUserMatrix(m);
-  mySurfaceActor->SetRepresentation(2); //SURFACE
 
-  myEdgeActor = VISU_Actor::New();
-  myEdgeActor->SetParent(this);
-  myEdgeActor->PickableOff();
-  myEdgeActor->GetProperty()->FrontfaceCullingOff();
-  myEdgeActor->GetProperty()->BackfaceCullingOff();
+  myEdgeActor = SVTK_DeviceActor::New();
+  myEdgeActor->SetRepresentation(SVTK::Representation::Wireframe);
   myEdgeActor->SetUserMatrix(m);
-  myEdgeActor->SetRepresentation(1); //WIREFRAME
-
-  myNodeActor = VISU_Actor::New();
-  myNodeActor->SetParent(this);
-  myNodeActor->PickableOff();
-  myNodeActor->GetProperty()->SetPointSize(SALOME_POINT_SIZE);
-  myNodeActor->GetProperty()->FrontfaceCullingOff();
-  myNodeActor->GetProperty()->BackfaceCullingOff();
+
+  myNodeActor = SVTK_DeviceActor::New();
+  myNodeActor->SetRepresentation(SVTK::Representation::Points);
   myNodeActor->SetUserMatrix(m);
-  myNodeActor->SetRepresentation(0); //POINT
 
   m->Delete();
-  SetRepresentation(2); //SURFACE
+  SetRepresentation(SVTK::Representation::Surface);
 }
 
-VISU_MeshAct::~VISU_MeshAct(){
+VISU_MeshAct
+::~VISU_MeshAct()
+{
   mySurfaceActor->Delete();
   myEdgeActor->Delete();
   myNodeActor->Delete();
 }
 
-void VISU_MeshAct::setIO(const Handle(SALOME_InteractiveObject)& theIO){
-  VISU_Actor::setIO(theIO);
-  mySurfaceActor->setIO(theIO);
-  myEdgeActor->setIO(theIO);
-  myNodeActor->setIO(theIO);
-}
 
-void VISU_MeshAct::SetPrs3d(VISU::Prs3d_i* thePrs3d){
-  if(thePrs3d){
-    VISU_Actor::SetPrs3d(thePrs3d);
-    mySurfaceActor->SetPrs3d(thePrs3d);
-    myEdgeActor->SetPrs3d(thePrs3d);
-    myNodeActor->SetPrs3d(thePrs3d);
-  }
-}
+//----------------------------------------------------------------------------
+void
+VISU_MeshAct
+::SetMapperInput(vtkDataSet* theDataSet)
+{
+  Superclass::SetMapperInput(theDataSet);
 
-void VISU_MeshAct::AddToRender(vtkRenderer* theRenderer){
-  VISU_Actor::AddToRender(theRenderer);
-  theRenderer->AddActor(myEdgeActor);
+  mySurfaceActor->SetInput(theDataSet);
+  myEdgeActor->SetInput(theDataSet);
+  myNodeActor->SetInput(theDataSet);
 }
 
-void VISU_MeshAct::RemoveFromRender(vtkRenderer* theRenderer){
-  VISU_Actor::RemoveFromRender(theRenderer);
-  theRenderer->RemoveActor(myEdgeActor);
-}
 
-void VISU_MeshAct::SetPipeLine(VISU_PipeLine* thePipeLine) {
-  VISU_Actor::SetPipeLine(thePipeLine);
-  mySurfaceActor->SetPipeLine(thePipeLine);
-  myEdgeActor->SetPipeLine(thePipeLine);
-  myNodeActor->SetPipeLine(thePipeLine);
-}
+//----------------------------------------------------------------------------
+void
+VISU_MeshAct
+::SetTransform(VTKViewer_Transform* theTransform)
+{
+  Superclass::SetTransform(theTransform);
 
-void VISU_MeshAct::SetTransform(VTKViewer_Transform* theTransform){
-  VISU_Actor::SetTransform(theTransform);
   mySurfaceActor->SetTransform(theTransform);
   myEdgeActor->SetTransform(theTransform);
   myNodeActor->SetTransform(theTransform);
 }
 
-void VISU_MeshAct::SetShrinkable(bool theIsShrinkable){
-  VISU_Actor::SetShrinkable(theIsShrinkable);
+
+//----------------------------------------------------------------------------
+void
+VISU_MeshAct
+::SetShrinkable(bool theIsShrinkable)
+{
+  Superclass::SetShrinkable(theIsShrinkable);
+
   mySurfaceActor->SetShrinkable(theIsShrinkable);
   myEdgeActor->SetShrinkable(theIsShrinkable);
-  myNodeActor->SetShrinkable(theIsShrinkable);
 }
 
-void VISU_MeshAct::SetShrinkFactor(float theValue){
-  VISU_Actor::SetShrinkFactor(theValue);
+void
+VISU_MeshAct
+::SetShrinkFactor(float theValue)
+{
+  Superclass::SetShrinkFactor(theValue);
+
   mySurfaceActor->SetShrinkFactor(theValue);
   myEdgeActor->SetShrinkFactor(theValue);
 }
 
-vtkProperty* VISU_MeshAct::GetSurfaceProperty(){
-  return mySurfaceActor->GetProperty();
-}
 
-void VISU_MeshAct::SetSurfaceProperty(vtkProperty* theProperty){
-  mySurfaceActor->SetProperty(theProperty);
+//----------------------------------------------------------------------------
+vtkProperty* 
+VISU_MeshAct
+::GetSurfaceProperty()
+{
+  return mySurfaceActor->GetProperty();
 }
 
-vtkProperty* VISU_MeshAct::GetEdgeProperty(){
+vtkProperty* 
+VISU_MeshAct
+::GetEdgeProperty()
+{
   return myEdgeActor->GetProperty();
 }
 
-void VISU_MeshAct::SetEdgeProperty(vtkProperty* theProperty){
-  myEdgeActor->SetProperty(theProperty);
-}
-
-vtkProperty* VISU_MeshAct::GetNodeProperty(){
+vtkProperty* 
+VISU_MeshAct
+::GetNodeProperty()
+{
   return myNodeActor->GetProperty();
 }
 
-void VISU_MeshAct::SetNodeProperty(vtkProperty* theProperty){
-  myNodeActor->SetProperty(theProperty);
-}
-
-void VISU_MeshAct::SetOpacity(float theValue){
+//----------------------------------------------------------------------------
+void
+VISU_MeshAct
+::SetOpacity(float theValue)
+{
   GetSurfaceProperty()->SetOpacity(theValue);
 }
 
-float VISU_MeshAct::GetOpacity(){
+float
+VISU_MeshAct
+::GetOpacity()
+{
   return GetSurfaceProperty()->GetOpacity();
 }
 
-void VISU_MeshAct::SetLineWidth(float theLineWidth){
+//----------------------------------------------------------------------------
+void
+VISU_MeshAct
+::SetLineWidth(float theLineWidth)
+{
   GetEdgeProperty()->SetLineWidth(theLineWidth);
 }
 
-float VISU_MeshAct::GetLineWidth(){
+float
+VISU_MeshAct::GetLineWidth()
+{
   return GetEdgeProperty()->GetLineWidth();
 }
 
-void VISU_MeshAct::SetShrink(){
+//----------------------------------------------------------------------------
+void
+VISU_MeshAct
+::SetShrink()
+{
   if(myRepresentation == VTK_POINTS)
     return;
-  VISU_Actor::SetShrink();
+
+  Superclass::SetShrink();
+
   mySurfaceActor->SetShrink();
   myEdgeActor->SetShrink();
-  //SetRepresentation(GetRepresentation());
 }
 
-void VISU_MeshAct::UnShrink(){
-  VISU_Actor::UnShrink();
+void
+VISU_MeshAct
+::UnShrink()
+{
+  Superclass::UnShrink();
+
   mySurfaceActor->UnShrink();
   myEdgeActor->UnShrink();
-  //SetRepresentation(GetRepresentation());
 }
 
-void VISU_MeshAct::SetRepresentation(int theMode)
+
+//----------------------------------------------------------------------------
+void 
+VISU_MeshAct
+::SetRepresentation(int theMode)
 {
-  SALOME_Actor::SetRepresentation(theMode);
-
-  if (!GetVisibility()) return; // Fix IPAL9555
-
-  mySurfaceActor->VisibilityOff();
-  myEdgeActor->VisibilityOff();
-  myNodeActor->VisibilityOff();
-  myEdgeActor->PickableOff();
-  myNodeActor->PickableOff();
-  switch (theMode) {
-  case VTK_POINTS:
-    myNodeActor->VisibilityOn();
-    myNodeActor->PickableOn();
-    break;
-  case VTK_WIREFRAME:
-    myEdgeActor->VisibilityOn();
-    myEdgeActor->SetRepresentation(1);
-    myEdgeActor->PickableOn();
-    break;
-  case VTK_SURFACE:
-    mySurfaceActor->VisibilityOn();
-    break;
-  case 3: //INSIDEFRAME
-    myEdgeActor->VisibilityOn();
-    myEdgeActor->SetRepresentation(3);
-    myEdgeActor->PickableOn();
-    break;
-  case 4: //SURFACEFRAME
-    myEdgeActor->VisibilityOn();
-    myEdgeActor->SetRepresentation(1);
-    mySurfaceActor->VisibilityOn();
-    break;
-  }
-  if (myRepresentation == VTK_POINTS)
-    UnShrink();
-}
+  Superclass::SetRepresentation(theMode);
 
-void VISU_MeshAct::SetVisibility(int theMode){
-  VISU_Actor::SetVisibility(theMode);
-  if(GetVisibility())
-    SetRepresentation(GetRepresentation());
-  else{
-    myNodeActor->VisibilityOff();
-    myEdgeActor->VisibilityOff();
-    mySurfaceActor->VisibilityOff();
-  }
+  if(theMode == SVTK::Representation::Insideframe)
+    myEdgeActor->SetRepresentation(SVTK::Representation::Insideframe);
+  else
+    myEdgeActor->SetRepresentation(SVTK::Representation::Wireframe);
 }
 
-// From vtkLODActor
-void VISU_MeshAct::Render(vtkRenderer *ren, vtkMapper *vtkNotUsed(m))
+//----------------------------------------------------------------------------
+int
+VISU_MeshAct
+::RenderOpaqueGeometry(vtkViewport *ren)
 {
-  float myTime, bestTime, tempTime;
-  vtkMatrix4x4 *matrix;
-  vtkMapper *mapper, *bestMapper;
-
-  if (this->Mapper == NULL)
-    {
-    vtkErrorMacro("No mapper for actor.");
-    return;
-    }
-
-  // first time through create lods if non have been added
-  if (this->LODMappers->GetNumberOfItems() == 0)
-    {
-    this->CreateOwnLODs();
-    }
-
-  // If the actor has changed or the primary mapper has changed ...
-  // Is this the correct test?
-  if (this->MediumMapper)
-    {
-    if (this->GetMTime() > this->BuildTime ||
-        this->Mapper->GetMTime() > this->BuildTime)
-      {
-      this->UpdateOwnLODs();
-      }
-    }
-
-  // figure out how much time we have to render
-  myTime = this->AllocatedRenderTime;
-
-  // Figure out which resolution to use
-  // none is a valid resolution. Do we want to have a lowest:
-  // bbox, single point, ...
-  // There is no order to the list, so it is assumed that mappers that take
-  // longer to render are better quality.
-  // Timings might become out of date, but we rely on
-
-  bestMapper = this->Mapper;
-  bestTime = bestMapper->GetTimeToDraw();
-  if (bestTime > myTime)
-    {
-    this->LODMappers->InitTraversal();
-    while ((mapper = this->LODMappers->GetNextItem()) != NULL &&
-           bestTime != 0.0)
-      {
-      tempTime = mapper->GetTimeToDraw();
-
-      // If the LOD has never been rendered, select it!
-      if (tempTime == 0.0)
-        {
-        bestMapper = mapper;
-        bestTime = 0.0;
-        }
-      else
-        {
-        if (bestTime > myTime && tempTime < bestTime)
-          {
-          bestMapper = mapper;
-          bestTime = tempTime;
-          }
-        if (tempTime > bestTime && tempTime < myTime)
-          {
-          bestMapper = mapper;
-          bestTime = tempTime;
-          }
-        }
-      }
-    }
+  GetMatrix(myNodeActor->GetUserMatrix());
+  GetMatrix(myEdgeActor->GetUserMatrix());
+  GetMatrix(mySurfaceActor->GetUserMatrix());
 
+  using namespace SVTK::Representation;
   switch(GetRepresentation()){
-  case 0: //POINTS
-    myNodeActor->GetProperty()->Render(this, ren);
-    break;
-  case 1: //WIREFRAME
-    //PAL5268: myEdgeActor->GetProperty()->Render(this, ren);
+  case Points : 
+    myNodeActor->RenderOpaqueGeometry(ren);
     break;
-  case 2: //SURFACE
-    mySurfaceActor->GetProperty()->Render(this, ren);
+  case Wireframe : 
+  case Insideframe : 
+    myEdgeActor->RenderOpaqueGeometry(ren);
     break;
-  case 3: //INSIDEFRAME
-    //PAL5268: myEdgeActor->GetProperty()->Render(this, ren);
+  case Surface : 
+    mySurfaceActor->RenderOpaqueGeometry(ren);
     break;
-  case 4: //SURFACEFRAME
-    //PAL5268: myEdgeActor->GetProperty()->Render(this, ren);
-    mySurfaceActor->GetProperty()->Render(this, ren);
+  case Surfaceframe : 
+    mySurfaceActor->RenderOpaqueGeometry(ren);
+    myEdgeActor->RenderOpaqueGeometry(ren);
     break;
   }
+  return 1;
+}
 
-  // render the texture
-  if (this->Texture)
-    {
-    this->Texture->Render(ren);
-    }
-
-  switch(GetRepresentation()){
-  case 0: //POINTS
-    matrix = myNodeActor->GetUserMatrix();
-    break;
-  case 1: //WIREFRAME
-    matrix = myEdgeActor->GetUserMatrix();
-    break;
-  case 2: //SURFACE
-    matrix = mySurfaceActor->GetUserMatrix();
-    break;
-  case 3: //INSIDEFRAME
-    matrix = myEdgeActor->GetUserMatrix();
-    break;
-  case 4: //SURFACEFRAME
-    matrix = myEdgeActor->GetUserMatrix();
-    this->GetMatrix(matrix);
-    matrix = mySurfaceActor->GetUserMatrix();
-    break;
-  }
-  this->GetMatrix(matrix);
+int
+VISU_MeshAct
+::RenderTranslucentGeometry(vtkViewport *ren)
+{
+  GetMatrix(myNodeActor->GetUserMatrix());
+  GetMatrix(myEdgeActor->GetUserMatrix());
+  GetMatrix(mySurfaceActor->GetUserMatrix());
 
+  using namespace SVTK::Representation;
   switch(GetRepresentation()){
-  case 0: //POINTS
-    myNodeActor->Render(ren,bestMapper);
+  case Points : 
+    myNodeActor->RenderTranslucentGeometry(ren);
     break;
-  case 1: //WIREFRAME
-    //PAL5268: myEdgeActor->Render(ren,bestMapper);
+  case Wireframe : 
+  case Insideframe : 
+    myEdgeActor->RenderTranslucentGeometry(ren);
     break;
-  case 2: //SURFACE
-    mySurfaceActor->Render(ren,bestMapper);
+  case Surface : 
+    mySurfaceActor->RenderTranslucentGeometry(ren);
     break;
-  case 3: //INSIDEFRAME
-    //PAL5268: myEdgeActor->Render(ren,bestMapper);
-    break;
-  case 4: //SURFACEFRAME
-    //PAL5268: myEdgeActor->Render(ren,bestMapper);
-    mySurfaceActor->Render(ren,bestMapper);
+  case Surfaceframe : 
+    mySurfaceActor->RenderTranslucentGeometry(ren);
+    myEdgeActor->RenderTranslucentGeometry(ren);
     break;
   }
-
-  this->EstimatedRenderTime = bestMapper->GetTimeToDraw();
-}
-
-// From vtkLODActor
-void VISU_MeshAct::Modified()
-{
-  myNodeActor->Modified();
-  //PAL5268: myEdgeActor->Modified();
-  mySurfaceActor->Modified();
-  this->vtkActor::Modified();
+  return 1;
 }
index bacc15c37448be9b192529fb377ba1b7afa8986a..9dafb348faf38f225a112168c77ffe3c31e63f5e 100644 (file)
 #define VISU_MeshAct_HeaderFile
 
 #include "VISU_Actor.h"
-class vtkDataSetMapper;
-
-class VTKOCC_EXPORT VISU_MeshAct : public VISU_Actor {
+#include "SVTK_DeviceActor.h"
+
+namespace SVTK
+{
+  namespace Representation
+  {
+    const Type Surfaceframe = Insideframe + 1;
+  }
+}
+
+class VTKOCC_EXPORT VISU_MeshAct : public VISU_Actor 
+{
  public:
   vtkTypeMacro(VISU_MeshAct,VISU_Actor);
   static VISU_MeshAct* New();
-  ~VISU_MeshAct();
 
-  virtual void setIO(const Handle(SALOME_InteractiveObject)& theIO);
-  virtual void SetPrs3d(VISU::Prs3d_i* thePrs3d);
+  //! Apply view transformation
+  virtual
+  void
+  SetTransform(VTKViewer_Transform* theTransform); 
+
+  virtual
+  vtkProperty* 
+  GetSurfaceProperty(); 
+
+  virtual
+  vtkProperty* 
+  GetEdgeProperty(); 
 
-  virtual void AddToRender(vtkRenderer* theRenderer); 
-  virtual void RemoveFromRender(vtkRenderer* theRenderer);
+  virtual
+  vtkProperty* 
+  GetNodeProperty(); 
 
-  virtual void SetPipeLine(VISU_PipeLine* thePipeLine) ;
-  virtual void SetTransform(VTKViewer_Transform* theTransform); 
+  virtual
+  void
+  SetOpacity(float theValue);
 
-  virtual vtkProperty* GetSurfaceProperty(); 
-  virtual void SetSurfaceProperty(vtkProperty* theProperty);
+  virtual
+  float
+  GetOpacity();
 
-  virtual vtkProperty* GetEdgeProperty(); 
-  virtual void SetEdgeProperty(vtkProperty* theProperty);
+  virtual
+  void
+  SetLineWidth(float theLineWidth);
 
-  virtual vtkProperty* GetNodeProperty(); 
-  virtual void SetNodeProperty(vtkProperty* theProperty);
+  virtual
+  float
+  GetLineWidth();
 
-  virtual void SetOpacity(float theValue);
-  virtual float GetOpacity();
+  virtual
+  void
+  SetRepresentation(int theMode);
 
-  virtual void SetLineWidth(float theLineWidth);
-  virtual float GetLineWidth();
+  virtual
+  void
+  SetShrinkable(bool theIsShrinkable);
 
-  virtual void SetRepresentation(int theMode);
+  virtual
+  void
+  SetShrinkFactor(float theFactor = 0.8); 
 
-  virtual void SetVisibility(int theMode);
+  virtual
+  void
+  SetShrink(); 
 
-  virtual void SetShrinkable(bool theIsShrinkable);
-  virtual void SetShrinkFactor(float theFactor = 0.8); 
+  virtual
+  void
+  UnShrink(); 
 
-  virtual void SetShrink(); 
-  virtual void UnShrink(); 
+  virtual
+  int
+  RenderOpaqueGeometry(vtkViewport *ren);
 
-  virtual void Render(vtkRenderer *, vtkMapper *);
-  void Modified();
+  virtual
+  int
+  RenderTranslucentGeometry(vtkViewport *ren);
 
  protected:
   VISU_MeshAct();
-  VISU_Actor *mySurfaceActor, *myEdgeActor, *myNodeActor;
+  ~VISU_MeshAct();
+
+  virtual 
+  void
+  SetMapperInput(vtkDataSet* theDataSet);
+
+  SVTK_DeviceActor *mySurfaceActor;
+  SVTK_DeviceActor *myEdgeActor;
+  SVTK_DeviceActor *myNodeActor;
 };
 
 #endif
index c34a8e7fe24ba42d738cdae0c902cf23123c6f69..527f726f27cb8752d84718de6ffa788ee220f2e6 100644 (file)
@@ -35,7 +35,9 @@
 
 vtkStandardNewMacro(VISU_ScalarMapAct);
 
-VISU_ScalarMapAct::VISU_ScalarMapAct(){
+VISU_ScalarMapAct
+::VISU_ScalarMapAct()
+{
   myScalarBar = VISU_ScalarBarActor::New();
 
   vtkProperty* aProperty = GetProperty();
@@ -49,32 +51,49 @@ VISU_ScalarMapAct::VISU_ScalarMapAct(){
   myProperty->DeepCopy(aProperty);
 }
 
-VISU_ScalarMapAct::~VISU_ScalarMapAct(){
+VISU_ScalarMapAct
+::~VISU_ScalarMapAct()
+{
   myScalarBar->Delete();
 }
 
-void VISU_ScalarMapAct::AddToRender(vtkRenderer* theRenderer){
-  SALOME_Actor::AddToRender(theRenderer);
+void
+VISU_ScalarMapAct
+::AddToRender(vtkRenderer* theRenderer)
+{
+  VISU_Actor::AddToRender(theRenderer);
   if(myScalarBar)
     theRenderer->AddActor2D(myScalarBar);
 }
 
-void VISU_ScalarMapAct::RemoveFromRender(vtkRenderer* theRenderer){
-  SALOME_Actor::RemoveFromRender(theRenderer);
+void
+VISU_ScalarMapAct
+::RemoveFromRender(vtkRenderer* theRenderer)
+{
+  VISU_Actor::RemoveFromRender(theRenderer);
   if(myScalarBar)
     theRenderer->RemoveActor(myScalarBar);
 }
 
-void VISU_ScalarMapAct::SetVisibility(int theMode){
-  SALOME_Actor::SetVisibility(theMode);
+void
+VISU_ScalarMapAct
+::SetVisibility(int theMode)
+{
+  VISU_Actor::SetVisibility(theMode);
   if(myScalarBar) myScalarBar->SetVisibility(myBarVisibility && theMode);
 }
 
-int VISU_ScalarMapAct::GetVisibility(){
-  return SALOME_Actor::GetVisibility();
+int 
+VISU_ScalarMapAct
+::GetVisibility()
+{
+  return VISU_Actor::GetVisibility();
 }
 
-void VISU_ScalarMapAct::SetBarVisibility(bool theMode){
+void
+VISU_ScalarMapAct
+::SetBarVisibility(bool theMode)
+{
   myBarVisibility = theMode;
   if(myScalarBar) myScalarBar->SetVisibility(myBarVisibility);
 }
index 4cb16c272b23a9ed334eec6fad70c56027770d5f..e568a9d419874d49ab4196aea539971945346946 100644 (file)
 #include <vtkPolyDataMapper.h>
 #include <vtkPolyData.h>
 
-using namespace std;
-
-//=======================================================================
 
+//----------------------------------------------------------------------------
 vtkStandardNewMacro(VISU_VectorsAct);
 
 
-VISU_VectorsAct::VISU_VectorsAct(){}
+//----------------------------------------------------------------------------
+VISU_VectorsAct
+::VISU_VectorsAct():
+  myVectorsPL(NULL)
+{}
 
 
-VISU_VectorsAct::~VISU_VectorsAct(){}
+//----------------------------------------------------------------------------
+VISU_VectorsAct
+::~VISU_VectorsAct()
+{}
 
 
-void VISU_VectorsAct::SetPipeLine(VISU_PipeLine* thePipeLine) {
-  if((myPipeLine = dynamic_cast<VISU_VectorsPL*>(thePipeLine))){
-    VISU_Actor::SetPipeLine(myPipeLine);
-    myPipeLine->Delete();
-  }
+//----------------------------------------------------------------------------
+void 
+VISU_VectorsAct
+::SetPipeLine(VISU_PipeLine* thePipeLine) 
+{
+  myVectorsPL = dynamic_cast<VISU_VectorsPL*>(thePipeLine);
+  VISU_Actor::SetPipeLine(myVectorsPL);
+  myVectorsPL->Delete();
+}
+
+
+//----------------------------------------------------------------------------
+vtkDataSet* 
+VISU_VectorsAct
+::GetInput()
+{
+  return GetCurrentPL()->GetOutput();
 }
 
 
-void VISU_VectorsAct::SetTransform(VTKViewer_Transform* theTransform){
-  myPipeLine->SetTransform(theTransform);
-  Modified();
+//----------------------------------------------------------------------------
+void
+VISU_VectorsAct
+::SetTransform(VTKViewer_Transform* theTransform)
+{
+  Superclass::SetTransform(theTransform);
+  myVectorsPL->SetTransform(theTransform);
 }
 
 
-void VISU_VectorsAct::SetMapper(vtkMapper* theMapper){
+//----------------------------------------------------------------------------
+void
+VISU_VectorsAct
+::SetMapper(vtkMapper* theMapper)
+{
   if(theMapper){
     myPassFilter[0]->SetInput(theMapper->GetInput());
-    myPassFilter[0]->Update();
+    
     myPassFilter[1]->SetInput(myPassFilter[0]->GetPolyDataOutput());
-    myPassFilter[1]->Update();
+
     myPassFilter[2]->SetInput(myPassFilter[1]->GetPolyDataOutput());
-    myPassFilter[2]->Update();
+
     myPassFilter[3]->SetInput(myPassFilter[2]->GetPolyDataOutput());
-    myPassFilter[3]->Update();
+
     if(vtkDataSetMapper* aMapper = dynamic_cast<vtkDataSetMapper*>(theMapper))
       aMapper->SetInput(myPassFilter[3]->GetPolyDataOutput());
     else if(vtkPolyDataMapper* aMapper = dynamic_cast<vtkPolyDataMapper*>(theMapper))
index ae5bc694695ad67e6d9c18eeb17adb1e674f34a3..921b0fc6ba1972caa1f6f023f67976df454e81a2 100644 (file)
@@ -37,19 +37,32 @@ class VISU_VectorsPL;
 class VTKOCC_EXPORT VISU_VectorsAct : public VISU_ScalarMapAct {
  public:
   vtkTypeMacro(VISU_VectorsAct,VISU_ScalarMapAct);
-  static VISU_VectorsAct* New();
-  ~VISU_VectorsAct();
 
-  virtual void SetPipeLine(VISU_PipeLine* thePipeLine);
+  static
+  VISU_VectorsAct*  
+  New();
+
+  virtual
+  void
+  SetPipeLine(VISU_PipeLine* thePipeLine);
 
-  virtual void SetTransform(VTKViewer_Transform* theTransform); 
+  virtual
+  vtkDataSet* 
+  GetInput(); 
 
-  virtual void SetMapper(vtkMapper* theMapper); 
+  virtual
+  void
+  SetTransform(VTKViewer_Transform* theTransform); 
+
+  virtual
+  void
+  SetMapper(vtkMapper* theMapper); 
 
  protected:
   VISU_VectorsAct();
+  ~VISU_VectorsAct();
 
-  VISU_VectorsPL* myPipeLine;
+  VISU_VectorsPL* myVectorsPL;
 };
 
 #endif
index 5b46996d82a616cc018f8ef6eafcfb2703133c70..cc97361b78b29eb8024a65fa72472040c9a864ca 100644 (file)
@@ -32,44 +32,79 @@ VPATH=.:@srcdir@
 
 @COMMENCE@
 
-EXPORT_HEADERS = VISU_PipeLine.hxx VISU_PipeLineUtils.hxx \
-       VISU_MeshPL.hxx VISU_ScalarMapPL.hxx \
-       VISU_CutPlanesPL.hxx VISU_CutLinesPL.hxx \
-       VISU_IsoSurfacesPL.hxx VISU_DeformedShapePL.hxx \
-       VISU_VectorsPL.hxx VISU_StreamLinesPL.hxx \
-       VISU_LookupTable.hxx VISU_ScalarBarActor.hxx \
-       VISU_Extractor.hxx VISU_FieldTransform.hxx \
-       VISU_UsedPointsFilter.hxx VISU_Plot3DPL.hxx
+EXPORT_HEADERS = \
+       VISU_PipeLine.hxx \
+       VISU_PipeLineUtils.hxx \
+       VISU_MeshPL.hxx \
+       VISU_ScalarMapPL.hxx \
+       VISU_CutPlanesPL.hxx \
+       VISU_CutLinesPL.hxx \
+       VISU_IsoSurfacesPL.hxx \
+       VISU_DeformedShapePL.hxx \
+       VISU_VectorsPL.hxx \
+       VISU_StreamLinesPL.hxx \
+       VISU_LookupTable.hxx \
+       VISU_ScalarBarActor.hxx \
+       VISU_Extractor.hxx \
+       VISU_FieldTransform.hxx \
+       VISU_UsedPointsFilter.hxx \
+       VISU_GaussPointsPL.hxx \
+       VISU_Plot3DPL.hxx \
+       VISU_OpenGLPointSpriteMapper.hxx \
+       VISU_ImplicitFunctionWidget.hxx \
+       SALOME_ExtractGeometry.h \
+       VISU_ScalarBarCtrl.hxx \
+       VISU_PlanesWidget.hxx \
+       VISU_SphereWidget.hxx \
+       VISU_WidgetCtrl.hxx 
 
 # Libraries targets
 
 LIB = libVisuPipeLine.la
-LIB_SRC = VISU_PipeLine.cxx VISU_PipeLineUtils.cxx \
-       VISU_MeshPL.cxx VISU_ScalarMapPL.cxx \
-       VISU_CutPlanesPL.cxx VISU_CutLinesPL.cxx \
-       VISU_IsoSurfacesPL.cxx VISU_DeformedShapePL.cxx \
-       VISU_VectorsPL.cxx VISU_StreamLinesPL.cxx \
-       VISU_LookupTable.cxx VISU_ScalarBarActor.cxx \
-       VISU_Extractor.cxx VISU_FieldTransform.cxx \
-       VISU_UsedPointsFilter.cxx VISU_Plot3DPL.cxx \
-       SALOME_ExtractGeometry.cxx
+LIB_SRC = \
+       VISU_PipeLine.cxx \
+       VISU_PipeLineUtils.cxx \
+       VISU_MeshPL.cxx \
+       VISU_ScalarMapPL.cxx \
+       VISU_CutPlanesPL.cxx \
+       VISU_CutLinesPL.cxx \
+       VISU_IsoSurfacesPL.cxx \
+       VISU_DeformedShapePL.cxx \
+       VISU_VectorsPL.cxx \
+       VISU_StreamLinesPL.cxx \
+       VISU_LookupTable.cxx \
+       VISU_ScalarBarActor.cxx \
+       VISU_Extractor.cxx \
+       VISU_FieldTransform.cxx \
+       VISU_UsedPointsFilter.cxx \
+       VISU_GaussPointsPL.cxx \
+       VISU_Plot3DPL.cxx \
+       SALOME_ExtractGeometry.cxx \
+       VISU_OpenGLPointSpriteMapper.cxx \
+       VISU_ImplicitFunctionWidget.cxx \
+       VISU_PlanesWidget.cxx \
+       VISU_SphereWidget.cxx \
+       VISU_WidgetCtrl.cxx \
+       VISU_ScalarBarCtrl.cxx
 
 # Executables targets
 
-BIN = VISUPipeLine
+BIN = VISUPipeLine VISU_img2vti
 BIN_SRC        =
 
-CPPFLAGS+= $(VTK_INCLUDES) \
+CPPFLAGS+= \
+       $(VTK_INCLUDES) \
        -I${KERNEL_ROOT_DIR}/include/salome \
        -I${GUI_ROOT_DIR}/include/salome \
        -I${MED_ROOT_DIR}/include/salome \
        $(HDF5_INCLUDES) $(BOOST_CPPFLAGS)
 
-LDFLAGS+= $(VTK_LIBS) -lVTKViewer -lVisuConvertor \
+LDFLAGS+= \
+       $(VTK_LIBS) -lVTKViewer -lVisuConvertor \
        -L${KERNEL_ROOT_DIR}/lib/salome -lSALOMELocalTrace \
        -L${GUI_ROOT_DIR}/lib/salome \
        -L${MED_ROOT_DIR}/lib/salome
 
-LDFLAGSFORBIN=$(LDFLAGS) -lOpUtil -lMEDWrapper -lMEDWrapper_V2_2 -lMEDWrapper_V2_1 -lMEDWrapperBase -lsuit -lqtx -lSALOMEBasics
+LDFLAGSFORBIN=$(LDFLAGS) -lOpUtil -lMEDWrapper -lMEDWrapper_V2_2 -lMEDWrapper_V2_1 -lMEDWrapperBase -lmed_V2_1 -lsuit -lqtx -lSALOMEBasics
 
 @CONCLUDE@
index 13655093f9dec9d295721a61059706aff983f355..5a1762e8d138179e767270bd068f784bcb806c91 100755 (executable)
@@ -41,80 +41,158 @@ using namespace std;
 #endif
 
 
+//----------------------------------------------------------------------------
 vtkStandardNewMacro(SALOME_ExtractGeometry);
 
 
-SALOME_ExtractGeometry::SALOME_ExtractGeometry()
+//----------------------------------------------------------------------------
+SALOME_ExtractGeometry
+::SALOME_ExtractGeometry():
+  myStoreMapping(false),
+  myIsDoneShallowCopy(false)
 {}
 
-SALOME_ExtractGeometry::~SALOME_ExtractGeometry()
+SALOME_ExtractGeometry
+::~SALOME_ExtractGeometry()
 {}
 
-vtkIdType SALOME_ExtractGeometry::GetElemObjId(int theVtkID)
+
+//----------------------------------------------------------------------------
+unsigned long int 
+SALOME_ExtractGeometry
+::GetMTime()
 {
-  if (myElemVTK2ObjIds.empty())
-    return theVtkID;
+  unsigned long int aTime = vtkExtractGeometry::GetMTime();
+  return aTime;
+}
 
-  if (theVtkID < 0 || myElemVTK2ObjIds.size() <= theVtkID)
-    return -1;
 
-#if defined __GNUC_2__
-  return myElemVTK2ObjIds[theVtkID];
-#else
-  return myElemVTK2ObjIds.at(theVtkID);
-#endif
+//----------------------------------------------------------------------------
+vtkImplicitBoolean* 
+SALOME_ExtractGeometry
+::GetImplicitBoolean() 
+{
+  return myImplicitBoolean.GetPointer();
 }
 
 
-vtkIdType SALOME_ExtractGeometry::GetNodeObjId(int theVtkID)
+void
+SALOME_ExtractGeometry
+::SetImplicitFunction(vtkImplicitFunction* theImplicitFunction)  
 {
-  if (myNodeVTK2ObjIds.empty())
-    return theVtkID;
+  myImplicitBoolean = dynamic_cast<vtkImplicitBoolean*>(theImplicitFunction);
+  vtkExtractGeometry::SetImplicitFunction(theImplicitFunction);
+}
 
-  if (theVtkID < 0 || myNodeVTK2ObjIds.size() <= theVtkID)
-    return -1;
 
-#if defined __GNUC_2__
-  return myNodeVTK2ObjIds[theVtkID];
-#else
-  return myNodeVTK2ObjIds.at(theVtkID);
-#endif
+//----------------------------------------------------------------------------
+void 
+SALOME_ExtractGeometry
+::SetStoreMapping(bool theStoreMapping)
+{
+  myStoreMapping = theStoreMapping;
+  Modified();
+}
+
+bool 
+SALOME_ExtractGeometry
+::GetStoreMapping() const
+{
+  return myStoreMapping;
 }
 
 
-void SALOME_ExtractGeometry::SetImplicitBoolean(vtkImplicitBoolean* theImplicitBoolean)
+//----------------------------------------------------------------------------
+vtkIdType
+SALOME_ExtractGeometry
+::GetElemVTKId(vtkIdType theID)
+{
+  if(!myStoreMapping||myIsDoneShallowCopy){
+    return theID;
+  }
+  vtkIdType iEnd = myElemVTK2ObjIds.size();
+  for(vtkIdType i = 0; i < iEnd; i++)
+    if(myElemVTK2ObjIds[i] == theID)
+      return i;
+
+  return -1;
+}
+
+vtkIdType
+SALOME_ExtractGeometry
+::GetNodeVTKId(vtkIdType theID)
 {
-  myImplicitBoolean = theImplicitBoolean;
-  SetImplicitFunction(theImplicitBoolean);
+  if (!myStoreMapping||myIsDoneShallowCopy){
+    return theID;
+  }
+  vtkIdType iEnd = myNodeVTK2ObjIds.size();
+  for(vtkIdType i = 0; i < iEnd; i++)
+    if(myNodeVTK2ObjIds[i] == theID)
+      return i;
+
+  return -1;
 }
 
 
-void SALOME_ExtractGeometry::SetStoreMapping(bool theStoreMapping)
+//----------------------------------------------------------------------------
+vtkIdType
+SALOME_ExtractGeometry
+::GetElemObjId(int theVtkID)
 {
-  myStoreMapping = theStoreMapping;
-  Modified();
+  if (!myStoreMapping||myIsDoneShallowCopy){
+    return theVtkID;
+  }
+  //
+  if (theVtkID<myElemVTK2ObjIds.size()){
+    return myElemVTK2ObjIds[theVtkID];
+  }
+  return -1;
+}
+
+
+vtkIdType
+SALOME_ExtractGeometry
+::GetNodeObjId(int theVtkID)
+{
+  if (!myStoreMapping||myIsDoneShallowCopy){
+    return theVtkID;
+  }
+  //
+  if (theVtkID<myNodeVTK2ObjIds.size()){
+    return myNodeVTK2ObjIds[theVtkID];
+  }
+  return -1;
 }
 
 
-void SALOME_ExtractGeometry::Execute()
+//----------------------------------------------------------------------------
+void
+SALOME_ExtractGeometry
+::Execute()
 {
-  if(myImplicitBoolean.GetPointer()){
+  myElemVTK2ObjIds.clear();
+  myNodeVTK2ObjIds.clear();
+  //
+  myIsDoneShallowCopy = !this->ImplicitFunction;
+
+  if(!myIsDoneShallowCopy && myImplicitBoolean.GetPointer()){
     if(vtkImplicitFunctionCollection* aFunction = myImplicitBoolean->GetFunction()){
-      if(aFunction->GetNumberOfItems() == 0){
-        myElemVTK2ObjIds.clear();
-        myNodeVTK2ObjIds.clear();
-
-       vtkDebugMacro(<< "Extracting geometry - ShallowCopy");
-       GetOutput()->ShallowCopy(GetInput());
-        Modified();
-       return;
-      }
+      myIsDoneShallowCopy = aFunction->GetNumberOfItems() == 0;
     }
   }
+
+  if(myIsDoneShallowCopy){
+    GetOutput()->ShallowCopy(GetInput());
+    Modified();
+    return;
+  }
+
   Execute2();
 }
 
-void SALOME_ExtractGeometry::Execute2()
+void
+SALOME_ExtractGeometry
+::Execute2()
 {
   vtkIdType ptId, numPts, numCells, i, cellId, newCellId, newId, *pointMap;
   vtkIdList *cellPts;
@@ -134,8 +212,6 @@ void SALOME_ExtractGeometry::Execute2()
   numCells = input->GetNumberOfCells();
   numPts = input->GetNumberOfPoints();
 
-  vtkDebugMacro(<< "Extracting geometry");
-
   if ( ! this->ImplicitFunction )
     {
     vtkErrorMacro(<<"No implicit function specified");
@@ -171,9 +247,7 @@ void SALOME_ExtractGeometry::Execute2()
   vtkFloatArray *newScalars = NULL;
 
   if(myStoreMapping){
-    myElemVTK2ObjIds.clear();
     myElemVTK2ObjIds.reserve(numCells);
-    myNodeVTK2ObjIds.clear();
     myNodeVTK2ObjIds.reserve(numPts);
   }
 
@@ -186,7 +260,8 @@ void SALOME_ExtractGeometry::Execute2()
         {
         newId = newPts->InsertNextPoint(x);
         pointMap[ptId] = newId;
-       myNodeVTK2ObjIds.push_back(ptId);
+       if(myStoreMapping)
+         myNodeVTK2ObjIds.push_back(ptId);
         outputPD->CopyData(pd,ptId,newId);
         }
       }
@@ -209,7 +284,8 @@ void SALOME_ExtractGeometry::Execute2()
           {
           newId = newPts->InsertNextPoint(x);
           pointMap[ptId] = newId;
-         myNodeVTK2ObjIds.push_back(ptId);
+         if(myStoreMapping)
+           myNodeVTK2ObjIds.push_back(ptId);
           outputPD->CopyData(pd,ptId,newId);
           }
         }
@@ -262,7 +338,8 @@ void SALOME_ExtractGeometry::Execute2()
             x = input->GetPoint(ptId);
             newId = newPts->InsertNextPoint(x);
             pointMap[ptId] = newId;
-           myNodeVTK2ObjIds.push_back(ptId);
+           if(myStoreMapping)
+             myNodeVTK2ObjIds.push_back(ptId);
             outputPD->CopyData(pd,ptId,newId);
             }
           newCellPts->InsertId(i,pointMap[ptId]);
@@ -273,7 +350,8 @@ void SALOME_ExtractGeometry::Execute2()
     if ( npts >= numCellPts || (this->ExtractBoundaryCells && npts > 0) )
       {
       newCellId = output->InsertNextCell(cell->GetCellType(),newCellPts);
-      myElemVTK2ObjIds.push_back(cellId);
+      if(myStoreMapping)
+       myElemVTK2ObjIds.push_back(cellId);
       outputCD->CopyData(cd,cellId,newCellId);
       }
     }//for all cells
index 74c1ec301661b05c926adc3808dbdaa218a40285..b225434f8bdd7772557c6953ba9264300e0ffabc 100755 (executable)
 
 #include <vtkExtractGeometry.h>
 #include <vtkSmartPointer.h>
-#include <vtkImplicitBoolean.h>
 
 #include <vector>
 
-//class vtkImplicitBoolean;
+class vtkImplicitBoolean;
 
 class SALOME_ExtractGeometry : public vtkExtractGeometry
 {
@@ -35,18 +34,37 @@ public:
 
   static SALOME_ExtractGeometry *New();
 
-  void SetImplicitBoolean(vtkImplicitBoolean* theImplicitBoolean);
-  vtkImplicitBoolean* GetImplicitBoolean() const {
-    return myImplicitBoolean.GetPointer();
-  }
+  virtual
+  void
+  SetImplicitFunction(vtkImplicitFunction* theImplicitFunction); 
 
-  void SetStoreMapping(bool theStoreMapping);
-  bool GetStoreMapping() const {
-    return myStoreMapping;
-  }
+  virtual
+  unsigned long int
+  GetMTime();
 
-  virtual vtkIdType GetNodeObjId(int theID);
-  virtual vtkIdType GetElemObjId(int theID);
+  vtkImplicitBoolean* 
+  GetImplicitBoolean();
+
+  bool 
+  GetStoreMapping() const;
+  void
+  SetStoreMapping(bool theStoreMapping);
+
+  virtual 
+  vtkIdType 
+  GetNodeObjId(vtkIdType theID);
+
+  virtual
+  vtkIdType
+  GetElemObjId(vtkIdType theID);
+
+  virtual
+  vtkIdType
+  GetNodeVTKId(vtkIdType theID);
+
+  virtual
+  vtkIdType
+  GetElemVTKId(vtkIdType theID);
 
 protected:
   SALOME_ExtractGeometry();
@@ -57,6 +75,7 @@ protected:
 
 private:
   bool myStoreMapping;
+  bool myIsDoneShallowCopy;
   typedef std::vector<vtkIdType> TVectorId;
   TVectorId myElemVTK2ObjIds;
   TVectorId myNodeVTK2ObjIds;
index e1f35eaa90576e292df6f0bad41bec2601821920..d1ac8fe3f9f25b176508c889eda26470f9f6c7e3 100644 (file)
 #include "VISU_DeformedShapePL.hxx"
 #include "VISU_VectorsPL.hxx"
 #include "VISU_StreamLinesPL.hxx"
+#include "VISU_GaussPointsPL.hxx"
 #include "VISU_Plot3DPL.hxx"
 
-typedef VISU_Plot3DPL TPresent;
+typedef VISU_GaussPointsPL TPresent;
 
 #include <vtkUnstructuredGrid.h>
 #include <vtkDataSetMapper.h>
 
 #include <vtkRenderWindowInteractor.h>
 #include <vtkRenderWindow.h>
+#include <vtkImageData.h>
 #include <vtkRenderer.h>
 #include <vtkCamera.h>
 #include <vtkActor.h>
@@ -64,6 +66,9 @@ int main(int argc, char** argv){
       vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
       iren->SetRenderWindow(renWin);
       VISU_Convertor* aConvertor = CreateConvertor(argv[1]);
+      aConvertor->BuildEntities();
+      aConvertor->BuildFields();
+      aConvertor->BuildMinMax();
       const VISU::TMeshMap& aMeshMap = aConvertor->GetMeshMap();
       VISU::TMeshMap::const_iterator aMeshMapIter = aMeshMap.begin();
       if(aMeshMapIter == aMeshMap.end()) return 0;
@@ -74,7 +79,10 @@ int main(int argc, char** argv){
       if(isOnlyMesh){
        const VISU::TEntity& anEntity = VISU::CELL_ENTITY;
        aMeshOnEntityMapIter = aMeshOnEntityMap.find(anEntity);
-       vtkUnstructuredGrid* aDataSet = aConvertor->GetMeshOnEntity(aMeshName,anEntity);
+
+       VISU::PIDMapper anIDMapper = 
+         aConvertor->GetMeshOnEntity(aMeshName,anEntity);
+       VISU::TVTKOutput* aDataSet = anIDMapper->GetVTKOutput();
 
        VISU_MeshPL* aPresent = VISU_MeshPL::New();
        aPresent->SetInput(aDataSet);
@@ -100,23 +108,43 @@ int main(int argc, char** argv){
        VISU::TFieldMap::const_iterator aFieldMapIter = aFieldMap.begin();
        for(; aFieldMapIter != aFieldMap.end(); aFieldMapIter++){
          const VISU::PField aField = aFieldMapIter->second;
-         if(aField->myNbComp == 1) continue;
+         /*
+         if(aField->myNbComp == 1) 
+           continue;
+         */
          const string& aFieldName = aFieldMapIter->first;
          const VISU::TValField& aValField = aField->myValField;
          VISU::TValField::const_iterator aValFieldIter = aValField.begin();
          if(aValFieldIter == aValField.end()) return 0;
          int aTimeStamp = aValFieldIter->first;
-         vtkUnstructuredGrid* aDataSet = aConvertor->GetTimeStampOnMesh(aMeshName,anEntity,aFieldName,aTimeStamp);
 
          TPresent* aPresent = TPresent::New();
-         aPresent->SetInput(aDataSet);
+         VISU::PIDMapper anIDMapper;
+         if(anEntity != VISU::NODE_ENTITY){
+           VISU::PGaussPtsIDMapper aGaussPtsIDMapper = aConvertor->GetTimeStampOnGaussPts(aMeshName,anEntity,aFieldName,aTimeStamp);
+           aPresent->SetGaussPtsIDMapper(aGaussPtsIDMapper);
+         }else{
+           continue;
+           VISU::PIDMapper anIDMapper = aConvertor->GetTimeStampOnMesh(aMeshName,anEntity,aFieldName,aTimeStamp);
+           aPresent->SetIDMapper(anIDMapper);
+         }
+
          aPresent->Build();
          aPresent->Init();
-         aPresent->SetSourceRange();
-         //aPresent->SetNumberOfContours(50);
-         //aPresent->SetNbParts(1);
-         //aPresent->SetOrientation(VISU_CutPlanesPL::XY,0.0,0.0);
-         //aPresent->SetScaling(VTK_SCALE_LOG10);
+
+         char aMainTexture[80];
+         strcpy( aMainTexture, getenv( "VISU_ROOT_DIR" ) );
+         strcat( aMainTexture, "/share/salome/resources/sprite_texture.vti" );
+         //cout << aMainTexture << endl;
+
+         char anAlphaTexture[80];
+         strcpy( anAlphaTexture, getenv( "VISU_ROOT_DIR" ) );
+         strcat( anAlphaTexture, "/share/salome/resources/sprite_alpha.vti" );
+         //cout << anAlphaTexture << endl;
+
+         vtkSmartPointer<vtkImageData> aTextureValue = VISU_GaussPointsPL::MakeTexture( aMainTexture, anAlphaTexture );
+         aPresent->SetImageData( aTextureValue.GetPointer() );
+
          aPresent->Update();
 
          vtkActor* anActor = vtkActor::New();
@@ -125,8 +153,6 @@ int main(int argc, char** argv){
          VISU_ScalarBarActor * aScalarBar = VISU_ScalarBarActor::New();
          aScalarBar->SetLookupTable(aPresent->GetBarTable());
 
-         aPresent->Build();
-
          ren->AddActor(anActor);
          ren->AddActor2D(aScalarBar);
 
index eb7b71d20ddad74d8ededb0493056cebe63d392b..b518dfad7996c974b88c36c7abaadfb077cf746a 100644 (file)
@@ -37,7 +37,6 @@ vtkStandardNewMacro(VISU_CutLinesPL);
 VISU_CutLinesPL::VISU_CutLinesPL(){}
 
 void VISU_CutLinesPL::ShallowCopy(VISU_PipeLine *thePipeLine){
-  VISU_CutPlanesPL::ShallowCopy(thePipeLine);
   if(VISU_CutLinesPL *aPipeLine = dynamic_cast<VISU_CutLinesPL*>(thePipeLine)){
     SetOrientation(aPipeLine->GetPlaneOrientation(1),
                   aPipeLine->GetRotateX(1),aPipeLine->GetRotateY(1),1);
@@ -45,6 +44,7 @@ void VISU_CutLinesPL::ShallowCopy(VISU_PipeLine *thePipeLine){
     SetDefault();
     if (!aPipeLine->IsDefault()) SetPosition(aPipeLine->GetPosition());
   }
+  VISU_CutPlanesPL::ShallowCopy(thePipeLine);
 }
 
 void VISU_CutLinesPL::Init(){
index 32fb5612307055610971a80f8f5cab0e5662f0d8..63dd3e5a42966a4dee8b3c794f1fe08e2b8a42a2 100644 (file)
@@ -49,7 +49,6 @@ VISU_CutPlanesPL::~VISU_CutPlanesPL(){
 }
 
 void VISU_CutPlanesPL::ShallowCopy(VISU_PipeLine *thePipeLine){
-  VISU_ScalarMapPL::ShallowCopy(thePipeLine);
   if(VISU_CutPlanesPL *aPipeLine = dynamic_cast<VISU_CutPlanesPL*>(thePipeLine)){
     SetOrientation(aPipeLine->GetPlaneOrientation(),
                   aPipeLine->GetRotateX(),aPipeLine->GetRotateY());
@@ -58,6 +57,7 @@ void VISU_CutPlanesPL::ShallowCopy(VISU_PipeLine *thePipeLine){
     for (int i = 0, iend = GetNbParts(); i < iend; i++)
       if(!aPipeLine->IsPartDefault(i))         SetPartPosition(i, aPipeLine->GetPartPosition(i));
   }
+  VISU_ScalarMapPL::ShallowCopy(thePipeLine);
 }
 
 void VISU_CutPlanesPL::Init(){
index c276548df7820aa02e608f686d19ac9fd9e3f663..0b8e346208120b6f36c319bd5c9646e5b313c96f 100644 (file)
@@ -47,10 +47,10 @@ VISU_DeformedShapePL::~VISU_DeformedShapePL(){
 }
 
 void VISU_DeformedShapePL::ShallowCopy(VISU_PipeLine *thePipeLine){
-  VISU_ScalarMapPL::ShallowCopy(thePipeLine);
   if(VISU_DeformedShapePL *aPipeLine = dynamic_cast<VISU_DeformedShapePL*>(thePipeLine)){
     SetScale(aPipeLine->GetScale());
   }
+  VISU_ScalarMapPL::ShallowCopy(thePipeLine);
 }
 
 float VISU_DeformedShapePL::GetScaleFactor(vtkDataSet* theDataSet){
@@ -74,20 +74,27 @@ float VISU_DeformedShapePL::GetScaleFactor(vtkDataSet* theDataSet){
 
 
 void VISU_DeformedShapePL::SetScale(float theScale) {
-  if(myScaleFactor == theScale) return;
+  myWarpVector->SetScaleFactor(theScale);
   myScaleFactor = theScale;
-  myWarpVector->SetScaleFactor(myScaleFactor);
   Modified();
 }
 float VISU_DeformedShapePL::GetScale() {
-  return myWarpVector->GetScaleFactor();
+  return myScaleFactor;
 }
 
 void VISU_DeformedShapePL::Init(){
   VISU_ScalarMapPL::Init();
   float aScalarRange[2];
   GetSourceRange(aScalarRange);
-  SetScale(GetScaleFactor(GetInput2())/aScalarRange[1]);
+
+  vtkDataSet* aDataSet = GetInput2();
+  float aScaleFactor = VISU_DeformedShapePL::GetScaleFactor( aDataSet );
+
+  static double EPS = 1.0 / VTK_LARGE_FLOAT;
+  if(fabs(aScalarRange[1]) > EPS)
+    SetScale(aScaleFactor / aScalarRange[1]);
+  else
+    SetScale(0.0);
 }
 
 VISU_ScalarMapPL::THook* VISU_DeformedShapePL::DoHook(){
index f4bcfabba829819598bda4b8e59a597e6731cfd6..b6423a396f1b820848ad579c00e325613e3c7bae 100644 (file)
 #include <vtkFloatArray.h>
 #include <vtkPointData.h>
 #include <vtkCellData.h>
+#include <vector>
 
 using namespace std;
 
 
 vtkStandardNewMacro(VISU_Extractor);
 
-VISU_Extractor::VISU_Extractor(){
-  myScalarMode = 0;
+VISU_Extractor::VISU_Extractor()
+{
+  myScalarMode = 1;
 }
 
-VISU_Extractor::~VISU_Extractor(){
-}
+VISU_Extractor::~VISU_Extractor()
+{}
 
-void VISU_Extractor::SetScalarMode(int theScalarMode){
+void VISU_Extractor::SetScalarMode(int theScalarMode)
+{
   if(myScalarMode != theScalarMode){
     myScalarMode = theScalarMode;
     Modified();
   }
 }
 
-
 template<typename TypeData> void
-execute(int theNbComp, int theScalarMode, TypeData* theInputData, TypeData* theOutputData){
-  vtkDataArray *inVectors = theInputData->GetVectors();
-  if ( !inVectors || theNbComp < 1 )
+execute(int theNbElems, 
+       int theScalarMode, 
+       TypeData* theInputData, 
+       TypeData* theOutputData)
+{
+  if(theNbElems < 1 )
     return;
-  vtkFloatArray *newScalars = vtkFloatArray::New();
-  ostringstream aName;
-  aName<<inVectors->GetName();  aName<<", ";  aName<<theScalarMode;
-  newScalars->SetName(aName.str().c_str());
-  newScalars->SetNumberOfComponents(1);
-  newScalars->SetNumberOfTuples(theNbComp);
-  for (int ptId = 0; ptId < theNbComp; ptId++) {
-    float v[3], s;
-    inVectors->GetTuple(ptId,v);
-    if ( theScalarMode < 1 || theScalarMode > 3)
-      s = sqrt(v[0]*v[0] + v[1]*v[1] + v[2]*v[2]);
-    else
-      s = v[theScalarMode - 1];
-    newScalars->SetTuple1(ptId, s);
+  vtkDataArray* aFieldArray = theInputData->GetArray("VISU_FIELD");
+  if(vtkFloatArray *aFloatArray = dynamic_cast<vtkFloatArray*>(aFieldArray)){
+    int aNbComp = aFloatArray->GetNumberOfComponents();
+    std::vector<float> anArray(aNbComp < 3? 3: aNbComp);
+    //
+    vtkFloatArray *aScalars = vtkFloatArray::New();
+    aScalars->SetNumberOfTuples(theNbElems);
+    aScalars->SetNumberOfComponents(1);
+    //
+    if(!theScalarMode){
+      for(int anId = 0; anId < theNbElems; anId++){
+       aFloatArray->GetTuple(anId,&anArray[0]);
+       float aVector[3] = {anArray[0], anArray[1], anArray[2]};
+       float aScalar = sqrt(aVector[0]*aVector[0] + aVector[1]*aVector[1] + aVector[2]*aVector[2]);
+       aScalars->SetTuple1(anId,aScalar);
+      }
+    }else{
+      for(int anId = 0; anId < theNbElems; anId++){
+       aFloatArray->GetTuple(anId,&anArray[0]);
+       aScalars->SetTuple1(anId,anArray[theScalarMode - 1]);
+      }
+    }
+    theOutputData->SetScalars(aScalars);
+    aScalars->Delete();
   }
-  theOutputData->SetScalars(newScalars);
-  //theOutputData->SetActiveScalars(newScalars->GetName());
-  newScalars->Delete();
 }
 
-
 void VISU_Extractor::Execute(){
   vtkDataSet *input = this->GetInput(), *output = this->GetOutput();
   output->CopyStructure(input);
@@ -87,21 +98,23 @@ void VISU_Extractor::Execute(){
   output->GetCellData()->CopyAllOff();
   if(input->GetPointData()->GetNumberOfArrays()){
     output->GetPointData()->CopyVectorsOn();
-    int nbComp = input->GetNumberOfPoints();
+    int aNbElems = input->GetNumberOfPoints();
     vtkPointData *inData = input->GetPointData(), *outData = output->GetPointData();
     if(inData->GetAttribute(vtkDataSetAttributes::VECTORS))
-      execute(nbComp,myScalarMode,inData,outData);
+      execute(aNbElems,myScalarMode,inData,outData);
     else
       output->GetPointData()->CopyScalarsOn();
     outData->PassData(inData);
+    outData->AddArray(inData->GetArray("VISU_FIELD"));
   }else{
     output->GetCellData()->CopyVectorsOn();
-    int nbComp = input->GetNumberOfCells();
+    int aNbElems = input->GetNumberOfCells();
     vtkCellData *inData = input->GetCellData(), *outData = output->GetCellData();
     if(inData->GetAttribute(vtkDataSetAttributes::VECTORS))
-      execute(nbComp,myScalarMode,inData,outData);
+      execute(aNbElems,myScalarMode,inData,outData);
     else
       output->GetCellData()->CopyScalarsOn();
     outData->PassData(inData);
+    outData->AddArray(inData->GetArray("VISU_FIELD"));
   }
 }
index 5fd707425a202e69304563b7daa29b1e2a7ab698..195cc657e0219c529936ebac94176840bd455f3f 100644 (file)
 #include <vtkDataSet.h>
 #include <vtkMath.h>
 
+static float Tolerance = 1.0 / VTK_LARGE_FLOAT;
+
 using namespace std;
 
 vtkStandardNewMacro(VISU_FieldTransform);
 
-double VISU_FieldTransform::Ident(double theArg){
+double
+VISU_FieldTransform
+::Ident(double theArg)
+{
   return theArg;
 }
-double VISU_FieldTransform::Log10(double theArg){
-  if(theArg <= 0.0) return -VTK_LARGE_FLOAT;
+
+double
+VISU_FieldTransform
+::Log10(double theArg)
+{
+  if(theArg <= 0.0) 
+    return -VTK_LARGE_FLOAT;
+
   return log10(theArg);
 }
 
 
-VISU_FieldTransform::VISU_FieldTransform(){
+VISU_FieldTransform
+::VISU_FieldTransform()
+{
   myFunction = &Ident;
   myTransform = NULL;
+
+  myScalarRange[0] = VTK_LARGE_FLOAT;
+  myScalarRange[1] = -VTK_LARGE_FLOAT;
 }
 
-VISU_FieldTransform::~VISU_FieldTransform() {
+VISU_FieldTransform
+::~VISU_FieldTransform() 
+{
   SetSpaceTransform(NULL);
 }
 
 
-void VISU_FieldTransform::Update(){
-  if(myTransform && myTransform->GetMTime() > vtkSource::GetMTime())
-    Modified();
+void
+VISU_FieldTransform
+::Update()
+{
   vtkSource::Update();
 }
 
-unsigned long VISU_FieldTransform::GetMTime(){
-  if(myTransform && myTransform->GetMTime() > vtkSource::GetMTime())
-    return myTransform->GetMTime();
-  return vtkSource::GetMTime();
+unsigned long 
+VISU_FieldTransform
+::GetMTime()
+{
+  unsigned long aTime = Superclass::GetMTime();
+  if(myTransform)
+    aTime = max(aTime,myTransform->GetMTime());
+
+  return aTime;
 }
 
-void VISU_FieldTransform::SetScalarTransform(TTransformFun theFunction) {
+void
+VISU_FieldTransform
+::SetScalarTransform(TTransformFun theFunction) 
+{
+  if(myFunction == theFunction)
+    return;
+
+  if(theFunction == NULL) 
+    theFunction = &Ident;
+
   myFunction = theFunction;
-  if(myFunction == NULL) myFunction = &Ident;
+
   Modified();
 }
 
 void VISU_FieldTransform::SetSpaceTransform(VTKViewer_Transform* theTransform){
-  if(myTransform != theTransform){
-    if (myTransform != NULL) myTransform->UnRegister(this);
-    myTransform = theTransform;
-    if (myTransform != NULL) myTransform->Register(this);
-    this->Modified();
-  }
+  if(myTransform == theTransform)
+    return;
+
+  if(myTransform != NULL) 
+    myTransform->UnRegister(this);
+
+  myTransform = theTransform;
+
+  if(theTransform != NULL) 
+    theTransform->Register(this);
+
+  Modified();
 }
 
 
-void VISU_FieldTransform::SetScalarRange(float theScalarRange[2]) {
+void
+VISU_FieldTransform
+::SetScalarRange(float theScalarRange[2]) 
+{
+  float aDelta = 
+    fabs(myScalarRange[0] - theScalarRange[0]) + 
+    fabs(myScalarRange[1] - theScalarRange[1]);
+  if(aDelta < Tolerance)
+    return;
+
   myScalarRange[0] = theScalarRange[0];
   myScalarRange[1] = theScalarRange[1];
+
   Modified();
 }
-void VISU_FieldTransform::SetScalarMin(float theValue){
+
+void
+VISU_FieldTransform
+::SetScalarMin(float theValue)
+{
   float aScalarRange[2] = {theValue, GetScalarRange()[1]};
   SetScalarRange(aScalarRange);
 }
-void VISU_FieldTransform::SetScalarMax(float theValue){
+
+void
+VISU_FieldTransform
+::SetScalarMax(float theValue)
+{
   float aScalarRange[2] = {GetScalarRange()[0], theValue};
   SetScalarRange(aScalarRange);
 }
@@ -144,7 +201,10 @@ ExecScalars(VISU_FieldTransform::TTransformFun theFunction, float theScalarRange
   newScalars->Delete();
 }
 
-void VISU_FieldTransform::Execute(){
+void
+VISU_FieldTransform
+::Execute()
+{
   vtkDataSet *input = this->GetInput(), *output = this->GetOutput();
   output->CopyStructure(input);
   if(myFunction != &Ident || (myTransform && !myTransform->IsIdentity())){
diff --git a/src/PIPELINE/VISU_GaussPointsPL.cxx b/src/PIPELINE/VISU_GaussPointsPL.cxx
new file mode 100644 (file)
index 0000000..8d1d0df
--- /dev/null
@@ -0,0 +1,699 @@
+//  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:    VISU_GaussPoints.cxx
+// Author:  Alexey PETROV
+// Module : VISU
+
+
+#include "VISU_GaussPointsPL.hxx"
+#include "VISU_DeformedShapePL.hxx"
+#include "VISU_PipeLineUtils.hxx"
+#include "SALOME_ExtractGeometry.h"
+#include "VISU_DeformedShapePL.hxx"
+#include "VISU_OpenGLPointSpriteMapper.hxx"
+#include "VTKViewer_PassThroughFilter.h"
+
+#include <vtkPointSource.h>
+#include <vtkElevationFilter.h>
+#include <vtkImageGaussianSource.h>
+#include <vtkXMLImageDataReader.h>
+#include <vtkGeometryFilter.h>
+#include <vtkImageData.h>
+#include <vtkWarpVector.h>
+#include <vtkGlyph3D.h>
+#include <vtkSphereSource.h>
+
+//----------------------------------------------------------------------------
+vtkStandardNewMacro(VISU_GaussPointsPL);
+
+//----------------------------------------------------------------------------
+VISU_GaussPointsPL
+::VISU_GaussPointsPL():
+  myIsDeformed(false),
+  myScaleFactor(0.0),
+  myResolution( 8 ),
+  myMagnificationIncrement(2)
+{
+  myExtractGeometry->SetExtractInside(0);
+
+  myPSMapper = VISU_OpenGLPointSpriteMapper::New();
+  myPSMapper->SetColorModeToMapScalars();
+  myPSMapper->ScalarVisibilityOn();
+
+  myGeomFilter = vtkGeometryFilter::New();
+
+  myWarpVector = vtkWarpVector::New();
+  myCellDataToPointData = vtkCellDataToPointData::New();
+  myCellDataToPointData->SetPassCellData(true);
+
+  myGlyph = vtkGlyph3D::New();
+  myGlyph->SetScaleModeToScaleByScalar();
+  myGlyph->SetColorModeToColorByScalar();
+  myGlyph->ClampingOn();
+
+  myExtractor->SetInput( myExtractGeometry->GetOutput() );
+  myFieldTransform->SetInput( myExtractor->GetOutput() );
+
+  myCellDataToPointData->SetInput( myFieldTransform->GetUnstructuredGridOutput() );
+
+  mySphereSource = vtkSphereSource::New();
+  myGlyph->SetSource( mySphereSource->GetOutput() );
+
+  for(int i = 0; i < 2; i++)
+    myPassFilter.push_back(VTKViewer_PassThroughFilter::New());
+}
+
+
+//----------------------------------------------------------------------------
+VISU_GaussPointsPL
+::~VISU_GaussPointsPL()
+{
+  if (this->myPSMapper)
+  {
+    this->myPSMapper->Delete();
+    this->myPSMapper = NULL;
+  }
+  if (this->myGeomFilter)
+  {
+    this->myGeomFilter->Delete();
+    this->myGeomFilter = NULL;
+  }
+
+  myWarpVector->Delete();
+
+  myCellDataToPointData->Delete();
+
+  myGlyph->Delete();
+
+  mySphereSource->Delete();
+
+  for(int i = 0; i < 2; i++)
+    myPassFilter[i]->Delete();
+}
+
+
+//----------------------------------------------------------------------------
+void
+CopyGlyph( vtkGlyph3D* source, vtkGlyph3D* dest )
+{
+  dest->SetRange( source->GetRange() );
+  dest->SetScaling( source->GetScaling() );
+  dest->SetClamping( source->GetClamping() );
+  dest->SetScaleMode( source->GetScaleMode() );
+  dest->SetColorMode( source->GetColorMode() );
+  dest->SetScaleFactor( source->GetScaleFactor() );
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::ShallowCopy(VISU_PipeLine *thePipeLine)
+{
+  if(VISU_GaussPointsPL *aPipeLine = dynamic_cast<VISU_GaussPointsPL*>(thePipeLine)){
+    // To restore mapper input from pipeline
+    vtkPolyData* aDatsSet = myPSMapper->GetInput();
+    myPSMapper->ShallowCopy(aPipeLine->GetPSMapper());
+    myPSMapper->SetInput(aDatsSet);
+
+    SetPrimitiveType(aPipeLine->GetPrimitiveType());
+    SetBicolor(aPipeLine->GetBicolor());
+    SetClamp(aPipeLine->GetClamp());
+    SetSize(aPipeLine->GetSize());
+    SetMinSize(aPipeLine->GetMinSize());
+    SetMaxSize(aPipeLine->GetMaxSize());
+    SetMagnification(aPipeLine->GetMagnification());
+    SetMagnificationIncrement(aPipeLine->GetMagnificationIncrement());
+    SetAlphaThreshold(aPipeLine->GetAlphaThreshold());
+    SetResolution(aPipeLine->GetResolution());
+
+    SetIsDeformed( aPipeLine->GetIsDeformed() );
+    SetScale( aPipeLine->GetScale() );
+
+    mySphereSource->SetRadius( aPipeLine->mySphereSource->GetRadius() );
+    CopyGlyph( aPipeLine->myGlyph, this->myGlyph );
+  }
+  Superclass::ShallowCopy(thePipeLine);
+}
+
+
+//----------------------------------------------------------------------------
+VISU_PipeLine::TMapper* 
+VISU_GaussPointsPL
+::GetMapper()
+{
+  return GetPSMapper();
+}
+
+VISU_OpenGLPointSpriteMapper* 
+VISU_GaussPointsPL
+::GetPSMapper()
+{
+  if(GetInput()){
+    if(!myPSMapper->GetInput()){
+      GetInput2()->Update();
+      Build();
+      Init();
+    }
+    myPSMapper->Update();
+  }
+  return myPSMapper;
+}
+
+vtkDataSet* 
+VISU_GaussPointsPL
+::GetPickableDataSet()
+{
+  return myGeomFilter->GetOutput();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::Init()
+{
+  Superclass::Init();
+
+  vtkDataSet* aDataSet = GetParentMesh();
+  float aScaleFactor = VISU_DeformedShapePL::GetScaleFactor( aDataSet );
+
+  float* aScalarRange = GetScalarRange();
+  static double EPS = 1.0 / VTK_LARGE_FLOAT;
+  if(fabs(aScalarRange[1]) > EPS)
+    SetScale( aScaleFactor / aScalarRange[1] );
+  else
+    SetScale(0.0);
+
+  // Deformed Shape
+  myPassFilter[0]->SetInput(myCellDataToPointData->GetUnstructuredGridOutput());
+
+  myGeomFilter->SetInput( myPassFilter[0]->GetOutput() );
+
+  // Geometrical Sphere
+  myPassFilter[1]->SetInput(myGeomFilter->GetOutput());
+
+  myPSMapper->SetInput( myPassFilter[1]->GetPolyDataOutput() );
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::Build()
+{
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::Update()
+{
+  //cout << "VISU_GaussPointsPL::Update()" << endl;
+  float* aScalarRange = GetScalarRange();
+  mySourceScalarRange[0] = aScalarRange[0];
+  mySourceScalarRange[1] = aScalarRange[1];
+  myDeltaScalarRange = aScalarRange[1] - aScalarRange[0];
+
+  SetAverageCellSize( VISU_DeformedShapePL::GetScaleFactor( GetParentMesh() ) );
+
+  vtkMapper* aMapper = GetMapper();
+  vtkDataSet* aDataSet = aMapper->GetInput();
+  vtkCellData* aCellData = aDataSet->GetCellData();
+  myScalarArray = aCellData->GetScalars();
+
+  myPSMapper->SetLookupTable( myMapperTable );
+  myPSMapper->SetScalarRange( aScalarRange );
+
+  this->UpdateGlyph();
+
+  VISU_ScalarMapPL::Update();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::UpdateGlyph()
+{
+  //cout << "VISU_GaussPointsPL::UpdateGlyph()" << endl;
+
+  float* aScalarRange = GetScalarRange();
+
+  if( myPSMapper->GetPointSpriteMode() == 0 ) // Results
+  {
+    //cout << "Results" << endl;
+    myGlyph->ClampingOn();
+    myGlyph->SetScaleModeToScaleByScalar();
+    myGlyph->SetColorModeToColorByScalar();
+
+    float aRange = 0;
+    float aMinSize = GetMinSize();
+    float aMaxSize = GetMaxSize();
+    if( fabs( aMaxSize - aMinSize ) > 0.0001 )
+      aRange = ( aScalarRange[1] - aScalarRange[0] ) / ( aMaxSize - aMinSize );
+    float aMinRange = aScalarRange[0] - aMinSize * aRange;
+    float aMaxRange = aMinRange + aRange;
+
+    myGlyph->SetRange( aMinRange, aMaxRange );
+    myGlyph->SetScaleFactor( 1.0 );
+  }
+  else if( myPSMapper->GetPointSpriteMode() == 1 ) // Geometry
+  {
+    //cout << "Geometry" << endl;
+    myGlyph->ClampingOff();
+    myGlyph->SetScaleModeToDataScalingOff();
+    myGlyph->SetColorModeToColorByScale();
+
+    myGlyph->SetScaleFactor( GetSize() );
+  }
+  else if( myPSMapper->GetPointSpriteMode() == 2 ) // Outside
+  {
+    //cout << "Outside" << endl;
+    myGlyph->ClampingOff();
+    myGlyph->SetScaleModeToDataScalingOff();
+    myGlyph->SetColorModeToColorByScalar();
+
+    myGlyph->SetScaleFactor( GetSize() );
+  }
+
+  mySphereSource->SetRadius( GetMagnification() * GetAverageCellSize() / 2. );
+}
+
+//----------------------------------------------------------------------------
+VISU::TGaussPointID 
+VISU_GaussPointsPL
+::GetObjID(vtkIdType theID) const
+{
+  return myGaussPtsIDMapper->GetObjID(theID);
+}
+
+float* 
+VISU_GaussPointsPL
+::GetNodeCoord(int theObjID)
+{
+  vtkIdType anID = GetNodeVTKID(theObjID);
+  vtkDataSet* aDataSet = myGeomFilter->GetInput();
+  return aDataSet->GetPoint(anID);
+}
+
+void
+VISU_GaussPointsPL
+::SetGaussPtsIDMapper(const VISU::PGaussPtsIDMapper& theGaussPtsIDMapper)
+{
+  myGaussPtsIDMapper = theGaussPtsIDMapper;
+  SetIDMapper(myGaussPtsIDMapper);
+}
+
+const VISU::PGaussPtsIDMapper&  
+VISU_GaussPointsPL
+::GetGaussPtsIDMapper() const
+{
+  return myGaussPtsIDMapper;
+}
+
+VISU::TVTKOutput*  
+VISU_GaussPointsPL
+::GetParentMesh() const
+{
+  VISU::TNamedIDMapper* aNamedIDMapper = myGaussPtsIDMapper->GetParent();
+  return aNamedIDMapper->GetVTKOutput();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetIsDeformed( bool theIsDeformed )
+{
+  if( theIsDeformed )
+  {
+    myWarpVector->SetInput( myCellDataToPointData->GetUnstructuredGridOutput() );
+    myPassFilter[0]->SetInput(myWarpVector->GetOutput());
+  }
+  else
+    myPassFilter[0]->SetInput(myCellDataToPointData->GetUnstructuredGridOutput());
+
+  myIsDeformed = theIsDeformed;
+
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+bool
+VISU_GaussPointsPL
+::GetIsDeformed() const
+{
+  return myIsDeformed;
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetBicolor(bool theBicolor)
+{
+  if(GetBicolor() == theBicolor)
+    return;
+
+  myMapperTable->SetBicolor( theBicolor );
+  myBarTable->SetBicolor( theBicolor );
+
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+bool
+VISU_GaussPointsPL
+::GetBicolor()
+{
+  return myMapperTable->GetBicolor();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetIsColored(bool theIsColored)
+{
+  myPSMapper->SetPointSpriteMode( theIsColored ? 0 : 1 ); // Results / Geometry
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetPrimitiveType(int thePrimitiveType)
+{
+  if( thePrimitiveType == VISU_OpenGLPointSpriteMapper::GeomSphere )
+  {
+    myGlyph->SetInput( myGeomFilter->GetOutput() );
+    myPassFilter[1]->SetInput(myGlyph->GetOutput());
+  }
+  else
+    myPassFilter[1]->SetInput(myGeomFilter->GetOutput());
+
+  myPSMapper->SetPrimitiveType( thePrimitiveType );
+
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+int
+VISU_GaussPointsPL
+::GetPrimitiveType()
+{
+  return myPSMapper->GetPrimitiveType();
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetMaximumSupportedSize()
+{
+  return myPSMapper->GetMaximumSupportedSize();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetClamp(float theClamp)
+{
+  myPSMapper->SetPointSpriteClamp( theClamp );
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetClamp()
+{
+  return myPSMapper->GetPointSpriteClamp();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetSize(float theSize)
+{
+  myPSMapper->SetPointSpriteSize( theSize );
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetSize()
+{
+  return myPSMapper->GetPointSpriteSize();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetMinSize(float theMinSize)
+{
+  myPSMapper->SetPointSpriteMinSize( theMinSize );
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetMinSize()
+{
+  return myPSMapper->GetPointSpriteMinSize();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetMaxSize(float theMaxSize)
+{
+  myPSMapper->SetPointSpriteMaxSize( theMaxSize );
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetMaxSize()
+{
+  return myPSMapper->GetPointSpriteMaxSize();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetMagnification(float theMagnification)
+{
+  myPSMapper->SetPointSpriteMagnification( theMagnification );
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetMagnification()
+{
+  return myPSMapper->GetPointSpriteMagnification();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetMagnificationIncrement(float theIncrement)
+{
+  myMagnificationIncrement = theIncrement;
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetAlphaThreshold(float theAlphaThreshold)
+{
+  myPSMapper->SetPointSpriteAlphaThreshold( theAlphaThreshold );
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetAlphaThreshold()
+{
+  return myPSMapper->GetPointSpriteAlphaThreshold();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetResolution(int theResolution)
+{
+  myResolution = theResolution;
+  mySphereSource->SetThetaResolution( myResolution );
+  mySphereSource->SetPhiResolution( myResolution );
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::ChangeMagnification( bool up )
+{
+  float anIncrement = up ? myMagnificationIncrement : 1.0 / myMagnificationIncrement;
+  SetMagnification( GetMagnification() * anIncrement );
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetPointSize(vtkIdType theID, vtkDataArray* theScalarArray)
+{
+  float aMaxSize = GetAverageCellSize() * GetMaxSize();
+  float aMinSize = GetAverageCellSize() * GetMinSize();
+  float aDelta = aMaxSize - aMinSize;
+  float aVal = theScalarArray->GetTuple1(theID);
+
+  return aMinSize + aDelta*(aVal - mySourceScalarRange[0])/myDeltaScalarRange;
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetMaxPointSize()
+{
+  return GetAverageCellSize() * GetMaxSize();
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetPointSize(vtkIdType theID)
+{
+  vtkMapper* aMapper = GetMapper();
+  vtkDataSet* aDataSet = aMapper->GetInput();
+  vtkCellData* aCellData = aDataSet->GetCellData();
+  vtkDataArray* aScalarArray = aCellData->GetScalars();
+  return GetPointSize(theID,aScalarArray);
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetAverageCellSize(float theAverageCellSize)
+{
+  myPSMapper->SetAverageCellSize( theAverageCellSize );
+  Modified();
+}
+
+//----------------------------------------------------------------------------
+float
+VISU_GaussPointsPL
+::GetAverageCellSize()
+{
+  return myPSMapper->GetAverageCellSize();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU_GaussPointsPL
+::SetImageData(vtkImageData* theImageData)
+{
+  myPSMapper->SetImageData( theImageData );
+}
+
+//----------------------------------------------------------------------------
+vtkSmartPointer<vtkImageData>
+VISU_GaussPointsPL
+::MakeTexture( const char* theMainTexture, 
+              const char* theAlphaTexture )
+{
+  if( !theMainTexture || !theAlphaTexture )
+    return 0;
+
+  vtkXMLImageDataReader* aMainReader = vtkXMLImageDataReader::New();
+  vtkXMLImageDataReader* anAlphaReader = vtkXMLImageDataReader::New();
+
+  aMainReader->SetFileName( theMainTexture );
+  anAlphaReader->SetFileName( theAlphaTexture );
+
+  aMainReader->Update();
+  anAlphaReader->Update();
+
+  vtkImageData* aMainImageData = aMainReader->GetOutput();
+  vtkImageData* anAlphaImageData = anAlphaReader->GetOutput();
+
+  int* aMainImageSize = aMainImageData->GetDimensions();
+  int* anAlphaImageSize = anAlphaImageData->GetDimensions();
+  if(aMainImageSize[0] != anAlphaImageSize[0] || aMainImageSize[1] != anAlphaImageSize[1])
+    return NULL;
+
+  vtkSmartPointer<vtkImageData> aCompositeImageData = vtkImageData::New();
+  aCompositeImageData->Delete();
+
+  int aNbCompositeComponents = 4;
+  aCompositeImageData->SetDimensions(aMainImageSize);
+  aCompositeImageData->SetScalarTypeToUnsignedChar();        
+  aCompositeImageData->SetNumberOfScalarComponents(aNbCompositeComponents);
+  aCompositeImageData->AllocateScalars();
+
+  unsigned char* aMainDataPtr = (unsigned char*)aMainImageData->GetScalarPointer();
+  unsigned char* anAlphaDataPtr = (unsigned char*)anAlphaImageData->GetScalarPointer();
+  unsigned char *aCompositeDataPtr = (unsigned char * )aCompositeImageData->GetScalarPointer();
+
+  int aNbMainComponents = aMainImageData->GetNumberOfScalarComponents();
+  int aNbAlphaComponents = anAlphaImageData->GetNumberOfScalarComponents();
+  int aCompositeSize = aMainImageSize[0] * aMainImageSize[1] * aNbCompositeComponents;
+  
+  int aMainId = 0, anAlphaId = 0, aCompositeId = 0;
+  for(; aCompositeId < aCompositeSize;)
+  {
+    aCompositeDataPtr[aCompositeId] = aMainDataPtr[aMainId];
+    aCompositeDataPtr[aCompositeId + 1] = aMainDataPtr[aMainId + 1];
+    aCompositeDataPtr[aCompositeId + 2] = aMainDataPtr[aMainId + 2];
+    aCompositeDataPtr[aCompositeId + 3] = anAlphaDataPtr[anAlphaId];
+
+    aMainId += aNbMainComponents;
+    anAlphaId += aNbAlphaComponents;
+    aCompositeId += aNbCompositeComponents;
+  }
+  aMainReader->Delete();
+  anAlphaReader->Delete();
+  aCompositeImageData->Update();
+
+  return aCompositeImageData;
+}
+
+void VISU_GaussPointsPL::SetScale( float theScale )
+{
+  myWarpVector->SetScaleFactor( theScale );
+  myScaleFactor = GetScale();
+  Modified();
+}
+
+float VISU_GaussPointsPL::GetScale()
+{
+  return myWarpVector->GetScaleFactor();
+}
+
+void VISU_GaussPointsPL::SetMapScale( float theMapScale )
+{
+  VISU_ScalarMapPL::SetMapScale( theMapScale );
+
+  myWarpVector->SetScaleFactor( myScaleFactor * theMapScale );
+  Modified();
+}
diff --git a/src/PIPELINE/VISU_GaussPointsPL.hxx b/src/PIPELINE/VISU_GaussPointsPL.hxx
new file mode 100644 (file)
index 0000000..b342ab5
--- /dev/null
@@ -0,0 +1,291 @@
+//  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:    VISU_GaussPointsPL.hxx
+// Author:  
+// Module : VISU
+
+#ifndef VISU_GaussPointsPL_HeaderFile
+#define VISU_GaussPointsPL_HeaderFile
+
+#include "VISU_ScalarMapPL.hxx"
+#include "VISU_Convertor.hxx"
+
+#include <vector>
+
+class VTKViewer_PassThroughFilter;
+class VISU_OpenGLPointSpriteMapper;
+
+class vtkGeometryFilter;
+class vtkGlyph3D;
+class vtkSphereSource;
+class vtkDataArray;
+class vtkImageData;
+class vtkPointSet;
+
+class vtkCellDataToPointData;
+class vtkWarpVector;
+class SALOME_Transform;
+
+//! Pipeline for the Gauss Points presentation.
+/*!
+ * This class uses the special mapper (VISU_OpenGLPointSpriteMapper)
+ * for rendering the Gauss Points as Point Sprites.
+ */
+class VISU_GaussPointsPL : public VISU_ScalarMapPL
+{
+protected:
+  VISU_GaussPointsPL();
+
+  virtual
+  ~VISU_GaussPointsPL();
+
+public:
+  vtkTypeMacro(VISU_GaussPointsPL,VISU_ScalarMapPL);
+
+  static 
+  VISU_GaussPointsPL* New();
+  
+  virtual
+  void
+  ShallowCopy(VISU_PipeLine *thePipeLine);
+
+  //! Get the native mapper.
+  virtual
+  TMapper* 
+  GetMapper();
+
+  //! Get the internal #VISU_OpenGLPointSpriteMapper.
+  VISU_OpenGLPointSpriteMapper*
+  GetPSMapper();
+
+  //! Get an intermediate dataset that can be picked  
+  vtkDataSet*
+  GetPickableDataSet();
+
+  //! Redefined method for initialization of the pipeline.
+  virtual
+  void
+  Init();
+
+  //! Redefined method for building the pipeline.
+  virtual
+  void
+  Build();
+
+  //! Redefined method for updating the pipeline.
+  virtual
+  void
+  Update();
+
+  //! Update glyph.
+  void
+  UpdateGlyph();
+
+  virtual 
+  VISU::TGaussPointID 
+  GetObjID(vtkIdType theID) const;
+
+  virtual
+  float* 
+  GetNodeCoord(vtkIdType theObjID);
+
+  void 
+  SetGaussPtsIDMapper(const VISU::PGaussPtsIDMapper& theGaussPtsIDMapper);
+
+  const VISU::PGaussPtsIDMapper&  
+  GetGaussPtsIDMapper() const;
+
+  VISU::TVTKOutput*  
+  GetParentMesh() const;
+
+  //! Set the Bicolor mode.
+  /*!
+   * When the Bicolor parameter is set to true, scalar bars are
+   * drawing with two colors : red color correspoonds to positive
+   * scalar values, blue color - to negative values.
+   */
+  void
+  SetBicolor(bool theBicolor);
+
+  //! Get the Bicolor mode.
+  bool
+  GetBicolor();
+
+  //! Set the Multicolored mode.
+  /*!
+   * This parameter is using to switch between Results and Geometry
+   * modes. Multiple colors are using when the presentation is
+   * drawing in the Results mode, one color - in the Geometry mode.
+   */
+  void
+  SetIsColored(bool theIsColored);
+
+  //! Set type of the primitives.
+  void
+  SetPrimitiveType(int thePrimitiveType);
+
+  //! Get type of the primitives.
+  int
+  GetPrimitiveType();
+
+  //! Get the maximum Point Sprite size, which is supported by hardware.
+  float 
+  GetMaximumSupportedSize();
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper::SetPointSpriteClamp.
+  void
+  SetClamp(float theClamp);
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper.vtkGetMacro(PointSpriteClamp, float).
+  float
+  GetClamp();
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper::SetPointSpriteSize.
+  void
+  SetSize(float theSize);
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper.vtkGetMacro(PointSpriteSize, float).
+  float 
+  GetSize();
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper::SetPointSpriteMinSize.
+  void
+  SetMinSize(float theMinSize);
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper.vtkGetMacro(PointSpriteMinSize, float).
+  float 
+  GetMinSize();
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper::SetPointSpriteMinSize.
+  void
+  SetMaxSize(float theMaxSize);
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper.vtkGetMacro(PointSpriteMaxSize, float).
+  float 
+  GetMaxSize();
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper::SetPointSpriteMagnification.
+  void
+  SetMagnification(float theMagnification);
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper.vtkGetMacro(PointSpriteMagnification, float).
+  float
+  GetMagnification();
+
+  //! Set the increment of changing Magnification parameter.
+  void
+  SetMagnificationIncrement(float theIncrement);
+
+  //! Get the increment of changing Magnification parameter.
+  float
+  GetMagnificationIncrement() { return myMagnificationIncrement; }
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper::SetPointSpriteAlphaThreshold.
+  void
+  SetAlphaThreshold(float theAlphaThreshold);
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper.vtkGetMacro(PointSpriteAlphaThreshold, float).
+  float
+  GetAlphaThreshold();
+
+  //! Set resolution of the Geometrical Sphere.
+  void
+  SetResolution(int theResolution);
+
+  //! Get resolution of the Geometrical Sphere.
+  int
+  GetResolution() { return myResolution; }
+
+  //! Method for changing the Magnification parameter.
+  void
+  ChangeMagnification( bool up );
+
+  //! Get the maximum size of Point Sprites in the presentation.
+  float
+  GetMaxPointSize();
+
+  //! Get point size by element's Id.
+  float
+  GetPointSize(vtkIdType theID);
+
+  //! Get point size by element's Id using the specified scalar array.
+  float
+  GetPointSize(vtkIdType theID, vtkDataArray* theScalarArray);
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper.vtkSetMacro(AverageCellSize, float).
+  void
+  SetAverageCellSize(float AverageCellSize);
+
+  //! Redirect the request to VISU_OpenGLPointSpriteMapper.vtkGetMacro(AverageCellSize, float).
+  float
+  GetAverageCellSize();
+
+  //! Set image data for the Point Sprite texture.
+  void
+  SetImageData(vtkImageData* theImageData);
+
+  //! Make the image data for Point Sprite texture.
+  /*!
+   * First parameter - texture for shape.
+   * Second parameter - texture for alpha mask.
+   */
+  static
+  vtkSmartPointer<vtkImageData>
+  MakeTexture( const char* theMainTexture,
+              const char* theAlphaTexture );
+
+public:
+  virtual void  SetIsDeformed( bool theIsDeformed );
+  virtual bool  GetIsDeformed() const;
+
+  virtual void  SetScale( float theScale );
+  virtual float GetScale();
+  virtual void  SetMapScale( float theMapScale = 1.0 );
+
+protected:
+  bool myIsDeformed;
+  float myScaleFactor;
+  vtkWarpVector *myWarpVector;
+  vtkCellDataToPointData* myCellDataToPointData;
+  std::vector<VTKViewer_PassThroughFilter*> myPassFilter;
+  
+  vtkGlyph3D* myGlyph;
+  vtkSphereSource* mySphereSource;
+  int myResolution;
+
+protected:
+  VISU_OpenGLPointSpriteMapper* myPSMapper;
+  VISU::PGaussPtsIDMapper myGaussPtsIDMapper;
+
+  vtkGeometryFilter* myGeomFilter;
+
+  vtkDataArray *myScalarArray;
+  float mySourceScalarRange[2];
+  float myDeltaScalarRange;
+
+  int   myPrimitiveType;
+  float myMagnificationIncrement;
+};
+  
+#endif
diff --git a/src/PIPELINE/VISU_ImplicitFunctionWidget.cxx b/src/PIPELINE/VISU_ImplicitFunctionWidget.cxx
new file mode 100644 (file)
index 0000000..3a3c21a
--- /dev/null
@@ -0,0 +1,136 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   : VVTK_ImplicitFunctionWidget.cxx
+//  Author : Peter KURNEV
+//  Module : SALOME
+//  $Header$
+
+#include "VISU_ImplicitFunctionWidget.hxx"
+//
+#include <vtkFollower.h>
+#include <vtkObjectFactory.h>
+#include <vtkDataSet.h>
+#include <vtkRenderWindow.h>
+#include <vtkRenderer.h>
+#include <vtkDataSet.h>
+#include <vtkImplicitFunction.h>
+#include <vtkMapper.h>
+//
+vtkStandardNewMacro(VISU_UnScaledActor);
+
+//====================================================================
+// function: VISU_UnScaledActor
+// purpose:
+//====================================================================
+VISU_UnScaledActor::VISU_UnScaledActor() 
+{
+  for (int i=0; i<3; ++i){
+    myCenter[i]=0.;
+  }
+  mySize=24;
+}
+//====================================================================
+// function: SetCenter
+// purpose:
+//====================================================================
+void VISU_UnScaledActor::SetCenter(float *pC)
+{
+  for (int i=0; i<3; ++i){
+    myCenter[i]=pC[i];
+  }
+}
+//====================================================================
+// function:GetBounds
+// purpose:
+//====================================================================
+float* VISU_UnScaledActor::GetBounds()
+{
+  Superclass::GetBounds();
+  //
+  for (int i=0; i<3; ++i){
+    Bounds[2*i]=myCenter[i];
+    Bounds[2*i+1]=myCenter[i];
+  }
+  return Bounds;
+}
+//====================================================================
+// function:Render
+// purpose:
+//====================================================================
+void VISU_UnScaledActor::Render(vtkRenderer *theRenderer)
+{
+  if(theRenderer){
+    float P[2][3] = {{-1.0, -1.0, 0.0},{+1.0, +1.0, 0.0}};
+    theRenderer->ViewToWorld(P[0][0],P[0][1],P[0][2]);
+    theRenderer->ViewToWorld(P[1][0],P[1][1],P[1][2]);
+    float aWorldDiag = sqrt((P[1][0]-P[0][0])*(P[1][0]-P[0][0])+
+                            (P[1][1]-P[0][1])*(P[1][1]-P[0][1])+
+                            (P[1][2]-P[0][2])*(P[1][2]-P[0][2]));
+    int* aSize = theRenderer->GetRenderWindow()->GetSize();
+    float aWinDiag = sqrt(float(aSize[0]*aSize[0]+aSize[1]*aSize[1]));
+    vtkDataSet* aDataSet = GetMapper()->GetInput();
+    float aLength = aDataSet->GetLength();
+    float aPrecision = 1.e-3;
+    float anOldScale = GetScale()[0];
+    float aScale = 
+      mySize*aWorldDiag/aWinDiag/aLength*sqrt(float(aSize[0])/float(aSize[1]));
+
+    SetOrigin(myCenter);  
+    //
+    if(fabs(aScale - anOldScale)/aScale > aPrecision){
+      SetScale(aScale);
+    }
+  }
+  vtkFollower::Render(theRenderer);
+  
+}
+//====================================================================
+// function:SetSize
+// purpose:
+//====================================================================
+void VISU_UnScaledActor::SetSize(int theSize)
+{
+  mySize = theSize;
+}
+
+//==================================================================
+// class: VISU_ImplicitFunctionWidget
+//
+vtkCxxRevisionMacro(VISU_ImplicitFunctionWidget, "$Revision$");
+//==================================================================
+// function: VISU_ImplicitFunctionWidget
+// purpose :
+//==================================================================
+VISU_ImplicitFunctionWidget::VISU_ImplicitFunctionWidget() 
+: 
+  vtk3DWidget()
+{
+}
+//==================================================================
+// function: ~
+// purpose :
+//==================================================================
+VISU_ImplicitFunctionWidget::~VISU_ImplicitFunctionWidget()
+{  
+}
diff --git a/src/PIPELINE/VISU_ImplicitFunctionWidget.hxx b/src/PIPELINE/VISU_ImplicitFunctionWidget.hxx
new file mode 100644 (file)
index 0000000..8f46e43
--- /dev/null
@@ -0,0 +1,79 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : VISU_PlanesWidget.h
+//  Author : Peter KURNEV
+//  Module : SALOME
+//  $Header$
+
+#ifndef __VISU_ImplicitFunctionWidget_h
+#define __VISU_ImplicitFunctionWidget_h
+////
+//==================================================================
+// class   : VISU_UnScaledActor
+// purpose :
+//==================================================================
+#include <vtkFollower.h>
+class VISU_UnScaledActor: public vtkFollower
+{
+  
+public:
+  
+  vtkTypeMacro(VISU_UnScaledActor,vtkFollower);
+  static VISU_UnScaledActor *New();
+  
+  
+  void SetCenter(float *);
+  virtual void SetSize(int theSize);
+  virtual void Render(vtkRenderer *theRenderer);
+  virtual float *GetBounds();
+
+protected:
+  VISU_UnScaledActor();
+  ~VISU_UnScaledActor(){}
+
+  float myCenter[3];
+  int mySize;
+};
+
+#include <vtk3DWidget.h>
+
+class vtkImplicitFunction;
+
+class VISU_ImplicitFunctionWidget : public vtk3DWidget
+{
+public:
+  vtkTypeRevisionMacro(VISU_ImplicitFunctionWidget,vtk3DWidget);
+
+  virtual vtkImplicitFunction* ImplicitFunction()=0;
+  
+protected:
+  VISU_ImplicitFunctionWidget();
+  ~VISU_ImplicitFunctionWidget();
+
+private:
+  VISU_ImplicitFunctionWidget(const VISU_ImplicitFunctionWidget&);  //Not implemented
+  void operator=(const VISU_ImplicitFunctionWidget&);  //Not implemented
+};
+
+#endif
index 7462ff51024f04e81bda3dc35be7ae4dbf4a932d..8e14bca9949723895838d7cf74c9a5f2d357fafe 100644 (file)
@@ -48,12 +48,12 @@ VISU_IsoSurfacesPL::~VISU_IsoSurfacesPL(){
 }
 
 void VISU_IsoSurfacesPL::ShallowCopy(VISU_PipeLine *thePipeLine){
-  VISU_ScalarMapPL::ShallowCopy(thePipeLine);
   if(VISU_IsoSurfacesPL *aPipeLine = dynamic_cast<VISU_IsoSurfacesPL*>(thePipeLine)){
     SetNbParts(aPipeLine->GetNbParts());
     float aRange[2] = {aPipeLine->GetMin(), aPipeLine->GetMax()};
     SetRange(aRange);
   }
+  VISU_ScalarMapPL::ShallowCopy(thePipeLine);
 }
 
 int VISU_IsoSurfacesPL::GetNbParts() {
@@ -97,14 +97,13 @@ void VISU_IsoSurfacesPL::Init(){
 }
 
 VISU_ScalarMapPL::THook* VISU_IsoSurfacesPL::DoHook(){
+  VISU::CellDataToPoint(myContourFilter,myCellDataToPointData,GetInput2(),myFieldTransform);
   return myContourFilter->GetOutput();
 }
 
 
-void VISU_IsoSurfacesPL::Update(){
-  VISU::CellDataToPoint(myContourFilter,myCellDataToPointData,GetInput2(),myFieldTransform);
-  SetMapScale();
-
+void VISU_IsoSurfacesPL::Update()
+{
   VISU_ScalarMapPL::Update();
 }
 
index 06f21c5a526bc4d7d1f9ee72681297388d3f11b2..c15fdd27c4b9208735b23f3bd3573f99cd97776b 100644 (file)
@@ -40,7 +40,26 @@ VISU_LookupTable *VISU_LookupTable::New() {
 }
 
 VISU_LookupTable::VISU_LookupTable(int sze, int ext)
-  : vtkLookupTable(sze, ext), myScale(1.0) {}
+  : vtkLookupTable(sze, ext), myScale(1.0), myBicolor(false) {}
+
+void VISU_LookupTable::SetMapScale(float theScale)
+{
+  if( myScale != theScale )
+  {
+    myScale = theScale;
+    Modified();
+  }
+}
+
+void VISU_LookupTable::SetBicolor( bool theBicolor )
+{
+  if( myBicolor != theBicolor )
+  {
+    myBicolor = theBicolor;
+    Modified();
+  }
+}
+
 
 int VISU_LookupTable::ComputeLogRange(float inRange[2], float outRange[2]){
   if(inRange[0] >= inRange[1])
@@ -65,9 +84,13 @@ unsigned char* VISU_LookupTable::MapValue(float v) {
     float aLowBound = log10(this->TableRange[0]);
     v = pow(10.0f,aLowBound + (v - aLowBound)*myScale);
     return vtkLookupTable::MapValue(v);
-  }else{
+  } else if (!myBicolor) {
     v = this->TableRange[0] + (v - this->TableRange[0])*myScale;
     return vtkLookupTable::MapValue(v);
+  } else {
+    unsigned char* table = this->Table->GetPointer(0);
+    int index = v > 0 ? 4*static_cast<int>(this->GetNumberOfColors()-1) : 0;
+    return &table[index];
   }
 }
 
@@ -113,29 +136,35 @@ inline float VISU_ApplyLogScale(float v, float range[2],
 inline unsigned char *VISU_LinearLookup(float v,   
                                        unsigned char *table,
                                        float maxIndex,
-                                       float shift, float scale)
+                                       float shift, float scale,
+                                       bool bicolor)
 {
-  float findx = (v + shift)*scale;
-  if (findx < 0)
-    {
-    findx = 0;
-    }
-  if (findx > maxIndex)
-    {
-    findx = maxIndex;
-    }
-  return &table[4*static_cast<int>(findx)];
-  /* round
-  return &table[4*(int)(findx + 0.5f)];
-  */
+  if( !bicolor )
+  {
+    float findx = (v + shift)*scale;
+    if (findx < 0)
+      findx = 0;
+    if (findx > maxIndex)
+      findx = maxIndex;
+
+    return &table[4*static_cast<int>(findx)];
+    // round
+    //return &table[4*(int)(findx + 0.5f)];
+  }
+  else
+  {
+    int index = v > 0 ? 4*static_cast<int>(maxIndex) : 0;
+    return &table[index];
+  }
 }
 
 // accelerate the mapping by copying the data in 32-bit chunks instead
 // of 8-bit chunks
 template<class T>
 void VISU_LookupTableMapData(vtkLookupTable *self, T *input, 
-                           unsigned char *output, int length, 
-                           int inIncr, int outFormat, float theMapScale)
+                            unsigned char *output, int length, 
+                            int inIncr, int outFormat,
+                            float theMapScale, bool bicolor)
 {
   int i = length;
   float *range = self->GetTableRange();
@@ -169,7 +198,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         while (--i >= 0) 
           {
           val = VISU_ApplyLogScale(*input, range, logRange);
-          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = *cptr++;
           *output++ = *cptr++;
           *output++ = *cptr++;
@@ -182,7 +211,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         while (--i >= 0) 
           {
           val = VISU_ApplyLogScale(*input, range, logRange);
-          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = *cptr++;
           *output++ = *cptr++;
           *output++ = *cptr++;
@@ -194,7 +223,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         while (--i >= 0) 
           {
           val = VISU_ApplyLogScale(*input, range, logRange);
-          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = static_cast<unsigned char>(cptr[0]*0.30 + cptr[1]*0.59 + 
                                                  cptr[2]*0.11 + 0.5);
           *output++ = cptr[3];
@@ -206,7 +235,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         while (--i >= 0) 
           {
           val = VISU_ApplyLogScale(*input, range, logRange);
-          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = static_cast<unsigned char>(cptr[0]*0.30 + cptr[1]*0.59 + 
                                                  cptr[2]*0.11 + 0.5);
           input += inIncr;
@@ -233,7 +262,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         {
         while (--i >= 0) 
           {
-          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = *cptr++;
           *output++ = *cptr++;
           *output++ = *cptr++;
@@ -245,7 +274,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         {
         while (--i >= 0) 
           {
-          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = *cptr++;
           *output++ = *cptr++;
           *output++ = *cptr++;
@@ -256,7 +285,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         {
         while (--i >= 0) 
           {
-          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = static_cast<unsigned char>(cptr[0]*0.30 + cptr[1]*0.59 + 
                                                  cptr[2]*0.11 + 0.5);
           *output++ = cptr[3];
@@ -267,7 +296,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         {
         while (--i >= 0) 
           {
-          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = static_cast<unsigned char>(cptr[0]*0.30 + cptr[1]*0.59 + 
                                                  cptr[2]*0.11 + 0.5);
           input += inIncr;
@@ -300,7 +329,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         while (--i >= 0) 
           {
           val = VISU_ApplyLogScale(*input, range, logRange);
-          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = *cptr++;
           *output++ = *cptr++;
           *output++ = *cptr++;
@@ -313,7 +342,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         while (--i >= 0) 
           {
           val = VISU_ApplyLogScale(*input, range, logRange);
-          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = *cptr++;
           *output++ = *cptr++;
           *output++ = *cptr++;
@@ -325,7 +354,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         while (--i >= 0) 
           {
           val = VISU_ApplyLogScale(*input, range, logRange);
-          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = static_cast<unsigned char>(cptr[0]*0.30 + cptr[1]*0.59 + 
                                                  cptr[2]*0.11 + 0.5);
           *output++ = static_cast<unsigned char>(alpha*cptr[3]);
@@ -337,7 +366,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         while (--i >= 0) 
           {
           val = VISU_ApplyLogScale(*input, range, logRange);
-          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale); 
+          cptr = VISU_LinearLookup(val, table, maxIndex, shift, scale*theMapScale, bicolor); 
           *output++ = static_cast<unsigned char>(cptr[0]*0.30 + cptr[1]*0.59 + 
                                                  cptr[2]*0.11 + 0.5);
           input += inIncr;
@@ -364,7 +393,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         {
         while (--i >= 0) 
           {
-          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale); 
+          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale, bicolor); 
           *output++ = *cptr++;
           *output++ = *cptr++;
           *output++ = *cptr++;
@@ -376,7 +405,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         {
         while (--i >= 0) 
           {
-          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale); 
+          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale, bicolor); 
           *output++ = *cptr++;
           *output++ = *cptr++;
           *output++ = *cptr++;
@@ -387,7 +416,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         {
         while (--i >= 0) 
           {
-          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale); 
+          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale, bicolor); 
           *output++ = static_cast<unsigned char>(cptr[0]*0.30 + cptr[1]*0.59 + 
                                                  cptr[2]*0.11 + 0.5);
           *output++ = static_cast<unsigned char>(cptr[3]*alpha);
@@ -398,7 +427,7 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
         {
         while (--i >= 0) 
           {
-          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale); 
+          cptr = VISU_LinearLookup(*input, table, maxIndex, shift, scale, bicolor); 
           *output++ = static_cast<unsigned char>(cptr[0]*0.30 + cptr[1]*0.59 + 
                                                  cptr[2]*0.11 + 0.5);
           input += inIncr;
@@ -414,7 +443,8 @@ void VISU_LookupTableMapData(vtkLookupTable *self, T *input,
 template<class T>
 void VISU_LookupTableMapMag(vtkLookupTable *self, T *input, 
                            unsigned char *output, int length, 
-                           int inIncr, int outFormat, float theMapScale)
+                           int inIncr, int outFormat,
+                           float theMapScale, bool bicolor)
 {
   double tmp, sum;
   double *mag;
@@ -433,7 +463,7 @@ void VISU_LookupTableMapMag(vtkLookupTable *self, T *input,
     mag[i] = sqrt(sum);
     }
 
-  VISU_LookupTableMapData(self, mag, output, length, 1, outFormat, theMapScale);
+  VISU_LookupTableMapData(self, mag, output, length, 1, outFormat, theMapScale, bicolor);
 
   delete [] mag;
 }
@@ -455,43 +485,43 @@ void VISU_LookupTable::MapScalarsThroughTable2(void *input,
         break;
       case VTK_CHAR:
         VISU_LookupTableMapMag(this,static_cast<char *>(input),output,
-                              numberOfValues,inputIncrement,outputFormat,myScale);
+                              numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
         return; 
       case VTK_UNSIGNED_CHAR:
         VISU_LookupTableMapMag(this,static_cast<unsigned char *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
         return;
       case VTK_SHORT:
         VISU_LookupTableMapMag(this,static_cast<short *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
         return;
       case VTK_UNSIGNED_SHORT:
         VISU_LookupTableMapMag(this,static_cast<unsigned short *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
         return;
       case VTK_INT:
         VISU_LookupTableMapMag(this,static_cast<int *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
         return;
       case VTK_UNSIGNED_INT:
         VISU_LookupTableMapMag(this,static_cast<unsigned int *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
         return;
       case VTK_LONG:
         VISU_LookupTableMapMag(this,static_cast<long *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
         return;
       case VTK_UNSIGNED_LONG:
         VISU_LookupTableMapMag(this,static_cast<unsigned long *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
         return;
       case VTK_FLOAT:
         VISU_LookupTableMapMag(this,static_cast<float *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
         return;
       case VTK_DOUBLE:
         VISU_LookupTableMapMag(this,static_cast<double *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
         return;
       default:
         vtkErrorMacro(<< "MapImageThroughTable: Unknown input ScalarType");
@@ -515,7 +545,7 @@ void VISU_LookupTable::MapScalarsThroughTable2(void *input,
       VISU_LookupTableMapData(this,
                              static_cast<unsigned char*>(newInput->GetPointer(0)),
                              output,numberOfValues,
-                             inputIncrement,outputFormat,myScale);
+                             inputIncrement,outputFormat,myScale,myBicolor);
       newInput->Delete();
       bitArray->Delete();
       }
@@ -523,52 +553,52 @@ void VISU_LookupTable::MapScalarsThroughTable2(void *input,
       
     case VTK_CHAR:
       VISU_LookupTableMapData(this,static_cast<char *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
       break;
       
     case VTK_UNSIGNED_CHAR:
       VISU_LookupTableMapData(this,static_cast<unsigned char *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
       break;
       
     case VTK_SHORT:
       VISU_LookupTableMapData(this,static_cast<short *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
       break;
       
     case VTK_UNSIGNED_SHORT:
       VISU_LookupTableMapData(this,static_cast<unsigned short *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
       break;
       
     case VTK_INT:
       VISU_LookupTableMapData(this,static_cast<int *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
       break;
       
     case VTK_UNSIGNED_INT:
       VISU_LookupTableMapData(this,static_cast<unsigned int *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
       break;
       
     case VTK_LONG:
       VISU_LookupTableMapData(this,static_cast<long *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
       break;
       
     case VTK_UNSIGNED_LONG:
       VISU_LookupTableMapData(this,static_cast<unsigned long *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
       break;
       
     case VTK_FLOAT:
       VISU_LookupTableMapData(this,static_cast<float *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
       break;
       
     case VTK_DOUBLE:
       VISU_LookupTableMapData(this,static_cast<double *>(input),output,
-                             numberOfValues,inputIncrement,outputFormat,myScale);
+                             numberOfValues,inputIncrement,outputFormat,myScale,myBicolor);
       break;
       
     default:
index 769ba89221eae383278a52b2b1085f527c5ac109..20f7c23e5b2b0673f2c7e974e4d51a8d71dca03a 100644 (file)
@@ -20,8 +20,11 @@ class VISU_LookupTable: public vtkLookupTable {
                                        int inputDataType, int numberOfValues,
                                        int inputIncrement, int outputIncrement);
 
-   float GetMapScale() { return myScale; }
-   void SetMapScale(float theScale = 1.0) { myScale = theScale; Modified(); }
+  float GetMapScale() { return myScale; }
+  void SetMapScale(float theScale = 1.0);
+
+  float GetBicolor() { return myBicolor; }
+  void SetBicolor( bool theBicolor );
 
    static int ComputeLogRange(float inRange[2], float outRange[2]);
    unsigned char *MapValue(float v);
@@ -31,5 +34,7 @@ class VISU_LookupTable: public vtkLookupTable {
    ~VISU_LookupTable() {};
    
    float myScale;
+
+   bool myBicolor;
 };
 #endif // VISU_LookupTable_H
diff --git a/src/PIPELINE/VISU_OpenGLPointSpriteMapper.cxx b/src/PIPELINE/VISU_OpenGLPointSpriteMapper.cxx
new file mode 100755 (executable)
index 0000000..d8eb9e8
--- /dev/null
@@ -0,0 +1,884 @@
+//  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:    VISU_OpenGLPointSpriteMapper.cxx
+// Author:  
+// Module : VISU
+
+#include "VISU_OpenGLPointSpriteMapper.hxx"
+
+#include <vtkCamera.h>
+#include <vtkCellArray.h>
+#include <vtkCellData.h>
+#include <vtkCommand.h>
+#include <vtkDataArray.h>
+#include <vtkFloatArray.h>
+#include <vtkImageData.h>
+#include <vtkMatrix4x4.h>
+#include <vtkObjectFactory.h>
+#include <vtkOpenGLRenderer.h>
+#include <vtkOpenGLRenderWindow.h>
+#include <vtkPointData.h>
+#include <vtkPolyData.h>
+#include <vtkPolygon.h>
+#include <vtkProperty.h>
+#include <vtkTimerLog.h>
+#include <vtkTriangle.h>
+
+#include <dlfcn.h>
+
+#include <stdio.h>
+#include <cmath>
+#include <string>
+
+#ifndef VTK_IMPLEMENT_MESA_CXX
+vtkCxxRevisionMacro(VISU_OpenGLPointSpriteMapper, "Revision$");
+vtkStandardNewMacro(VISU_OpenGLPointSpriteMapper);
+#endif
+
+// some definitions for what the polydata has in it
+#define VTK_PDPSM_COLORS             0x0001
+#define VTK_PDPSM_CELL_COLORS        0x0002
+#define VTK_PDPSM_POINT_TYPE_FLOAT   0x0004
+#define VTK_PDPSM_POINT_TYPE_DOUBLE  0x0008
+#define VTK_PDPSM_NORMAL_TYPE_FLOAT  0x0010
+#define VTK_PDPSM_NORMAL_TYPE_DOUBLE 0x0020
+#define VTK_PDPSM_OPAQUE_COLORS      0x0040
+
+#ifndef APIENTRY
+#define APIENTRY
+#endif
+#ifndef APIENTRYP
+#define APIENTRYP APIENTRY *
+#endif
+
+#ifndef GL_OBJECT_INFO_LOG_LENGTH_ARB
+#define GL_OBJECT_INFO_LOG_LENGTH_ARB     0x8B84
+#endif
+
+#ifndef GL_VERTEX_SHADER_ARB
+#define GL_VERTEX_SHADER_ARB              0x8B31
+#endif
+
+#ifndef GL_VERTEX_PROGRAM_POINT_SIZE_ARB
+#define GL_VERTEX_PROGRAM_POINT_SIZE_ARB  0x8642
+#endif
+
+#ifndef GL_ARB_point_sprite
+#define GL_POINT_SPRITE_ARB               0x8861
+#define GL_COORD_REPLACE_ARB              0x8862
+#endif
+
+#ifndef GL_ARB_shader_objects
+typedef char GLcharARB;
+#endif
+
+#ifndef GL_ARB_vertex_buffer_object
+typedef ptrdiff_t GLsizeiptrARB;
+
+#define GL_ARRAY_BUFFER_ARB               0x8892
+#define GL_STATIC_DRAW_ARB                0x88E4
+#endif
+
+typedef void (APIENTRYP PFNGLSHADERSOURCEARBPROC) (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
+typedef GLhandleARB (APIENTRYP PFNGLCREATESHADEROBJECTARBPROC) (GLenum shaderType);
+typedef void (APIENTRYP PFNGLCOMPILESHADERARBPROC) (GLhandleARB shaderObj);
+typedef GLhandleARB (APIENTRYP PFNGLCREATEPROGRAMOBJECTARBPROC) (void);
+typedef void (APIENTRYP PFNGLATTACHOBJECTARBPROC) (GLhandleARB containerObj, GLhandleARB obj);
+typedef void (APIENTRYP PFNGLLINKPROGRAMARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLUSEPROGRAMOBJECTARBPROC) (GLhandleARB programObj);
+typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
+typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj, const GLcharARB *name);
+typedef void (APIENTRYP PFNGLVERTEXATTRIB1FARBPROC) (GLuint index, GLfloat x);
+
+typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
+typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
+typedef void (APIENTRYP PFNGLGENBUFFERSARBPROC) (GLsizei n, GLuint *buffers);
+typedef void (APIENTRYP PFNGLBUFFERDATAARBPROC) (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
+
+static PFNGLSHADERSOURCEARBPROC             vglShaderSourceARB            = NULL;
+static PFNGLCREATESHADEROBJECTARBPROC       vglCreateShaderObjectARB      = NULL;
+static PFNGLCOMPILESHADERARBPROC            vglCompileShaderARB           = NULL;
+static PFNGLCREATEPROGRAMOBJECTARBPROC      vglCreateProgramObjectARB     = NULL;
+static PFNGLATTACHOBJECTARBPROC             vglAttachObjectARB            = NULL;
+static PFNGLLINKPROGRAMARBPROC              vglLinkProgramARB             = NULL;
+static PFNGLUSEPROGRAMOBJECTARBPROC         vglUseProgramObjectARB        = NULL;
+static PFNGLGETOBJECTPARAMETERIVARBPROC     vglGetObjectParameterivARB    = NULL;
+static PFNGLGETINFOLOGARBPROC               vglGetInfoLogARB              = NULL;
+static PFNGLGETATTRIBLOCATIONARBPROC        vglGetAttribLocationARB       = NULL;
+static PFNGLVERTEXATTRIB1FARBPROC           vglVertexAttrib1fARB          = NULL;
+
+static PFNGLGENBUFFERSARBPROC               vglGenBuffersARB              = NULL;
+static PFNGLBINDBUFFERARBPROC               vglBindBufferARB              = NULL;
+static PFNGLBUFFERDATAARBPROC               vglBufferDataARB              = NULL;
+static PFNGLDELETEBUFFERSARBPROC            vglDeleteBuffersARB           = NULL;
+
+int InitializeARB()
+{
+  void* OpenGLLibrary = dlopen( "libGL.so", RTLD_LAZY );
+
+  vglShaderSourceARB = (PFNGLSHADERSOURCEARBPROC)dlsym( OpenGLLibrary, "glShaderSourceARB" );
+  vglCreateShaderObjectARB = (PFNGLCREATESHADEROBJECTARBPROC)dlsym( OpenGLLibrary, "glCreateShaderObjectARB" );
+  vglCompileShaderARB = (PFNGLCOMPILESHADERARBPROC)dlsym( OpenGLLibrary, "glCompileShaderARB" );
+  vglCreateProgramObjectARB = (PFNGLCREATEPROGRAMOBJECTARBPROC)dlsym( OpenGLLibrary, "glCreateProgramObjectARB" );
+  vglAttachObjectARB = (PFNGLATTACHOBJECTARBPROC)dlsym( OpenGLLibrary, "glAttachObjectARB" );
+  vglLinkProgramARB = (PFNGLLINKPROGRAMARBPROC)dlsym( OpenGLLibrary, "glLinkProgramARB" );
+  vglUseProgramObjectARB = (PFNGLUSEPROGRAMOBJECTARBPROC)dlsym( OpenGLLibrary, "glUseProgramObjectARB" );
+  vglGetObjectParameterivARB = (PFNGLGETOBJECTPARAMETERIVARBPROC)dlsym( OpenGLLibrary, "glGetObjectParameterivARB" );
+  vglGetInfoLogARB = (PFNGLGETINFOLOGARBPROC)dlsym( OpenGLLibrary, "glGetInfoLogARB" );
+  vglGetAttribLocationARB = (PFNGLGETATTRIBLOCATIONARBPROC)dlsym( OpenGLLibrary, "glGetAttribLocationARB" );
+  vglVertexAttrib1fARB = (PFNGLVERTEXATTRIB1FARBPROC)dlsym( OpenGLLibrary, "glVertexAttrib1fARB" );
+
+  vglGenBuffersARB = (PFNGLGENBUFFERSARBPROC)dlsym( OpenGLLibrary, "glGenBuffersARB" );
+  vglBindBufferARB = (PFNGLBINDBUFFERARBPROC)dlsym( OpenGLLibrary, "glBindBufferARB" );
+  vglBufferDataARB = (PFNGLBUFFERDATAARBPROC)dlsym( OpenGLLibrary, "glBufferDataARB" );
+  vglDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC)dlsym( OpenGLLibrary, "glDeleteBuffersARB" );
+
+  return 1;
+};
+
+static int IsARBInitialized = InitializeARB();
+static float Tolerance = 1.0 / VTK_LARGE_FLOAT;
+
+//-----------------------------------------------------------------------------
+// Construct empty object.
+VISU_OpenGLPointSpriteMapper::VISU_OpenGLPointSpriteMapper()
+{
+  this->RenderMode               = VISU_OpenGLPointSpriteMapper::Occlude;
+
+  this->ListId                   = 0;
+  this->TotalCells               = 0;
+  this->ExtensionsInitialized    = 0;
+  this->DefaultPointSize         = 20.0;
+  this->AverageCellSize          = 0.0;
+
+  this->UsePointSprites          = true;
+  this->UseTextures              = true;
+  this->UseShader                = true;
+
+  this->PrimitiveType            = VISU_OpenGLPointSpriteMapper::PointSprite;
+
+  this->PointSpriteMode          = 0;
+
+  this->PointSpriteClamp         = 256.0;
+  this->PointSpriteSize          = 0.2;
+  this->PointSpriteMinSize       = 0.1;
+  this->PointSpriteMaxSize       = 0.3;
+  this->PointSpriteMagnification = 1.0;
+
+  this->PointSpriteAlphaThreshold = 0.5;
+  this->PointSpriteTexture       = 0;
+
+  this->UseOpenGLMapper          = false;
+
+  this->TempMapper               = vtkPolyDataMapper::New();
+}
+//-----------------------------------------------------------------------------
+VISU_OpenGLPointSpriteMapper::~VISU_OpenGLPointSpriteMapper()
+{
+  glDeleteTextures( 1, &PointSpriteTexture );
+
+  if( this->LastWindow )
+    this->ReleaseGraphicsResources(this->LastWindow);
+
+  if( this->TempMapper )
+    this->TempMapper->Delete();
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::ShallowCopy( vtkAbstractMapper* mapper )
+{
+  VISU_OpenGLPointSpriteMapper* m = VISU_OpenGLPointSpriteMapper::SafeDownCast(mapper);
+  if( m != NULL )
+  {
+    this->SetPrimitiveType( m->GetPrimitiveType() );
+
+    this->SetPointSpriteMode( m->GetPointSpriteMode() );
+
+    this->SetPointSpriteClamp( m->GetPointSpriteClamp() );
+    this->SetPointSpriteSize( m->GetPointSpriteSize() );
+    this->SetPointSpriteMinSize( m->GetPointSpriteMinSize() );
+    this->SetPointSpriteMaxSize( m->GetPointSpriteMaxSize() );
+    this->SetPointSpriteMagnification( m->GetPointSpriteMagnification() );
+
+    this->SetImageData( m->GetImageData() );
+    this->SetPointSpriteAlphaThreshold( m->GetPointSpriteAlphaThreshold() );
+  }
+
+  this->TempMapper->ShallowCopy( m );
+  this->TempMapper->SetInput( this->GetInput() );
+  Superclass::ShallowCopy( this->TempMapper );
+
+}
+//-----------------------------------------------------------------------------
+char* readFromFile( std::string fileName )
+{
+  FILE* file = fopen( fileName.c_str(), "r" );
+
+  char* content = NULL;
+  int count = 0;
+
+  if( file != NULL )
+  {
+    fseek( file, 0, SEEK_END );
+    count = ftell( file );
+    rewind( file );
+
+    if( count > 0 )
+    {
+      content = ( char* )malloc( sizeof( char ) * ( count + 1 ) );
+      count = fread( content, sizeof( char ), count, file );
+      content[ count ] = '\0';
+    }
+    fclose( file );
+  }
+
+  return content;
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::PrintInfoLog( GLhandleARB obj )
+{
+  int infologLength = 0;
+  int charsWritten  = 0;
+  char* infoLog;
+
+  vglGetObjectParameterivARB( obj, GL_OBJECT_INFO_LOG_LENGTH_ARB, &infologLength );
+
+  if( infologLength > 0 )
+  {
+    infoLog = ( char* )malloc( infologLength );
+    vglGetInfoLogARB( obj, infologLength, &charsWritten, infoLog );
+    printf( "%s\n", infoLog );
+    free( infoLog );
+  }
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::InitShader()
+{
+  //cout << "Initializing vertex program" << endl;
+
+  std::string fileName = std::string( getenv( "VISU_ROOT_DIR") ) +
+                         "/share/salome/resources/Vertex_Program_ARB.txt";
+
+  char* shader = readFromFile( fileName );
+
+  GLhandleARB VertexShader = vglCreateShaderObjectARB( GL_VERTEX_SHADER_ARB );
+  vglShaderSourceARB( VertexShader, 1, (const GLcharARB**)&shader, NULL );
+  vglCompileShaderARB( VertexShader );
+  //this->PrintInfoLog( VertexShader );
+
+  this->VertexProgram = vglCreateProgramObjectARB();
+  vglAttachObjectARB( this->VertexProgram, VertexShader );
+
+  vglLinkProgramARB( this->VertexProgram );
+  //this->PrintInfoLog( VertexProgram );
+  /*
+  cout << "Shader from " << fileName << endl;
+  for( int i = 0; i < strlen( shader ); i++ )
+    cout << shader[i];
+  cout << endl;
+
+  if( glGetError() == GL_NO_ERROR )
+    cout << "Loading vertex program... ok" << endl << endl;
+  else
+    cout << "Loading vertex program... failed" << endl << endl;
+  */
+  free( shader );
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::SetShaderVariable( const char* variable, float value )
+{
+  //cout << this->VertexProgram << " ";
+  //cout << vglGetAttribLocationARB( this->VertexProgram, variable ) << " ";
+  //cout << variable << " " << value << endl;
+
+  vglVertexAttrib1fARB( vglGetAttribLocationARB( this->VertexProgram, variable ), value );
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::SetPrimitiveType( int thePrimitiveType )
+{
+  if( this->PrimitiveType == thePrimitiveType )
+    return;
+
+  this->PrimitiveType = thePrimitiveType;
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::SetPointSpriteMode( int theMode )
+{
+  if( this->PointSpriteMode == theMode )
+    return;
+
+  this->PointSpriteMode = theMode;
+  this->Modified();
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::SetPointSpriteClamp( float theClamp )
+{
+  if( fabs( this->PointSpriteClamp - theClamp ) < Tolerance )
+    return;
+
+  this->PointSpriteClamp = theClamp;
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::SetPointSpriteSize( float theSize )
+{
+  if( fabs( this->PointSpriteSize - theSize ) < Tolerance )
+    return;
+
+  this->PointSpriteSize = theSize;
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::SetPointSpriteMinSize( float theMinSize )
+{
+  if( fabs( this->PointSpriteMinSize - theMinSize ) < Tolerance )
+    return;
+
+  this->PointSpriteMinSize = theMinSize;
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::SetPointSpriteMaxSize( float theMaxSize )
+{
+  if( fabs( this->PointSpriteMaxSize - theMaxSize ) < Tolerance )
+    return;
+
+  this->PointSpriteMaxSize = theMaxSize;
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::SetPointSpriteMagnification( float theMagnification )
+{
+  if( fabs( this->PointSpriteMagnification - theMagnification ) < Tolerance )
+    return;
+
+  this->PointSpriteMagnification = theMagnification;
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::SetPointSpriteAlphaThreshold( float theAlphaThreshold )
+{
+  if( fabs( this->PointSpriteAlphaThreshold - theAlphaThreshold ) < Tolerance )
+    return;
+
+  this->PointSpriteAlphaThreshold = theAlphaThreshold;
+}
+//-----------------------------------------------------------------------------
+bool VISU_OpenGLPointSpriteMapper::InitExtensions()
+{
+  char* ext = (char*)glGetString( GL_EXTENSIONS );
+  //cout << "OpenGL extensions : " << ext << endl;
+
+  if( strstr( ext, "GL_ARB_point_sprite" ) == NULL ||
+      strstr( ext, "GL_ARB_shader_objects" ) == NULL ||
+      strstr( ext, "GL_ARB_vertex_buffer_object" ) == NULL )
+  {
+    vtkWarningMacro(<<"Initializing ARB extensions failed");
+
+    this->UseOpenGLMapper = true;
+
+    return false;
+  }
+
+  if( this->UseShader )
+    this->InitShader();
+
+  this->ExtensionsInitialized = 1;
+  return true;
+}
+
+//-----------------------------------------------------------------------------
+float ViewToDisplay( vtkRenderer* theRenderer )
+{
+  float p1[3], p2[3];
+
+  theRenderer->SetViewPoint( 0.0, 0.0, 0.0 );
+  theRenderer->ViewToDisplay();
+  theRenderer->GetDisplayPoint( p1 );
+
+  theRenderer->SetViewPoint( 1.0, 1.0, 1.0 );
+  theRenderer->ViewToDisplay();
+  theRenderer->GetDisplayPoint( p2 );
+
+  float coefficient = sqrt( pow( p2[0] - p1[0], 2 ) + pow( p2[1] - p1[1], 2 ) ) / sqrt( 2 );
+  //cout << p1[0] << " " << p1[1] << " " << p1[2] << endl;
+  //cout << p2[0] << " " << p2[1] << " " << p2[2] << endl;
+  //cout << "ZOOM  : " << coefficient << endl;
+
+  return coefficient;
+}
+
+//-----------------------------------------------------------------------------
+//
+// Receives from Actor -> maps data to primitives
+//
+void VISU_OpenGLPointSpriteMapper::RenderPiece(vtkRenderer *ren, vtkActor *act)
+{
+  bool isUseThisMapper = !( this->UseOpenGLMapper ||
+                           this->PrimitiveType == VISU_OpenGLPointSpriteMapper::GeomSphere );
+
+  if( !this->ExtensionsInitialized && isUseThisMapper )
+  {
+    if( !this->InitExtensions() )
+      return;
+  }
+
+  if( !isUseThisMapper )
+  {
+    MAPPER_SUPERCLASS::RenderPiece( ren, act );
+    return;
+  }
+
+  vtkIdType numPts;
+  vtkPolyData *input= this->GetInput();
+
+  //
+  // make sure that we've been properly initialized
+  //
+  if (ren->GetRenderWindow()->CheckAbortStatus())
+    return;
+
+  if ( input == NULL )
+  {
+    vtkErrorMacro(<< "No input!");
+    return;
+  }
+  else
+  {
+    this->InvokeEvent(vtkCommand::StartEvent,NULL);
+    input->Update();
+    this->InvokeEvent(vtkCommand::EndEvent,NULL);
+
+    numPts = input->GetNumberOfPoints();
+  }
+
+  if (numPts == 0)
+  {
+    vtkDebugMacro(<< "No points!");
+    return;
+  }
+
+  if ( this->LookupTable == NULL )
+    this->CreateDefaultLookupTable();
+
+  // make sure our window is current
+  ren->GetRenderWindow()->MakeCurrent();
+
+  if( this->UsePointSprites ) //&& this->PrimitiveType == VISU_OpenGLPointSpriteMapper::PointSprite )
+    this->InitPointSprites();
+
+  // Initializing the texture for Point Sprites
+  if( this->UseTextures && this->PrimitiveType == VISU_OpenGLPointSpriteMapper::PointSprite )
+    this->InitTextures();
+
+  vglUseProgramObjectARB( this->VertexProgram );
+  float aViewToDisplay = ViewToDisplay( ren );
+  this->SetShaderVariable( "mode",          this->PointSpriteMode );
+  this->SetShaderVariable( "clampSize",     this->PointSpriteClamp );
+  this->SetShaderVariable( "geomSize",      aViewToDisplay * this->AverageCellSize * this->PointSpriteSize );
+  this->SetShaderVariable( "minSize",       aViewToDisplay * this->AverageCellSize * this->PointSpriteMinSize );
+  this->SetShaderVariable( "maxSize",       aViewToDisplay * this->AverageCellSize * this->PointSpriteMaxSize );
+  this->SetShaderVariable( "magnification", this->PointSpriteMagnification );
+
+  //
+  // if something has changed regenerate colors and display lists
+  // if required
+  //
+  int noAbort=1;
+  if ( this->GetMTime() > this->BuildTime ||
+       input->GetMTime() > this->BuildTime ||
+       act->GetProperty()->GetMTime() > this->BuildTime ||
+       ren->GetRenderWindow() != this->LastWindow)
+  {
+    // sets this->Colors as side effect
+    this->MapScalars( act->GetProperty()->GetOpacity() );
+
+    if (!this->ImmediateModeRendering &&
+        !this->GetGlobalImmediateModeRendering())
+    {
+      this->ReleaseGraphicsResources(ren->GetRenderWindow());
+      this->LastWindow = ren->GetRenderWindow();
+
+      // get a unique display list id
+      this->ListId = glGenLists(1);
+      glNewList(this->ListId,GL_COMPILE);
+
+      noAbort = this->Draw(ren,act);
+      glEndList();
+
+      // Time the actual drawing
+      this->Timer->StartTimer();
+      glCallList(this->ListId);
+      this->Timer->StopTimer();
+    }
+    else
+    {
+      this->ReleaseGraphicsResources(ren->GetRenderWindow());
+      this->LastWindow = ren->GetRenderWindow();
+    }
+    if (noAbort)
+      this->BuildTime.Modified();
+  }
+  // if nothing changed but we are using display lists, draw it
+  else
+  {
+    if (!this->ImmediateModeRendering &&
+        !this->GetGlobalImmediateModeRendering())
+    {
+      // Time the actual drawing
+      this->Timer->StartTimer();
+      glCallList(this->ListId);
+      this->Timer->StopTimer();
+    }
+  }
+
+  // if we are in immediate mode rendering we always
+  // want to draw the primitives here
+  if (this->ImmediateModeRendering ||
+      this->GetGlobalImmediateModeRendering())
+  {
+    // sets this->Colors as side effect
+    this->MapScalars( act->GetProperty()->GetOpacity() );
+
+    // Time the actual drawing
+    this->Timer->StartTimer();
+    this->Draw(ren,act);
+    this->Timer->StopTimer();
+  }
+
+  this->TimeToDraw = (float)this->Timer->GetElapsedTime();
+
+  // If the timer is not accurate enough, set it to a small
+  // time so that it is not zero
+  if ( this->TimeToDraw == 0.0 )
+    this->TimeToDraw = 0.0001;
+
+  vglUseProgramObjectARB( 0 );
+
+  if( this->UsePointSprites ) //&& this->PrimitiveType == VISU_OpenGLPointSpriteMapper::PointSprite )
+    this->CleanupPointSprites();
+}
+//-----------------------------------------------------------------------------
+float VISU_OpenGLPointSpriteMapper::GetMaximumSupportedSize()
+{
+  float maximumSupportedSize = 512.0;
+  //glGetFloatv( GL_POINT_SIZE_MAX_ARB, &maximumSupportedSize );
+
+  return maximumSupportedSize;
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::InitPointSprites()
+{
+  glEnable( GL_POINT_SPRITE_ARB );
+  glEnable( GL_VERTEX_PROGRAM_POINT_SIZE_ARB );
+
+  switch (this->RenderMode)
+  {
+    case VISU_OpenGLPointSpriteMapper::Accumulate:
+    {
+      glDisable(GL_DEPTH_TEST);
+
+      glEnable( GL_BLEND );
+      glBlendFunc( GL_SRC_ALPHA, GL_ONE );
+
+      glEnable( GL_ALPHA_TEST );
+      glAlphaFunc( GL_GREATER, this->PointSpriteAlphaThreshold );
+      break;
+    }
+
+    case VISU_OpenGLPointSpriteMapper::Occlude:
+    {
+      glDepthFunc( GL_LEQUAL );
+      glEnable( GL_DEPTH_TEST );
+
+      glEnable( GL_ALPHA_TEST );
+      glAlphaFunc( GL_GREATER, this->PointSpriteAlphaThreshold );
+
+      glDisable( GL_BLEND );
+      break;
+    }
+
+    default:
+    {
+      break;
+    }
+  }
+  // Disable Lighting/Shading.
+  glDisable( GL_LIGHTING );
+
+  // Disable material properties
+  glDisable( GL_COLOR_MATERIAL );
+}
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::CleanupPointSprites()
+{
+  // Set GL params back to normal to stop other vtkMappers displaying wrongly
+  glDisable( GL_ALPHA_TEST );
+
+  glEnable( GL_BLEND );
+
+  glEnable( GL_DEPTH_TEST );
+  glEnable( GL_LIGHTING );
+  glEnable( GL_COLOR_MATERIAL );
+
+  glDisable( GL_VERTEX_PROGRAM_POINT_SIZE_ARB );
+  glDisable( GL_POINT_SPRITE_ARB );
+}
+
+
+//-----------------------------------------------------------------------------
+void
+VISU_OpenGLPointSpriteMapper
+::SetImageData( vtkImageData* theImageData )
+{
+  //cout << "VISU_OpenGLPointSpriteMapper::SetImageData " << theImageData << endl;
+  this->ImageData = theImageData;
+}
+
+vtkImageData*
+VISU_OpenGLPointSpriteMapper
+::GetImageData()
+{
+  return this->ImageData.GetPointer();
+}
+
+
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::InitTextures()
+{
+  //cout << "VISU_OpenGLPointSpriteMapper::InitTextures " << this->GetImageData() << endl;
+  if( !this->GetImageData() )
+    return;
+
+  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
+  glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );
+  glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
+  glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
+
+  int* aSize = GetImageData()->GetDimensions();
+  unsigned char* dataPtr = (unsigned char*)GetImageData()->GetScalarPointer();
+  glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, aSize[0], aSize[1], 0,
+               GL_RGBA, GL_UNSIGNED_BYTE, dataPtr );
+
+  //glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
+  glEnable( GL_TEXTURE_2D );
+  glTexEnvf( GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE );
+  glBindTexture( GL_TEXTURE_2D, this->PointSpriteTexture );
+}
+
+//-----------------------------------------------------------------------------
+int ComputeHue( int r, int g, int b )
+{
+  int h = 0;
+
+  int max = r;
+  int whatmax = 0;
+  if( g > max ) {
+    max = g;
+    whatmax = 1;
+  }
+  if( b > max ) {
+    max = b;
+    whatmax = 2;
+  }
+
+  int min = r;
+  if ( g < min ) min = g;
+  if ( b < min ) min = b;
+  int delta = max-min;
+
+  if( delta == 0 )
+    h = 0;
+  else if( whatmax == 0 ) {
+    if ( g >= b )
+      h = (120*(g-b)+delta)/(2*delta);
+    else
+      h = (120*(g-b+delta)+delta)/(2*delta) + 300;
+  }
+  else if( whatmax == 1 ) {
+    if ( b > r )
+      h = 120 + (120*(b-r)+delta)/(2*delta);
+    else
+      h = 60 + (120*(b-r+delta)+delta)/(2*delta);
+  }
+  else {
+    if ( r > g )
+      h = 240 + (120*(r-g)+delta)/(2*delta);
+    else
+      h = 180 + (120*(r-g+delta)+delta)/(2*delta);
+  }
+
+  return h + 1;
+}
+
+//-----------------------------------------------------------------------------
+struct TVertex
+{
+  GLfloat r, g, b, hue;
+  GLfloat vx, vy, vz;
+};
+
+//-----------------------------------------------------------------------------
+void VISU_OpenGLPointSpriteMapper::DrawPoints(vtkPoints *thePoints,
+                                             vtkUnsignedCharArray *theColors,
+                                             vtkFloatArray *theAlpha,
+                                             vtkIdType &theCellNum,
+                                             int &theNoAbort,
+                                             vtkCellArray *theCells,
+                                             vtkRenderer *theRenderer,
+                                             vtkActor* theActor)
+{
+  //cout << "VISU_OpenGLPointSpriteMapper::DrawPoints" << endl;
+
+  //if( this->PrimitiveType == VISU_OpenGLPointSpriteMapper::OpenGLPoint )
+  //  glEnable( GL_POINT_SMOOTH );
+
+  glPointSize( this->DefaultPointSize );
+
+  TVertex* aVertexArr = new TVertex[ this->TotalCells ];
+
+  float* aPropertyColor = theActor->GetProperty()->GetColor();
+  float aColor[3] = {aPropertyColor[0], aPropertyColor[1], aPropertyColor[2]};
+
+  unsigned long i = 0;
+  vtkIdType *pts = 0;
+  vtkIdType npts = 0;
+  for( theCells->InitTraversal(); theCells->GetNextCell( npts, pts ); i++ )
+  {
+    TVertex& aVertex = aVertexArr[i];
+    vtkIdType aPointId = pts[0];
+    float* aCoords = thePoints->GetPoint( aPointId );
+    aVertex.vx = aCoords[0];
+    aVertex.vy = aCoords[1];
+    aVertex.vz = aCoords[2];
+
+    int aRed, aGreen, aBlue;
+    if( theColors && this->PointSpriteMode != 1 )
+    {
+      unsigned char *col = theColors->GetPointer(pts[0] << 2);
+      aRed = int(col[0]);
+      aGreen = int(col[1]);
+      aBlue = int(col[2]);
+
+      aColor[0] = aRed / 255.0;
+      aColor[1] = aGreen / 255.0;
+      aColor[2] = aBlue / 255.0;
+    }
+
+    aVertex.r = aColor[0];
+    aVertex.g = aColor[1];
+    aVertex.b = aColor[2];
+    aVertex.hue = ComputeHue( aRed, aGreen, aBlue );
+  }
+
+  GLuint aBufferObjectID = 0;
+  vglGenBuffersARB( 1, &aBufferObjectID );
+  vglBindBufferARB( GL_ARRAY_BUFFER_ARB, aBufferObjectID );
+
+  int nArrayObjectSize = sizeof( TVertex ) * this->TotalCells;
+  vglBufferDataARB( GL_ARRAY_BUFFER_ARB, nArrayObjectSize, aVertexArr, GL_STATIC_DRAW_ARB );
+
+  delete [] aVertexArr;
+
+  vglBindBufferARB( GL_ARRAY_BUFFER_ARB, 0 );
+  vglBindBufferARB( GL_ARRAY_BUFFER_ARB, aBufferObjectID );
+
+  glColorPointer( 4, GL_FLOAT, sizeof(TVertex), (void*)0 );
+  glVertexPointer( 3, GL_FLOAT, sizeof(TVertex), (void*)(4*sizeof(GLfloat)) );
+
+  glEnableClientState( GL_VERTEX_ARRAY );
+  glEnableClientState( GL_COLOR_ARRAY );
+
+  glDrawArrays( GL_POINTS, 0, this->TotalCells );
+
+  glDisableClientState( GL_COLOR_ARRAY );
+  glDisableClientState( GL_VERTEX_ARRAY );
+
+  vglDeleteBuffersARB( 1, &aBufferObjectID );
+
+  //if( this->PrimitiveType == VISU_OpenGLPointSpriteMapper::OpenGLPoint )
+  //  glDisable( GL_POINT_SMOOTH );
+}
+
+//-----------------------------------------------------------------------------
+int VISU_OpenGLPointSpriteMapper::Draw(vtkRenderer *aren, vtkActor *act)
+{
+
+  if( this->UseOpenGLMapper ||
+      this->PrimitiveType == VISU_OpenGLPointSpriteMapper::GeomSphere )
+    return MAPPER_SUPERCLASS::Draw( aren, act );
+
+  vtkOpenGLRenderer    *ren    = (vtkOpenGLRenderer *)aren;
+  vtkUnsignedCharArray *colors = NULL;
+  vtkFloatArray        *alpha  = NULL;
+  vtkPolyData          *input  = this->GetInput();
+  vtkPoints            *points;
+  int noAbort = 1;
+  int cellScalars = 0;
+  vtkIdType cellNum = 0;
+  float  tran;
+
+  // get the transparency
+  tran = act->GetProperty()->GetOpacity();
+
+  // if the primitives are invisable then get out of here
+  if (tran <= 0.0)
+  {
+    return noAbort;
+  }
+
+  // and draw the display list
+  points = input->GetPoints();
+
+  // are they cell or point scalars
+  if ( this->Colors )
+  {
+    colors = this->Colors;
+    if ( (this->ScalarMode == VTK_SCALAR_MODE_USE_CELL_DATA ||
+          this->ScalarMode == VTK_SCALAR_MODE_USE_CELL_FIELD_DATA ||
+          !input->GetPointData()->GetScalars() )
+         && this->ScalarMode != VTK_SCALAR_MODE_USE_POINT_FIELD_DATA)
+    {
+      cellScalars = 1;
+    }
+  }
+
+  // we need to know the total number of cells so that we can report progress
+  this->TotalCells = input->GetVerts()->GetNumberOfCells();
+
+  this->DrawPoints(points, colors, alpha, cellNum, noAbort, input->GetVerts(), ren, act);
+
+  this->UpdateProgress(1.0);
+  return noAbort;
+}
+//-----------------------------------------------------------------------------
+// Release the graphics resources used by this mapper.  In this case, release
+// the display list if any.
+void VISU_OpenGLPointSpriteMapper::ReleaseGraphicsResources(vtkWindow *win)
+{
+  this->Superclass::ReleaseGraphicsResources(win);
+
+  if (this->ListId && win)
+    {
+    win->MakeCurrent();
+    glDeleteLists(this->ListId,1);
+    this->ListId = 0;
+    }
+  this->LastWindow = NULL;
+}
diff --git a/src/PIPELINE/VISU_OpenGLPointSpriteMapper.hxx b/src/PIPELINE/VISU_OpenGLPointSpriteMapper.hxx
new file mode 100755 (executable)
index 0000000..1ddb55f
--- /dev/null
@@ -0,0 +1,285 @@
+//  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:    VISU_OpenGLPointSpriteMapper.hxx
+// Author:  
+// Module : VISU
+
+#ifndef VISU_OpenGLPointSpriteMapper_HeaderFile
+#define VISU_OpenGLPointSpriteMapper_HeaderFile
+
+#if defined(_MSC_VER)
+# pragma warning ( disable : 4275 )
+#endif
+
+#include <GL/gl.h>
+
+#include <vtkSmartPointer.h>
+#include <vtkConfigure.h>
+
+class vtkCellArray;
+class vtkPoints;
+class vtkProperty;
+class vtkRenderWindow;
+class vtkOpenGLRenderer;
+class vtkOpenGLTexture;
+class vtkBMPReader;
+class vtkImageData;
+class vtkFloatArray;
+class vtkXMLImageDataReader;
+
+#ifndef VTK_IMPLEMENT_MESA_CXX
+#include <vtkOpenGLPolyDataMapper.h>
+#define MAPPER_SUPERCLASS vtkOpenGLPolyDataMapper
+#else
+#include <vtkMesaPolyDataMapper.h>
+#define MAPPER_SUPERCLASS vtkMesaPolyDataMapper
+#endif
+
+#ifndef GL_ARB_shader_objects
+typedef GLuint GLhandleARB;
+#endif
+
+//----------------------------------------------------------------------------
+//! OpenGL Point Sprites PolyData Mapper.
+/*!
+ * VISU_OpenGLPointSpriteMapper is a class that maps polygonal data 
+ * (i.e., vtkPolyData) to graphics primitives. It is performing the mapping
+ * to the rendering/graphics hardware/software. It is now possible to set a 
+ * memory limit for the pipeline in the mapper. If the total estimated memory 
+ * usage of the pipeline is larger than this limit, the mapper will divide 
+ * the data into pieces and render each in a for loop.
+ */
+class VISU_OpenGLPointSpriteMapper : public MAPPER_SUPERCLASS
+{
+public:
+  //! The Point Sprites rendering mode.
+  /*!
+   * Accumulate : Uses glBlendFunc(GL_SRC_ALPHA, GL_ONE), and no depth testing
+   * so that points are accumulated. Suitable for Galaxy plots.
+   * Occlude : No blending. Particles are solid spheres and depth testing is
+   * used as usual. Suitable for most particle simulations without the need
+   * for opacity.
+   */
+  enum RenderModes { Accumulate = 0, Occlude };
+
+  enum PrimitiveTypes { PointSprite = 0, OpenGLPoint, GeomSphere };
+
+  static VISU_OpenGLPointSpriteMapper *New();
+  vtkTypeRevisionMacro(VISU_OpenGLPointSpriteMapper,MAPPER_SUPERCLASS);
+
+  void ShallowCopy(vtkAbstractMapper*);
+
+  //! Set the initial point size to be used.
+  /*!
+   * This value forms the base upon which the distance attenuation acts.
+   * Usually the pointsize is set to the maximum supported by the graphics
+   * card for sprite display, then the quadratic factors are adjusted to
+   * bring the size down.
+   */
+  vtkSetMacro(DefaultPointSize, float);
+
+  //! Get the initial point size to be used.
+  vtkGetMacro(DefaultPointSize, float);
+
+  //! Set Average Cell Size.
+  vtkSetMacro(AverageCellSize, float);
+
+  //! Get Average Cell Size.
+  vtkGetMacro(AverageCellSize, float);
+
+  //! Set the Render Mode for the mapper.
+  vtkSetMacro(RenderMode, int);
+
+  //! Get the Render Mode for the mapper.
+  vtkGetMacro(RenderMode, int);
+
+  //! Implement superclass render method.
+  virtual void RenderPiece(vtkRenderer *ren, vtkActor *a);
+
+  //! Release any graphics resources that are being consumed by this mapper.
+  void ReleaseGraphicsResources(vtkWindow *);
+
+  //! Draw method for OpenGL.
+  virtual int Draw(vtkRenderer *ren, vtkActor *a);
+
+  //! Return the maximum point size supported by the graphics hardware.
+  static float GetMaximumSupportedSize();
+
+  //! Set usage of #vtkOpenGLPolyDataMapper.
+  /*!
+   * This flags prevents using of the VISU_OpenGLPointSpriteMapper
+   * (#vtkOpenGLPolyDataMapper is using instead).
+   */
+  vtkSetMacro(UseOpenGLMapper, bool);
+
+  //! Get usage of #vtkOpenGLPolyDataMapper.
+  vtkGetMacro(UseOpenGLMapper, bool);
+
+  //! Set usage of Point Sprites.
+  vtkSetMacro(UsePointSprites, bool);
+
+  //! Get usage of Point Sprites.
+  vtkGetMacro(UsePointSprites, bool);
+
+  //! Set usage of textures for Point Sprites.
+  /*! Works only if usage of Point Sprites is turned on. */
+  vtkSetMacro(UseTextures, bool);
+
+  //! Get usage of textures for Point Sprites.
+  vtkGetMacro(UseTextures, bool);
+
+  //! Set usage of vertex shader.
+  /*! Works only if usage of Point Sprites is turned on. */
+  vtkSetMacro(UseShader, bool);
+
+  //! Get usage of vertex shader.
+  vtkGetMacro(UseShader, bool);
+
+  //! Point Sprite drawing mode
+  /*!
+   * 0 - Results  - different colors, different sizes.
+   * 1 - Geometry - fixed color, fixed size.
+   * 2 - Outside  - different colors, fixed size.
+   */
+  vtkGetMacro(PointSpriteMode, int);
+  void SetPointSpriteMode( int );
+
+  //! Get the Primitive type
+  vtkGetMacro(PrimitiveType, int);
+
+  //! Set the Primitive type
+  void SetPrimitiveType( int );
+
+  //! Set Point Sprite Clamp.
+  void SetPointSpriteClamp( float );
+
+  //! Get Point Sprite Clamp.
+  vtkGetMacro(PointSpriteClamp, float);
+
+  //! Set Point Sprite Const Size.
+  void SetPointSpriteSize( float );
+
+  //! Get Point Sprite Const Size.
+  vtkGetMacro(PointSpriteSize, float);
+
+  //! Set Point Sprite Minimum Size.
+  void SetPointSpriteMinSize( float );
+
+  //! Get Point Sprite Minimum Size.
+  vtkGetMacro(PointSpriteMinSize, float);
+
+  //! Set Point Sprite Maximum Size.
+  void SetPointSpriteMaxSize( float );
+
+  //! Get Point Sprite Maximum Size.
+  vtkGetMacro(PointSpriteMaxSize, float);
+
+  //! Set Point Sprite Magnification.
+  void SetPointSpriteMagnification( float );
+
+  //! Get Point Sprite Magnification.
+  vtkGetMacro(PointSpriteMagnification, float);
+
+  //! Set Point Sprite AlphaThreshold.
+  void SetPointSpriteAlphaThreshold( float );
+
+  //! Get Point Sprite AlphaThreshold.
+  vtkGetMacro(PointSpriteAlphaThreshold, float);
+
+  //! Set ImageData for Point Sprite Texture.
+  void SetImageData(vtkImageData* theImageData);
+
+  //! Get ImageData for Point Sprite Texture.
+  vtkImageData* GetImageData();
+
+protected:
+  VISU_OpenGLPointSpriteMapper();
+  ~VISU_OpenGLPointSpriteMapper();
+
+  //! Internal method of the Point Sprites drawing.
+  void              DrawPoints(vtkPoints *p,
+                              vtkUnsignedCharArray *c,
+                              vtkFloatArray *alpha,
+                              vtkIdType &cellNum,
+                              int &noAbort,
+                              vtkCellArray *ca,
+                              vtkRenderer *ren,
+                              vtkActor *act);
+
+  //! Initializing OpenGL extensions.
+  bool              InitExtensions();
+
+  //! Activate Point Sprites.
+  void              InitPointSprites();
+
+  //! Deactivate Point Sprites.
+  void              CleanupPointSprites();
+
+  //! Initializing textures for Point Sprites.
+  void              InitTextures();
+
+  //! Initializing of the Vertex Shader.
+  void              InitShader();
+
+  //! Set Vertex Shader variable.
+  void              SetShaderVariable( const char* variable, float value );
+
+  //! Getting information about Vertex Shader compiling and linking.
+  void              PrintInfoLog( GLhandleARB );
+
+private:
+  bool              UseOpenGLMapper;
+
+  bool              UsePointSprites;
+  bool              UseTextures;
+  bool              UseShader;
+
+  int               RenderMode;
+  int               ListId;
+  vtkIdType         TotalCells;
+  int               ExtensionsInitialized;
+  float             DefaultPointSize;
+
+  GLhandleARB       VertexProgram;
+
+  int               PrimitiveType;
+
+  int               PointSpriteMode;
+
+  float             PointSpriteClamp;
+  float             PointSpriteSize;
+  float             PointSpriteMinSize;
+  float             PointSpriteMaxSize;
+  float             PointSpriteMagnification;
+
+  GLuint            PointSpriteTexture;
+  float             PointSpriteAlphaThreshold;
+
+  float             AverageCellSize;
+
+  vtkSmartPointer<vtkImageData> ImageData;
+  vtkPolyDataMapper* TempMapper;
+};
+
+#endif
index d670a681c9628bf6bfccf38c7e55871f2591c04e..9fcd66fdc9a6fec787350d49acd4c93a8a69ceb3 100644 (file)
@@ -40,6 +40,7 @@
 #include <vtkPlane.h>
 #include <vtkExtractGeometry.h>
 #include <vtkImplicitBoolean.h>
+#include <vtkImplicitFunction.h>
 #include <vtkImplicitFunctionCollection.h>
 #include <vtkMath.h>
 
@@ -51,70 +52,115 @@ static int MYDEBUG = 0;
 static int MYDEBUG = 0;
 #endif
 
-VISU_PipeLine::VISU_PipeLine()
+VISU_PipeLine
+::VISU_PipeLine():
+  myMapper(vtkDataSetMapper::New()),
+  myExtractGeometry(SALOME_ExtractGeometry::New())
 {
-  if(MYDEBUG) MESSAGE("VISU_PipeLine - "<<this);
+  if(MYDEBUG) MESSAGE("VISU_PipeLine::VISU_PipeLine - "<<this);
+  SetDebug(MYVTKDEBUG);
+
+  myMapper->Delete();
+
   // Clipping planes
-  myExtractGeometry = SALOME_ExtractGeometry::New();
-  //myExtractGeometry->SetReleaseDataFlag(true);
   myExtractGeometry->Delete();
-  //myExtractGeometry->DebugOn();
+  myExtractGeometry->SetStoreMapping(true);
 
   vtkImplicitBoolean* anImplicitBoolean = vtkImplicitBoolean::New();
-  myExtractGeometry->SetImplicitBoolean(anImplicitBoolean);
+  myExtractGeometry->SetImplicitFunction(anImplicitBoolean);
   anImplicitBoolean->SetOperationTypeToIntersection();
   anImplicitBoolean->Delete();
 
-  // Mapper
-  myMapper = TMapper::New();
-  myInput = NULL;
-
   myIsShrinkable = false;
 
-  SetDebug(MYVTKDEBUG);
 }
 
-VISU_PipeLine::~VISU_PipeLine()
+VISU_PipeLine
+::~VISU_PipeLine()
 {
-  if(MYDEBUG) MESSAGE("~VISU_PipeLine - "<<this);
-  myMapper->Delete();
+  if(MYDEBUG) MESSAGE("VISU_PipeLine::~VISU_PipeLine - "<<this);
 }
 
-void VISU_PipeLine::ShallowCopy(VISU_PipeLine *thePipeLine){
-  SetInput(thePipeLine->GetInput());
-  myMapper->ShallowCopy(thePipeLine->GetMapper());
-  myExtractGeometry->SetImplicitBoolean(thePipeLine->myExtractGeometry->GetImplicitBoolean());
+// Turn debugging output on.
+void
+VISU_PipeLine
+::DebugOn()
+{
+  myExtractGeometry->DebugOn();
+  Superclass::DebugOn();
+}
+
+// Turn debugging output off.
+void
+VISU_PipeLine
+::DebugOff()
+{
+  myExtractGeometry->DebugOff();
+  Superclass::DebugOff();
+}
+
+void 
+VISU_PipeLine
+::ShallowCopy(VISU_PipeLine *thePipeLine)
+{
+  SetImplicitFunction(thePipeLine->GetImplicitFunction());
+
+  // To restore mapper input from pipeline
+  vtkDataSet* aDatsSet = myMapper->GetInput();
+  GetMapper()->ShallowCopy(thePipeLine->GetMapper());
+  myMapper->SetInput(aDatsSet);
+
   Build();
 }
 
-void VISU_PipeLine::SameAs(VISU_PipeLine *thePipeLine){
+void
+VISU_PipeLine
+::SameAs(VISU_PipeLine *thePipeLine)
+{
   ShallowCopy(thePipeLine);
-  myExtractGeometry->SetImplicitBoolean(vtkImplicitBoolean::New());
-  myExtractGeometry->GetImplicitBoolean()->Delete();
+  SetImplicitFunction(vtkImplicitBoolean::New());
+  GetImplicitFunction()->Delete();
 }
 
-TInput* VISU_PipeLine::GetInput() const
+TInput* 
+VISU_PipeLine
+::GetInput() const
 {
-  return myInput;
+  return myInput.GetPointer();
 }
 
-TInput* VISU_PipeLine::GetInput2() const
+vtkDataSet* 
+VISU_PipeLine
+::GetOutput()
+{
+  return GetMapper()->GetInput();
+}
+
+TInput* 
+VISU_PipeLine
+::GetInput2() const
 {
   vtkUnstructuredGrid* aDataSet = myExtractGeometry->GetOutput();
   aDataSet->Update();
   return aDataSet;
 }
 
-void VISU_PipeLine::SetInput(TInput* theInput)
+void
+VISU_PipeLine
+::SetInput(TInput* theInput)
 {
+  if(theInput)
+    theInput->Update();
+
   myExtractGeometry->SetInput(theInput);
-  if((myInput = theInput))
-    myInput->Update();
+  myInput = theInput;
 
   Modified();
 }
 
-VISU_PipeLine::TMapper* VISU_PipeLine::GetMapper()
+VISU_PipeLine::TMapper* 
+VISU_PipeLine
+::GetMapper()
 {
   if(GetInput()){
     if(!myMapper->GetInput()){
@@ -123,15 +169,19 @@ VISU_PipeLine::TMapper* VISU_PipeLine::GetMapper()
     }
     myMapper->Update();
   }
-  return myMapper;
+  return myMapper.GetPointer();
 }
 
-void VISU_PipeLine::Update()
+void 
+VISU_PipeLine
+::Update()
 {
   myMapper->Update();
 }
 
-int VISU_PipeLine::CheckAvailableMemory(const float& theSize)
+int
+VISU_PipeLine
+::CheckAvailableMemory(const float& theSize)
 {
   try{
     if(theSize > ULONG_MAX) return 0;
@@ -152,7 +202,10 @@ int VISU_PipeLine::CheckAvailableMemory(const float& theSize)
   return 0;
 }
 
-float VISU_PipeLine::GetAvailableMemory(float theSize, float theMinSize)
+float
+VISU_PipeLine
+::GetAvailableMemory(float theSize, 
+                    float theMinSize)
 {
   while(!CheckAvailableMemory(theSize))
     if(theSize > theMinSize)
@@ -163,8 +216,9 @@ float VISU_PipeLine::GetAvailableMemory(float theSize, float theMinSize)
 }
 
 //------------------------ Clipping planes -----------------------------------
-
-bool VISU_PipeLine::AddClippingPlane(vtkPlane* thePlane)
+bool 
+VISU_PipeLine
+::AddClippingPlane(vtkPlane* thePlane)
 {
   if (thePlane) {
     if (vtkImplicitBoolean* aBoolean = myExtractGeometry->GetImplicitBoolean()) {
@@ -182,7 +236,9 @@ bool VISU_PipeLine::AddClippingPlane(vtkPlane* thePlane)
   return true;
 }
 
-vtkPlane* VISU_PipeLine::GetClippingPlane(vtkIdType theID) const
+vtkPlane* 
+VISU_PipeLine
+::GetClippingPlane(vtkIdType theID) const
 {
   vtkPlane* aPlane = NULL;
   if(theID >= 0 && theID < GetNumberOfClippingPlanes()){
@@ -198,7 +254,9 @@ vtkPlane* VISU_PipeLine::GetClippingPlane(vtkIdType theID) const
   return aPlane;
 }
 
-void VISU_PipeLine::RemoveAllClippingPlanes()
+void
+VISU_PipeLine
+::RemoveAllClippingPlanes()
 {
   if(vtkImplicitBoolean* aBoolean = myExtractGeometry->GetImplicitBoolean()){
     vtkImplicitFunctionCollection* aFunction = aBoolean->GetFunction();
@@ -207,7 +265,9 @@ void VISU_PipeLine::RemoveAllClippingPlanes()
   }
 }
 
-vtkIdType VISU_PipeLine::GetNumberOfClippingPlanes() const
+vtkIdType
+VISU_PipeLine
+::GetNumberOfClippingPlanes() const
 {
   if(vtkImplicitBoolean* aBoolean = myExtractGeometry->GetImplicitBoolean()){
     vtkImplicitFunctionCollection* aFunction = aBoolean->GetFunction();
@@ -216,9 +276,13 @@ vtkIdType VISU_PipeLine::GetNumberOfClippingPlanes() const
   return 0;
 }
 
-static void ComputeBoundsParam (vtkDataSet* theDataSet,
-                                float theDirection[3], float theMinPnt[3],
-                                float& theMaxBoundPrj, float& theMinBoundPrj)
+static
+void
+ComputeBoundsParam (vtkDataSet* theDataSet,
+                   float theDirection[3], 
+                   float theMinPnt[3],
+                   float& theMaxBoundPrj, 
+                   float& theMinBoundPrj)
 {
   float aBounds[6];
   theDataSet->GetBounds(aBounds);
@@ -260,8 +324,12 @@ static void ComputeBoundsParam (vtkDataSet* theDataSet,
   theMinPnt[2] = aMinPnt[2];
 }
 
-static void DistanceToPosition (vtkDataSet* theDataSet,
-                                float theDirection[3], float theDist, float thePos[3])
+static
+void
+DistanceToPosition(vtkDataSet* theDataSet,
+                  float theDirection[3], 
+                  float theDist, 
+                  float thePos[3])
 {
   float aMaxBoundPrj, aMinBoundPrj, aMinPnt[3];
   ComputeBoundsParam(theDataSet,theDirection,aMinPnt,aMaxBoundPrj,aMinBoundPrj);
@@ -271,8 +339,12 @@ static void DistanceToPosition (vtkDataSet* theDataSet,
   thePos[2] = aMinPnt[2]-theDirection[2]*aLength;
 }
 
-static void PositionToDistance (vtkDataSet* theDataSet,
-                                float theDirection[3], float thePos[3], float& theDist)
+static
+void
+PositionToDistance (vtkDataSet* theDataSet,
+                   float theDirection[3], 
+                   float thePos[3], 
+                   float& theDist)
 {
   float aMaxBoundPrj, aMinBoundPrj, aMinPnt[3];
   ComputeBoundsParam(theDataSet,theDirection,aMinPnt,aMaxBoundPrj,aMinBoundPrj);
@@ -280,7 +352,11 @@ static void PositionToDistance (vtkDataSet* theDataSet,
   theDist = (aPrj-aMinBoundPrj)/(aMaxBoundPrj-aMinBoundPrj);
 }
 
-void VISU_PipeLine::SetPlaneParam (float theDir[3], float theDist, vtkPlane* thePlane)
+void
+VISU_PipeLine
+::SetPlaneParam(float theDir[3], 
+               float theDist, 
+               vtkPlane* thePlane)
 {
   thePlane->SetNormal(theDir);
   float anOrigin[3];
@@ -288,7 +364,11 @@ void VISU_PipeLine::SetPlaneParam (float theDir[3], float theDist, vtkPlane* the
   thePlane->SetOrigin(anOrigin);
 }
 
-void VISU_PipeLine::GetPlaneParam (float theDir[3], float& theDist, vtkPlane* thePlane)
+void
+VISU_PipeLine
+::GetPlaneParam(float theDir[3], 
+               float& theDist, 
+               vtkPlane* thePlane)
 {
   thePlane->GetNormal(theDir);
 
@@ -301,7 +381,9 @@ void VISU_PipeLine::GetPlaneParam (float theDir[3], float& theDist, vtkPlane* th
 //function : IsPlanarInput
 //purpose  :
 //=======================================================================
-bool VISU_PipeLine::IsPlanarInput() const
+bool
+VISU_PipeLine
+::IsPlanarInput() const
 {
   float aBounds[6];
   GetInput()->GetBounds( aBounds ); // xmin,xmax, ymin,ymax, zmin,zmax
@@ -312,3 +394,89 @@ bool VISU_PipeLine::IsPlanarInput() const
 
   return false;
 }
+
+//=======================================================================
+vtkIdType 
+VISU_PipeLine
+::GetNodeObjID(vtkIdType theID)
+{
+  vtkIdType anID = myExtractGeometry->GetNodeObjId(theID);
+  return myIDMapper->GetNodeObjID(anID);
+}
+
+vtkIdType 
+VISU_PipeLine
+::GetNodeVTKID(vtkIdType theID)
+{
+  vtkIdType anID = myIDMapper->GetNodeVTKID(theID);
+  return myExtractGeometry->GetNodeVTKId(anID);
+}
+
+float* 
+VISU_PipeLine
+::GetNodeCoord(int theObjID)
+{
+  return myIDMapper->GetNodeCoord(theObjID);
+}
+
+//=======================================================================
+vtkIdType 
+VISU_PipeLine
+::GetElemObjID(vtkIdType theID)
+{
+  vtkIdType anID = myExtractGeometry->GetElemObjId(theID);
+  return myIDMapper->GetElemObjID(anID);
+}
+
+vtkIdType
+VISU_PipeLine
+::GetElemVTKID(vtkIdType theID)
+{
+  vtkIdType anID = myIDMapper->GetElemVTKID(theID);
+  return myExtractGeometry->GetElemVTKId(anID);
+}
+
+vtkCell* 
+VISU_PipeLine
+::GetElemCell(vtkIdType  theObjID)
+{
+  return myIDMapper->GetElemCell(theObjID);
+}
+
+//=======================================================================
+void
+VISU_PipeLine
+::SetIDMapper(const VISU::PIDMapper& theIDMapper)
+{
+  myIDMapper = theIDMapper;
+  SetInput(myIDMapper->GetVTKOutput());
+}
+
+const VISU::PIDMapper&  
+VISU_PipeLine
+::GetIDMapper() const
+{
+  return myIDMapper;
+}
+
+//=======================================================================
+void
+VISU_PipeLine
+::SetImplicitFunction(vtkImplicitFunction *theFunction)
+{
+  myExtractGeometry->SetImplicitFunction(theFunction);
+} 
+
+vtkImplicitFunction * 
+VISU_PipeLine
+::GetImplicitFunction()
+{
+  return myExtractGeometry->GetImplicitFunction();
+}
+
+SALOME_ExtractGeometry*
+VISU_PipeLine
+::GetExtractGeometryFilter()
+{
+  return myExtractGeometry.GetPointer();
+} 
index 4dd6db6ea26d3770e796b46295a50c63775051a8..5e2a1ed8bf8bb85694140c757ef8ffdb2845a112 100644 (file)
 #ifndef VISU_PipeLine_HeaderFile
 #define VISU_PipeLine_HeaderFile
 
+#include <vector>
 #include <vtkObject.h>
 #include <vtkSmartPointer.h>
 
-#include <vector>
+#include "VISU_IDMapper.hxx"
+
+class vtkCell;
+class vtkDataSet;
+class vtkImplicitFunction;
 
 template <class T>
 class TVTKSmartPtr: public vtkSmartPointer<T>
 {
 public:
-  TVTKSmartPtr() {}
-  TVTKSmartPtr(T* r, bool theIsOwner = false): vtkSmartPointer<T>(r) {
+  TVTKSmartPtr()
+  {}
+
+  TVTKSmartPtr(T* r, bool theIsOwner = false): vtkSmartPointer<T>(r) 
+  {
     if(r && theIsOwner)
       r->Delete();
   }
-  TVTKSmartPtr& operator()(T* r, bool theIsOwner = false){
+
+  TVTKSmartPtr& operator()(T* r, bool theIsOwner = false)
+  {
     vtkSmartPointer<T>::operator=(r);
     if(r && theIsOwner)
       r->Delete();
     return *this;
   }
-  TVTKSmartPtr& operator=(T* r){
+
+  TVTKSmartPtr& operator=(T* r)
+  {
     vtkSmartPointer<T>::operator=(r);
     return *this;
   }
-  operator T* () const {
+
+  operator T* () const 
+  {
     return vtkSmartPointer<T>::GetPointer();
   }
 };
 
+class vtkMapper;
 class vtkDataSetMapper;
 class vtkUnstructuredGrid;
 class vtkExtractGeometry;
@@ -64,54 +79,151 @@ class vtkPlane;
 
 class SALOME_ExtractGeometry;
 
-typedef vtkUnstructuredGrid TInput;
+typedef VISU::TVTKOutput TInput;
 
 class VISU_PipeLine : public vtkObject{
 public:
   vtkTypeMacro(VISU_PipeLine,vtkObject);
-  virtual ~VISU_PipeLine();
+  virtual
+  ~VISU_PipeLine();
+
+  virtual
+  void
+  DebugOn();
 
-  virtual void ShallowCopy(VISU_PipeLine *thePipeLine);
-  virtual void SameAs(VISU_PipeLine *thePipeLine);
+  virtual
+  void
+  DebugOff();
+
+  virtual
+  void
+  ShallowCopy(VISU_PipeLine *thePipeLine);
+
+  virtual
+  void
+  SameAs(VISU_PipeLine *thePipeLine);
 
 public:
-  virtual void SetInput(TInput* theInput);
-  virtual TInput* GetInput() const;
+  virtual
+  void
+  SetInput(TInput* theInput);
+
+  virtual
+  TInput* 
+  GetInput() const;
+
+  virtual
+  vtkDataSet* 
+  GetOutput();
 
-  bool IsPlanarInput() const;
+  bool
+  IsPlanarInput() const;
 
-  typedef vtkDataSetMapper TMapper;
-  virtual TMapper* GetMapper();
+  typedef vtkMapper TMapper;
 
-  virtual void Init() = 0;
-  virtual void Update();
+  virtual 
+  TMapper* 
+  GetMapper();
 
-  static int CheckAvailableMemory(const float& theSize);
-  static float GetAvailableMemory(float theSize = 16*1024*1024.0,
-                                 float theMinSize = 1024*1024.0);
+  virtual
+  void
+  Init() = 0;
+
+  virtual
+  void
+  Update();
+
+  static
+  int
+  CheckAvailableMemory(const float& theSize);
+  
+  static
+  float
+  GetAvailableMemory(float theSize = 16*1024*1024.0,
+                    float theMinSize = 1024*1024.0);
 
   // Clipping planes
-  void RemoveAllClippingPlanes();
-  vtkIdType GetNumberOfClippingPlanes() const;
-  bool AddClippingPlane(vtkPlane* thePlane);
-  vtkPlane* GetClippingPlane(vtkIdType theID) const;
+  void 
+  RemoveAllClippingPlanes();
+
+  vtkIdType
+  GetNumberOfClippingPlanes() const;
 
-  void SetPlaneParam(float theDir[3], float theDist, vtkPlane* thePlane);
-  void GetPlaneParam(float theDir[3], float& theDist, vtkPlane* thePlane);
+  bool
+  AddClippingPlane(vtkPlane* thePlane);
 
-  bool IsShrinkable() { return myIsShrinkable; }
+  vtkPlane* 
+  GetClippingPlane(vtkIdType theID) const;
+
+  void
+  SetPlaneParam(float theDir[3], 
+               float theDist, 
+               vtkPlane* thePlane);
+
+  void
+  GetPlaneParam(float theDir[3], 
+               float& theDist, 
+               vtkPlane* thePlane);
+
+  bool 
+  IsShrinkable() { return myIsShrinkable; }
+
+  virtual
+  vtkIdType
+  GetNodeObjID(vtkIdType theID);
+
+  virtual
+  vtkIdType
+  GetNodeVTKID(vtkIdType theID);
+
+  virtual
+  float* 
+  GetNodeCoord(vtkIdType theObjID);
+
+  virtual
+  vtkIdType
+  GetElemObjID(vtkIdType theID);
+
+  virtual
+  vtkIdType
+  GetElemVTKID(vtkIdType theID);
+
+  virtual
+  vtkCell*
+  GetElemCell(vtkIdType theObjID);
+
+  void 
+  SetIDMapper(const VISU::PIDMapper& theIDMapper);
+
+  const VISU::PIDMapper&  
+  GetIDMapper()const;
+
+  void
+  SetImplicitFunction(vtkImplicitFunction *theFunction);
+
+  vtkImplicitFunction* 
+  GetImplicitFunction();
+
+  SALOME_ExtractGeometry*
+  GetExtractGeometryFilter();
 
 protected:
   VISU_PipeLine();
   VISU_PipeLine(const VISU_PipeLine&);
 
-  virtual TInput* GetInput2() const;
-  virtual void Build() = 0;
+  virtual 
+  TInput* 
+  GetInput2() const;
+
+  virtual
+  void
+  Build() = 0;
 
   bool myIsShrinkable;
 
-  TInput  *myInput;
-  TMapper *myMapper;
+  TVTKSmartPtr<TInput> myInput;
+  VISU::PIDMapper myIDMapper;
+  TVTKSmartPtr<vtkDataSetMapper> myMapper;
 
   // Clipping planes
   TVTKSmartPtr<SALOME_ExtractGeometry> myExtractGeometry;
index df7c8219ec87a2b871fb97f06b51f06749939fac..7b2523506501a1ffc50665c16906e6843b7ba61f 100644 (file)
@@ -59,10 +59,12 @@ namespace VISU{
   void Mul(const float A[3], float b, float C[3]); // C = A * b
   void Sub(const float A[3], const float B[3], float C[3]); // C = A - B
 
-  template<class TItem> void CellDataToPoint(TItem* theTItem, 
-                                            vtkCellDataToPointData *theFilter,
-                                            vtkDataSet* theDataSet,
-                                            VISU_FieldTransform *theFieldTransform)
+  template<class TItem> 
+  void
+  CellDataToPoint(TItem* theTItem, 
+                 vtkCellDataToPointData *theFilter,
+                 vtkDataSet* theDataSet,
+                 VISU_FieldTransform *theFieldTransform)
   {
     if(theDataSet->GetCellData()->GetNumberOfArrays()){
       theFilter->SetInput(theFieldTransform->GetUnstructuredGridOutput());
@@ -72,10 +74,12 @@ namespace VISU{
       theTItem->SetInput(theFieldTransform->GetUnstructuredGridOutput());
   }
 
-  template<class TItem> void ToCellCenters(TItem* theTItem, 
-                                          vtkCellCenters *theFilter,
-                                          vtkDataSet* theDataSet,
-                                          VISU_FieldTransform *theFieldTransform)
+  template<class TItem> 
+  void
+  ToCellCenters(TItem* theTItem, 
+               vtkCellCenters *theFilter,
+               vtkDataSet* theDataSet,
+               VISU_FieldTransform *theFieldTransform)
   {
     if(theDataSet->GetCellData()->GetNumberOfArrays()){
       theFilter->SetInput(theFieldTransform->GetUnstructuredGridOutput());
diff --git a/src/PIPELINE/VISU_PlanesWidget.cxx b/src/PIPELINE/VISU_PlanesWidget.cxx
new file mode 100644 (file)
index 0000000..93efa07
--- /dev/null
@@ -0,0 +1,1614 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   : VVTK_ImplicitFunctionWidget.cxx
+//  Author : Peter KURNEV
+//  Module : SALOME
+//  $Header$
+
+#include "VISU_PlanesWidget.hxx"
+#include "VISU_ImplicitFunctionWidget.hxx"
+
+#include <vtkActor.h>
+#include <vtkAssemblyNode.h>
+#include <vtkAssemblyPath.h>
+#include <vtkCallbackCommand.h>
+#include <vtkCamera.h>
+#include <vtkCellPicker.h>
+#include <vtkConeSource.h>
+#include <vtkCutter.h>
+#include <vtkFeatureEdges.h>
+#include <vtkImageData.h>
+#include <vtkLineSource.h>
+#include <vtkMath.h>
+#include <vtkObjectFactory.h>
+#include <vtkOutlineFilter.h>
+#include <vtkPlane.h>
+#include <vtkPolyData.h>
+#include <vtkPolyDataMapper.h>
+#include <vtkProperty.h>
+#include <vtkRenderWindowInteractor.h>
+#include <vtkRenderer.h>
+#include <vtkSphereSource.h>
+#include <vtkTransform.h>
+#include <vtkTubeFilter.h>
+#include <vtkImplicitBoolean.h>
+#include <vtkImplicitFunctionCollection.h>
+////
+#include <vtkFollower.h>
+#include <vtkObjectFactory.h>
+#include <vtkDataSet.h>
+#include <vtkRenderWindow.h>
+
+static
+  bool IsValidPlane2Position(vtkPlane *pPx,
+                            vtkDataSet *pDataSet,
+                            float aTol=0.003);
+static 
+  void GetBndPoints(vtkDataSet *pDataSet, 
+                   float aPnts[24]);
+static 
+  float DistanceToPlane(const float x[3], 
+                       const float n[3], 
+                       const float p0[3]);
+
+vtkCxxRevisionMacro(VISU_PlanesWidget, "$Revision$");
+vtkStandardNewMacro(VISU_PlanesWidget);
+
+//==================================================================
+// function: VISU_PlanesWidget
+// purpose :
+//==================================================================
+VISU_PlanesWidget::VISU_PlanesWidget() 
+: 
+  VISU_ImplicitFunctionWidget()
+{
+  State = VISU_PlanesWidget::Start;
+  EventCallbackCommand->SetCallback(VISU_PlanesWidget::ProcessEvents);
+  
+  NormalToXAxis = 0;
+  NormalToYAxis = 0;
+  NormalToZAxis = 0;
+
+  HandleMoveEvent = true;
+  HandleLeftButtonEvent = true;
+  HandleMiddleButtonEvent = false;
+  HandleRightButtonEvent = false;
+
+  // Build the representation of the widget
+  // 
+  myPlane1 = vtkPlane::New();
+  myPlane1->SetNormal(0,0,1);
+  myPlane1->SetOrigin(0,0,0);
+  //
+  myDistance = 10.;
+  myPlane2 = vtkPlane::New();
+  myPlane2->SetNormal(0.,0.,-1.);
+  myPlane2->SetOrigin(0,0,myDistance);
+  //
+  myImplicitFunction = vtkImplicitBoolean::New();
+  myImplicitFunction->SetOperationType(VTK_UNION);  
+  //
+  myBox = vtkImageData::New();
+  myBox->SetDimensions(2,2,2);
+  myOutline = vtkOutlineFilter::New();
+  myOutline->SetInput(myBox);
+  myOutlineMapper = vtkPolyDataMapper::New();
+  myOutlineMapper->SetInput(myOutline->GetOutput());
+  myOutlineActor = vtkActor::New();
+  this->myOutlineActor->SetMapper(this->myOutlineMapper);
+  this->myOutlineActor->PickableOff();
+  this->OutlineTranslation = 0;
+  
+  this->myCutter1 = vtkCutter::New();
+  this->myCutter1->SetInput(myBox);
+  this->myCutter1->SetCutFunction(myPlane1);
+  this->myCutMapper1 = vtkPolyDataMapper::New();
+  this->myCutMapper1->SetInput(this->myCutter1->GetOutput());
+  this->myCutActor1 = vtkActor::New();
+  this->myCutActor1->SetMapper(this->myCutMapper1);
+  this->myDrawPlane = 1;
+
+  this->myEdges1 = vtkFeatureEdges::New();
+  myEdges1->SetColoring(0); 
+  this->myEdges1->SetInput(this->myCutter1->GetOutput());
+  this->myEdgesMapper1 = vtkPolyDataMapper::New();
+  this->myEdgesMapper1->SetInput(this->myEdges1->GetOutput());
+  this->myEdgesActor1 = vtkActor::New();
+  this->myEdgesActor1->SetMapper(this->myEdgesMapper1);
+  myEdgesActor1->GetProperty()->SetLineWidth(4.); 
+  myEdgesActor1->GetProperty()->SetColor(0., .5, .7); 
+
+  this->myCutter2 = vtkCutter::New();
+  this->myCutter2->SetInput(myBox);
+  this->myCutter2->SetCutFunction(this->myPlane2);
+  this->myCutMapper2 = vtkPolyDataMapper::New();
+  this->myCutMapper2->SetInput(this->myCutter2->GetOutput());
+  this->myCutActor2 = vtkActor::New();
+  this->myCutActor2->SetMapper(this->myCutMapper2);
+
+  myEdges2 = vtkFeatureEdges::New();
+  myEdges2->SetColoring(0); 
+  myEdges2->SetInput(myCutter2->GetOutput());
+  myEdgesMapper2 = vtkPolyDataMapper::New();
+  myEdgesMapper2->SetInput(myEdges2->GetOutput());
+  myEdgesActor2 = vtkActor::New();
+  myEdgesActor2->SetMapper(myEdgesMapper2);
+  myEdgesActor2->GetProperty()->SetLineWidth(4.); 
+  myEdgesActor2->GetProperty()->SetColor(.7, .0, .0); 
+
+  // Create the + plane normal
+  this->LineSource = vtkLineSource::New();
+  this->LineSource->SetResolution(1);
+  this->LineMapper = vtkPolyDataMapper::New();
+  this->LineMapper->SetInput(this->LineSource->GetOutput());
+  this->LineActor = vtkActor::New();
+  this->LineActor->SetMapper(this->LineMapper);
+
+  this->ConeSource = vtkConeSource::New();
+  this->ConeSource->SetResolution(12);
+  this->ConeSource->SetAngle(20.);
+  this->ConeMapper = vtkPolyDataMapper::New();
+  this->ConeMapper->SetInput(this->ConeSource->GetOutput());
+  this->ConeActor = VISU_UnScaledActor::New();
+  this->ConeActor->SetMapper(this->ConeMapper);
+  ConeActor->SetSize(36);
+  ConeActor->SetCenter(ConeSource->GetCenter());
+
+  // Create the - plane normal
+  this->LineSource2 = vtkLineSource::New();
+  this->LineSource2->SetResolution(1);
+  this->LineMapper2 = vtkPolyDataMapper::New();
+  this->LineMapper2->SetInput(this->LineSource2->GetOutput());
+  this->LineActor2 = vtkActor::New();
+  this->LineActor2->SetMapper(this->LineMapper2);
+
+  this->ConeSource2 = vtkConeSource::New();
+  this->ConeSource2->SetResolution(12);
+  this->ConeSource2->SetAngle(20.);
+  this->ConeMapper2 = vtkPolyDataMapper::New();
+  this->ConeMapper2->SetInput(this->ConeSource2->GetOutput());
+  this->ConeActor2 = VISU_UnScaledActor::New();
+  this->ConeActor2->SetMapper(this->ConeMapper2);
+  ConeActor2->SetSize(36);
+  ConeActor2->SetCenter(ConeSource2->GetCenter());
+
+  // Create the origin handle
+  this->Sphere = vtkSphereSource::New();
+  this->Sphere->SetThetaResolution(16);
+  this->Sphere->SetPhiResolution(8);
+  this->SphereMapper = vtkPolyDataMapper::New();
+  this->SphereMapper->SetInput(this->Sphere->GetOutput());
+  this->SphereActor = VISU_UnScaledActor::New();
+  this->SphereActor->SetMapper(this->SphereMapper);
+  SphereActor->SetSize(36);
+  SphereActor->SetCenter(Sphere->GetCenter());
+
+  this->Transform = vtkTransform::New();
+
+  // Define the point coordinates
+  float bounds[6];
+  bounds[0] = -0.5;
+  bounds[1] = 0.5;
+  bounds[2] = -0.5;
+  bounds[3] = 0.5;
+  bounds[4] = -0.5;
+  bounds[5] = 0.5;
+
+  // Initial creation of the widget, serves to initialize it
+  this->PlaceWidget(bounds);
+
+  //Manage the picking stuff
+  this->Picker = vtkCellPicker::New();
+  this->Picker->SetTolerance(0.005);
+  this->Picker->AddPickList(this->myCutActor1);
+  this->Picker->AddPickList(this->myCutActor2);
+  this->Picker->AddPickList(this->LineActor);
+  this->Picker->AddPickList(this->ConeActor);
+  this->Picker->AddPickList(this->LineActor2);
+  this->Picker->AddPickList(this->ConeActor2);
+  this->Picker->AddPickList(this->SphereActor);
+  this->Picker->AddPickList(this->myOutlineActor);
+  this->Picker->PickFromListOn();
+  
+  // Set up the initial properties
+  this->CreateDefaultProperties();
+  
+}
+//==================================================================
+// function: ~
+// purpose :
+//==================================================================
+VISU_PlanesWidget::~VISU_PlanesWidget()
+{  
+  myPlane1->Delete();
+
+  this->myPlane2->Delete();
+  this->myImplicitFunction->Delete();
+
+  myBox->Delete();
+  this->myOutline->Delete();
+  this->myOutlineMapper->Delete();
+  this->myOutlineActor->Delete();
+  
+  this->myCutter1->Delete();
+  this->myCutMapper1->Delete();
+  this->myCutActor1->Delete();
+
+  this->myEdges1->Delete();
+  this->myEdgesMapper1->Delete();
+  this->myEdgesActor1->Delete();
+  
+  myCutter2->Delete();
+  myCutMapper2->Delete();
+  myCutActor2->Delete();
+
+  myEdges2->Delete();
+  myEdgesMapper2->Delete();
+  myEdgesActor2->Delete();
+  
+  this->LineSource->Delete();
+  this->LineMapper->Delete();
+  this->LineActor->Delete();
+
+  this->ConeSource->Delete();
+  this->ConeMapper->Delete();
+  this->ConeActor->Delete();
+
+  this->LineSource2->Delete();
+  this->LineMapper2->Delete();
+  this->LineActor2->Delete();
+
+  this->ConeSource2->Delete();
+  this->ConeMapper2->Delete();
+  this->ConeActor2->Delete();
+
+  this->Sphere->Delete();
+  this->SphereMapper->Delete();
+  this->SphereActor->Delete();
+
+  this->Transform->Delete();
+
+  this->Picker->Delete();
+
+  this->NormalProperty->Delete();
+  this->SelectedNormalProperty->Delete();
+  this->PlaneProperty->Delete();
+  this->SelectedPlaneProperty->Delete();
+  this->OutlineProperty->Delete();
+  this->SelectedOutlineProperty->Delete();
+  this->EdgesProperty->Delete();
+}
+//==================================================================
+// function: ImplicitFunction
+// purpose :
+//==================================================================
+vtkImplicitFunction* VISU_PlanesWidget::ImplicitFunction()
+{
+  return this->myImplicitFunction;
+}
+//==================================================================
+// function: SetDistance
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::SetDistance(const float theDistance)
+{
+  if( theDistance <= 0.0 || theDistance == myDistance )
+    return;
+
+  myDistance=theDistance;
+  //
+  float *origin, *normal, oNew[3], aN2[3]; 
+  origin = myPlane1->GetOrigin();
+  normal = myPlane1->GetNormal();
+  vtkMath::Normalize(normal);
+  oNew[0] = origin[0] + myDistance*normal[0];
+  oNew[1] = origin[1] + myDistance*normal[1];
+  oNew[2] = origin[2] + myDistance*normal[2];
+  myPlane2->SetOrigin(oNew);
+  aN2[0] = -normal[0];
+  aN2[1] = -normal[1];
+  aN2[2] = -normal[2];
+  myPlane2->SetNormal(aN2);
+}
+//==================================================================
+// function: Distance
+// purpose :
+//==================================================================
+float VISU_PlanesWidget::Distance()const
+{
+  return myDistance;
+}
+//==================================================================
+// function: SetEnabled
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::SetEnabled(int enabling)
+{
+  if ( ! this->Interactor )    {
+    vtkErrorMacro(<<"The interactor must be set prior to enabling/disabling widget");
+    return;
+  }
+
+  if ( enabling ) {//------------------------------------------------------------
+    vtkDebugMacro(<<"Enabling plane widget");
+    
+    if ( this->Enabled ){ //already enabled, just return
+      return;
+    }
+    
+    if ( ! this->CurrentRenderer ){
+      this->CurrentRenderer = this->Interactor->FindPokedRenderer(
+        this->Interactor->GetLastEventPosition()[0],
+        this->Interactor->GetLastEventPosition()[1]);
+      if (this->CurrentRenderer == NULL)        {
+        return;
+      }
+    }
+    //
+    vtkCamera *pCamera=CurrentRenderer->GetActiveCamera();
+    pCamera->SetParallelProjection(1);
+    //
+    this->myImplicitFunction->AddFunction(myPlane1);
+    this->myImplicitFunction->AddFunction(this->myPlane2);
+
+    this->Enabled = 1;
+
+    // listen for the following events
+    vtkRenderWindowInteractor *i = this->Interactor;
+    if( this->HandleMoveEvent )    {
+      i->AddObserver(vtkCommand::MouseMoveEvent, 
+                    this->EventCallbackCommand, 
+                    this->Priority);
+    }
+    if( this->HandleLeftButtonEvent )    {
+      i->AddObserver(vtkCommand::LeftButtonPressEvent, 
+                    this->EventCallbackCommand, 
+                    this->Priority);
+      i->AddObserver(vtkCommand::LeftButtonReleaseEvent, 
+                    this->EventCallbackCommand, 
+                    this->Priority);
+    }
+    if( this->HandleMiddleButtonEvent )    {
+      i->AddObserver(vtkCommand::MiddleButtonPressEvent, 
+                    this->EventCallbackCommand, 
+                    this->Priority);
+      i->AddObserver(vtkCommand::MiddleButtonReleaseEvent, 
+                    this->EventCallbackCommand, 
+                    this->Priority);
+    }
+    if( this->HandleRightButtonEvent )    {
+      i->AddObserver(vtkCommand::RightButtonPressEvent, 
+                    this->EventCallbackCommand, 
+                    this->Priority);
+      i->AddObserver(vtkCommand::RightButtonReleaseEvent, 
+                    this->EventCallbackCommand, 
+                    this->Priority);
+    }
+    // add the outline
+    this->CurrentRenderer->AddActor(this->myOutlineActor);
+    this->myOutlineActor->SetProperty(this->OutlineProperty);
+
+    // add the edges
+    this->CurrentRenderer->AddActor(this->myEdgesActor1);
+    this->CurrentRenderer->AddActor(myEdgesActor2);
+
+    this->myOutlineActor->SetProperty(this->EdgesProperty);
+
+    // add the normal vector
+    this->CurrentRenderer->AddActor(this->LineActor);
+    this->LineActor->SetProperty(this->NormalProperty);
+    this->CurrentRenderer->AddActor(this->ConeActor);
+    this->ConeActor->SetProperty(this->NormalProperty);
+
+    this->CurrentRenderer->AddActor(this->LineActor2);
+    this->LineActor2->SetProperty(this->NormalProperty);
+    this->CurrentRenderer->AddActor(this->ConeActor2);
+    this->ConeActor2->SetProperty(this->NormalProperty);
+    
+    // add the origin handle
+    this->CurrentRenderer->AddActor(this->SphereActor);
+    this->SphereActor->SetProperty(this->NormalProperty);
+
+    // add the plane (if desired)
+    if ( this->myDrawPlane )      {
+      this->CurrentRenderer->AddActor(this->myCutActor1);
+      this->CurrentRenderer->AddActor(this->myCutActor2);
+    }
+    this->myCutActor1->SetProperty(this->PlaneProperty);
+    myCutActor2->SetProperty(this->PlaneProperty);
+    
+    this->UpdateRepresentation();
+    //this->SizeHandles();
+    this->InvokeEvent(vtkCommand::EnableEvent,NULL);
+  }
+  
+  else {//disabling----------------------------------------------------------
+    vtkDebugMacro(<<"Disabling plane widget");
+
+    if ( ! this->Enabled ) {//already disabled, just return
+      return;
+    }
+    
+    if(vtkImplicitFunctionCollection* aFunction = this->myImplicitFunction->GetFunction()){
+      aFunction->RemoveAllItems();
+      this->myImplicitFunction->Modified(); // VTK bug
+    }
+
+    this->Enabled = 0;
+
+    // don't listen for events any more
+    this->Interactor->RemoveObserver(this->EventCallbackCommand);
+
+    // turn off the various actors
+    this->CurrentRenderer->RemoveActor(this->myOutlineActor);
+    this->CurrentRenderer->RemoveActor(this->myEdgesActor1);
+    this->CurrentRenderer->RemoveActor(myEdgesActor2);
+    this->CurrentRenderer->RemoveActor(this->LineActor);
+    this->CurrentRenderer->RemoveActor(this->ConeActor);
+    this->CurrentRenderer->RemoveActor(this->LineActor2);
+    this->CurrentRenderer->RemoveActor(this->ConeActor2);
+    this->CurrentRenderer->RemoveActor(this->SphereActor);
+    this->CurrentRenderer->RemoveActor(this->myCutActor1);
+    this->CurrentRenderer->RemoveActor(myCutActor2);
+
+    this->InvokeEvent(vtkCommand::DisableEvent,NULL);
+    this->CurrentRenderer = NULL;
+  }
+  
+  this->Interactor->Render();
+}
+//==================================================================
+// function: ProcessEvents
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::ProcessEvents(vtkObject* vtkNotUsed(object), 
+                                               unsigned long event,
+                                               void* clientdata, 
+                                               void* vtkNotUsed(calldata))
+{
+  VISU_PlanesWidget* self = 
+    reinterpret_cast<VISU_PlanesWidget *>( clientdata );
+
+  //okay, let's do the right thing
+  switch(event)
+    {
+    case vtkCommand::LeftButtonPressEvent:
+      self->OnLeftButtonDown();
+      break;
+    case vtkCommand::LeftButtonReleaseEvent:
+      self->OnLeftButtonUp();
+      break;
+    case vtkCommand::MiddleButtonPressEvent:
+      self->OnMiddleButtonDown();
+      break;
+    case vtkCommand::MiddleButtonReleaseEvent:
+      self->OnMiddleButtonUp();
+      break;
+    case vtkCommand::RightButtonPressEvent:
+      self->OnRightButtonDown();
+      break;
+    case vtkCommand::RightButtonReleaseEvent:
+      self->OnRightButtonUp();
+      break;
+    case vtkCommand::MouseMoveEvent:
+      self->OnMouseMove();
+      break;
+    default:
+      break;
+    }
+}
+//==================================================================
+// function: HighlightNormal
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::HighlightNormal(int highlight)
+{
+  if ( highlight ) {
+    this->LineActor->SetProperty(this->SelectedNormalProperty);
+    this->ConeActor->SetProperty(this->SelectedNormalProperty);
+    this->LineActor2->SetProperty(this->SelectedNormalProperty);
+    this->ConeActor2->SetProperty(this->SelectedNormalProperty);
+    this->SphereActor->SetProperty(this->SelectedNormalProperty);
+    }
+  else
+    {
+    this->LineActor->SetProperty(this->NormalProperty);
+    this->ConeActor->SetProperty(this->NormalProperty);
+    this->LineActor2->SetProperty(this->NormalProperty);
+    this->ConeActor2->SetProperty(this->NormalProperty);
+    this->SphereActor->SetProperty(this->NormalProperty);
+    }
+}
+//==================================================================
+// function: HighlightPlane
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::HighlightPlane(int highlight)
+{
+  if ( highlight )    {
+    this->myCutActor1->SetProperty(this->SelectedPlaneProperty);
+    myCutActor2->SetProperty(this->SelectedPlaneProperty);
+  }
+  else    {
+    this->myCutActor1->SetProperty(this->PlaneProperty);
+    myCutActor2->SetProperty(this->PlaneProperty);
+  }
+}
+//==================================================================
+// function: HighlightOutline
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::HighlightOutline(int highlight)
+{
+  if (highlight)    {
+    this->myOutlineActor->SetProperty(this->SelectedOutlineProperty);
+  }
+  else    {
+    this->myOutlineActor->SetProperty(this->OutlineProperty);
+  }
+}
+//==================================================================
+// function: OnLeftButtonDown
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::OnLeftButtonDown()
+{
+  // We're only here if we are enabled
+  int X = this->Interactor->GetEventPosition()[0];
+  int Y = this->Interactor->GetEventPosition()[1];
+  //
+  // Okay, we can process this. See if we've picked anything.
+  // Make sure it's in the activated renderer
+  vtkRenderer *ren = this->Interactor->FindPokedRenderer(X,Y);
+  if ( ren != this->CurrentRenderer )    {
+    this->State = VISU_PlanesWidget::Outside;
+    return;
+  }
+  
+  vtkAssemblyPath *path;
+  this->Picker->Pick(X,Y,0.0,this->CurrentRenderer);
+  path = this->Picker->GetPath();
+
+  if ( path == NULL ) {//not picking this widget
+    this->HighlightPlane(0);
+    this->HighlightNormal(0);
+    this->HighlightOutline(0);
+    this->State = VISU_PlanesWidget::Outside;
+    return;
+  }
+
+  vtkProp *prop = path->GetFirstNode()->GetProp();
+  this->ValidPick = 1;
+  this->Picker->GetPickPosition(this->LastPickPosition);
+  //
+  if ( prop == this->ConeActor || prop == this->LineActor ||
+       prop == this->ConeActor2 || prop == this->LineActor2 )  {
+    this->HighlightPlane(1);
+    this->HighlightNormal(1);
+    this->State = VISU_PlanesWidget::Rotating;
+  }
+  else if ( prop == this->myCutActor1)    {
+    this->HighlightPlane(1);
+    this->State = VISU_PlanesWidget::Pushing;
+  }
+  else if ( prop == this->SphereActor )    {
+    this->HighlightNormal(1);
+    this->State = VISU_PlanesWidget::MovingOrigin;
+  }
+  else if (prop == myCutActor2)    {
+    this->HighlightPlane(1);
+    this->State = VISU_PlanesWidget::ChangeDistance;
+  }
+  else    {
+    if ( this->OutlineTranslation )      {
+      this->HighlightOutline(1);
+      this->State = VISU_PlanesWidget::MovingOutline;
+    }
+  }
+  
+  this->EventCallbackCommand->SetAbortFlag(1);
+  this->StartInteraction();
+  this->InvokeEvent(vtkCommand::StartInteractionEvent,NULL);
+  this->Interactor->Render();
+}
+//==================================================================
+// function: OnLeftButtonUp
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::OnLeftButtonUp()
+{
+  if ( this->State == VISU_PlanesWidget::Outside )    {
+    return;
+  }
+
+  this->State = VISU_PlanesWidget::Start;
+  this->HighlightPlane(0);
+  this->HighlightOutline(0);
+  this->HighlightNormal(0);
+  //this->SizeHandles();
+  
+  this->EventCallbackCommand->SetAbortFlag(1);
+  this->EndInteraction();
+  this->InvokeEvent(vtkCommand::EndInteractionEvent,NULL);
+  this->Interactor->Render();
+}
+//==================================================================
+// function: OnMiddleButtonDown
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::OnMiddleButtonDown()
+{
+  int X = this->Interactor->GetEventPosition()[0];
+  int Y = this->Interactor->GetEventPosition()[1];
+
+  // Okay, we can process this. See if we've picked anything.
+  // Make sure it's in the activated renderer
+  vtkRenderer *ren = this->Interactor->FindPokedRenderer(X,Y);
+  if ( ren != this->CurrentRenderer )    {
+    this->State = VISU_PlanesWidget::Outside;
+    return;
+  }
+  
+  // Okay, we can process this.
+  vtkAssemblyPath *path;
+  this->Picker->Pick(X,Y,0.0,this->CurrentRenderer);
+  path = this->Picker->GetPath();
+  
+  if ( path == NULL ) {//nothing picked
+    this->State = VISU_PlanesWidget::Outside;
+    return;
+  }
+
+  this->ValidPick = 1;
+  this->Picker->GetPickPosition(this->LastPickPosition);
+  this->State = VISU_PlanesWidget::MovingPlane;
+  this->HighlightNormal(1);
+  this->HighlightPlane(1);
+  
+  this->EventCallbackCommand->SetAbortFlag(1);
+  this->StartInteraction();
+  this->InvokeEvent(vtkCommand::StartInteractionEvent,NULL);
+  this->Interactor->Render();
+}
+//==================================================================
+// function: OnMiddleButtonUp
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::OnMiddleButtonUp()
+{
+  if ( this->State == VISU_PlanesWidget::Outside )    {
+    return;
+  }
+
+  this->State = VISU_PlanesWidget::Start;
+  this->HighlightPlane(0);
+  this->HighlightOutline(0);
+  this->HighlightNormal(0);
+  //this->SizeHandles();
+  
+  this->EventCallbackCommand->SetAbortFlag(1);
+  this->EndInteraction();
+  this->InvokeEvent(vtkCommand::EndInteractionEvent,NULL);
+  this->Interactor->Render();
+}
+//==================================================================
+// function: OnRightButtonDown
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::OnRightButtonDown()
+{
+  this->State = VISU_PlanesWidget::Scaling;
+
+  int X = this->Interactor->GetEventPosition()[0];
+  int Y = this->Interactor->GetEventPosition()[1];
+
+  // Okay, we can process this. See if we've picked anything.
+  // Make sure it's in the activated renderer
+  vtkRenderer *ren = this->Interactor->FindPokedRenderer(X,Y);
+  if ( ren != this->CurrentRenderer )    {
+    this->State = VISU_PlanesWidget::Outside;
+    return;
+  }
+  
+  // Okay, we can process this. Try to pick handles first;
+  // if no handles picked, then pick the bounding box.
+  vtkAssemblyPath *path;
+  this->Picker->Pick(X,Y,0.0,this->CurrentRenderer);
+  path = this->Picker->GetPath();
+  if ( path == NULL ){ //nothing picked
+    this->State = VISU_PlanesWidget::Outside;
+    return;
+  }
+  
+  this->ValidPick = 1;
+  this->Picker->GetPickPosition(this->LastPickPosition);
+  this->HighlightPlane(1);
+  this->HighlightOutline(1);
+  this->HighlightNormal(1);
+  
+  this->EventCallbackCommand->SetAbortFlag(1);
+  this->StartInteraction();
+  this->InvokeEvent(vtkCommand::StartInteractionEvent,NULL);
+  this->Interactor->Render();
+}
+//==================================================================
+// function: OnRightButtonUp
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::OnRightButtonUp()
+{
+  if ( this->State == VISU_PlanesWidget::Outside )    {
+    return;
+  }
+  
+  this->State = VISU_PlanesWidget::Start;
+  this->HighlightPlane(0);
+  this->HighlightOutline(0);
+  this->HighlightNormal(0);
+  //this->SizeHandles();
+  
+  this->EventCallbackCommand->SetAbortFlag(1);
+  this->EndInteraction();
+  this->InvokeEvent(vtkCommand::EndInteractionEvent,NULL);
+  this->Interactor->Render();
+}
+//==================================================================
+// function: OnMouseMove
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::OnMouseMove()
+{
+  //this->SizeHandles();
+
+  // See whether we're active
+  if ( this->State == VISU_PlanesWidget::Outside || 
+       this->State == VISU_PlanesWidget::Start )    {
+    return;
+  }
+  
+  int X = this->Interactor->GetEventPosition()[0];
+  int Y = this->Interactor->GetEventPosition()[1];
+
+  // Do different things depending on state
+  // Calculations everybody does
+  double focalPoint[4], pickPoint[4], prevPickPoint[4];
+  double z, vpn[3];
+
+  vtkCamera *camera = this->CurrentRenderer->GetActiveCamera();
+  if ( !camera ) {
+    return;
+  }
+
+  // Compute the two points defining the motion vector
+  this->ComputeWorldToDisplay(this->LastPickPosition[0], this->LastPickPosition[1],
+                              this->LastPickPosition[2], focalPoint);
+  z = focalPoint[2];
+  this->ComputeDisplayToWorld(double(this->Interactor->GetLastEventPosition()[0]),
+                              double(this->Interactor->GetLastEventPosition()[1]),
+                              z, prevPickPoint);
+  this->ComputeDisplayToWorld(double(X), double(Y), z, pickPoint);
+
+  // Process the motion
+  if ( this->State == VISU_PlanesWidget::MovingPlane )    {
+    //this->TranslatePlane(prevPickPoint, pickPoint);
+    //printf(" TranslatePlane\n");
+  }
+  else if ( this->State == VISU_PlanesWidget::MovingOutline )    {
+    //this->TranslateOutline(prevPickPoint, pickPoint);
+    //printf(" TranslateOutline\n");
+  }
+  else if ( this->State == VISU_PlanesWidget::MovingOrigin )    {
+    this->TranslateOrigin(prevPickPoint, pickPoint);
+    //printf(" TranslateOrigin\n");
+  }
+  else if ( this->State == VISU_PlanesWidget::Pushing )    {
+    this->Push(prevPickPoint, pickPoint);
+   // printf(" Push\n");
+  }
+  else if ( this->State == VISU_PlanesWidget::Scaling )    {
+    //this->Scale(prevPickPoint, pickPoint, X, Y);
+    //printf(" Scale\n");
+  }
+  else if ( this->State == VISU_PlanesWidget::Rotating )    {
+    camera->GetViewPlaneNormal(vpn);
+    this->Rotate(X, Y, prevPickPoint, pickPoint, vpn);
+    //printf(" Rotate\n");
+  }
+  else if ( this->State == VISU_PlanesWidget::ChangeDistance )    {
+    this->PushDistance(prevPickPoint, pickPoint);
+    //printf(" PushDistance\n");
+  }
+  // Interact, if desired
+  this->EventCallbackCommand->SetAbortFlag(1);
+  this->InvokeEvent(vtkCommand::InteractionEvent,NULL);
+  
+  this->Interactor->Render();
+}
+//==================================================================
+// function: Push
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::Push(double *p1, double *p2)
+{
+  //Get the motion vector
+  int i;
+  float v[3];
+  //
+  for (i=0; i<3; ++i){  
+    v[i] = p2[i] - p1[i];
+  }
+  //
+  float aOr1[3], aNr1[3], aNr2[3], aD, z1;
+  //
+  myPlane1->GetOrigin(aOr1);
+  myPlane1->GetNormal(aNr1);
+  myPlane2->GetNormal(aNr2);
+  //
+  aD=vtkMath::Dot(v, aNr2);
+  z1 = aOr1[2]+aD*aNr2[2];
+  if( z1 <= myBox->GetOrigin()[2] ){
+    return;
+  }
+  //  
+  aD=vtkMath::Dot(v, aNr1);
+  for (i=0; i < 3; ++i) {
+    aOr1[i]=aOr1[i]+aD*aNr1[i];
+  }
+  SetOriginInternal(aOr1);
+  this->UpdateRepresentation();
+}
+//==================================================================
+// function: TranslateOrigin
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::TranslateOrigin(double *p1, double *p2)
+{
+  //Get the motion vector
+  int i;
+  double v[3];
+  //
+  for (i=0; i<3; ++i){  
+    v[i] = p2[i] - p1[i];
+  }
+  //
+  //Add to the current point, project back down onto plane
+  float *o = myPlane1->GetOrigin();
+  float *n = myPlane1->GetNormal();
+  float newOrigin[3];
+  //
+  for (i=0; i<3; ++i){
+    newOrigin[i]=o[i] + v[i];
+  }
+  vtkPlane::ProjectPoint(newOrigin, o, n, newOrigin);
+  SetOriginInternal(newOrigin); 
+  this->UpdateRepresentation();
+}
+//==================================================================
+// function: SetOriginInternal
+// purpose : Set the origin of the plane.(for Internal calls)
+//==================================================================
+void VISU_PlanesWidget::SetOriginInternal(float x[3]) 
+{
+  float *bounds = this->myOutline->GetOutput()->GetBounds();
+  int i, j;
+  for (i=0; i<3; ++i)    {
+    j=2*i;
+    if ( x[i] < bounds[j] ) {
+      x[i] = bounds[j];
+    }
+    else if ( x[i] > bounds[j+1] ) {
+      x[i] = bounds[j+1];
+    }
+  }
+  //
+  bool bFlag;
+  float aOr2[3], aNr2[3], aNr1[3];
+  vtkPlane *pPx;
+  //
+  myPlane1->GetNormal(aNr1);
+  myPlane2->GetNormal(aNr2);
+  for (i=0; i<3; ++i)    {
+    aOr2[i]=x[i]+myDistance*aNr1[i];
+  }
+  pPx=vtkPlane::New();
+  pPx->SetOrigin(aOr2);
+  pPx->SetNormal(aNr2);
+  bFlag=IsValidPlane2Position(pPx, myBox);
+  if (bFlag){
+    myPlane1->SetOrigin(x);
+    myPlane2->SetOrigin(aOr2);
+  }
+  pPx->Delete();
+}
+//==================================================================
+// function: Rotate
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::Rotate(int X, int Y, 
+                                         double *p1, double *p2, 
+                                         double *vpn)
+{
+  double v[3];    //vector of motion
+  double axis[3]; //axis of rotation
+  double theta;   //rotation angle
+  int i;
+
+  // mouse motion vector in world space
+  for (i=0; i<3; ++i){ 
+    v[i] = p2[i] - p1[i];
+  }
+  //
+  float *origin = myPlane1->GetOrigin();
+  float *normal = myPlane1->GetNormal();
+
+  // Create axis of rotation and angle of rotation
+  vtkMath::Cross(vpn,v,axis);
+  if ( vtkMath::Normalize(axis) == 0.0 )    {
+    return;
+  }
+
+  int *size = this->CurrentRenderer->GetSize();
+  double l2 = (X-this->Interactor->GetLastEventPosition()[0])*
+    (X-this->Interactor->GetLastEventPosition()[0]) + 
+    (Y-this->Interactor->GetLastEventPosition()[1])*
+    (Y-this->Interactor->GetLastEventPosition()[1]);
+  theta = 360.0 * sqrt(l2/((double)size[0]*size[0]+size[1]*size[1]));
+
+  //Manipulate the transform to reflect the rotation
+  this->Transform->Identity();
+  this->Transform->Translate(origin[0],origin[1],origin[2]);
+  this->Transform->RotateWXYZ(theta,axis);
+  this->Transform->Translate(-origin[0],-origin[1],-origin[2]);
+
+  //Set the new normal
+  float nNew[3], aN2[3], oNew[3];
+  this->Transform->TransformNormal(normal,nNew);
+  //
+  for (i=0; i<3; ++i){  
+    aN2[i] = -nNew[i];
+  }
+  vtkMath::Normalize(nNew);
+  for (i=0; i<3; ++i){  
+    oNew[i] = origin[i] + myDistance*nNew[i];
+  }
+  //
+  vtkPlane *pPx=vtkPlane::New();
+  pPx->SetNormal(aN2); 
+  pPx->SetOrigin(oNew);
+  //
+  bool bFlag=IsValidPlane2Position(pPx, myBox);
+  if (bFlag) {
+    myPlane1->SetNormal(nNew);
+    this->myPlane2->SetNormal(aN2); 
+    this->myPlane2->SetOrigin(oNew);
+  } 
+  pPx->Delete();
+  this->UpdateRepresentation();
+}
+//==================================================================
+// function: PushDistance
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::PushDistance(double *p1, double *p2)
+{
+  int i;
+  float v[3],  *anOrigin1, *aN1, *anOrigin2, *aN2, aD;
+  //Get the motion vector
+  for (i=0; i<3; ++i){ 
+    v[i] = p2[i] - p1[i];
+  }
+  //
+  anOrigin1 = myPlane1->GetOrigin();
+  aN1 = myPlane1->GetNormal();
+  anOrigin2 = myPlane2->GetOrigin();
+  aN2 = myPlane2->GetNormal();
+
+  vtkMath::Normalize(aN1);
+
+  float origin[3];
+  double distance = vtkMath::Dot( v, aN2 );
+  for(i=0; i<3; ++i) {
+    origin[i] = anOrigin2[i] + distance * aN2[i];
+  }
+  float d = DistanceToPlane(origin, aN1, anOrigin1);
+  if( d <= 0.0 )
+    return;
+  //
+  bool bFlag;
+  float aOr2[3], aNr2[3];
+  vtkPlane *pPx;
+  //
+  myPlane2->GetOrigin(aOr2);
+  myPlane2->GetNormal(aNr2);
+  pPx=vtkPlane::New();
+  pPx->SetNormal(aNr2);
+  aD=vtkMath::Dot(v, aNr2);
+  for (i=0; i < 3; ++i) {
+    aOr2[i]=aOr2[i]+aD*aNr2[i];
+  }
+  pPx->SetOrigin(aOr2);
+  bFlag=IsValidPlane2Position(pPx, myBox);
+  if(bFlag) {
+    myPlane2->SetOrigin(aOr2);
+    myPlane2->Modified();
+    aD=DistanceToPlane(aOr2, aN1, anOrigin1);
+    //
+    myDistance=aD;
+  }
+  pPx->Delete();
+  this->UpdateRepresentation();
+}
+
+//==================================================================
+// function: TranslatePlane
+// purpose : Loop through all points and translate them
+//==================================================================
+void VISU_PlanesWidget::TranslatePlane(double *p1, double *p2)
+{
+  //Get the motion vector
+  double v[3];
+  v[0] = p2[0] - p1[0];
+  v[1] = p2[1] - p1[1];
+  v[2] = p2[2] - p1[2];
+  
+  //Translate the plane
+  float oNew[3];
+  float *origin = myPlane1->GetOrigin();
+  oNew[0] = origin[0] + v[0];
+  oNew[1] = origin[1] + v[1];
+  oNew[2] = origin[2] + v[2];
+  myPlane1->SetOrigin(oNew);
+  
+  origin = this->myPlane2->GetOrigin();
+  oNew[0] = origin[0] + v[0];
+  oNew[1] = origin[1] + v[1];
+  oNew[2] = origin[2] + v[2];
+  this->myPlane2->SetOrigin(oNew);
+
+  this->UpdateRepresentation();
+}
+//==================================================================
+// function: TranslateOutline
+// purpose :Loop through all points and translate them
+//==================================================================
+void VISU_PlanesWidget::TranslateOutline(double *p1, double *p2)
+{
+  //Get the motion vector
+  double v[3];
+  v[0] = p2[0] - p1[0];
+  v[1] = p2[1] - p1[1];
+  v[2] = p2[2] - p1[2];
+  
+  //Translate the bounding box
+  float *origin = myBox->GetOrigin();
+  float oNew[3];
+  oNew[0] = origin[0] + v[0];
+  oNew[1] = origin[1] + v[1];
+  oNew[2] = origin[2] + v[2];
+  myBox->SetOrigin(oNew);
+
+  //Translate the plane
+  origin = myPlane1->GetOrigin();
+  oNew[0] = origin[0] + v[0];
+  oNew[1] = origin[1] + v[1];
+  oNew[2] = origin[2] + v[2];
+  myPlane1->SetOrigin(oNew);
+
+  origin = this->myPlane2->GetOrigin();
+  oNew[0] = origin[0] + v[0];
+  oNew[1] = origin[1] + v[1];
+  oNew[2] = origin[2] + v[2];
+  this->myPlane2->SetOrigin(oNew);
+
+  this->UpdateRepresentation();
+}
+
+//==================================================================
+// function: Scale
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::Scale(double *p1, double *p2, 
+                                       int vtkNotUsed(X), int Y)
+{
+  //Get the motion vector
+  double v[3];
+  v[0] = p2[0] - p1[0];
+  v[1] = p2[1] - p1[1];
+  v[2] = p2[2] - p1[2];
+
+  //int res = this->PlaneSource->GetXResolution();
+  float *o = myPlane1->GetOrigin();
+
+  // Compute the scale factor
+  float sf = vtkMath::Norm(v) / this->myOutline->GetOutput()->GetLength();
+  if ( Y > this->Interactor->GetLastEventPosition()[1] )    {
+    sf = 1.0 + sf;
+  }
+  else    {
+    sf = 1.0 - sf;
+  }
+  
+  this->Transform->Identity();
+  this->Transform->Translate(o[0],o[1],o[2]);
+  this->Transform->Scale(sf,sf,sf);
+  this->Transform->Translate(-o[0],-o[1],-o[2]);
+
+  float *origin = myBox->GetOrigin();
+  float *spacing = myBox->GetSpacing();
+  float oNew[3], p[3], pNew[3];
+  p[0] = origin[0] + spacing[0];
+  p[1] = origin[1] + spacing[1];
+  p[2] = origin[2] + spacing[2];
+
+  this->Transform->TransformPoint(origin,oNew);
+  this->Transform->TransformPoint(p,pNew);
+
+  myBox->SetOrigin(oNew);
+  myBox->SetSpacing( (pNew[0]-oNew[0]), (pNew[1]-oNew[1]), (pNew[2]-oNew[2]) );
+
+  this->UpdateRepresentation();
+}
+
+
+
+//==================================================================
+// function: CreateDefaultProperties
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::CreateDefaultProperties()
+{
+  // Normal properties
+  this->NormalProperty = vtkProperty::New();
+  this->NormalProperty->SetColor(1,1,1);
+  this->NormalProperty->SetLineWidth(2);
+
+  this->SelectedNormalProperty = vtkProperty::New();
+  this->SelectedNormalProperty->SetColor(1,0,0);
+  this->NormalProperty->SetLineWidth(2);
+
+  // Plane properties
+  this->PlaneProperty = vtkProperty::New();
+  this->PlaneProperty->SetAmbient(1.0);
+  this->PlaneProperty->SetAmbientColor(1.0,1.0,1.0);
+
+  this->SelectedPlaneProperty = vtkProperty::New();
+  this->SelectedPlaneProperty->SetAmbient(1.0);
+  this->SelectedPlaneProperty->SetAmbientColor(0.0,1.0,0.0);
+  this->SelectedPlaneProperty->SetOpacity(0.25);
+
+  // Outline properties
+  this->OutlineProperty = vtkProperty::New();
+  this->OutlineProperty->SetAmbient(1.0);
+  this->OutlineProperty->SetAmbientColor(1.0,1.0,1.0);
+
+  this->SelectedOutlineProperty = vtkProperty::New();
+  this->SelectedOutlineProperty->SetAmbient(1.0);
+  this->SelectedOutlineProperty->SetAmbientColor(0.0,1.0,0.0);
+
+  // Edge property
+  this->EdgesProperty = vtkProperty::New();
+  this->EdgesProperty->SetAmbient(1.0);
+  this->EdgesProperty->SetAmbientColor(1.0,1.0,1.0);
+}
+//==================================================================
+// function: InitialPlaceWidget
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::InitialPlaceWidget(float bds[6])
+{
+  float bounds[6], origin[3];
+
+  PlaceWidget(bds);
+  //
+  this->AdjustBounds(bds, bounds, origin);
+  this->SetOrigin((bounds[1]+bounds[0])/2.0,
+                 (bounds[3]+bounds[2])/2.0,
+                 (bounds[5]+bounds[4])/2.0);
+
+  static float DIST_COEFF = 0.1;
+  SetDistance(this->InitialLength*DIST_COEFF);
+  //
+  this->UpdateRepresentation();
+}
+//==================================================================
+// function: PlaceWidget
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::PlaceWidget(float bds[6])
+{
+  int i;
+  float bounds[6], origin[3];
+
+  this->AdjustBounds(bds, bounds, origin);
+
+  // Set up the bounding box
+  myBox->SetOrigin(bounds[0],bounds[2],bounds[4]);
+  myBox->SetSpacing((bounds[1]-bounds[0]),(bounds[3]-bounds[2]),
+                        (bounds[5]-bounds[4]));
+  this->myOutline->Update();
+
+  if (this->Input || this->Prop3D)    {
+    this->LineSource->SetPoint1(myPlane1->GetOrigin());
+    if ( this->NormalToYAxis )      {
+      myPlane1->SetNormal(0,1,0);
+      myPlane2->SetNormal(0,-1,0);
+      this->LineSource->SetPoint2(0,1,0);
+    }
+    else if ( this->NormalToZAxis )      {
+      myPlane1->SetNormal(0,0,1);
+      myPlane2->SetNormal(0,0,-1);
+      this->LineSource->SetPoint2(0,0,1);
+    }
+    else{ //default or x-normal
+      myPlane1->SetNormal(1,0,0);
+      myPlane2->SetNormal(-1,0,0);
+      this->LineSource->SetPoint2(1,0,0);
+    }
+  }
+  
+  for (i=0; i<6; i++)    {
+    this->InitialBounds[i] = bounds[i];
+  }
+
+  this->InitialLength = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) +
+                             (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) +
+                             (bounds[5]-bounds[4])*(bounds[5]-bounds[4]));
+
+  this->UpdateRepresentation();
+}
+//==================================================================
+// function: SetOrigin
+// purpose :Set the origin of the plane.(for external calls)
+//==================================================================
+void VISU_PlanesWidget::SetOrigin(float x, float y, float z) 
+{
+  float origin[3];
+  origin[0] = x;
+  origin[1] = y;
+  origin[2] = z;
+  this->SetOrigin(origin);
+}
+//==================================================================
+// function: SetOrigin 
+// purpose : Set the origin of the plane.(for external calls)
+//==================================================================
+void VISU_PlanesWidget::SetOrigin(float x[3])
+{
+  float *bounds = this->myOutline->GetOutput()->GetBounds();
+  for (int i=0; i<3; i++)    {
+    if ( x[i] < bounds[2*i] )      {
+      x[i] = bounds[2*i];
+    }
+    else if ( x[i] > bounds[2*i+1] )      {
+      x[i] = bounds[2*i+1];
+    }
+  }
+  myPlane1->SetOrigin(x);
+  float *origin, *normal, oNew[3];
+  origin = myPlane1->GetOrigin();
+  normal = myPlane1->GetNormal();
+  vtkMath::Normalize(normal);
+  oNew[0] = origin[0] + myDistance*normal[0];
+  oNew[1] = origin[1] + myDistance*normal[1];
+  oNew[2] = origin[2] + myDistance*normal[2];
+  this->myPlane2->SetOrigin(oNew);
+  this->UpdateRepresentation();
+}
+//==================================================================
+// function: GetOrigin
+// purpose :Get the origin of the plane.
+//==================================================================
+float* VISU_PlanesWidget::GetOrigin() 
+{
+  return myPlane1->GetOrigin();
+}
+
+void VISU_PlanesWidget::GetOrigin(float xyz[3]) 
+{
+  myPlane1->GetOrigin(xyz);
+}
+//==================================================================
+// function: SetNormal
+// purpose :Set the normal to the plane.
+//==================================================================
+void VISU_PlanesWidget::SetNormal(float x, float y, float z) 
+{
+  float n[3];
+  n[0] = x;
+  n[1] = y;
+  n[2] = z;
+  vtkMath::Normalize(n);
+  myPlane1->SetNormal(n);
+  n[0] =- x;
+  n[1] =- y;
+  n[2] =- z;
+  this->myPlane2->SetNormal(n);
+
+  this->UpdateRepresentation();
+}
+
+//==================================================================
+// function: SetNormal
+// purpose :Set the normal to the plane.
+//==================================================================
+void VISU_PlanesWidget::SetNormal(float n[3]) 
+{
+  this->SetNormal(n[0], n[1], n[2]);
+}
+//==================================================================
+// function: GetNormal
+// purpose :Get the normal to the plane.
+//==================================================================
+float* VISU_PlanesWidget::GetNormal() 
+{
+  return myPlane1->GetNormal();
+}
+//==================================================================
+// function: GetNormal
+// purpose :Get the normal to the plane.
+//==================================================================
+void VISU_PlanesWidget::GetNormal(float xyz[3]) 
+{
+  myPlane1->GetNormal(xyz);
+}
+//==================================================================
+// function: SetDrawPlane
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::SetDrawPlane(int drawPlane)
+{
+  if ( drawPlane == this->myDrawPlane )    {
+    return;
+  }
+  
+  this->Modified();
+  this->myDrawPlane = drawPlane;
+  if ( this->Enabled ) {
+    if ( drawPlane ) {
+      this->CurrentRenderer->AddActor(this->myCutActor1);
+      this->CurrentRenderer->AddActor(myCutActor2);
+    }
+    else {
+      this->CurrentRenderer->RemoveActor(this->myCutActor1);
+      this->CurrentRenderer->RemoveActor(myCutActor2);
+    }
+    this->Interactor->Render();
+  }
+}
+//==================================================================
+// function: SetNormalToXAxis
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::SetNormalToXAxis (int var)
+{
+  if (this->NormalToXAxis != var)    {
+    this->NormalToXAxis = var;
+    this->Modified();
+  }
+  if (var)    {
+    this->NormalToYAxisOff();
+    this->NormalToZAxisOff();
+  }
+}
+//==================================================================
+// function: SetNormalToYAxis
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::SetNormalToYAxis (int var)
+{
+  if (this->NormalToYAxis != var)    {
+    this->NormalToYAxis = var;
+    this->Modified();
+  }
+  if (var)    {
+    this->NormalToXAxisOff();
+    this->NormalToZAxisOff();
+  }
+}
+//==================================================================
+// function: SetNormalToZAxis
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::SetNormalToZAxis (int var)
+{
+  if (this->NormalToZAxis != var)    {
+    this->NormalToZAxis = var;
+    this->Modified();
+  }
+  if (var)    {
+    this->NormalToXAxisOff();
+    this->NormalToYAxisOff();
+  }
+}
+//==================================================================
+// function: GetPolyData
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::GetPolyData(vtkPolyData *pd)
+{ 
+  pd->ShallowCopy(this->myCutter1->GetOutput()); 
+}
+//==================================================================
+// function: GetPolyDataSource
+// purpose :
+//==================================================================
+/*
+vtkPolyDataSource *VISU_PlanesWidget::GetPolyDataSource()
+{
+  return this->myCutter1;
+}
+*/
+//==================================================================
+// function:GetPlane
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::GetPlane(vtkPlane *plane)
+{
+  if ( plane == NULL )    {
+    return;
+  }
+  
+  plane->SetNormal(myPlane1->GetNormal());
+  plane->SetOrigin(myPlane1->GetOrigin());
+}
+//==================================================================
+// function:UpdatePlacement
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::UpdatePlacement(void)
+{
+  this->myOutline->Update();
+  this->myCutter1->Update();
+  this->myEdges1->Update();
+}
+//==================================================================
+// function:UpdateRepresentation
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::UpdateRepresentation()
+{
+  if ( ! this->CurrentRenderer )    {
+    return;
+  }
+
+  float *origin = myPlane1->GetOrigin();
+  float *normal = myPlane1->GetNormal();
+  float p2[3];
+
+  // Setup the plane normal
+  float d = this->myOutline->GetOutput()->GetLength();
+
+  p2[0] = origin[0] + 0.30 * d * normal[0];
+  p2[1] = origin[1] + 0.30 * d * normal[1];
+  p2[2] = origin[2] + 0.30 * d * normal[2];
+
+  this->LineSource->SetPoint1(origin);
+  this->LineSource->SetPoint2(p2);
+  this->ConeSource->SetCenter(p2);
+  this->ConeSource->SetDirection(normal);
+  ConeActor->SetCenter(p2);
+
+  p2[0] = origin[0] - 0.30 * d * normal[0];
+  p2[1] = origin[1] - 0.30 * d * normal[1];
+  p2[2] = origin[2] - 0.30 * d * normal[2];
+
+  this->LineSource2->SetPoint1(origin);
+  this->LineSource2->SetPoint2(p2);
+  this->ConeSource2->SetCenter(p2);
+  this->ConeSource2->SetDirection(normal);
+  ConeActor2->SetCenter(p2);
+
+  // Set up the position handle
+  this->Sphere->SetCenter(origin);
+  SphereActor->SetCenter(origin);
+
+  this->myEdgesMapper1->SetInput(this->myEdges1->GetOutput());
+}
+
+//==================================================================
+// function:PrintSelf
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::PrintSelf(ostream& os, vtkIndent indent)
+{
+  this->Superclass::PrintSelf(os,indent);
+}
+//==================================================================
+// function: IsValidPlane2Position
+// purpose :
+//==================================================================
+bool IsValidPlane2Position(vtkPlane *pPx,
+                           vtkDataSet *pDataSet,
+                           float aTol)
+{
+  bool bRet;
+  int i, iFound;
+  float aD, aDmax, aPnts[24], aDiagonal;
+  float aTol1, aOr[3], aN[3];
+  //
+  bRet=false;
+  aDiagonal=pDataSet->GetLength();
+  aTol1=aDiagonal*aTol;
+  //
+  GetBndPoints(pDataSet, aPnts);
+  //
+  pPx->GetOrigin(aOr);
+  pPx->GetNormal(aN);
+  vtkMath::Normalize(aN);
+  //
+  iFound=0;
+  aDmax=0.;
+  for (i=0; i<24; i+=3){
+    aD=-DistanceToPlane(aPnts+i, aN, aOr);
+    if (aD>aDmax){
+           aDmax=aD;
+           iFound=1;
+    }
+  }
+  if (iFound && aDmax>aTol1) {
+    bRet=!bRet;
+  }
+  return bRet;
+}
+//==================================================================
+// function: GetBndPoints
+// purpose :
+//==================================================================
+void GetBndPoints(vtkDataSet *pDataSet, 
+                  float aPnts[24])
+{
+  int aIndx[24]={
+    0,2,4,1,2,4,1,3,4,0,3,4,
+    0,2,5,1,2,5,1,3,5,0,3,5
+  };
+  int i;
+  float *pBounds=pDataSet->GetBounds();
+  //
+  for (i=0; i<24; ++i){
+    aPnts[i]=pBounds[aIndx[i]];
+  }
+}
+//==================================================================
+// function: DistanceToPlane
+// purpose :
+//==================================================================
+float DistanceToPlane(const float x[3], 
+                     const float n[3], 
+                     const float p0[3])
+{
+  return ((float) (n[0]*(x[0]-p0[0]) + 
+                  n[1]*(x[1]-p0[1]) +  
+                  n[2]*(x[2]-p0[2])));
+}
+/*
+//==================================================================
+// function:SizeHandles
+// purpose :
+//==================================================================
+void VISU_PlanesWidget::SizeHandles()
+{
+  //  float radius = 
+  this->vtk3DWidget::SizeHandles(1.35);
+}
+*/
diff --git a/src/PIPELINE/VISU_PlanesWidget.hxx b/src/PIPELINE/VISU_PlanesWidget.hxx
new file mode 100644 (file)
index 0000000..fdf4536
--- /dev/null
@@ -0,0 +1,312 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : VISU_PlanesWidget.h
+//  Author : Peter KURNEV
+//  Module : SALOME
+//  $Header$
+
+#ifndef __VISU_PlanesWidget_h
+#define __VISU_PlanesWidget_h
+
+#include "VISU_ImplicitFunctionWidget.hxx"
+class vtkActor;
+class vtkPolyDataMapper;
+class vtkCellPicker;
+class vtkConeSource;
+class vtkLineSource;
+class vtkSphereSource;
+class vtkPlane;
+class vtkCutter;
+class vtkProperty;
+class vtkImageData;
+class vtkOutlineFilter;
+class vtkFeatureEdges;
+class vtkPolyData;
+class vtkTransform;
+class vtkImplicitBoolean;
+class vtkImplicitFunction;
+class VISU_UnScaledActor;
+class vtkDataSet;
+
+class  VISU_PlanesWidget : public VISU_ImplicitFunctionWidget
+{
+public:
+  // Description:
+  // Instantiate the object.
+  static VISU_PlanesWidget *New();
+
+  vtkTypeRevisionMacro(VISU_PlanesWidget,VISU_ImplicitFunctionWidget);
+  void PrintSelf(ostream& os, vtkIndent indent);
+
+  void SetDistance (const float theDistance);
+  float Distance()const;
+
+  vtkGetMacro(InitialLength,float);
+
+  virtual vtkImplicitFunction* ImplicitFunction();
+
+  // Description:
+  // Methods that satisfy the superclass' API.
+  virtual void SetEnabled(int);
+  virtual void PlaceWidget(float bounds[6]);
+
+  // Description:
+  // Get the origin of the plane.
+  void SetOrigin(float x, float y, float z);
+  void SetOrigin(float x[3]);
+  float* GetOrigin();
+  void GetOrigin(float xyz[3]);
+
+  // Description:
+  // Get the normal to the plane.
+  void SetNormal(float x, float y, float z);
+  void SetNormal(float x[3]);
+  float* GetNormal();
+  void GetNormal(float xyz[3]);
+  
+  // Description:
+  // Force the plane widget to be aligned with one of the x-y-z axes.
+  // If one axis is set on, the other two will be set off.
+  // Remember that when the state changes, a ModifiedEvent is invoked.
+  // This can be used to snap the plane to the axes if it is orginally
+  // not aligned.
+  void SetNormalToXAxis(int);
+  vtkGetMacro(NormalToXAxis,int);
+  vtkBooleanMacro(NormalToXAxis,int);
+  void SetNormalToYAxis(int);
+  vtkGetMacro(NormalToYAxis,int);
+  vtkBooleanMacro(NormalToYAxis,int);
+  void SetNormalToZAxis(int);
+  vtkGetMacro(NormalToZAxis,int);
+  vtkBooleanMacro(NormalToZAxis,int);
+
+  // Description:
+  // Turn on/off tubing of the wire outline of the plane. The tube thickens
+  // the line by wrapping with a vtkTubeFilter.
+  //vtkSetMacro(Tubing,int);
+  //vtkGetMacro(Tubing,int);
+  //vtkBooleanMacro(Tubing,int);
+
+  // Description:
+  // Enable/disable the drawing of the plane. In some cases the plane
+  // interferes with the object that it is operating on (i.e., the
+  // plane interferes with the cut surface it produces producing
+  // z-buffer artifacts.)
+  void SetDrawPlane(int plane);
+  int GetDrawPlane(){
+    return myDrawPlane;
+  }
+
+  // Description:
+  // Turn on/off the ability to translate the bounding box by grabbing it
+  // with the left mouse button.
+  vtkSetMacro(OutlineTranslation,int);
+  vtkGetMacro(OutlineTranslation,int);
+  vtkBooleanMacro(OutlineTranslation,int);
+
+  // Description:
+  // Grab the polydata that defines the plane. The polydata contains a single
+  // polygon that is clipped by the bounding box.
+  void GetPolyData(vtkPolyData *pd);
+
+  // Description:
+  // Satisfies superclass API.  This returns a pointer to the underlying
+  // PolyData (which represents the plane).
+  //vtkPolyDataSource* GetPolyDataSource();
+   
+  // Description:
+  // Get the implicit function for the plane. The user must provide the
+  // instance of the class vtkPlane. Note that vtkPlane is a subclass of
+  // vtkImplicitFunction, meaning that it can be used by a variety of filters
+  // to perform clipping, cutting, and selection of data.
+  void GetPlane(vtkPlane *plane);
+
+  // Description:
+  // Satisfies the superclass API.  This will change the state of the widget
+  // to match changes that have been made to the underlying PolyDataSource
+  void UpdatePlacement(void);
+
+  // Description:
+  // Get the properties on the normal (line and cone).
+  vtkGetObjectMacro(NormalProperty,vtkProperty);
+  vtkGetObjectMacro(SelectedNormalProperty,vtkProperty);
+  
+  // Description:
+  // Get the plane properties. The properties of the plane when selected 
+  // and unselected can be manipulated.
+  vtkGetObjectMacro(PlaneProperty,vtkProperty);
+  vtkGetObjectMacro(SelectedPlaneProperty,vtkProperty);
+
+  // Description:
+  // Get the property of the outline.
+  vtkGetObjectMacro(OutlineProperty,vtkProperty);
+  vtkGetObjectMacro(SelectedOutlineProperty,vtkProperty);
+
+  // Description:
+  // Get the property of the intersection edges. (This property also
+  // applies to the edges when tubed.)
+  vtkGetObjectMacro(EdgesProperty,vtkProperty);
+
+  void InitialPlaceWidget(float bds[6]);
+
+protected:
+  VISU_PlanesWidget();
+  ~VISU_PlanesWidget();
+
+//BTX - manage the state of the widget
+  int State;
+  enum WidgetState
+  {
+    Start=0,
+    MovingPlane,
+    MovingOutline,
+    MovingOrigin,
+    Scaling,
+    Pushing,
+    Rotating,
+    Outside,
+    ChangeDistance
+  };
+//ETX
+    
+  //handles the events
+  static void ProcessEvents(vtkObject* object, unsigned long event,
+                            void* clientdata, void* calldata);
+
+  // ProcessEvents() dispatches to these methods.
+  void OnLeftButtonDown();
+  void OnLeftButtonUp();
+  void OnMiddleButtonDown();
+  void OnMiddleButtonUp();
+  void OnRightButtonDown();
+  void OnRightButtonUp();
+  void OnMouseMove();
+  //
+  // Methods to manipulate the plane
+  void ConstrainOrigin(float x[3]);
+  void Rotate(int X, int Y, double *p1, double *p2, double *vpn);
+  void TranslatePlane(double *p1, double *p2);
+  void TranslateOutline(double *p1, double *p2);
+  void TranslateOrigin(double *p1, double *p2);
+  void Push(double *p1, double *p2);
+  void Scale(double *p1, double *p2, int X, int Y);
+  void PushDistance(double *p1, double *p2);
+
+  void CreateDefaultProperties();
+  
+  void GeneratePlane();
+  //virtual void SizeHandles();
+  void HighlightPlane(int highlight);
+  void HighlightNormal(int highlight);
+  void HighlightOutline(int highlight);
+  void UpdateRepresentation();
+  void SetOriginInternal(float x[3]);
+
+  // Controlling ivars
+  int NormalToXAxis;
+  int NormalToYAxis;
+  int NormalToZAxis;
+  
+
+  // Flags to handle mouse events
+  bool HandleMoveEvent;
+  bool HandleLeftButtonEvent;
+  bool HandleMiddleButtonEvent;
+  bool HandleRightButtonEvent;
+  // The actual plane which is being manipulated
+  vtkPlane *myPlane1;
+  vtkPlane *myPlane2;
+  
+  float myDistance; 
+  vtkImplicitBoolean *myImplicitFunction;
+
+  // The bounding box is represented by a single voxel image data
+  vtkImageData      *myBox;
+  vtkOutlineFilter  *myOutline;
+  vtkPolyDataMapper *myOutlineMapper;
+  vtkActor          *myOutlineActor;
+  
+  int OutlineTranslation; //whether the outline can be moved
+  
+  // The cut plane is produced with a vtkCutter
+  vtkCutter         *myCutter1;
+  vtkPolyDataMapper *myCutMapper1;
+  vtkActor          *myCutActor1;
+
+  vtkCutter         *myCutter2;
+  vtkPolyDataMapper *myCutMapper2;
+  vtkActor          *myCutActor2;
+  
+  vtkFeatureEdges   *myEdges2;
+  vtkPolyDataMapper *myEdgesMapper2;
+  vtkActor          *myEdgesActor2;
+
+  int               myDrawPlane;
+
+  vtkFeatureEdges   *myEdges1;
+  vtkPolyDataMapper *myEdgesMapper1;
+  vtkActor          *myEdgesActor1;
+
+  // The + normal cone
+  vtkConeSource      *ConeSource;
+  vtkPolyDataMapper  *ConeMapper;
+  VISU_UnScaledActor *ConeActor;
+  // The + normal line
+  vtkLineSource     *LineSource;
+  vtkPolyDataMapper *LineMapper;
+  vtkActor          *LineActor;
+  // The - normal cone
+  vtkConeSource      *ConeSource2;
+  vtkPolyDataMapper  *ConeMapper2;
+  VISU_UnScaledActor *ConeActor2;
+  // The - normal line
+  vtkLineSource     *LineSource2;
+  vtkPolyDataMapper *LineMapper2;
+  vtkActor          *LineActor2;
+  // The origin positioning handle
+  vtkSphereSource    *Sphere;
+  vtkPolyDataMapper  *SphereMapper;
+  VISU_UnScaledActor *SphereActor;
+
+  // Do the picking
+  vtkCellPicker *Picker;
+  
+  // Transform the normal (used for rotation)
+  vtkTransform *Transform;
+  // Properties used to control the appearance of selected objects and
+  // the manipulator in general.
+  vtkProperty *NormalProperty;
+  vtkProperty *SelectedNormalProperty;
+  vtkProperty *PlaneProperty;
+  vtkProperty *SelectedPlaneProperty;
+  vtkProperty *OutlineProperty;
+  vtkProperty *SelectedOutlineProperty;
+  vtkProperty *EdgesProperty;
+  
+private:
+  VISU_PlanesWidget(const VISU_PlanesWidget&);  //Not implemented
+  void operator=(const VISU_ImplicitFunctionWidget&);  //Not implemented
+};
+
+#endif
index a7e8287e0931b2bc34d1a9430c91c1e0fb21e6f1..164d9a7ac6fb06377105d9c7d98417f243364dd4 100644 (file)
@@ -68,7 +68,6 @@ void
 VISU_Plot3DPL::
 ShallowCopy(VISU_PipeLine *thePipeLine)
 {
-  VISU_ScalarMapPL::ShallowCopy(thePipeLine);
   if(VISU_Plot3DPL *aPipeLine = dynamic_cast<VISU_Plot3DPL*>(thePipeLine)){
     SetOrientation (aPipeLine->GetPlaneOrientation(),
                     aPipeLine->GetRotateX(), aPipeLine->GetRotateY());
@@ -78,6 +77,7 @@ ShallowCopy(VISU_PipeLine *thePipeLine)
     SetContourPrs( aPipeLine->GetIsContourPrs() );
     SetNumberOfContours( aPipeLine->GetNumberOfContours() );
   }
+  VISU_ScalarMapPL::ShallowCopy(thePipeLine);
 }
 
 VISU_CutPlanesPL::PlaneOrientation
diff --git a/src/PIPELINE/VISU_ScalarBarCtrl.cxx b/src/PIPELINE/VISU_ScalarBarCtrl.cxx
new file mode 100644 (file)
index 0000000..561b243
--- /dev/null
@@ -0,0 +1,520 @@
+//  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:    VISU_ScalarBarCtrl.cxx
+// Author:  Peter KURNEV
+// Module : VISU
+
+#include "VISU_ScalarBarCtrl.hxx"
+
+#include <vtkObjectFactory.h>
+#include <vtkActor2D.h> 
+#include <vtkCoordinate.h>
+#include <vtkRenderer.h>
+#include <vtkScalarsToColors.h>
+#include <vtkLookupTable.h>
+#include <vtkTextProperty.h>
+#include <vtkScalarBarActor.h>
+#include <vtkIdType.h>
+
+#include <string.h>
+
+
+//----------------------------------------------------------------------------
+namespace
+{
+  inline
+  void
+  MarkValueByColor(vtkLookupTable* theTable,
+                  float theValue,
+                  unsigned char* theColor)
+  { 
+    vtkIdType anIndex = theTable->GetIndex(theValue);
+    unsigned char *aTablePtr = theTable->GetPointer(anIndex);
+    aTablePtr[0] = theColor[0];
+    aTablePtr[1] = theColor[1];
+    aTablePtr[2] = theColor[2];
+  }
+
+  inline
+  void
+  CopyColor(unsigned char* theTaget, const unsigned char* theSource)
+  {
+    theTaget[0] = theSource[0];
+    theTaget[1] = theSource[1];
+    theTaget[2] = theSource[2];
+  }
+
+  void
+  FillByColor(vtkLookupTable* theTable,
+             unsigned char* theColor)
+  {
+    vtkIdType aNbColors = theTable->GetNumberOfColors();
+    for(int i = 0; i < aNbColors; i++){
+      unsigned char *aTablePtr = theTable->GetPointer(i);
+      CopyColor(aTablePtr,theColor);
+    }
+  }
+
+  void
+  MakeBiColor(vtkLookupTable* theTable)
+  {
+    unsigned char aRedPtr[3] = {255, 0, 0};
+    unsigned char aBluePtr[3] = {0, 0, 255};
+
+    float aRange[2];
+    theTable->GetTableRange(aRange);
+    vtkIdType aNbColors = theTable->GetNumberOfColors();
+
+    float aDelta = (aRange[1]-aRange[0])/aNbColors;
+    float aValue = aRange[0]+0.5*aDelta;
+    for(int i = 0; i < aNbColors; i++){
+      vtkIdType anIndex = theTable->GetIndex(aValue);
+      unsigned char* aTablePtr = theTable->GetPointer(anIndex);
+      if(aValue > 0.0){
+       CopyColor(aTablePtr,aRedPtr);
+      }else{
+       CopyColor(aTablePtr,aBluePtr);
+      }
+      aValue += aDelta;
+    }
+  }
+}
+
+
+//----------------------------------------------------------------------------
+vtkStandardNewMacro(VISU_ScalarBarCtrl);
+
+//----------------------------------------------------------------------------
+VISU_ScalarBarCtrl
+::VISU_ScalarBarCtrl():
+  myGlobalRangeIsDefined(false)
+{
+  myDistance=0.02;
+  myPosition[0]=0.15;
+  myPosition[1]=0.01;
+  myBicolor=false;
+  myMarked=false;
+  myMarkedValue=99.;
+  //
+  SetMode(eSimple);
+
+  // Initilize global scalar bar
+  myGlobalLookupTable = vtkLookupTable::New();
+  myGlobalLookupTable->SetHueRange(0.667,0.0);
+
+  myGlobalScalarBar = vtkScalarBarActor::New();
+  myGlobalScalarBar->SetLookupTable(myGlobalLookupTable);
+  myGlobalLookupTable->Delete();
+
+  // Initilize local scalar bar
+  myLocalLookupTable = vtkLookupTable::New();
+  myLocalLookupTable->SetHueRange(0.667,0.0);
+
+  myLocalScalarBar = vtkScalarBarActor::New();
+  myLocalScalarBar->SetLookupTable(myLocalLookupTable);
+  myLocalLookupTable->Delete();
+
+  myBlack[0] = myBlack[1] = myBlack[2] = 0;
+  myGrey[0] = myGrey[1] = myGrey[2] = 192;
+  //
+  myCtrlVisibility = 1;
+  SetVisibility(1);
+}
+
+
+//----------------------------------------------------------------------------
+VISU_ScalarBarCtrl
+::~VISU_ScalarBarCtrl()
+{
+  myGlobalScalarBar->Delete();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetMode(VISU_ScalarBarCtrl::EMode theMode)
+{
+  myMode = theMode;
+}
+
+VISU_ScalarBarCtrl::EMode
+VISU_ScalarBarCtrl
+::GetMode() const
+{
+  return myMode;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetVisibility(int theVisibility)
+{
+  myGlobalScalarBar->SetVisibility(false);
+  myLocalScalarBar->SetVisibility(false);
+  int aVisibility = (myCtrlVisibility && theVisibility);
+  if(aVisibility){
+    if(myMode != eSimple)
+      myGlobalScalarBar->SetVisibility(aVisibility);
+    myLocalScalarBar->SetVisibility(aVisibility);
+  }
+}
+
+int
+VISU_ScalarBarCtrl
+::GetVisibility() const
+{
+  return myGlobalScalarBar->GetVisibility() || myLocalScalarBar->GetVisibility();
+}
+
+void
+VISU_ScalarBarCtrl
+::SetCtrlVisibility(int theVisibility)
+{
+  myCtrlVisibility = theVisibility;
+}
+
+int
+VISU_ScalarBarCtrl
+::GetCtrlVisibility() const
+{
+  return myCtrlVisibility;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetRangeLocal(float *theRange)
+{
+  myLocalLookupTable->SetTableRange(theRange);
+}
+
+void
+VISU_ScalarBarCtrl
+::SetRangeLocal(float theMin,
+               float theMax)
+{
+  myLocalLookupTable->SetTableRange(theMin,theMax);
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetRangeGlobal(float *theRange)
+{
+  myGlobalLookupTable->SetTableRange(theRange);
+}
+
+void
+VISU_ScalarBarCtrl
+::SetRangeGlobal(float theMin,
+                float theMax)
+{
+  myGlobalLookupTable->SetTableRange(theMin,theMax);
+}
+
+void
+VISU_ScalarBarCtrl
+::SetGlobalRangeIsDefined(bool theIsDefined)
+{
+  myGlobalRangeIsDefined = theIsDefined;
+}
+
+
+//----------------------------------------------------------------------------
+vtkScalarBarActor* 
+VISU_ScalarBarCtrl
+::GetLocalBar() 
+{
+  return myLocalScalarBar;
+}
+
+vtkScalarBarActor* 
+VISU_ScalarBarCtrl
+::GetGlobalBar() 
+{
+  return myGlobalScalarBar;
+}
+
+
+//----------------------------------------------------------------------------
+vtkLookupTable* 
+VISU_ScalarBarCtrl
+::GetLocalTable() 
+{
+  return myLocalLookupTable;
+}
+
+vtkLookupTable* 
+VISU_ScalarBarCtrl
+::GetGlobalTable() 
+{
+  return myGlobalLookupTable;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::AddToRender(vtkRenderer* theRenderer)
+{
+  theRenderer->AddActor2D(myGlobalScalarBar);
+  theRenderer->AddActor2D(myLocalScalarBar);
+  Update();
+}
+
+void
+VISU_ScalarBarCtrl
+::RemoveFromRender(vtkRenderer* theRenderer)
+{
+  theRenderer->RemoveActor2D(myGlobalScalarBar);
+  theRenderer->RemoveActor2D(myLocalScalarBar);
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetWidth(float theWidth)
+{
+  myGlobalScalarBar->SetWidth(theWidth);
+  myLocalScalarBar->SetWidth(theWidth);
+}
+
+float
+VISU_ScalarBarCtrl
+::GetWidth() const
+{
+  return myGlobalScalarBar->GetWidth();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetHeight(float theHeight)
+{
+  myGlobalScalarBar->SetHeight(theHeight);
+  myLocalScalarBar->SetHeight(theHeight);
+}
+
+
+float
+VISU_ScalarBarCtrl
+::GetHeight() const
+{
+  return myGlobalScalarBar->GetHeight();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetPosition(const float* thePosition)
+{
+  myPosition[0] = thePosition[0];
+  myPosition[1] = thePosition[1];
+}
+
+const float* 
+VISU_ScalarBarCtrl::GetPosition() const
+{
+  return myPosition;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetSpacing(const float theSpacing)
+{
+  myDistance = theSpacing;
+}
+
+float
+VISU_ScalarBarCtrl
+::GetSpacing() const
+{
+  return myDistance;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetBicolor(const bool theBicolor)
+{
+  myBicolor = theBicolor;
+}
+
+bool
+VISU_ScalarBarCtrl
+::GetBicolor() const
+{
+  return myBicolor;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetMarkValue(const float theValue) 
+{
+  myMarkedValue = theValue;
+}
+
+float
+VISU_ScalarBarCtrl
+::GetMarkValue() const
+{
+  return myMarkedValue;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::SetIsMarked(const bool theFlag) 
+{
+  myMarked = theFlag;
+}
+
+bool
+VISU_ScalarBarCtrl
+::GetIsMarked() const
+{
+  return myMarked;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::Update()
+{
+  SetVisibility(GetVisibility());
+  //
+  PrepareTables();
+  //
+  if(myBicolor)
+    UpdateForBicolor();
+  else
+    UpdateForColor();
+  //
+  UpdateMarkValue();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::UpdateMarkValue()
+{
+  if(myMarked){
+    if(myMode == eGlobal){
+      MarkValueByColor(myGlobalLookupTable, myMarkedValue, myBlack);
+    }else{
+      MarkValueByColor(myLocalLookupTable, myMarkedValue, myBlack);
+    }
+  }
+  if(myGlobalRangeIsDefined){
+    float aLocalRange[2];
+    myLocalLookupTable->GetTableRange(aLocalRange);
+    MarkValueByColor(myGlobalLookupTable, aLocalRange[0], myBlack);
+    MarkValueByColor(myGlobalLookupTable, aLocalRange[1], myBlack);
+  }
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::PrepareTables(vtkScalarBarActor* theScalarBarActor,
+               vtkLookupTable *theLookupTable,
+               vtkIdType theId)
+{
+  vtkCoordinate * aCoordinate = theScalarBarActor->GetPositionCoordinate();
+  aCoordinate->SetCoordinateSystemToNormalizedViewport();
+  if(theScalarBarActor->GetOrientation() == VTK_ORIENT_VERTICAL){
+    float aWidth = theScalarBarActor->GetWidth();
+    aCoordinate->SetValue(myPosition[0]+theId*(aWidth+myDistance), myPosition[1]);
+  }else{ 
+    float aHeight = theScalarBarActor->GetHeight();
+    aCoordinate->SetValue(myPosition[0], myPosition[1]+theId*(aHeight+myDistance));
+  }
+  // Initialize Lookup Tables and Scalar Bars 
+  theLookupTable->Modified();
+  theLookupTable->Build();
+}
+
+
+void
+VISU_ScalarBarCtrl
+::PrepareTables()
+{
+  if(myMode != eSimple){
+    PrepareTables(myGlobalScalarBar,myGlobalLookupTable,0);
+    PrepareTables(myLocalScalarBar,myLocalLookupTable,1);
+  }else{
+    PrepareTables(myLocalScalarBar,myLocalLookupTable,0);
+  }
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::UpdateForColor()
+{
+  if(myMode == eGlobal){ 
+    FillByColor(myLocalLookupTable,myGrey);
+  }else if(myMode == eLocal){
+    FillByColor(myGlobalLookupTable,myGrey);
+  }
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU_ScalarBarCtrl
+::UpdateForBicolor()
+{
+  myLocalLookupTable->Modified();
+  myLocalLookupTable->Build();
+
+  if(myMode == eSimple){
+    MakeBiColor(myLocalLookupTable);
+    return;
+  }
+
+  if(myMode == eGlobal){
+    MakeBiColor(myGlobalLookupTable);
+    FillByColor(myLocalLookupTable,myGrey);
+  }else if(myMode == eLocal){
+    MakeBiColor(myLocalLookupTable);
+    FillByColor(myGlobalLookupTable,myGrey);
+  }
+}
diff --git a/src/PIPELINE/VISU_ScalarBarCtrl.hxx b/src/PIPELINE/VISU_ScalarBarCtrl.hxx
new file mode 100644 (file)
index 0000000..c1a2f95
--- /dev/null
@@ -0,0 +1,138 @@
+//  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:    VISU_ScalarBarCtrl.hxx
+// Author:  Peter KURNEV
+// Module : VISU
+
+#ifndef VISU_ScalarBarCtrl_HeaderFile
+#define VISU_ScalarBarCtrl_HeaderFile
+
+#include <vtkObject.h>
+
+class vtkRenderer;
+class vtkLookupTable;
+class vtkScalarBarActor;
+
+class VISU_ScalarBarCtrl :  public vtkObject
+{
+public:
+  vtkTypeMacro(VISU_ScalarBarCtrl, vtkObject);
+  static VISU_ScalarBarCtrl* New();
+
+  enum EMode {eSimple, eGlobal, eLocal};
+
+  // Mode
+  void SetMode(EMode theMode);
+  EMode GetMode() const;
+
+  // Ranges
+  void SetRangeGlobal(float theMin,
+                     float theMax);
+  void SetRangeGlobal(float *theRange);
+
+  void SetGlobalRangeIsDefined(bool theIsDefined);
+  
+  void SetRangeLocal(float theMin,
+                    float theMax);
+  void SetRangeLocal(float *theRange);
+  
+  // Selectors
+  vtkScalarBarActor* GetLocalBar();
+  vtkLookupTable* GetLocalTable();
+
+  vtkScalarBarActor* GetGlobalBar();
+  vtkLookupTable* GetGlobalTable();
+  //
+  // Renderer
+  void AddToRender(vtkRenderer* theRenderer); 
+  void RemoveFromRender(vtkRenderer* theRenderer);
+  //
+  // Visibility
+  void SetVisibility(int theFlag);
+  int  GetVisibility() const;
+  //
+  // Visibility
+  void SetCtrlVisibility(int theFlag);
+  int GetCtrlVisibility() const;
+  //
+  // Build
+  void Update();
+  //
+  // Position
+  void  SetWidth(const float theWidth);
+  float GetWidth()const;
+  void  SetHeight(const float theHeight);
+  float GetHeight()const;
+  void  SetPosition(const float* thePosition);
+  const float* GetPosition()const;
+  //
+  // Spacing
+  void  SetSpacing(const float theSpacing);
+  float GetSpacing()const;
+  //
+  // Rainbow/bicolor
+  bool  GetBicolor() const;
+  void  SetBicolor(const bool theBicolor);
+  //
+  // Misc
+  void  SetMarkValue (const float theValue);
+  float GetMarkValue  ()const;
+  void  SetIsMarked(const bool theFlag);
+  bool  GetIsMarked()const;
+  //
+protected:
+  VISU_ScalarBarCtrl();
+  virtual ~VISU_ScalarBarCtrl();
+  
+  void UpdateForBicolor();
+  void UpdateForColor();
+  void UpdateMarkValue();
+  void PrepareTables();
+  
+  void PrepareTables(vtkScalarBarActor* theScalarBarActor,
+                    vtkLookupTable *theLookupTable,
+                    vtkIdType theId);
+  
+protected:
+  EMode myMode;
+  bool myGlobalRangeIsDefined;
+
+  float myDistance;
+  float myPosition[2];
+  bool  myBicolor;
+  int   myCtrlVisibility;
+
+  unsigned char myBlack[3];
+  unsigned char myGrey[3];
+  //
+  bool  myMarked;
+  float myMarkedValue;
+  //
+  vtkScalarBarActor *myGlobalScalarBar;
+  vtkLookupTable *myGlobalLookupTable; 
+
+  vtkScalarBarActor *myLocalScalarBar;
+  vtkLookupTable *myLocalLookupTable; 
+};
+
+#endif
index 473d2de86da3c19e270dfda8a840c7417f71825e..42daa1bc099206e9907686221daf4bd630d63eff 100644 (file)
 
 #include "VISU_ScalarMapPL.hxx"
 #include "VISU_PipeLineUtils.hxx"
+#include "SALOME_ExtractGeometry.h"
 
-vtkStandardNewMacro(VISU_ScalarMapPL);
 
+//============================================================================
+vtkStandardNewMacro(VISU_ScalarMapPL);
 
-VISU_ScalarMapPL::VISU_ScalarMapPL(){
-  myFieldTransform = VISU_FieldTransform::New();
-  //myFieldTransform->DebugOn();
 
+//----------------------------------------------------------------------------
+VISU_ScalarMapPL
+::VISU_ScalarMapPL()
+{
   myMapperTable = VISU_LookupTable::New();
   myMapperTable->SetScale(VTK_SCALE_LINEAR);
   myMapperTable->SetHueRange(0.667,0.0);
@@ -45,46 +48,90 @@ VISU_ScalarMapPL::VISU_ScalarMapPL(){
   myBarTable->SetHueRange(0.667,0.0);
 
   myExtractor = VISU_Extractor::New();
-  //myExtractor->DebugOn();
+  myExtractor->SetInput(myExtractGeometry->GetOutput());
+
+  myFieldTransform = VISU_FieldTransform::New();
+  myFieldTransform->SetInput(myExtractor->GetOutput());
+
   myIsShrinkable = true;
 }
 
 
-VISU_ScalarMapPL::~VISU_ScalarMapPL(){
-  myFieldTransform->UnRegisterAllOutputs();
+VISU_ScalarMapPL
+::~VISU_ScalarMapPL()
+{
   myFieldTransform->Delete();
-  myMapperTable->Delete();;
+  myMapperTable->Delete();
   myBarTable->Delete();
-  myExtractor->UnRegisterAllOutputs();
   myExtractor->Delete();
 }
 
 
-void VISU_ScalarMapPL::ShallowCopy(VISU_PipeLine *thePipeLine){
-  VISU_PipeLine::ShallowCopy(thePipeLine);
+//----------------------------------------------------------------------------
+void
+VISU_ScalarMapPL
+::ShallowCopy(VISU_PipeLine *thePipeLine)
+{
   if(VISU_ScalarMapPL *aPipeLine = dynamic_cast<VISU_ScalarMapPL*>(thePipeLine)){
     SetScalarRange(aPipeLine->GetScalarRange());
     SetScalarMode(aPipeLine->GetScalarMode());
     SetNbColors(aPipeLine->GetNbColors());
     SetScaling(aPipeLine->GetScaling());
-    //Update();
+    SetMapScale(aPipeLine->GetMapScale());
   }
+  Superclass::ShallowCopy(thePipeLine);
 }
 
 
-int VISU_ScalarMapPL::GetScalarMode(){
+//----------------------------------------------------------------------------
+int
+VISU_ScalarMapPL
+::GetScalarMode()
+{
   return myExtractor->GetScalarMode();
 }
-void VISU_ScalarMapPL::SetScalarMode(int theScalarMode){
+
+void
+VISU_ScalarMapPL
+::SetScalarMode(int theScalarMode)
+{
+  vtkDataSet *input = GetInput();
+  if (input){
+    if(input->GetPointData()->GetNumberOfArrays()){
+      vtkPointData *inData = input->GetPointData();
+      if(!inData->GetAttribute(vtkDataSetAttributes::VECTORS)) {
+       if (theScalarMode==0){
+         return;
+       }
+      }
+    }
+    else {
+      vtkCellData *inData = input->GetCellData();
+      if(!inData->GetAttribute(vtkDataSetAttributes::VECTORS)){
+       if (theScalarMode==0){
+         return;
+       }
+      }
+    }
+  }
+  //
   myExtractor->SetScalarMode(theScalarMode);
   Modified();
 }
 
 
-int VISU_ScalarMapPL::GetScaling() {
+//----------------------------------------------------------------------------
+int
+VISU_ScalarMapPL
+::GetScaling() 
+{
   return myBarTable->GetScale();
 }
-void VISU_ScalarMapPL::SetScaling(int theScaling) {
+
+void
+VISU_ScalarMapPL
+::SetScaling(int theScaling) 
+{
   myBarTable->SetScale(theScaling);
   if(theScaling == VTK_SCALE_LOG10)
     myFieldTransform->SetScalarTransform(&(VISU_FieldTransform::Log10));
@@ -94,60 +141,95 @@ void VISU_ScalarMapPL::SetScaling(int theScaling) {
 }
 
 
-float* VISU_ScalarMapPL::GetScalarRange() {
+//----------------------------------------------------------------------------
+float* 
+VISU_ScalarMapPL
+::GetScalarRange() 
+{
   return myFieldTransform->GetScalarRange();
 }
-void VISU_ScalarMapPL::SetScalarRange(float theRange[2]){
+
+void
+VISU_ScalarMapPL
+::SetScalarRange(float theRange[2])
+{
   myFieldTransform->SetScalarRange(theRange);
   myBarTable->SetRange(theRange);
   Modified();
 }
-void VISU_ScalarMapPL::SetScalarMin(float theValue){
+
+void
+VISU_ScalarMapPL
+::SetScalarMin(float theValue)
+{
   float aScalarRange[2] = {theValue, GetScalarRange()[1]};
   SetScalarRange(aScalarRange);
 }
-void VISU_ScalarMapPL::SetScalarMax(float theValue){
+
+void
+VISU_ScalarMapPL
+::SetScalarMax(float theValue)
+{
   float aScalarRange[2] = {GetScalarRange()[0], theValue};
   SetScalarRange(aScalarRange);
 }
 
 
-void VISU_ScalarMapPL::SetNbColors(int theNbColors) {
+//----------------------------------------------------------------------------
+void
+VISU_ScalarMapPL
+::SetNbColors(int theNbColors) 
+{
   myMapperTable->SetNumberOfColors(theNbColors);
   myBarTable->SetNumberOfColors(theNbColors);
   Modified();
 }
-int VISU_ScalarMapPL::GetNbColors() {
+
+int
+VISU_ScalarMapPL
+::GetNbColors() 
+{
   return myMapperTable->GetNumberOfColors();
 }
 
 
-VISU_ScalarMapPL::THook* VISU_ScalarMapPL::DoHook(){
+//----------------------------------------------------------------------------
+VISU_ScalarMapPL::THook* 
+VISU_ScalarMapPL
+::DoHook()
+{
   myMapper->SetColorModeToMapScalars();
   myMapper->ScalarVisibilityOn();
   return myFieldTransform->GetUnstructuredGridOutput();
 }
 
 
-void VISU_ScalarMapPL::Init(){
-  //SetSourceRange();
+void
+VISU_ScalarMapPL
+::Init()
+{
+  SetScalarMode(0);
+  SetSourceRange();
 }
 
-
-void VISU_ScalarMapPL::Build() {
-  myExtractor->SetInput(GetInput2());
-  myFieldTransform->SetInput(myExtractor->GetOutput());
+void
+VISU_ScalarMapPL
+::Build() 
+{
   myMapper->SetInput(DoHook());
+  Update();
 }
 
 
-void VISU_ScalarMapPL::Update() {
+void
+VISU_ScalarMapPL
+::Update() 
+{ 
   float *aRange = myFieldTransform->GetScalarRange();
   float aScalarRange[2] = {aRange[0], aRange[1]};
   if(myBarTable->GetScale() == VTK_SCALE_LOG10)
     VISU_LookupTable::ComputeLogRange(aRange,aScalarRange);
   myMapperTable->SetRange(aScalarRange);
-  myMapperTable->SetMapScale(1.0);
 
   myMapperTable->Build();
   myBarTable->Build();
@@ -159,21 +241,51 @@ void VISU_ScalarMapPL::Update() {
 }
 
 
-void VISU_ScalarMapPL::SetMapScale(float theMapScale){
+//----------------------------------------------------------------------------
+VISU_LookupTable *
+VISU_ScalarMapPL
+::GetMapperTable()
+{ 
+  return myMapperTable;
+}
+
+VISU_LookupTable*
+VISU_ScalarMapPL
+::GetBarTable()
+{
+  return myBarTable;
+}
+
+
+//----------------------------------------------------------------------------
+void 
+VISU_ScalarMapPL
+::SetMapScale(float theMapScale)
+{
   myMapperTable->SetMapScale(theMapScale);
   myMapperTable->Build();
 }
-float VISU_ScalarMapPL::GetMapScale(){
+
+float
+VISU_ScalarMapPL::GetMapScale()
+{
   return myMapperTable->GetMapScale();
 }
 
 
-void VISU_ScalarMapPL::GetSourceRange(float theRange[2]){
+//----------------------------------------------------------------------------
+void
+VISU_ScalarMapPL
+::GetSourceRange(float theRange[2])
+{
   myExtractor->Update();
   myExtractor->GetOutput()->GetScalarRange(theRange);
 }
 
-void VISU_ScalarMapPL::SetSourceRange(){
+void
+VISU_ScalarMapPL
+::SetSourceRange()
+{
   float aRange[2];
   GetSourceRange(aRange);
   SetScalarRange(aRange);
index b535828514d01134e177b403d46ca9abec74b8e2..1d810fb93cfcca60630bee33aa835bc6b3e510df 100644 (file)
 #include "VISU_PipeLine.hxx"
 #include "VISU_ScalarBarActor.hxx"
 
+class vtkCell;
 class vtkDataSet;
 
 class VISU_Extractor;
 class VISU_FieldTransform;
 
-class VISU_ScalarMapPL : public VISU_PipeLine{
+
+//============================================================================
+class VISU_ScalarMapPL : public VISU_PipeLine
+{
 protected:
   VISU_ScalarMapPL();
   VISU_ScalarMapPL(const VISU_ScalarMapPL&);
+
+  virtual
+  ~VISU_ScalarMapPL();
+
 public:
+  //----------------------------------------------------------------------------
   vtkTypeMacro(VISU_ScalarMapPL,VISU_PipeLine);
-  static VISU_ScalarMapPL* New();
-  virtual ~VISU_ScalarMapPL();
-  virtual void ShallowCopy(VISU_PipeLine *thePipeLine);
 
-  virtual int GetScalarMode();
-  virtual void SetScalarMode(int theScalarMode = 0);
+  static
+  VISU_ScalarMapPL* 
+  New();
+
+  virtual
+  void
+  ShallowCopy(VISU_PipeLine *thePipeLine);
+
+  //----------------------------------------------------------------------------
+  virtual
+  int
+  GetScalarMode();
+
+  virtual
+  void
+  SetScalarMode(int theScalarMode = 0);
   
-  virtual int GetScaling();
-  virtual void SetScaling(int theScaling = VTK_SCALE_LINEAR);
+  virtual
+  int
+  GetScaling();
+  virtual
+  void
+  SetScaling(int theScaling = VTK_SCALE_LINEAR);
   
-  virtual float* GetScalarRange();
-  virtual void SetScalarRange(float theRange[2]);
-  virtual void SetScalarMin(float theValue);
-  virtual void SetScalarMax(float theValue);
+  virtual
+  float* 
+  GetScalarRange();
+
+  virtual
+  void
+  SetScalarRange(float theRange[2]);
+
+  virtual
+  void
+  SetScalarMin(float theValue);
+
+  virtual
+  void
+  SetScalarMax(float theValue);
   
-  virtual void SetNbColors(int theNbColors = 16);
-  virtual int GetNbColors();
+  virtual
+  void
+  SetNbColors(int theNbColors = 16);
+
+  virtual
+  int
+  GetNbColors();
   
+  //----------------------------------------------------------------------------
 public:
-  virtual void Init();
-  virtual void Build();
-  virtual void Update();
+  virtual
+  void
+  Init();
+
+  virtual
+  void
+  Build();
+
+  virtual
+  void
+  Update();
   
-  virtual VISU_LookupTable *GetMapperTable(){ return myMapperTable;}
-  virtual VISU_LookupTable *GetBarTable(){ return myBarTable;}
+  virtual
+  VISU_LookupTable*
+  GetMapperTable();
+
+  virtual 
+  VISU_LookupTable*
+  GetBarTable();
+
+  virtual 
+  void
+  SetMapScale(float theMapScale = 1.0);
+
+  virtual
+  float
+  GetMapScale();
 
-  virtual void SetMapScale(float theMapScale = 1.0);
-  virtual float GetMapScale();
+  virtual
+  void
+  GetSourceRange(float theRange[2]);
 
-  virtual void GetSourceRange(float theRange[2]);
-  virtual void SetSourceRange();
+  virtual
+  void
+  SetSourceRange();
 
+  //----------------------------------------------------------------------------
 protected:
   typedef vtkDataSet THook;
   virtual THook* DoHook();
 
-  VISU_LookupTable *myMapperTable, *myBarTable;
-  VISU_FieldTransform *myFieldTransform;
+  VISU_LookupTable* myMapperTable;
+  VISU_LookupTable* myBarTable;
+  VISU_FieldTransform* myFieldTransform;
   VISU_Extractor* myExtractor;
 };
   
diff --git a/src/PIPELINE/VISU_SphereWidget.cxx b/src/PIPELINE/VISU_SphereWidget.cxx
new file mode 100755 (executable)
index 0000000..2134aeb
--- /dev/null
@@ -0,0 +1,622 @@
+#include "VISU_SphereWidget.hxx"
+
+#include <vtkActor.h>
+#include <vtkAssemblyNode.h>
+#include <vtkAssemblyPath.h>
+#include <vtkCallbackCommand.h>
+#include <vtkCamera.h>
+#include <vtkCellPicker.h>
+#include <vtkDoubleArray.h>
+#include <vtkMath.h>
+#include <vtkObjectFactory.h>
+#include <vtkPolyData.h>
+#include <vtkPolyDataMapper.h>
+#include <vtkProperty.h>
+#include <vtkRenderWindowInteractor.h>
+#include <vtkRenderer.h>
+#include <vtkSphere.h>
+#include <vtkSphereSource.h>
+#include <vtkPoints.h>
+#include <vtkSphere.h>
+#include <vtkImplicitSum.h>
+#include <vtkImplicitFunction.h>
+
+vtkCxxRevisionMacro(VISU_SphereWidget, "$Revision$");
+vtkStandardNewMacro(VISU_SphereWidget);
+//====================================================================
+// function:
+// purpose:
+//====================================================================
+VISU_SphereWidget::VISU_SphereWidget()
+{
+  myState = VISU_SphereWidget::Start;
+  this->EventCallbackCommand->SetCallback(VISU_SphereWidget::ProcessEvents);
+  
+  //Build the representation of the widget
+  mySphereSource = vtkSphereSource::New();
+  mySphereSource->SetThetaResolution(16);
+  mySphereSource->SetPhiResolution(15);
+  mySphereSource->LatLongTessellationOn();
+  mySphereMapper = vtkPolyDataMapper::New();
+  mySphereMapper->SetInput(mySphereSource->GetOutput());
+  mySphereActor = vtkActor::New();
+  mySphereActor->SetMapper(mySphereMapper);
+  //
+  // Define the point coordinates
+  float bounds[6];
+  for(int i = 0; i < 6; i += 2){
+    bounds[i]=-.5;
+    bounds[i+1]=-bounds[i];
+  }
+  // Initial creation of the widget, serves to initialize it
+  PlaceWidget(bounds);
+
+  //Manage the picking stuff
+  myPicker = vtkCellPicker::New();
+  myPicker->SetTolerance(0.005); //need some fluff
+  myPicker->AddPickList(mySphereActor);
+  myPicker->PickFromListOn();
+  
+  // Set up the initial properties
+  mySphereProperty = NULL;
+  mySelectedSphereProperty = NULL;
+  CreateDefaultProperties();
+  myRmin=1.e-7;
+
+  mySphere=vtkSphere::New();
+  myImplicitSum=vtkImplicitSum::New();
+  myImplicitSum->AddFunction(mySphere,-1.0);
+  
+  myRatio = 2.0;
+}
+//====================================================================
+// function: ~
+// purpose:
+//====================================================================
+VISU_SphereWidget::~VISU_SphereWidget()
+{
+  mySphereActor->Delete();
+  mySphereMapper->Delete();
+  mySphereSource->Delete();
+
+  myPicker->Delete();
+
+  if ( mySphereProperty ) {
+    mySphereProperty->Delete();
+  }
+  if ( mySelectedSphereProperty ) {
+    mySelectedSphereProperty->Delete();
+  }
+  mySphere->Delete();
+  myImplicitSum->Delete();
+}
+//====================================================================
+// function: SetThetaResolution
+// purpose :
+//====================================================================
+void VISU_SphereWidget::SetThetaResolution(int r) 
+{ 
+  mySphereSource->SetThetaResolution(r); 
+}
+//====================================================================
+// function: GetThetaResolution
+// purpose :
+//====================================================================
+int VISU_SphereWidget::GetThetaResolution() 
+{ 
+  return mySphereSource->GetThetaResolution(); 
+}
+//====================================================================
+// function: SetPhiResolution
+// purpose :
+//====================================================================
+void VISU_SphereWidget::SetPhiResolution(int r)
+{ 
+  mySphereSource->SetPhiResolution(r); 
+}
+//====================================================================
+// function: SetPhiResolution
+// purpose :
+//====================================================================
+int VISU_SphereWidget::GetPhiResolution()   
+{ 
+  return mySphereSource->GetPhiResolution(); 
+}
+//====================================================================
+// function: SetRadius
+// purpose :
+//====================================================================
+void VISU_SphereWidget::SetRadius(float theRadius) 
+{
+  if ( theRadius <= myRmin ) {
+    theRadius = myRmin;
+  }
+  mySphereSource->SetRadius(theRadius); 
+  mySphere->SetRadius(theRadius);
+}
+//====================================================================
+// function: GetRadius
+// purpose :
+//====================================================================
+float VISU_SphereWidget::GetRadius()
+{ 
+  return mySphereSource->GetRadius(); 
+}
+//====================================================================
+// function: SetCenter
+// purpose :
+//====================================================================
+void VISU_SphereWidget::SetCenter(float theCenter[3]) 
+{
+  mySphereSource->SetCenter(theCenter);
+  mySphere->SetCenter(theCenter);
+}
+//====================================================================
+// function: SetCenter
+// purpose :
+//====================================================================
+void VISU_SphereWidget::SetCenter(float theX, float theY, float theZ) 
+{
+  float aCenter[3] = {theX, theY, theZ};
+  SetCenter(aCenter);
+}
+
+//====================================================================
+// function: GetCenter
+// purpose :
+//====================================================================
+float*  VISU_SphereWidget::GetCenter() 
+{
+  return mySphereSource->GetCenter();
+}
+//====================================================================
+// function: GetCenter
+// purpose :
+//====================================================================
+void  VISU_SphereWidget::GetCenter(float theCenter[3]) 
+{
+  mySphereSource->GetCenter(theCenter);
+}
+//====================================================================
+// function: GetSphereProperty
+// purpose :
+//====================================================================
+vtkProperty*  VISU_SphereWidget::GetSphereProperty ()
+{
+  return mySphereProperty;
+}
+//====================================================================
+// function: GetSelectedSphereProperty
+// purpose :
+//====================================================================
+vtkProperty*  VISU_SphereWidget::GetSelectedSphereProperty ()
+{
+  return mySelectedSphereProperty;
+}
+//====================================================================
+// function: ImplicitFunction
+// purpose :
+//====================================================================
+vtkImplicitFunction* VISU_SphereWidget::ImplicitFunction()
+{
+  return myImplicitSum;
+}
+//====================================================================
+// function: SetEnabled
+// purpose :
+//====================================================================
+void VISU_SphereWidget::SetEnabled(int enabling)
+{
+  if ( !Interactor )    {
+    vtkErrorMacro(<<"The interactor must be set prior to enabling/disabling widget");
+    return;
+  }
+
+  if ( enabling )  {
+    vtkDebugMacro(<<"Enabling sphere widget");
+    if ( Enabled ) {//already enabled, just return
+      return;
+    }
+    
+    if ( ! CurrentRenderer )    {
+      int aPos[2];
+      Interactor->GetLastEventPosition(aPos);
+      CurrentRenderer=Interactor->FindPokedRenderer(aPos[0], aPos[1]);
+      if (!CurrentRenderer) {
+        return;
+      }
+    }
+
+    Enabled = 1;
+
+    // listen for the following events
+    Interactor->AddObserver(vtkCommand::MouseMoveEvent, 
+                            EventCallbackCommand, 
+                            Priority);
+    Interactor->AddObserver(vtkCommand::LeftButtonPressEvent, 
+                            EventCallbackCommand, 
+                            Priority);
+    Interactor->AddObserver(vtkCommand::LeftButtonReleaseEvent, 
+                            EventCallbackCommand,
+                            Priority);
+    Interactor->AddObserver(vtkCommand::MiddleButtonPressEvent, 
+                            EventCallbackCommand,
+                            Priority);
+    Interactor->AddObserver(vtkCommand::MiddleButtonReleaseEvent, 
+                            EventCallbackCommand,
+                            Priority);
+
+    // Add the sphere
+    CurrentRenderer->AddActor(mySphereActor);
+    mySphereActor->SetProperty(mySphereProperty);
+    mySphere->SetCenter(mySphereSource->GetCenter());
+    mySphere->SetRadius(mySphereSource->GetRadius());
+    
+    InvokeEvent(vtkCommand::EnableEvent,NULL); //!!!see what will be done
+  }
+  //disabling----------------------------------------------------------
+  else {
+    vtkDebugMacro(<<"Disabling sphere widget");
+
+    if ( !Enabled ){ //already disabled, just return
+      return;
+    }
+    
+    Enabled = 0;
+
+    // don't listen for events any more
+    Interactor->RemoveObserver(EventCallbackCommand);
+
+    // turn off the sphere
+    CurrentRenderer->RemoveActor(mySphereActor);
+    InvokeEvent(vtkCommand::DisableEvent,NULL);
+    CurrentRenderer = NULL;
+  }
+
+  Interactor->Render();
+}
+//====================================================================
+// function:ProcessEvents
+// purpose:
+//====================================================================
+void VISU_SphereWidget::ProcessEvents(vtkObject* vtkNotUsed(object), 
+                                    unsigned long event,
+                                    void* clientdata, 
+                                    void* vtkNotUsed(calldata))
+{
+  VISU_SphereWidget* self = reinterpret_cast<VISU_SphereWidget *>( clientdata );
+
+  switch(event)  {
+    case vtkCommand::LeftButtonPressEvent:
+      self->OnLeftButtonDown();
+      break;
+    case vtkCommand::LeftButtonReleaseEvent:
+      self->OnLeftButtonUp();
+      break;
+    case vtkCommand::MiddleButtonPressEvent:
+      self->OnMiddleButtonDown();
+      break;
+    case vtkCommand::MiddleButtonReleaseEvent:
+      self->OnMiddleButtonUp();
+      break;
+    case vtkCommand::MouseMoveEvent:
+      self->OnMouseMove();
+      break;
+    default:
+      break;
+  }
+}
+//====================================================================
+// function:OnLeftButtonDown
+// purpose:
+//====================================================================
+void VISU_SphereWidget::OnLeftButtonDown()
+{
+  int X = Interactor->GetEventPosition()[0];
+  int Y = Interactor->GetEventPosition()[1];
+
+  // Okay, make sure that the pick is in the current renderer
+  vtkRenderer *aRenderer = Interactor->FindPokedRenderer(X,Y);
+  //
+  if (aRenderer != CurrentRenderer) {
+    myState = VISU_SphereWidget::Outside;
+    return;
+  }
+  // Okay, we can process this. Try to pick handles first;
+  // if no places picked, then try to pick the sphere.
+  myPicker->Pick(X, Y, 0., CurrentRenderer);
+  if(vtkAssemblyPath *aPath = myPicker->GetPath()){
+    if(aPath->GetFirstNode()->GetProp() == mySphereActor){
+      myState = VISU_SphereWidget::Moving;
+      HighlightSphere(1);
+    }
+  }else{
+    myState = VISU_SphereWidget::Outside;
+    return;
+  }
+  //
+  EventCallbackCommand->SetAbortFlag(1);
+  StartInteraction();
+  InvokeEvent(vtkCommand::StartInteractionEvent,NULL);
+  Interactor->Render();
+}
+//====================================================================
+// function:OnMouseMove
+// purpose:
+//====================================================================
+void VISU_SphereWidget::OnMouseMove()
+{
+  // See whether we're active
+  if ( myState == VISU_SphereWidget::Outside || 
+       myState == VISU_SphereWidget::Start )    {
+    return;
+  }
+  
+  int X = Interactor->GetEventPosition()[0];
+  int Y = Interactor->GetEventPosition()[1];
+
+  // Do different things depending on state
+  // Calculations everybody does
+  double focalPoint[4], pickPoint[4], prevPickPoint[4], z;
+
+  vtkRenderer *aRenderer=Interactor->FindPokedRenderer(X, Y);
+  vtkCamera *aCamera=aRenderer->GetActiveCamera();
+  if (!aCamera ) {
+    return;
+  }
+  // Compute the two points defining the motion vector
+  aCamera->GetFocalPoint(focalPoint);
+  ComputeWorldToDisplay(focalPoint[0], 
+                       focalPoint[1],
+                       focalPoint[2], 
+                       focalPoint);
+  z = focalPoint[2];
+  ComputeDisplayToWorld(double(Interactor->GetLastEventPosition()[0]),
+                        double(Interactor->GetLastEventPosition()[1]),
+                        z, 
+                        prevPickPoint);
+  ComputeDisplayToWorld(double(X), double(Y), z, pickPoint);
+
+  // Process the motion
+  if ( myState == VISU_SphereWidget::Moving ) {
+    Translate(prevPickPoint, pickPoint);
+  }
+  else if ( myState == VISU_SphereWidget::Scaling ) {
+    Scale(prevPickPoint, pickPoint, X, Y);
+  }
+  // Interact, if desired
+  EventCallbackCommand->SetAbortFlag(1);
+  InvokeEvent(vtkCommand::InteractionEvent,NULL);
+  //
+  Interactor->Render();
+}
+//====================================================================
+// function:OnLeftButtonUp
+// purpose:
+//====================================================================
+void VISU_SphereWidget::OnLeftButtonUp()
+{
+  if ( myState == VISU_SphereWidget::Outside ) {
+    return;
+  }
+
+  myState = VISU_SphereWidget::Start;
+  HighlightSphere(0);
+
+  EventCallbackCommand->SetAbortFlag(1);
+  EndInteraction();
+  InvokeEvent(vtkCommand::EndInteractionEvent,NULL);
+  
+  Interactor->Render();
+}
+//====================================================================
+// function:OnMiddleButtonDown
+// purpose:
+//====================================================================
+void VISU_SphereWidget::OnMiddleButtonDown()
+{
+  myState = VISU_SphereWidget::Scaling;
+
+  int X = Interactor->GetEventPosition()[0];
+  int Y = Interactor->GetEventPosition()[1];
+
+  // Okay, make sure that the pick is in the current renderer
+  vtkRenderer *aRenderer = Interactor->FindPokedRenderer(X,Y);
+  if (aRenderer!=CurrentRenderer) {
+    myState = VISU_SphereWidget::Outside;
+    return;
+  }
+  
+  // Okay, we can process this. Try to pick handles first;
+  // if no handles picked, then pick the bounding box.
+  myPicker->Pick(X, Y, 0., CurrentRenderer);
+  vtkAssemblyPath *aPath = myPicker->GetPath();
+  if ( !aPath ) {
+    myState=VISU_SphereWidget::Outside;
+    HighlightSphere(0);
+    return;
+  }
+  
+  HighlightSphere(1);
+
+  EventCallbackCommand->SetAbortFlag(1);
+  StartInteraction();
+  InvokeEvent(vtkCommand::StartInteractionEvent,NULL);
+  //
+  Interactor->Render();
+}
+//====================================================================
+// function:OnMiddleButtonUp
+// purpose:
+//====================================================================
+void VISU_SphereWidget::OnMiddleButtonUp()
+{
+  if ( myState == VISU_SphereWidget::Outside ) {
+    return;
+  }
+  myState = VISU_SphereWidget::Start;
+  HighlightSphere(0);
+  
+  EventCallbackCommand->SetAbortFlag(1);
+  EndInteraction();
+  InvokeEvent(vtkCommand::EndInteractionEvent,NULL);
+  //
+  Interactor->Render();
+}
+//====================================================================
+// function:Translate
+// purpose:
+//====================================================================
+void VISU_SphereWidget::Translate(double *p1, double *p2)
+{
+  float v[3], aC[3], aC1[3];
+  //
+  v[0] = p2[0] - p1[0];
+  v[1] = p2[1] - p1[1];
+  v[2] = p2[2] - p1[2];
+  //  
+  mySphereSource->GetCenter(aC);
+  aC1[0] = aC[0] + v[0];
+  aC1[1] = aC[1] + v[1];
+  aC1[2] = aC[2] + v[2];
+  mySphereSource->SetCenter(aC1);
+  mySphere->SetCenter(mySphereSource->GetCenter());
+  mySphere->SetRadius(mySphereSource->GetRadius());
+}
+//====================================================================
+// function:Scale
+// purpose:
+//====================================================================
+void VISU_SphereWidget::Scale(double *p1, double *p2, 
+                              int aX, int aY)
+{
+  double v[3];
+  v[0] = p2[0] - p1[0];
+  v[1] = p2[1] - p1[1];
+  v[2] = p2[2] - p1[2];
+  //
+  float aC[3], aR, sf, aR1;
+  aR=mySphereSource->GetRadius();
+  mySphereSource->GetCenter(aC);
+  sf=vtkMath::Norm(v)/aR;
+  int aCoordLast[2], iDX, iDY, iSign;
+  Interactor->GetLastEventPosition(aCoordLast);
+  //
+  iDX=aX-aCoordLast[0];
+  iDY=aCoordLast[1]-aY; 
+  iSign=(iDX+iDY>0)? 1 : -1;
+  sf=1.+iSign*sf;
+  aR1=sf*aR;
+  if (aR1<myRmin){
+    aR1=myRmin;
+  }
+  mySphereSource->SetRadius(aR1);
+  mySphere->SetCenter(mySphereSource->GetCenter());
+  mySphere->SetRadius(mySphereSource->GetRadius());
+}
+//====================================================================
+// function:GetSphere
+// purpose:
+//====================================================================
+void VISU_SphereWidget::GetSphere(vtkSphere *sphere)
+{
+  sphere->SetRadius(mySphereSource->GetRadius());
+  sphere->SetCenter(mySphereSource->GetCenter());
+}
+//====================================================================
+// function:HighlightSphere
+// purpose:
+//====================================================================
+void VISU_SphereWidget::HighlightSphere(int highlight)
+{
+  if ( highlight )  {
+    this->ValidPick = 1;
+    myPicker->GetPickPosition(this->LastPickPosition);// -> def in vtk3DWidget
+    mySphereActor->SetProperty(mySelectedSphereProperty);
+  }
+  else {
+    mySphereActor->SetProperty(mySphereProperty);
+  }
+}
+//====================================================================
+// function:CreateDefaultProperties
+// purpose:
+//====================================================================
+void VISU_SphereWidget::CreateDefaultProperties()
+{
+  if (!mySphereProperty)    {
+    mySphereProperty = vtkProperty::New();
+    mySphereProperty->SetColor(0.,.5, .7);
+    mySphereProperty->SetSpecular(0.5);
+    mySphereProperty->SetRepresentationToWireframe();
+  }
+  if (!mySelectedSphereProperty)    {
+    mySelectedSphereProperty = vtkProperty::New();
+    mySelectedSphereProperty->SetColor(0.5, 0.5, 0.);
+    mySelectedSphereProperty->SetSpecular(1.);
+    mySelectedSphereProperty->SetRepresentationToWireframe();
+  }
+}
+//====================================================================
+// function:PlaceWidget
+// purpose:
+//====================================================================
+void VISU_SphereWidget::PlaceWidget(float bds[6])
+{
+  float bounds[6], center[3], radius;
+
+  this->AdjustBounds(bds, bounds, center);
+  float dX, dY, dZ;
+  //
+  dX=bounds[1]-bounds[0];
+  dY=bounds[3]-bounds[2];
+  dZ=bounds[5]-bounds[4];
+  radius = dX;
+  if (radius>dY){
+    radius = dY;
+  }
+  if (radius>dZ)   {
+    radius=dZ;
+  }
+  radius*=0.5;
+
+  mySphereSource->SetCenter(center);
+  mySphereSource->SetRadius(radius);
+  mySphereSource->Update();
+  //
+  for (int i=0; i<6; i++) {
+    InitialBounds[i]=bounds[i];
+  }
+  InitialLength = sqrt((bounds[1]-bounds[0])*(bounds[1]-bounds[0]) +
+                       (bounds[3]-bounds[2])*(bounds[3]-bounds[2]) +
+                       (bounds[5]-bounds[4])*(bounds[5]-bounds[4]));
+
+  static float EPS = 1.0E-1;
+  myRmin = EPS*InitialLength;
+
+}
+
+//====================================================================
+// function:ChangeRadius
+// purpose:
+//====================================================================
+void VISU_SphereWidget::ChangeRadius(bool up)
+{
+  SetRadius( GetRadius() * ( up ? myRatio : 1 / myRatio ) );
+}
+//====================================================================
+// function:GetPolyData
+// purpose:
+//====================================================================
+void VISU_SphereWidget::GetPolyData(vtkPolyData *pd)
+{ 
+  pd->ShallowCopy(mySphereSource->GetOutput()); 
+}
+//====================================================================
+// function:PrintSelf
+// purpose:
+//====================================================================
+void VISU_SphereWidget::PrintSelf(ostream& os, vtkIndent indent)
+{
+  this->Superclass::PrintSelf(os,indent);
+}
diff --git a/src/PIPELINE/VISU_SphereWidget.hxx b/src/PIPELINE/VISU_SphereWidget.hxx
new file mode 100755 (executable)
index 0000000..040a418
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef __VISU_SphereWidget_h
+#define __VISU_SphereWidget_h
+
+#include "VISU_ImplicitFunctionWidget.hxx"
+
+class VISU_UnScaledActor;
+
+class vtkActor;
+class vtkPolyDataMapper;
+class vtkPoints;
+class vtkPolyData;
+class vtkSphereSource;
+class vtkSphere;
+class vtkCellPicker;
+class vtkProperty;
+class vtkSphere;
+class vtkImplicitSum;
+class vtkImplicitFunction;
+//
+class VISU_SphereWidget : public VISU_ImplicitFunctionWidget
+{
+public:
+  // Description:
+  // Instantiate the object.
+  static VISU_SphereWidget *New();
+  vtkTypeRevisionMacro(VISU_SphereWidget,VISU_ImplicitFunctionWidget);
+  void PrintSelf(ostream& os, vtkIndent indent);
+
+  virtual vtkImplicitFunction* ImplicitFunction();
+  
+  // Description:
+  // Methods that satisfy the superclass' API.
+  virtual void SetEnabled(int);
+  //
+  //PlaceWidget
+  virtual void PlaceWidget(float bounds[6]);
+  //
+  // Description:
+  // Set/Get the resolution of the sphere in the Theta direction.
+  void SetThetaResolution(int r);
+  int GetThetaResolution(); 
+  // Description:
+  // Set/Get the resolution of the sphere in the Phi direction.
+  void SetPhiResolution(int r);
+  int GetPhiResolution();
+
+  // Description:
+  // Set/Get the radius of sphere. Default is .5.
+  void SetRadius(float r); 
+  float GetRadius();
+  
+
+  // Description:
+  // Set/Get the center of the sphere.
+  void SetCenter(float x, float y, float z); 
+  void SetCenter(float x[3]); 
+  
+  float* GetCenter(); 
+  void GetCenter(float xyz[3]); 
+  
+  // Description:
+  // Set the ratio of the radius changing.
+  void SetRatio(float r) { myRatio = r; } 
+  float GetRatio() { return myRatio; } 
+
+  void ChangeRadius(bool up);
+
+  void GetPolyData(vtkPolyData *pd);
+
+  void GetSphere(vtkSphere *sphere);
+
+  
+  vtkProperty* GetSphereProperty ();
+  vtkProperty* GetSelectedSphereProperty ();
+  
+    
+protected:
+  VISU_SphereWidget();
+  ~VISU_SphereWidget();
+
+  //handles the events
+  static void ProcessEvents(vtkObject* object, 
+                            unsigned long event,
+                            void* clientdata, 
+                            void* calldata);
+
+  // ProcessEvents() dispatches to these methods.
+  void OnLeftButtonDown();
+  void OnLeftButtonUp();
+  void OnMiddleButtonDown();
+  void OnMiddleButtonUp();
+  void OnMouseMove();
+
+  void HighlightSphere(int highlight);
+
+  // Methods to manipulate the sphere widget
+  void Translate(double *p1, double *p2);
+  void Scale(double *p1, double *p2, int X, int Y);
+
+  //virtual void SizeHandles();
+  void CreateDefaultProperties();
+
+  //BTX - manage the state of the widget
+  int myState;
+  enum WidgetState
+  {
+    Start=0,
+    Moving,
+    Scaling,
+    Positioning,
+    Outside
+  };
+  //ETX
+  // the sphere
+  vtkActor       *mySphereActor;
+  vtkPolyDataMapper *mySphereMapper;
+  vtkSphereSource   *mySphereSource;
+  //
+  // the Picker
+  vtkCellPicker *myPicker;
+  // Properties used to control the appearance of selected objects and
+  // the manipulator in general.
+  vtkProperty *mySphereProperty;
+  vtkProperty *mySelectedSphereProperty;
+  float myRmin;
+  vtkSphere *mySphere;
+  vtkImplicitSum* myImplicitSum;
+  float myRatio;
+private:
+  VISU_SphereWidget(const VISU_SphereWidget&);  //Not implemented
+  void operator=(const VISU_SphereWidget&);  //Not implemented
+};
+
+#endif
index 9b9f781e77b42214f5bfbfc1e445b3d9b6db1647..6690dc42d80fbce38cd2b2d3fb9941783b3ac879 100644 (file)
@@ -74,14 +74,15 @@ VISU_StreamLinesPL::~VISU_StreamLinesPL(){
 }
 
 void VISU_StreamLinesPL::ShallowCopy(VISU_PipeLine *thePipeLine){
-  VISU_DeformedShapePL::ShallowCopy(thePipeLine);
-  if(VISU_StreamLinesPL *aPipeLine = dynamic_cast<VISU_StreamLinesPL*>(thePipeLine))
+  if(VISU_StreamLinesPL *aPipeLine = dynamic_cast<VISU_StreamLinesPL*>(thePipeLine)){
     SetParams(aPipeLine->GetIntegrationStep(),
              aPipeLine->GetPropagationTime(),
              aPipeLine->GetStepLength(),
              aPipeLine->GetSource(),
              aPipeLine->GetUsedPoints(),
              aPipeLine->GetDirection());
+  }
+  VISU_DeformedShapePL::ShallowCopy(thePipeLine);
 }
 
 
index c34d36d9de8c7aaa94e0dd53497450ddf1489917..92a5e57591f621e2630166c5afd44252110c2384 100644 (file)
 #include <vtkConeSource.h>
 #include <vtkLineSource.h>
 #include <vtkGlyphSource2D.h>
+#include <vtkPolyData.h>
 
 vtkStandardNewMacro(VISU_VectorsPL);
 
-VISU_VectorsPL::VISU_VectorsPL(){
-  myGlyph = vtkGlyph3D::New();
+VISU_VectorsPL
+::VISU_VectorsPL()
+{
+  myBaseGlyph = vtkGlyph3D::New();
+  myTransformedGlyph = vtkGlyph3D::New();
 
   myGlyphSource = vtkGlyphSource2D::New();
   myConeSource = vtkConeSource::New();
@@ -49,75 +53,118 @@ VISU_VectorsPL::VISU_VectorsPL(){
   myIsShrinkable = false;
 }
 
-VISU_VectorsPL::~VISU_VectorsPL(){
-  myGlyph->UnRegisterAllOutputs();
-  myGlyph->Delete();
+VISU_VectorsPL
+::~VISU_VectorsPL()
+{
+  myBaseGlyph->Delete();
+  myTransformedGlyph->Delete();
 
-  myCenters->UnRegisterAllOutputs();
   myCenters->Delete();
 
-  myGlyphSource->UnRegisterAllOutputs();
   myGlyphSource->Delete();
 
-  myConeSource->UnRegisterAllOutputs();
   myConeSource->Delete();
 
-  myLineSource->UnRegisterAllOutputs();
   myLineSource->Delete();
 
-  myTransformFilter->UnRegisterAllOutputs();
   myTransformFilter->Delete();
 }
 
-void VISU_VectorsPL::ShallowCopy(VISU_PipeLine *thePipeLine){
-  VISU_DeformedShapePL::ShallowCopy(thePipeLine);
+void
+VISU_VectorsPL
+::ShallowCopy(VISU_PipeLine *thePipeLine)
+{
   if(VISU_VectorsPL *aPipeLine = dynamic_cast<VISU_VectorsPL*>(thePipeLine)){
     SetGlyphType(aPipeLine->GetGlyphType());
     SetGlyphPos(aPipeLine->GetGlyphPos());
   }
+  Superclass::ShallowCopy(thePipeLine);
 }
 
 
-void VISU_VectorsPL::SetTransform(VTKViewer_Transform* theTransform){
+void
+VISU_VectorsPL
+::SetTransform(VTKViewer_Transform* theTransform)
+{
   myFieldTransform->SetSpaceTransform(theTransform);
   myTransformFilter->SetTransform(theTransform);
   myTransformFilter->Modified();
 }
-VTKViewer_Transform* VISU_VectorsPL::GetTransform(){
+
+VTKViewer_Transform* 
+VISU_VectorsPL
+::GetTransform()
+{
   return myFieldTransform->GetSpaceTransform();
 }
 
 
-void VISU_VectorsPL::SetScale(float theScale) {
-  if(myScaleFactor == theScale) return;
+void
+VISU_VectorsPL
+::SetScale(float theScale) 
+{
+  if(myScaleFactor == theScale) 
+    return;
+
   myScaleFactor = theScale;
-  myGlyph->SetScaleFactor(myScaleFactor);
+
+  myBaseGlyph->SetScaleFactor(myScaleFactor);
+  myTransformedGlyph->SetScaleFactor(myScaleFactor);
+
   Modified();
 }
-float VISU_VectorsPL::GetScale() {
-  return myGlyph->GetScaleFactor();
+
+float
+VISU_VectorsPL
+::GetScale() 
+{
+  return myTransformedGlyph->GetScaleFactor();
 }
 
 
-void VISU_VectorsPL::Init(){
-  VISU_DeformedShapePL::Init();
+void
+VISU_VectorsPL
+::Init()
+{
+  Superclass::Init();
 
   myTypeGlyph = ARROW;
   myPosGlyph = TAIL;
 }
 
 
-VISU_ScalarMapPL::THook* VISU_VectorsPL::DoHook(){
+vtkDataSet* 
+VISU_VectorsPL
+::GetOutput()
+{
+  myBaseGlyph->Update();
+  return myBaseGlyph->GetOutput();
+}
+
+
+VISU_ScalarMapPL::THook* 
+VISU_VectorsPL
+::DoHook()
+{
+  VISU::ToCellCenters(myBaseGlyph,myCenters,GetInput2(),myFieldTransform);
+  myBaseGlyph->SetVectorModeToUseVector();
+  myBaseGlyph->SetScaleModeToScaleByVector();
+  myBaseGlyph->SetColorModeToColorByScalar();
+
   VISU::ToCellCenters(myTransformFilter,myCenters,GetInput2(),myFieldTransform);
-  myGlyph->SetInput(myTransformFilter->GetOutput());
-  myGlyph->SetVectorModeToUseVector();
-  myGlyph->SetScaleModeToScaleByVector();
-  myGlyph->SetColorModeToColorByScalar();
-  return myGlyph->GetOutput();
+  myTransformedGlyph->SetInput(myTransformFilter->GetOutput());
+  myTransformedGlyph->SetVectorModeToUseVector();
+  myTransformedGlyph->SetScaleModeToScaleByVector();
+  myTransformedGlyph->SetColorModeToColorByScalar();
+
+  return myTransformedGlyph->GetOutput();
 }
 
 
-void VISU_VectorsPL::Update(){
+void
+VISU_VectorsPL
+::Update()
+{
   switch (myTypeGlyph) {
   case ARROW: {
     myGlyphSource->SetGlyphTypeToArrow();
@@ -132,11 +179,8 @@ void VISU_VectorsPL::Update(){
     case CENTER:
       myGlyphSource->SetCenter(0.0, 0.0, 0.0);
     }
-//     if(myPosGlyph == TAIL)
-//       myGlyphSource->SetCenter(0.5, 0.0, 0.0);
-//     else if(myPosGlyph == HEAD)
-//       myGlyphSource->SetCenter(-0.5, 0.0, 0.0);
-    myGlyph->SetSource(myGlyphSource->GetOutput());
+    myBaseGlyph->SetSource(myGlyphSource->GetOutput());
+    myTransformedGlyph->SetSource(myGlyphSource->GetOutput());
   }
     break;
   case CONE2:
@@ -158,26 +202,29 @@ void VISU_VectorsPL::Update(){
     case CENTER:
       myConeSource->SetCenter(0.0, 0.0, 0.0);
     }
-//     if(myPosGlyph == TAIL)
-//       myConeSource->SetCenter(0.5, 0.0, 0.0);
-//     else if(myPosGlyph == HEAD)
-//       myConeSource->SetCenter(-0.5, 0.0, 0.0);
-    myGlyph->SetSource(myConeSource->GetOutput());
+    myBaseGlyph->SetSource(myConeSource->GetOutput());
+    myTransformedGlyph->SetSource(myConeSource->GetOutput());
   }
     break;
   case NONE:
   default: {
-    myGlyph->SetSource(myLineSource->GetOutput());
+    myBaseGlyph->SetSource(myLineSource->GetOutput());
+    myTransformedGlyph->SetSource(myLineSource->GetOutput());
   }
   }
 
-  VISU_DeformedShapePL::Update();
+  Superclass::Update();
 }
 
 
-void VISU_VectorsPL::SetMapScale(float theMapScale){
+void
+VISU_VectorsPL
+::SetMapScale(float theMapScale)
+{
   VISU_ScalarMapPL::SetMapScale(theMapScale);
 
-  myGlyph->SetScaleFactor(myScaleFactor*theMapScale);
-  myGlyph->Modified();
+  myBaseGlyph->SetScaleFactor(myScaleFactor*theMapScale);
+  myTransformedGlyph->SetScaleFactor(myScaleFactor*theMapScale);
+
+  Modified();
 }
index 8b24ece62e44a2967794f8edbd25fccd6b454d07..312d56fc989a28362980c66a4054484da6ad7f5b 100644 (file)
@@ -61,19 +61,24 @@ public:
   virtual GlyphPos GetGlyphPos() { return myPosGlyph;}
 
 public:
-  virtual THook* DoHook();
   virtual void Init();
   virtual void Update();
 
+  vtkDataSet* 
+  GetOutput();
+
   virtual void SetTransform(VTKViewer_Transform* theTransform); 
   virtual VTKViewer_Transform* GetTransform();
   
   virtual void SetMapScale(float theMapScale = 1.0);
 
 protected:
+  virtual THook* DoHook();
+
   GlyphType myTypeGlyph;
   GlyphPos myPosGlyph;
-  vtkGlyph3D *myGlyph;
+  vtkGlyph3D *myBaseGlyph;
+  vtkGlyph3D *myTransformedGlyph;
 
   vtkGlyphSource2D *myGlyphSource;
   vtkLineSource *myLineSource;
diff --git a/src/PIPELINE/VISU_WidgetCtrl.cxx b/src/PIPELINE/VISU_WidgetCtrl.cxx
new file mode 100644 (file)
index 0000000..bb62dc6
--- /dev/null
@@ -0,0 +1,364 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   : VVTK_WidgetCtrl.cxx
+//  Author : Peter KURNEV
+//  Module : SALOME
+//  $Header$
+
+#include "VISU_WidgetCtrl.hxx"
+//
+#include "VISU_ImplicitFunctionWidget.hxx"
+#include "VISU_PlanesWidget.hxx"
+#include "VISU_SphereWidget.hxx"
+//
+#include <algorithm>
+//
+#include <vtkObject.h>
+#include <vtkImplicitFunction.h>
+#include <vtkRenderWindowInteractor.h>
+#include <vtkObjectFactory.h>
+#include <vtkCallbackCommand.h>
+#include <vtkCommand.h>
+//
+vtkCxxRevisionMacro(VISU_WidgetCtrl,"$Revision$");
+vtkStandardNewMacro(VISU_WidgetCtrl);
+
+//==================================================================
+// function: VISU_WidgetCtrl
+// purpose :
+//==================================================================
+VISU_WidgetCtrl::VISU_WidgetCtrl() 
+{
+  myDummyWidget=NULL;
+  myDisableAll=0;
+  myNbWidgets=2;
+  myActiveIndex=-1;// 0 - PlanesWidget; 1 - SphereWidget
+  myPriority=0.;
+  //
+  myPlanesWidget=VISU_PlanesWidget::New();
+  mySphereWidget=VISU_SphereWidget::New();
+  //
+  myWidgets[0]=myPlanesWidget;
+  myWidgets[1]=mySphereWidget;
+  //
+  myEventCallbackCommand=vtkCallbackCommand::New();
+  myEventCallbackCommand->SetClientData(this); 
+  myEventCallbackCommand->SetCallback(VISU_WidgetCtrl::ProcessEvents);
+  //
+  int i;
+  for (i=0; i<myNbWidgets; ++i){
+    myWidgets[i]->AddObserver(vtkCommand::EnableEvent,
+                             myEventCallbackCommand,
+                             myPriority);
+    myWidgets[i]->AddObserver(vtkCommand::DisableEvent,
+                             myEventCallbackCommand,
+                             myPriority);
+    myWidgets[i]->AddObserver(vtkCommand::EndInteractionEvent,
+                             myEventCallbackCommand,
+                             myPriority);
+    myWidgets[i]->AddObserver(vtkCommand::StartInteractionEvent,
+                             myEventCallbackCommand,
+                             myPriority);
+    
+    myWidgets[i]->AddObserver(vtkCommand::InteractionEvent,
+                             myEventCallbackCommand,
+                             myPriority);
+  }
+}
+//==================================================================
+// function: ~
+// purpose :
+//==================================================================
+VISU_WidgetCtrl::~VISU_WidgetCtrl()
+{  
+  
+  myPlanesWidget->Delete();
+  mySphereWidget->Delete();
+  //
+  for (int i=0; i<myNbWidgets; ++i){
+    myWidgets[i]->RemoveObserver(myEventCallbackCommand);
+  }
+  //
+  myEventCallbackCommand->Delete();
+}
+//==================================================================
+// function: GetEnabled 
+// purpose :
+//==================================================================
+int VISU_WidgetCtrl::GetEnabled()
+{
+  if (HasActiveIndex()) {
+    return GetActiveWidget()->GetEnabled();
+  }
+  return 0;
+}
+//==================================================================
+// function: SetEnabled
+// purpose :
+//==================================================================
+void VISU_WidgetCtrl::SetEnabled(int theFlag)
+{
+  int iFlag, i;
+  //
+  myDisableAll=0;
+  //
+  iFlag=GetEnabled();
+  if (iFlag==theFlag) {
+    return;
+  }
+  //
+  if (theFlag) {//enabling
+    if (HasActiveIndex()) {
+      for (i=0; i<myNbWidgets; ++i) {
+       iFlag=(i==myActiveIndex) ? 1 : 0;
+       myWidgets[i]->SetEnabled(iFlag);
+      }
+    }
+  }
+  else {//disabling
+    myDisableAll=1;
+    for (i=0; i<myNbWidgets; ++i) {
+      myWidgets[i]->SetEnabled(0);
+    }
+  }
+
+  Modified();
+}
+//==================================================================
+// function: ProcessEvents
+// purpose :
+//==================================================================
+void VISU_WidgetCtrl::ProcessEvents(vtkObject* vtkNotUsed(theObject), 
+                                   unsigned long theEvent,
+                                   void* theClientData, 
+                                   void* vtkNotUsed(theCallData))
+{
+  VISU_WidgetCtrl *aSelf = reinterpret_cast<VISU_WidgetCtrl*>(theClientData);
+  switch(theEvent){
+  case vtkCommand::DisableEvent:
+    if(aSelf->GetDisableAll())
+      aSelf->InvokeEvent(theEvent, NULL);
+  default:
+    aSelf->InvokeEvent(theEvent, NULL);
+    break;
+  }
+}
+
+//==================================================================
+// function: GetNbWidgets
+// purpose :
+//==================================================================
+int VISU_WidgetCtrl::GetNbWidgets()const 
+{
+  return myNbWidgets;
+}
+//==================================================================
+// function: GetDisableAll
+// purpose :
+//==================================================================
+int VISU_WidgetCtrl::GetDisableAll()const
+{
+  return myDisableAll;
+}
+//==================================================================
+// function: SetActiveIndex
+// purpose :
+//==================================================================
+void VISU_WidgetCtrl::SetActiveIndex(const int theIndex)
+{
+  myActiveIndex=-1;
+  if (theIndex>=0 && theIndex<myNbWidgets){
+    myActiveIndex=theIndex;
+  }
+
+  Modified();
+}
+//==================================================================
+// function: GetActiveIndex
+// purpose :
+//==================================================================
+int VISU_WidgetCtrl::GetActiveIndex()const
+{
+  return myActiveIndex;
+}
+//==================================================================
+// function: HasActiveIndex
+// purpose :
+//==================================================================
+bool VISU_WidgetCtrl::HasActiveIndex()const
+{
+  return (myActiveIndex>=0 && myActiveIndex<myNbWidgets);
+}
+//==================================================================
+// function: IsPlanesActive
+// purpose :
+//==================================================================
+bool VISU_WidgetCtrl::IsPlanesActive()const
+{
+  return (myActiveIndex==0);
+}
+//==================================================================
+// function: IsSphereActive
+// purpose :
+//==================================================================
+bool VISU_WidgetCtrl::IsSphereActive()const
+{
+  return (myActiveIndex==1);
+}
+//==================================================================
+// function: GetActiveWidget
+// purpose :
+//==================================================================
+VISU_ImplicitFunctionWidget* VISU_WidgetCtrl::GetActiveWidget()
+{
+  if (HasActiveIndex()){
+    return myWidgets[myActiveIndex];
+  }
+  return myDummyWidget;
+}
+//==================================================================
+// function: GetWidget
+// purpose :
+//==================================================================
+VISU_ImplicitFunctionWidget* VISU_WidgetCtrl::GetWidget(const int theIndex)
+{
+  if (theIndex>=0 && theIndex<myNbWidgets) {
+    return myWidgets[theIndex];
+  }
+  return myDummyWidget;
+}
+//==================================================================
+// function: GetPlanesWidget
+// purpose :
+//==================================================================
+VISU_PlanesWidget* VISU_WidgetCtrl::GetPlanesWidget()
+{
+  return myPlanesWidget;
+}
+//==================================================================
+// function: GetSphereWidget
+// purpose :
+//==================================================================
+VISU_SphereWidget* VISU_WidgetCtrl::GetSphereWidget()
+{
+  return mySphereWidget;
+}
+//==================================================================
+// function: PlaceWidget
+// purpose :
+//==================================================================
+void VISU_WidgetCtrl::PlaceWidget(float theBounds[6])
+{
+  for (int i=0; i<myNbWidgets; ++i) { 
+    myWidgets[i]->PlaceWidget(theBounds);
+  }
+}
+//==================================================================
+// function: SetInteractor
+// purpose :
+//==================================================================
+void VISU_WidgetCtrl::SetInteractor(vtkRenderWindowInteractor* theRWI)
+{
+  for (int i=0; i<myNbWidgets; ++i) {
+    myWidgets[i]->SetInteractor(theRWI);
+  }
+
+  Modified();
+}
+//==================================================================
+// function: GetInteractor
+// purpose :
+//==================================================================
+vtkRenderWindowInteractor* VISU_WidgetCtrl::GetInteractor()
+{
+  return myWidgets[0]->GetInteractor();
+}
+//==================================================================
+// function: SetPlaceFactor
+// purpose :
+//==================================================================
+void VISU_WidgetCtrl::SetPlaceFactor(float theFactor)
+{
+  for (int i=0; i<myNbWidgets; ++i) {
+    myWidgets[i]->SetPlaceFactor(theFactor);
+  }
+
+  Modified();
+}
+//==================================================================
+// function: GetPlaceFactor
+// purpose :
+//==================================================================
+float VISU_WidgetCtrl::GetPlaceFactor()
+{
+  return myWidgets[0]->GetPlaceFactor();
+}
+//==================================================================
+// function: ImplicitFunction
+// purpose :
+//==================================================================
+vtkImplicitFunction* VISU_WidgetCtrl::ImplicitFunction()
+{
+  return this;
+}
+
+//==================================================================
+float  
+VISU_WidgetCtrl
+::EvaluateFunction(float theX[3])
+{
+  if(VISU_ImplicitFunctionWidget* aWidget = GetActiveWidget()){
+    if(vtkImplicitFunction* aFunction = aWidget->ImplicitFunction())
+      return aFunction->EvaluateFunction(theX[0],theX[1],theX[2]);
+  }
+  return 1.0;
+}
+
+//==================================================================
+void   
+VISU_WidgetCtrl
+::EvaluateGradient(float theX[3], float theG[3])
+{
+  theG[0] = theG[1] = theG[2] = 0.0;
+  if(VISU_ImplicitFunctionWidget* aWidget = GetActiveWidget()){
+    if(vtkImplicitFunction* aFunction = aWidget->ImplicitFunction())
+      aFunction->EvaluateGradient(theX,theG);
+  }
+}
+
+//==================================================================
+unsigned long
+VISU_WidgetCtrl
+::GetMTime()
+{
+  unsigned long aTime = Superclass::GetMTime();
+
+  if(vtkImplicitFunction* aFunction = myPlanesWidget->ImplicitFunction())
+    aTime = std::max(aTime,aFunction->GetMTime());
+
+  if(vtkImplicitFunction* aFunction = mySphereWidget->ImplicitFunction())
+    aTime = std::max(aTime,aFunction->GetMTime());
+  
+  return aTime;
+}
diff --git a/src/PIPELINE/VISU_WidgetCtrl.hxx b/src/PIPELINE/VISU_WidgetCtrl.hxx
new file mode 100644 (file)
index 0000000..8737b5d
--- /dev/null
@@ -0,0 +1,120 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
+// 
+//  This library is free software; you can redistribute it and/or 
+//  modify it under the terms of the GNU Lesser General Public 
+//  License as published by the Free Software Foundation; either 
+//  version 2.1 of the License. 
+// 
+//  This library is distributed in the hope that it will be useful, 
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//  Lesser General Public License for more details. 
+// 
+//  You should have received a copy of the GNU Lesser General Public 
+//  License along with this library; if not, write to the Free Software 
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
+// 
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//
+//
+//
+//  File   : VISU_WidgetCtrl.hxx
+//  Author : Peter KURNEV
+//  Module : SALOME
+//  $Header$
+
+#ifndef __VISU_WidgetCtrl_hxx
+#define __VISU_WidgetCtrl_hxx
+
+
+#include <vtkImplicitFunction.h>
+
+class vtkImplicitFunction;
+class vtkObject;
+class vtkRenderWindowInteractor;
+class vtkCommand;
+class vtkCallbackCommand;
+
+class VISU_PlanesWidget;
+class VISU_SphereWidget;
+class VISU_ImplicitFunctionWidget;
+
+class VISU_WidgetCtrl : public vtkImplicitFunction
+{
+public:
+  static VISU_WidgetCtrl *New();
+  vtkTypeRevisionMacro(VISU_WidgetCtrl,vtkObject);
+
+  vtkImplicitFunction* ImplicitFunction();
+
+  virtual
+  float        
+  EvaluateFunction(float theX[3]);
+
+  virtual
+  void         
+  EvaluateGradient(float theX[3], float theG[3]);
+
+  virtual
+  unsigned long
+  GetMTime();
+
+  void PlaceWidget(float theBounds[6]);
+  void SetEnabled(int theFlag);
+  int  GetEnabled();
+  void On() {SetEnabled(1);}
+  void Off(){SetEnabled(0);}
+  
+  void SetInteractor(vtkRenderWindowInteractor* theRWI);
+  vtkRenderWindowInteractor* GetInteractor();
+  //
+  void  SetPlaceFactor(float theFactor);
+  float GetPlaceFactor();
+  //
+  void SetActiveIndex(const int theFlag);
+  int  GetActiveIndex()const;
+  bool HasActiveIndex()const;
+  bool IsPlanesActive()const;
+  bool IsSphereActive()const;
+
+  
+  VISU_ImplicitFunctionWidget* GetActiveWidget();
+  VISU_ImplicitFunctionWidget* GetWidget(const int);
+
+  int GetNbWidgets()const;
+  int GetDisableAll()const;
+  
+  //
+  VISU_PlanesWidget * GetPlanesWidget();
+  VISU_SphereWidget * GetSphereWidget();
+  //
+  static void ProcessEvents(vtkObject* theObject, 
+                           unsigned long theEvent,
+                           void* theClientData, 
+                           void* theCalldata);
+  //
+protected:
+  VISU_WidgetCtrl();
+  ~VISU_WidgetCtrl();
+
+protected:
+  int myNbWidgets;
+  int myActiveIndex;
+  int myCounter;
+  int myDisableAll;
+  float myPriority;
+  VISU_ImplicitFunctionWidget *myWidgets[2];
+  VISU_ImplicitFunctionWidget *myDummyWidget;
+  VISU_PlanesWidget *myPlanesWidget;
+  VISU_SphereWidget *mySphereWidget;
+  vtkCallbackCommand *myEventCallbackCommand;
+
+private:
+  VISU_WidgetCtrl(const VISU_WidgetCtrl&);  //Not implemented
+  void operator=(const VISU_WidgetCtrl&);   //Not implemented
+};
+
+#endif
diff --git a/src/PIPELINE/VISU_img2vti.cxx b/src/PIPELINE/VISU_img2vti.cxx
new file mode 100644 (file)
index 0000000..8cc0a47
--- /dev/null
@@ -0,0 +1,88 @@
+//  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:    VISU_img2vti.cxx
+// Author:  Oleg UVAROV
+// Module : VISU
+
+#include <vtkImageData.h>
+#include <vtkBMPReader.h>
+#include <vtkPNGReader.h>
+#include <vtkJPEGReader.h>
+#include <vtkXMLImageDataWriter.h>
+
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+#else
+static int MYDEBUG = 0;
+#endif
+
+int main( int argc, char** argv )
+{
+  if(MYDEBUG) std::cout << "Converting the image to VTI format" << std::endl;
+
+  if( argc != 4 )
+  {
+    std::cout << "Usage : VISU_img2vti ImageFormat InputFileName OutputFileName" << std::endl;
+    return 1;
+  }
+
+  if(MYDEBUG){
+    std::cout << argv[1] << std::endl;
+    std::cout << argv[2] << std::endl;
+    std::cout << argv[3] << std::endl;
+  }
+
+  vtkImageReader2* aReader = NULL;
+  if( !strcmp( argv[1], "BMP" ) || !strcmp( argv[1], "bmp" ) )
+  {
+    if(MYDEBUG) std::cout << "Input image format - BMP" << std::endl;
+    aReader = vtkBMPReader::New();
+  }
+  else if( !strcmp( argv[1], "PNG" ) || !strcmp( argv[1], "png" ) )
+  {
+    if(MYDEBUG) std::cout << "Input image format - PNG" << std::endl;
+    aReader = vtkPNGReader::New();
+  }
+  else if( !strcmp( argv[1], "JPG" ) || !strcmp( argv[1], "jpg" ) )
+  {
+    if(MYDEBUG) std::cout << "Input image format - JPG" << std::endl;
+    aReader = vtkJPEGReader::New();
+  }
+  else
+  {
+    std::cout << "Unknown input image format... Must be BMP, PNG or JPG." << std::endl;
+    return 1;
+  }
+  aReader->SetFileName( argv[2] );
+  aReader->Update();
+
+  vtkXMLImageDataWriter* aWriter = vtkXMLImageDataWriter::New();
+  aWriter->SetInput( aReader->GetOutput() );
+  aWriter->SetFileName( argv[3] );
+  aWriter->Write();
+
+  aWriter->Delete();
+  aReader->Delete();
+
+  return 0;
+}
index 805e692815f14aac7fd73c58baa9618cd0d00b66..cb4e7176d78008421ee9cb535458b15edc3562bd 100644 (file)
@@ -35,12 +35,11 @@ VPATH=.:@srcdir@
 
 # header files 
 EXPORT_HEADERS= \
-                VisuGUI_NonIsometricDlg.h \
                VisuGUI_Tools.h
 
 # .po files to transform in .qm
 PO_FILES = \
-          VISU_msg_en.po VISU_images.po
+          VISU_msg_en.po VISU_images.po VISUM_msg_en.po VISUM_images.po
 
 # Libraries targets
 LIB = libVISU.la
@@ -49,8 +48,10 @@ LIB = libVISU.la
 
 LIB_SRC =      VisuGUI.cxx \
                VisuGUI_Factory.cxx \
+               VisuGUI_Module.cxx \
                VisuGUI_Selection.cxx \
                VisuGUI_Tools.cxx \
+               VisuGUI_ViewTools.cxx \
                VisuGUI_PopupTools.cxx \
                VisuGUI_NameDlg.cxx \
                VisuGUI_FileDlg.cxx \
@@ -58,23 +59,25 @@ LIB_SRC =   VisuGUI.cxx \
                VisuGUI_TimeAnimation.cxx \
                VisuGUI_EditContainerDlg.cxx \
                VisuGUI_ClippingDlg.cxx \
-               VisuGUI_CubeAxesDlg.cxx \
-               VisuGUI_FontWg.cxx \
+               VisuGUI_DialogRunner.cxx \
                VisuGUI_OffsetDlg.cxx \
                VisuGUI_Plot3DDlg.cxx \
-               VisuGUI_NonIsometricDlg.cxx \
                VisuGUI_ScalarBarDlg.cxx \
+               VisuGUI_GaussPointsDlg.cxx \
                VisuGUI_DeformedShapeDlg.cxx \
                VisuGUI_IsoSurfacesDlg.cxx \
                VisuGUI_CutLinesDlg.cxx \
                VisuGUI_CutPlanesDlg.cxx \
                VisuGUI_StreamLinesDlg.cxx \
                VisuGUI_VectorsDlg.cxx \
-               VisuGUI_DialogRunner.cxx \
                VisuGUI_Displayer.cxx \
-               VisuGUI_SetupPlot2dDlg.cxx
+               VisuGUI_SetupPlot2dDlg.cxx \
+               VisuGUI_BuildProgressDlg.cxx \
+               VisuGUI_TransparencyDlg.cxx \
+               VisuGUI_Timer.cxx
 
 LIB_MOC =      VisuGUI.h \
+               VisuGUI_Module.h \
                VisuGUI_Selection.h \
                VisuGUI_NameDlg.h \
                VisuGUI_FileDlg.h \
@@ -82,20 +85,20 @@ LIB_MOC =   VisuGUI.h \
                VisuGUI_TimeAnimation.h \
                VisuGUI_EditContainerDlg.h \
                VisuGUI_ClippingDlg.h \
-               VisuGUI_CubeAxesDlg.h \
-               VisuGUI_FontWg.h \
+               VisuGUI_DialogRunner.h \
                VisuGUI_OffsetDlg.h \
                VisuGUI_Plot3DDlg.h \
-               VisuGUI_NonIsometricDlg.h \
                VisuGUI_ScalarBarDlg.h \
+               VisuGUI_GaussPointsDlg.h \
                VisuGUI_DeformedShapeDlg.h \
                VisuGUI_IsoSurfacesDlg.h \
                VisuGUI_CutLinesDlg.h \
                VisuGUI_CutPlanesDlg.h \
                VisuGUI_StreamLinesDlg.h \
                VisuGUI_VectorsDlg.h \
-               VisuGUI_DialogRunner.h \
-               VisuGUI_SetupPlot2dDlg.h
+               VisuGUI_SetupPlot2dDlg.h \
+               VisuGUI_BuildProgressDlg.h \
+               VisuGUI_TransparencyDlg.h
 
 LIB_CLIENT_IDL = SALOME_Exception.idl \
                 VISU_Gen.idl \
@@ -114,13 +117,17 @@ LIB_SERVER_IDL =
 
 CPPFLAGS +=  -ftemplate-depth-32 $(QT_INCLUDES) $(VTK_INCLUDES) $(OCC_INCLUDES) \
        $(PYTHON_INCLUDES) $(HDF5_INCLUDES) $(QWT_INCLUDES) \
-       -I${KERNEL_ROOT_DIR}/include/salome  $(BOOST_CPPFLAGS)
+       -I${KERNEL_ROOT_DIR}/include/salome \
+       -I${MED_ROOT_DIR}/include/salome \
+       $(BOOST_CPPFLAGS)
 CXXFLAGS +=  -ftemplate-depth-32 $(OCC_CXXFLAGS) \
-       -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome
+       -I${KERNEL_ROOT_DIR}/include/salome \
+       -I${GUI_ROOT_DIR}/include/salome
 
 LDFLAGS += $(QWT_LIBS) -lSalomeNS \
-       -lSVTK -lSPlot2d -lVisuObject -lVISUEngineImpl -lVISUGUITOOLS \
-       -L${KERNEL_ROOT_DIR}/lib/salome -L${GUI_ROOT_DIR}/lib/salome
+       -lSVTK -lVVTK -lSPlot2d -lVisuObject -lVISUEngineImpl -lVISUGUITOOLS \
+       -L${KERNEL_ROOT_DIR}/lib/salome \
+       -L${GUI_ROOT_DIR}/lib/salome
 
 
 @CONCLUDE@
diff --git a/src/VISUGUI/VISUM_images.po b/src/VISUGUI/VISUM_images.po
new file mode 100644 (file)
index 0000000..24d00e8
--- /dev/null
@@ -0,0 +1,67 @@
+#  VISU VISUGUI : GUI of VISU 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   : VisuGUI_icons.po
+#  Module : VISU
+
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2002-05-28 10:57:43 AM CEST\n"
+"PO-Revision-Date: 2005-05-10 15:20+0400\n"
+"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+
+
+msgid "ICON_GAUSS_NEW_VIEWER"
+msgstr "Visu_points.png"
+
+msgid "ICON_GAUSS_POINTS"
+msgstr "Visu_gauss_points.png"
+
+msgid "ICON_VVTK_INTERACTOR_STYLE_SWITCH"
+msgstr "Visu_vvtk_switch.png"
+
+msgid "ICON_VVTK_SELECTION_MODE_SWITCH"
+msgstr "Visu_points.png"
+
+msgid "ICON_VVTK_PLANE_SEGMENTATION_SWITCH"
+msgstr "Visu_PlaneSegmentation.png"
+
+msgid "ICON_VVTK_SPHERE_SEGMENTATION_SWITCH"
+msgstr "Visu_SphereSegmentation.png"
+
+msgid "ICON_VVTK_RECORDING_START"
+msgstr "Visu_recording_start.png"
+
+msgid "ICON_VVTK_RECORDING_PLAY"
+msgstr "Visu_recording_play.png"
+
+msgid "ICON_VVTK_RECORDING_PAUSE"
+msgstr "Visu_recording_pause.png"
+
+msgid "ICON_VVTK_RECORDING_STOP"
+msgstr "Visu_recording_stop.png"
+
+msgid "ICON_LOAD_TEXTURE"
+msgstr "Visu_load_texture.png"
diff --git a/src/VISUGUI/VISUM_msg_en.po b/src/VISUGUI/VISUM_msg_en.po
new file mode 100644 (file)
index 0000000..ff3533b
--- /dev/null
@@ -0,0 +1,763 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: PROJECT VERSION\n"
+"POT-Creation-Date: 2002-02-22 16:56:46 CET\n"
+"PO-Revision-Date: 2005-06-27 12:38+0400\n"
+"Last-Translator: FULLNAME <EMAIL@ADDRESS>\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+
+msgid "INF_VISU"
+msgstr "Post-Pro Info"
+
+msgid "IMPORT_DONE"
+msgstr "Importing is done"
+
+msgid "VisuGUI_Module::MEN_VISUALISATION"
+msgstr "Visualization"
+
+msgid "VisuGUI_Module::TOOL_VISUALISATION"
+msgstr "Visualization Toolbar"
+
+msgid "VisuGUI_Module::MEN_SAVE_CONFIGURATION"
+msgstr "Store current configuration"
+
+msgid "VisuGUI_Module::MEN_OVERWRITE_CONFIGURATION"
+msgstr "Overwrite current configuration"
+
+msgid "VisuGUI_Module::MEN_RESTORE_CONFIGURATION"
+msgstr "Restore current configuration"
+
+msgid "VisuGUI_Module::MEN_GAUSS"
+msgstr "Gauss"
+
+msgid "VisuGUI_Module::MEN_GAUSS_NEW_VIEWER"
+msgstr "Points view"
+
+msgid "VisuGUI_Module::MEN_GAUSS_CREATE_PRS"
+msgstr "Gauss Points"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_TAB_TTL"
+msgstr "Gauss Points"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_PRIMITIVE_GROUP_TTL"
+msgstr "Primitive"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_PRIMITIVE_TYPE"
+msgstr "Primitive Type"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_POINTSPRITE"
+msgstr "Point sprite"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_OPENGLPOINT"
+msgstr "OpenGL point"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_GEOMSPHERE"
+msgstr "Geometrical sphere"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_CLAMP"
+msgstr "Maximum Size (Clamp)"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_MAIN_TEXTURE"
+msgstr "Main Texture (16x16)"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_ALPHA_TEXTURE"
+msgstr "Alpha Channel Texture (16x16)"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_ALPHA_THRESHOLD"
+msgstr "Alpha Channel Threshold"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_RESOLUTION"
+msgstr "Geometrical sphere resolution"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_FACE_LIMIT"
+msgstr "Notify when number of faces exceeds"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_SIZE_GROUP_TTL"
+msgstr "Size"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_MIN_SIZE"
+msgstr "Range value for min size (%)"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_MAX_SIZE"
+msgstr "Range value for max size (%)"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_MAGNIFICATION"
+msgstr "Magnification (%)"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_INCREMENT"
+msgstr "+/- Ratio"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_GEOM_GROUP_TTL"
+msgstr "Geometry"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_SIZE"
+msgstr "Size of points (%)"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_COLOR"
+msgstr "Color"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_DEFORMED_SHAPE_GROUP_TTL"
+msgstr "Deformed Shape"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_SCALE_FACTOR"
+msgstr "Scale factor"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_RESOLUTION"
+msgstr "Geometrical sphere resolution"
+
+msgid "VisuGUI_Module::GAUSS_PREF_FACE_LIMIT"
+msgstr "Notify when number of faces exceeds"
+
+msgid "VisuGUI_Module::VISU_GAUSS_SCALAR_BAR_PREF_TAB_TTL"
+msgstr "Gauss Points Scalar Bar"
+
+msgid "VisuGUI_Module::VISU_GAUSS_SCALAR_BAR_PREF_GROUP_TTL"
+msgstr "Gauss Points Scalar Bar"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_ACTIVE_BAR"
+msgstr "Active bar"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_LOCAL"
+msgstr "Local"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_GLOBAL"
+msgstr "Global"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_DISPLAY_GLOBAL"
+msgstr "Display global bar"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_SCALAR_BAR_MODE"
+msgstr "Scalar bar mode"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_BICOLOR"
+msgstr "Bicolor"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_RAINBOW"
+msgstr "Rainbow"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_SPACING"
+msgstr "Spacing"
+
+msgid "VisuGUI_Module::VISU_GAUSS_INSIDE_CURSOR_PREF_TAB_TTL"
+msgstr "Inside Cursor"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_MAGNIFICATION_GROUP_TTL"
+msgstr "Magnification (Inside and Outside)"
+
+msgid "VisuGUI_Module::VISU_GAUSS_OUTSIDE_CURSOR_PREF_TAB_TTL"
+msgstr "Outside Cursor"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_UNIFORM_COLOR"
+msgstr "Uniform Color"
+
+msgid "VisuGUI_Module::VISU_GAUSS_PREF_COLOR_GROUP_TTL"
+msgstr "Color"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_TAB_TTL"
+msgstr "Picking"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_CURSOR_GROUP_TTL"
+msgstr "Cursor"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_CURSOR_SIZE"
+msgstr "Size of the cursor"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_PYRAMID_HEIGHT"
+msgstr "Height of the pyramids"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_SELECTION_COLOR"
+msgstr "Selection cursor color"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_TOLERANCE_GROUP_TTL"
+msgstr "Tolerance"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_POINT_SELECTION_TOLERANCE"
+msgstr "Point selection tolerance"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_INFO_WINDOW_GROUP_TTL"
+msgstr "Information window"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_TRANSPARENCY"
+msgstr "Transparency"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_POSITION"
+msgstr "Position"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_BELOW_POINT"
+msgstr "Centered below the point"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_TOP_LEFT_CORNER"
+msgstr "Top-left corner of the 3D view"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_CAMERA_GROUP_TTL"
+msgstr "Movement of the camera"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_ZOOM_FACTOR"
+msgstr "Zoom at first selected point (ratio)"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_STEP_NUMBER"
+msgstr "Number of steps between two positions"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_PARENT_MESH_TTL"
+msgstr "Parent mesh element"
+
+msgid "VisuGUI_Module::VISU_PICKING_PREF_DISPLAY_PARENT_MESH"
+msgstr "Display parent mesh element"
+
+msgid "VisuGUI_Module::VISU_MOUSE_PREF_TAB_TLT"
+msgstr "Navigation"
+
+msgid "VisuGUI_Module::VISU_MOUSE_PREF_GROUP_TLT"
+msgstr "Mouse"
+
+msgid "VisuGUI_Module::VISU_MOUSE_PREF"
+msgstr "Mouse behaviour"
+
+msgid "VisuGUI_Module::VISU_MOUSE_PREF_STANDARD"
+msgstr "Salome standard controls"
+
+msgid "VisuGUI_Module::VISU_MOUSE_PREF_KEYBOARD_FREE"
+msgstr "Keyboard free"
+
+msgid "VisuGUI_Module::VISU_KEYBOARD_PREF_GROUP_TTL"
+msgstr "Keyboard"
+
+msgid "VisuGUI_Module::VISU_KEYBOARD_PREF"
+msgstr "[+]/[-] Speed increment"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF"
+msgstr "Spacemouse"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_1"
+msgstr "Decrease speed increment"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_2"
+msgstr "Increase speed increment"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_3"
+msgstr "Decrease Gauss points magnification"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_4"
+msgstr "Increase Gauss points magnification"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_5"
+msgstr "Dominant / combined switch"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_1"
+msgstr "Button 1"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_2"
+msgstr "Button 2"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_3"
+msgstr "Button 3"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_4"
+msgstr "Button 4"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_5"
+msgstr "Button 5"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_6"
+msgstr "Button 6"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_7"
+msgstr "Button 7"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_8"
+msgstr "Button 8"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_10"
+msgstr "Button 10"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_11"
+msgstr "Button 11"
+
+msgid "VisuGUI_Module::VISU_SPACEMOUSE_PREF_BTN_*"
+msgstr "Button *"
+
+msgid "VisuGUI_Module::VISU_CAMERA_PREF_GROUP_TTL"
+msgstr "Camera movements"
+
+msgid "VisuGUI_Module::VISU_CAMERA_MOVE_PREF"
+msgstr "Number of steps between two positions"
+
+msgid "VisuGUI_Module::VISU_RECORDER_PREF_TAB_TTL"
+msgstr "Recorder"
+
+msgid "VisuGUI_Module::VISU_RECORDER_PREF_GROUP_TTL"
+msgstr "Settings"
+
+msgid "VisuGUI_Module::VISU_RECORDER_PREF_RECORDING_MODE"
+msgstr "Mode"
+
+msgid "VisuGUI_Module::VISU_RECORDER_PREF_SKIPPED_FRAMES"
+msgstr "Recording at a given FPS"
+
+msgid "VisuGUI_Module::VISU_RECORDER_PREF_ALL_DISLPAYED_FRAMES"
+msgstr "Recording all displayed frames"
+
+msgid "VisuGUI_Module::VISU_RECORDER_PREF_FPS"
+msgstr "FPS"
+
+msgid "VisuGUI_Module::VISU_RECORDER_PREF_QUALITY"
+msgstr "Quality"
+
+msgid "VisuGUI_Module::VISU_RECORDER_PREF_PROGRESSIVE"
+msgstr "Progressive"
+
+msgid "VisuGUI_GaussPointsDlg::DLG_PREF_TITLE"
+msgstr "Gauss Points Preferences"
+
+msgid "VisuGUI_GaussPointsDlg::DLG_PROP_TITLE"
+msgstr "Gauss Points Properties"
+
+msgid "VisuGUI_BuildProgressDlg::DLG_BUILD_PROGRESS_TITLE"
+msgstr "Build progress"
+
+msgid "VisuGUI_BuildProgressDlg::IMPORT_SETTINGS"
+msgstr "Settings"
+
+msgid "VisuGUI_BuildProgressDlg::FILE_NAME"
+msgstr "Import file : "
+
+msgid "VisuGUI_BuildProgressDlg::BUILD_AT_ONCE"
+msgstr "Build at once"
+
+msgid "VisuGUI_BuildProgressDlg::BUILD_ALL"
+msgstr "Build all"
+
+msgid "VisuGUI_BuildProgressDlg::IMPORT_PROGRESS"
+msgstr "Import progress"
+
+msgid "VisuGUI_BuildProgressDlg::BUILD_ENTITIES"
+msgstr "Build entities"
+
+msgid "VisuGUI_BuildProgressDlg::BUILD_FIELDS"
+msgstr "Build fields"
+
+msgid "VisuGUI_BuildProgressDlg::BUILD_GROUPS"
+msgstr "Build groups"
+
+msgid "VisuGUI_BuildProgressDlg::BUILD_MINMAX"
+msgstr "Build min/max"
+
+msgid "VisuGUI_BuildProgressDlg::IMPORT_TIME"
+msgstr "Time"
+
+msgid "VisuGUI_BuildProgressDlg::TIME"
+msgstr "Elapsed time : "
+
+msgid "VisuGUI_BuildProgressDlg::IMPORT_FROM_FILE"
+msgstr "Import from File"
+
+msgid "VisuGUI_BuildProgressDlg::FLT_ALL_FILES"
+msgstr "All Files (*.*)"
+
+msgid "VisuGUI_BuildProgressDlg::FLT_MED_FILES"
+msgstr "MED Files (*.med)"
+
+msgid "VisuGUI_BuildProgressDlg::CLOSE_AT_FINISH"
+msgstr "Close dialog at finish"
+
+msgid "VisuGUI_BuildProgressDlg::START"
+msgstr "Start"
+
+msgid "VisuGUI_BuildProgressDlg::CLOSE"
+msgstr "Close"
+
+msgid "VVTK_RecorderDlg::DLG_RECORDER_TITLE"
+msgstr "Recorder"
+
+msgid "VVTK_RecorderDlg::SETTINGS"
+msgstr "Settings"
+
+msgid "VVTK_RecorderDlg::FILE_NAME"
+msgstr "Save to file : "
+
+msgid "VVTK_RecorderDlg::FLT_ALL_FILES"
+msgstr "All Files (*.*)"
+
+msgid "VVTK_RecorderDlg::FLT_AVI_FILES"
+msgstr "AVI Files (*.avi)"
+
+msgid "VVTK_RecorderDlg::RECORDING_MODE"
+msgstr "Mode : "
+
+msgid "VVTK_RecorderDlg::SKIPPED_FRAMES"
+msgstr "Recording at a given FPS"
+
+msgid "VVTK_RecorderDlg::ALL_DISLPAYED_FRAMES"
+msgstr "Recording all displayed frames"
+
+msgid "VVTK_RecorderDlg::FPS"
+msgstr "FPS : "
+
+msgid "VVTK_RecorderDlg::QUALITY"
+msgstr "Quality : "
+
+msgid "VVTK_RecorderDlg::PROGRESSIVE"
+msgstr "Progressive"
+
+msgid "VVTK_RecorderDlg::START"
+msgstr "Start"
+
+msgid "VVTK_RecorderDlg::CLOSE"
+msgstr "Close"
+
+msgid "VisuGUI_TransparencyDlg::TRANSPARENCY_TITLE"
+msgstr "Change Transparency"
+
+msgid "VisuGUI_TransparencyDlg::TRANSPARENCY_TRANSPARENT"
+msgstr "Transparent"
+
+msgid "VisuGUI_TransparencyDlg::TRANSPARENCY_OPAQUE"
+msgstr "Opaque"
+
+msgid "VisuGUI_TransparencyDlg::BUT_CLOSE"
+msgstr "Close"
+
+msgid "VVTK_ViewManager::VTK_VIEW_TITLE"
+msgstr "VISU scene:%1 - viewer:%2"
+
+msgid "VVTK_MainWindow::MNU_VVTK_RECORDING_START"
+msgstr "Start recording"
+
+msgid "VVTK_MainWindow::DSC_VVTK_RECORDING_START"
+msgstr "Start recording"
+
+msgid "VVTK_MainWindow::MNU_VVTK_RECORDING_PLAY"
+msgstr "Play recording"
+
+msgid "VVTK_MainWindow::DSC_VVTK_RECORDING_PLAY"
+msgstr "Play recording"
+
+msgid "VVTK_MainWindow::MNU_VVTK_RECORDING_PAUSE"
+msgstr "Pause recording"
+
+msgid "VVTK_MainWindow::DSC_VVTK_RECORDING_PAUSE"
+msgstr "Pause recording"
+
+msgid "VVTK_MainWindow::MNU_VVTK_RECORDING_STOP"
+msgstr "Stop recording"
+
+msgid "VVTK_MainWindow::DSC_VVTK_RECORDING_STOP"
+msgstr "Stop recording"
+
+msgid "VVTK_MainWindow1::MNU_VVTK_INTERACTOR_STYLE_SWITCH"
+msgstr "Interaction Style Switch"
+
+msgid "VVTK_MainWindow1::DSC_VVTK_INTERACTOR_STYLE_SWITCH"
+msgstr "Interaction Style Switch"
+
+msgid "VVTK_MainWindow1::MNU_VVTK_SELECTION_MODE_SWITCH"
+msgstr "Selection Mode Switch"
+
+msgid "VVTK_MainWindow1::DSC_VVTK_SELECTION_MODE_SWITCH"
+msgstr "Selection Mode Switch"
+
+msgid "VVTK_MainWindow1::MNU_VVTK_PLANE_SEGMENTATION_SWITCH"
+msgstr "Plane Segmentation"
+
+msgid "VVTK_MainWindow1::DSC_VVTK_PLANE_SEGMENTATION_SWITCH"
+msgstr "Plane Segmentation"
+
+msgid "VVTK_MainWindow1::MNU_VVTK_SPHERE_SEGMENTATION_SWITCH"
+msgstr "Sphere Segmentation"
+
+msgid "VVTK_MainWindow1::DSC_VVTK_SPHERE_SEGMENTATION_SWITCH"
+msgstr "Sphere Segmentation"
+
+msgid "VVTK_PrimitiveBox::PRIMITIVE_TITLE"
+msgstr "Primitive"
+
+msgid "VVTK_PrimitiveBox::POINT_SPRITE"
+msgstr "Point Sprite"
+
+msgid "VVTK_PrimitiveBox::OPENGL_POINT"
+msgstr "OpenGL Point"
+
+msgid "VVTK_PrimitiveBox::GEOMETRICAL_SPHERE"
+msgstr "Geometrical Sphere"
+
+msgid "VVTK_PrimitiveBox::CLAMP"
+msgstr "Maximum Size (Clamp) : "
+
+msgid "VVTK_PrimitiveBox::MAIN_TEXTURE"
+msgstr "Main Texture (16x16) : "
+
+msgid "VVTK_PrimitiveBox::ALPHA_TEXTURE"
+msgstr "Alpha Channel Texture (16x16) : "
+
+msgid "VVTK_PrimitiveBox::ALPHA_THRESHOLD"
+msgstr "Alpha Channel Threshold : "
+
+msgid "VVTK_PrimitiveBox::RESOLUTION"
+msgstr "Resolution : "
+
+msgid "VVTK_PrimitiveBox::FACE_NUMBER"
+msgstr "Number of faces : "
+
+msgid "VVTK_PrimitiveBox::FACE_LIMIT"
+msgstr "Notify when number of faces exceeds : "
+
+msgid "VVTK_SizeBox::SIZE_TITLE"
+msgstr "Size"
+
+msgid "VVTK_SizeBox::OUTSIDE_SIZE"
+msgstr "Percentage of normal size(%) : "
+
+msgid "VVTK_SizeBox::GEOM_SIZE"
+msgstr "Size of points (%) : "
+
+msgid "VVTK_SizeBox::MIN_SIZE"
+msgstr "Range values for min size (%) : "
+
+msgid "VVTK_SizeBox::MAX_SIZE"
+msgstr "max size (%) : "
+
+msgid "VVTK_SizeBox::MAGNIFICATION"
+msgstr "Magnification (%) : "
+
+msgid "VVTK_SizeBox::INCREMENT"
+msgstr "+/- Ratio : "
+
+msgid "VVTK_SizeBox::COLOR_TITLE"
+msgstr "Color"
+
+msgid "VVTK_SizeBox::UNIFORM_COLOR"
+msgstr "Uniform Color"
+
+msgid "VVTK_SizeBox::COLOR"
+msgstr "Color : "
+
+msgid "VisuGUI_GaussPointsDlg::&Cancel"
+msgstr ""
+
+msgid "VisuGUI_GaussPointsDlg::&OK"
+msgstr ""
+
+msgid "VisuGUI_GaussPointsDlg::WARNING"
+msgstr "Warning"
+
+msgid "VisuGUI_GaussPointsDlg::DLG_TITLE"
+msgstr "Gauss Points"
+
+msgid "VisuGUI_GaussPointsDlg::GAUSS_POINTS_TAB"
+msgstr "Gauss Points"
+
+msgid "VisuGUI_GaussPointsDlg::SCALAR_BAR_TAB"
+msgstr "Scalar Bar"
+
+msgid "VisuGUI_GaussPointsDlg::PRS_TITLE"
+msgstr "Presentation"
+
+msgid "VisuGUI_GaussPointsDlg::RESULTS"
+msgstr "Results"
+
+msgid "VisuGUI_GaussPointsDlg::GEOMETRY"
+msgstr "Geometry"
+
+msgid "VisuGUI_GaussPointsDlg::DEFORMED_SHAPE"
+msgstr "Deformed Shape"
+
+msgid "VisuGUI_GaussPointsDlg::DEFORMED_SHAPE_TITLE"
+msgstr "Deformed Shape"
+
+msgid "VisuGUI_GaussPointsDlg::SCALE_FACTOR"
+msgstr "Scale Factor :"
+
+msgid "VisuGUI_GaussScalarBarPane::ACTIVE_BAR_GRP"
+msgstr "Active bar"
+
+msgid "VisuGUI_GaussScalarBarPane::LOCAL"
+msgstr "Local"
+
+msgid "VisuGUI_GaussScalarBarPane::GLOBAL"
+msgstr "Global"
+
+msgid "VisuGUI_GaussScalarBarPane::DISPLAYED"
+msgstr "Displayed"
+
+msgid "VisuGUI_GaussScalarBarPane::SCALAR_RANGE_GRP"
+msgstr "Scalar range"
+
+msgid "VisuGUI_GaussScalarBarPane::LOGARITHMIC_SCALING"
+msgstr "Logarithmic scaling"
+
+msgid "VisuGUI_GaussScalarBarPane::FIELD_RANGE_BTN"
+msgstr "Use field range"
+
+msgid "VisuGUI_GaussScalarBarPane::IMPOSED_RANGE_BTN"
+msgstr "Use imposed range"
+
+msgid "VisuGUI_GaussScalarBarPane::LBL_MIN"
+msgstr "Min:"
+
+msgid "VisuGUI_GaussScalarBarPane::LBL_MAX"
+msgstr "Max:"
+
+msgid "VisuGUI_GaussScalarBarPane::COLORS_LABELS_GRP"
+msgstr "Colors and labels"
+
+msgid "VisuGUI_GaussScalarBarPane::BICOLOR"
+msgstr "Bicolor"
+
+msgid "VisuGUI_GaussScalarBarPane::RAINBOW"
+msgstr "Rainbow"
+
+msgid "VisuGUI_GaussScalarBarPane::LBL_NB_COLORS"
+msgstr "Nb. of colors:"
+
+msgid "VisuGUI_GaussScalarBarPane::LBL_NB_LABELS"
+msgstr "Nb. of labels:"
+
+msgid "VisuGUI_GaussScalarBarPane::ORIENTATION_GRP"
+msgstr "Orientation"
+
+msgid "VisuGUI_GaussScalarBarPane::VERTICAL_BTN"
+msgstr "Vertical"
+
+msgid "VisuGUI_GaussScalarBarPane::HORIZONTAL_BTN"
+msgstr "Horizontal"
+
+msgid "VisuGUI_GaussScalarBarPane::ORIGIN_GRP"
+msgstr "Origin"
+
+msgid "VisuGUI_GaussScalarBarPane::LBL_X"
+msgstr "X:"
+
+msgid "VisuGUI_GaussScalarBarPane::LBL_Y"
+msgstr "Y:"
+
+msgid "VisuGUI_GaussScalarBarPane::DIMENSIONS_GRP"
+msgstr "Dimensions"
+
+msgid "VisuGUI_GaussScalarBarPane::LBL_WIDTH"
+msgstr "Width:"
+
+msgid "VisuGUI_GaussScalarBarPane::LBL_HEIGHT"
+msgstr "Height:"
+
+msgid "VisuGUI_GaussScalarBarPane::LBL_SPACING"
+msgstr "Spacing:"
+
+msgid "VisuGUI_GaussScalarBarPane::SAVE_DEFAULT_CHK"
+msgstr "Save as default values"
+
+msgid "VVTK_ViewWindow::LBL_TOOLBAR_LABEL"
+msgstr "GAUSS viewer tools"
+
+msgid "VVTK_SegmentationCursorDlg::SEGMENTATION_CURSOR_DLG_TITLE"
+msgstr "Segmentation Cursor"
+
+msgid "VVTK_SegmentationCursorDlg::ORIGIN_TITLE"
+msgstr "Origin"
+
+msgid "VVTK_SegmentationCursorDlg::ORIGIN_X"
+msgstr "X: "
+
+msgid "VVTK_SegmentationCursorDlg::ORIGIN_Y"
+msgstr "Y: "
+
+msgid "VVTK_SegmentationCursorDlg::ORIGIN_Z"
+msgstr "Z: "
+
+msgid "VVTK_SegmentationCursorDlg::DIRECTION_TITLE"
+msgstr "Direction"
+
+msgid "VVTK_SegmentationCursorDlg::DIRECTION_DX"
+msgstr "DX: "
+
+msgid "VVTK_SegmentationCursorDlg::DIRECTION_DY"
+msgstr "DY: "
+
+msgid "VVTK_SegmentationCursorDlg::DIRECTION_DZ"
+msgstr "DZ: "
+
+msgid "VVTK_SegmentationCursorDlg::DEPTH_TITLE"
+msgstr "Depth"
+
+msgid "VVTK_SegmentationCursorDlg::DEPTH"
+msgstr "Depth of the cursor: "
+
+msgid "VVTK_SegmentationCursorDlg::RADIUS_TITLE"
+msgstr "Radius"
+
+msgid "VVTK_SegmentationCursorDlg::RADIUS"
+msgstr "Radius of the cursor :"
+
+msgid "VVTK_SegmentationCursorDlg::RATIO"
+msgstr "+/- Ratio :"
+
+msgid "VVTK_SegmentationCursorDlg::SEGMENTATION_CURSOR_TAB"
+msgstr "Segmentation Cursor"
+
+msgid "VVTK_SegmentationCursorDlg::GAUSS_POINTS_TAB"
+msgstr "Gauss Points"
+
+msgid "VVTK_SegmentationCursorDlg::INSIDE_GAUSS_POINTS"
+msgstr "Inside Cursor Gauss Points Presentation"
+
+msgid "VVTK_SegmentationCursorDlg::OUTSIDE_GAUSS_POINTS"
+msgstr "Outside Cursor Gauss Points Presentation"
+
+msgid "VVTK_SegmentationCursorDlg::MAGNIFICATION_TITLE"
+msgstr "Magnification"
+
+msgid "VVTK_SegmentationCursorDlg::MAGNIFICATION"
+msgstr "Magnification (%) : "
+
+msgid "VVTK_SegmentationCursorDlg::INCREMENT"
+msgstr "+/- Ratio : "
+
+msgid "VVTK_PickingDlg::PICKING_DLG_TITLE"
+msgstr "Picking"
+
+msgid "VVTK_PickingDlg::CURSOR_TITLE"
+msgstr "Cursor"
+
+msgid "VVTK_PickingDlg::CURSOR_SIZE"
+msgstr "Size of the cursor :"
+
+msgid "VVTK_PickingDlg::PYRAMID_HEIGHT"
+msgstr "Height of the pyramids :"
+
+msgid "VVTK_PickingDlg::SELECTION_COLOR"
+msgstr "Selection cursor color :"
+
+msgid "VVTK_PickingDlg::TOLERANCE_TITLE"
+msgstr "Tolerance"
+
+msgid "VVTK_PickingDlg::POINT_TOLERANCE"
+msgstr "Point tolerance :"
+
+msgid "VVTK_PickingDlg::INFO_WINDOW_TITLE"
+msgstr "Information window"
+
+msgid "VVTK_PickingDlg::TRANSPARENCY"
+msgstr "Transparency :"
+
+msgid "VVTK_PickingDlg::POSITION"
+msgstr "Position :"
+
+msgid "VVTK_PickingDlg::BELOW_POINT"
+msgstr "Centered below the point"
+
+msgid "VVTK_PickingDlg::TOP_LEFT_CORNER"
+msgstr "Top-left corner of the 3D view"
+
+msgid "VVTK_PickingDlg::CAMERA_TITLE"
+msgstr "Movement of the camera"
+
+msgid "VVTK_PickingDlg::ZOOM_FACTOR"
+msgstr "Zoom at first selected point (ratio) :"
+
+msgid "VVTK_PickingDlg::STEP_NUMBER"
+msgstr "Number of steps between two positions :"
+
+msgid "VVTK_PickingDlg::PARENT_MESH_TITLE"
+msgstr "Parent mesh element"
+
+msgid "VVTK_PickingDlg::DISPLAY_PARENT_MESH"
+msgstr "Display parent mesh element"
\ No newline at end of file
index e2742d98a7a916e5be66398798aabda37c699a51..0c935ffadefcf88dd4bac939f16f1b57bdd44c01 100644 (file)
@@ -22,7 +22,7 @@
 //
 //
 //  File   : VisuGUI.cxx
-//  Author : Laurent CORNABE
+//  Author :
 //  Module : VISU
 //  $Header$
 
 #include <qptrlist.h>
 #include <qptrvector.h>
 #include <qcolordialog.h>
+#include <qdatetime.h>
 
 // VTK Includes
 #include <vtkRenderer.h>
 #include <vtkRenderWindow.h>
 #include <vtkActorCollection.h>
+#include <vtkTimerLog.h>
 
 // SALOME Includes
 #include "SALOME_LifeCycleCORBA.hxx"
@@ -54,7 +56,6 @@
 
 #include "CAM_Module.h"
 
-#include "SVTK_RenderWindow.h"
 #include "SVTK_ViewWindow.h"
 #include "SVTK_ViewModel.h"
 #include "SVTK_Functor.h"
 #include "VisuGUI_Selection.h"
 #include "VisuGUI_TimeAnimation.h"
 #include "VisuGUI_EditContainerDlg.h"
-#include "VisuGUI_NonIsometricDlg.h"
 #include "VisuGUI_ClippingDlg.h"
 #include "VisuGUI_Plot3DDlg.h"
-#include "VisuGUI_CubeAxesDlg.h"
 #include "VisuGUI_OffsetDlg.h"
 #include "VisuGUI_Displayer.h"
+#include "VisuGUI_BuildProgressDlg.h"
+#include "VisuGUI_TransparencyDlg.h"
 
 #include "VISU_ScalarMap_i.hh"
 #include "VisuGUI_ScalarBarDlg.h"
 
 #include "VisuGUI_ActionsDef.h"
 
+#include "VisuGUI_Timer.h"
+
 using namespace VISU;
 
 #ifdef _DEBUG_
@@ -159,59 +162,17 @@ VisuGUI::~VisuGUI()
 {
 }
 
-
 void
 VisuGUI::
 OnImportFromFile()
 {
   if(MYDEBUG) MESSAGE("VisuGUI::OnImportFromFile()");
-  if ( CheckLock(GetCStudy(GetAppStudy(this))) )
+  if ( CheckLock(GetCStudy(GetAppStudy(this)),GetDesktop(this)) )
     return;
-  SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr();
-
-  QStringList aFilter;
-  aFilter.append( tr("FLT_MED_FILES") );
-  aFilter.append( tr("FLT_ALL_FILES") );
-
-  QFileInfo aFileInfo =
-    SUIT_FileDlg::getFileName(GetDesktop(this),
-                              "",
-                              aFilter,
-                              tr("MEN_IMPORT_FROM_FILE"),
-                              true);
-  if(aFileInfo.exists()) {
-    application()->putInfo( "Importing From File " + aFileInfo.filePath() + "..." );
-
-    VISU::Result_var aResult;
-    bool anIsBuild = aResourceMgr->booleanValue("VISU", "full_med_loading", false);
-    if (VisuGUI_FileDlg::IsBuild) {
-      aResult = GetVisuGen(this)->ImportFile(aFileInfo.filePath());
-      if (!CORBA::is_nil(aResult.in()))
-        if (Result_i* aRes = dynamic_cast<Result_i*>(GetServant(aResult).in())) {
-          if (!aRes->IsPossible())
-            SUIT_MessageBox::warn1(GetDesktop(this),
-                                   tr("WRN_VISU"),
-                                   tr("ERR_CANT_BUILD_PRESENTATION"),
-                                   tr("BUT_OK"));
-          else
-            aRes->BuildAll();
-        }
-    } else {
-      aResourceMgr->setValue("VISU", "full_med_loading", false);
-      aResult = GetVisuGen(this)->ImportFile(aFileInfo.filePath());
-      aResourceMgr->setValue("VISU", "full_med_loading", anIsBuild);
-    }
 
-    if (CORBA::is_nil(aResult.in())) {
-      SUIT_MessageBox::warn1(GetDesktop(this),
-                             tr("WRN_VISU"),
-                             tr("ERR_ERROR_IN_THE_FILE"),
-                             tr("BUT_OK"));
-    }else{
-      application()->putInfo(aFileInfo.filePath() + tr("INF_DONE"));
-      UpdateObjBrowser(this);
-    }
-  }
+  VisuGUI_BuildProgressDlg* aBuildProgressDlg = new VisuGUI_BuildProgressDlg( GetDesktop(this) );
+  aBuildProgressDlg->setGenerator( GetVisuGen(this) );
+  aBuildProgressDlg->show();
 }
 
 
@@ -221,7 +182,7 @@ OnExploreMEDFile()
 {
   if(MYDEBUG) MESSAGE("VisuGUI::OnExploreMEDFile()");
   _PTR(Study) aStudy = GetCStudy(GetAppStudy(this));
-  if ( CheckLock(aStudy) )
+  if ( CheckLock(aStudy,GetDesktop(this)) )
     return;
 
   SALOME_MED::MED_Gen_var aGen = GetMEDEngine();
@@ -262,7 +223,7 @@ VisuGUI::
 OnImportTableFromFile()
 {
   if(MYDEBUG) MESSAGE("VisuGUI::OnImportTableFromFile()");
-  if ( CheckLock(GetCStudy(GetAppStudy(this))) )
+  if ( CheckLock(GetCStudy(GetAppStudy(this)),GetDesktop(this)) )
     return;
 
   QStringList aFilter;
@@ -400,7 +361,7 @@ VisuGUI::
 OnImportMedField()
 {
   _PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
-  if (CheckLock(aCStudy))
+  if (CheckLock(aCStudy,GetDesktop(this)))
     return;
   SALOMEDS::Study_var aStudy = GetDSStudy(aCStudy);
 
@@ -461,7 +422,8 @@ CreateCurves( SalomeApp_Module* theModule,
       if ( aTblObj ) {
         _PTR(GenericAttribute) anAttr;
         if (aTblObj->FindAttribute( anAttr, "AttributeName" ) ) {
-          aBuilder->RemoveObjectWithChildren( aIter->Value() ); // We should have only one child
+          aBuilder->RemoveObjectWithChildren( aTblObj ); // We should have only one child
+         UpdateObjBrowser(theModule,true,aTblObj);
           break;
         }
       }
@@ -497,7 +459,7 @@ VisuGUI::
 OnCreateMesh()
 {
   _PTR(Study) aStudy = GetCStudy(GetAppStudy(this));
-  if (CheckLock(aStudy))
+  if (CheckLock(aStudy,GetDesktop(this)))
     return;
 
   // Get selected SObject
@@ -517,7 +479,7 @@ VisuGUI::
 OnCreateManyMesh()
 {
   _PTR(Study) aStudy = GetCStudy(GetAppStudy(this));
-  if (CheckLock(aStudy))
+  if (CheckLock(aStudy,GetDesktop(this)))
     return;
 
   // create a VTK view window if it does not exist
@@ -598,7 +560,7 @@ void
 VisuGUI::
 OnCreatePlot2dView()
 {
-  CheckLock(GetCStudy(GetAppStudy(this)));
+  CheckLock(GetCStudy(GetAppStudy(this)),GetDesktop(this));
   GetVisuGen( this )->CreateContainer();
   UpdateObjBrowser(this);
 }
@@ -717,7 +679,7 @@ OnEditScalarMap()
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
     EditPrs3d<VISU::ScalarMap_i, VisuGUI_ScalarBarDlg,1>(this, aPrs3d);
-    if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
+    if(SVTK_ViewWindow* aViewWindow = GetViewWindow(this)){
       aViewWindow->highlight(anIO, 1);
     }
   }
@@ -731,7 +693,7 @@ OnEditDeformedShape()
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
     EditPrs3d<VISU::DeformedShape_i, VisuGUI_DeformedShapeDlg,1>(this, aPrs3d);
-    if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
+    if(SVTK_ViewWindow* aViewWindow = GetViewWindow(this)){
       aViewWindow->highlight(anIO, 1);
     }
   }
@@ -745,7 +707,7 @@ OnEditCutPlanes()
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
     EditPrs3d<VISU::CutPlanes_i, VisuGUI_CutPlanesDlg,0>(this, aPrs3d);
-    if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
+    if(SVTK_ViewWindow* aViewWindow = GetViewWindow(this)){
       aViewWindow->highlight(anIO, 1);
     }
   }
@@ -759,7 +721,7 @@ OnEditCutLines()
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
     EditPrs3d<VISU::CutLines_i, VisuGUI_CutLinesDlg,0>(this, aPrs3d);
-    if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
+    if(SVTK_ViewWindow* aViewWindow = GetViewWindow(this)){
       aViewWindow->highlight(anIO, 1);
     }
   }
@@ -773,7 +735,7 @@ OnEditIsoSurfaces()
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
     EditPrs3d<VISU::IsoSurfaces_i, VisuGUI_IsoSurfacesDlg,1>(this, aPrs3d);
-    if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
+    if(SVTK_ViewWindow* aViewWindow = GetViewWindow(this)){
       aViewWindow->highlight(anIO, 1);
     }
   }
@@ -787,7 +749,7 @@ OnEditVectors()
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
     EditPrs3d<VISU::Vectors_i, VisuGUI_VectorsDlg,1>(this, aPrs3d);
-    if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
+    if(SVTK_ViewWindow* aViewWindow = GetViewWindow(this)){
       aViewWindow->highlight(anIO, 1);
     }
   }
@@ -801,7 +763,7 @@ OnEditStreamLines()
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
     EditPrs3d<VISU::StreamLines_i, VisuGUI_StreamLinesDlg,1>(this, aPrs3d);
-    if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
+    if(SVTK_ViewWindow* aViewWindow = GetViewWindow(this)){
       aViewWindow->highlight(anIO, 1);
     }
   }
@@ -815,7 +777,7 @@ OnEditPlot3D()
   Handle(SALOME_InteractiveObject) anIO;
   if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
     EditPrs3d<VISU::Plot3D_i, VisuGUI_Plot3DDlg,0>(this, aPrs3d);
-    if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
+    if(SVTK_ViewWindow* aViewWindow = GetViewWindow(this)){
       aViewWindow->highlight(anIO, 1);
     }
   }
@@ -827,7 +789,7 @@ VisuGUI::
 OnEraseAll()
 {
   startOperation( myEraseAll );
-  if (SVTK_ViewWindow* vw = GetViewWindow()) {
+  if (SVTK_ViewWindow* vw = GetViewWindow(this)) {
     vw->unHighlightAll();
     if (vtkRenderer *aRen = vw->getRenderer()) {
       vtkActor *anActor;
@@ -835,8 +797,6 @@ OnEraseAll()
       for (anActColl->InitTraversal(); (anActor = anActColl->GetNextActor()) != NULL; ) {
         if (anActor->GetVisibility() > 0)
           if (VISU_Actor* anVISUActor = VISU_Actor::SafeDownCast(anActor)) {
-           RemoveScalarBarPosition(this,anVISUActor->GetPrs3d());
-            anVISUActor = anVISUActor->GetParent();
            RemoveScalarBarPosition(this,anVISUActor->GetPrs3d());
             anVISUActor->VisibilityOff();
           }
@@ -917,7 +877,7 @@ OnChangeColor()
   VISU::Prs3d_i* aPrs3d = dynamic_cast<VISU::Prs3d_i*>(aServant.in());
   if (!aPrs3d) return;
 
-  SVTK_ViewWindow* vw = GetViewWindow();
+  SVTK_ViewWindow* vw = GetViewWindow(this);
   if (!vw) return;
 
   VISU_Actor* anActor = GetActor(aPrs3d, vw);
@@ -989,7 +949,7 @@ OnChangeWireframeColor()
   VISU::Prs3d_i* aPrs3d = dynamic_cast<VISU::Prs3d_i*>(aServant.in());
   if (!aPrs3d) return;
 
-  SVTK_ViewWindow* vw = GetViewWindow();
+  SVTK_ViewWindow* vw = GetViewWindow(this);
   if (!vw) return;
 
   VISU_Actor* anActor = GetActor(aPrs3d, vw);
@@ -1024,31 +984,14 @@ OnChangeOpacity()
   VISU::Prs3d_i* aPrsObject = dynamic_cast<VISU::Prs3d_i*>(aServant.in());
   if (!aPrsObject) return;
 
-  SVTK_ViewWindow* vw = GetViewWindow();
+  SVTK_ViewWindow* vw = GetViewWindow(this);
   if (!vw) return;
 
   VISU_Actor* anActor = GetActor(aPrsObject, vw);
   if (!anActor) return;
 
-  VisuGUI_CursorDlg* CursorDlg =
-    new VisuGUI_CursorDlg (GetDesktop(this), tr("DLG_OPACITY_TITLE"), TRUE);
-
-  CursorDlg->Comment1->setText(tr("DLG_OPACITY_CMT1"));
-  CursorDlg->Comment2->setText(tr("DLG_OPACITY_CMT2"));
-  CursorDlg->SpinBox1->setMinValue(0);
-  CursorDlg->SpinBox1->setMaxValue(100);
-
-  float oldopac = anActor->GetOpacity();
-  int intopac = int(oldopac*100. + 0.5);
-  CursorDlg->SpinBox1->setValue(intopac);
-
-  int ret = CursorDlg->exec();
-  if (ret == 1) {
-    intopac = CursorDlg->SpinBox1->value();
-    float newopac = intopac/100.;
-    anActor->SetOpacity(newopac);
-  }
-  delete CursorDlg;
+  VisuGUI_TransparencyDlg* aTransparencyDlg = new VisuGUI_TransparencyDlg( this );
+  aTransparencyDlg->show();
 }
 
 void
@@ -1064,7 +1007,7 @@ OnChangeLines()
   VISU::Prs3d_i* aPrsObject = dynamic_cast<VISU::Prs3d_i*>(aServant.in());
   if (!aPrsObject) return;
 
-  SVTK_ViewWindow* vw = GetViewWindow();
+  SVTK_ViewWindow* vw = GetViewWindow(this);
   if (!vw) return;
 
   VISU_Actor* anActor = GetActor(aPrsObject, vw);
@@ -1146,7 +1089,7 @@ VisuGUI::
 OnDeleteObjects()
 {
   _PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
-  if (CheckLock(aCStudy))
+  if (CheckLock(aCStudy,GetDesktop(this)))
     return;
 
   SALOME_ListIO aList;
@@ -1173,14 +1116,12 @@ OnDeleteObjects()
     _PTR(SObject) aSObject = aCStudy->FindObjectID(entries[i]);
     if (aSObject) {
       DeleteSObject(this, aCStudy, aSObject);
+      UpdateObjBrowser(this, true, aSObject);
     }
   }
 
   // Finish transaction
   aStudyBuilder->CommitCommand();
-
-  //GetActiveStudy()->unHighlightAll();
-  UpdateObjBrowser(this, true);
 }
 
 void
@@ -1386,7 +1327,7 @@ VisuGUI::
 OnClearContainer()
 {
   _PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
-  if (CheckLock(aCStudy))
+  if (CheckLock(aCStudy,GetDesktop(this)))
     return;
   Handle(SALOME_InteractiveObject) anIO;
   CORBA::Object_var anObject = GetSelectedObj(this, &anIO);
@@ -1434,7 +1375,7 @@ VisuGUI::
 OnSaveViewParams()
 {
   _PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
-  if (CheckLock(aCStudy))
+  if (CheckLock(aCStudy,GetDesktop(this)))
     return;
 
   SUIT_ViewManager* aViewMgr = getApp()->activeViewManager();
@@ -1482,7 +1423,7 @@ VisuGUI::
 OnRename()
 {
   _PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
-  if (CheckLock(aCStudy))
+  if (CheckLock(aCStudy,GetDesktop(this)))
     return;
 
   Handle(SALOME_InteractiveObject) anIO;
@@ -1590,7 +1531,7 @@ OnSweep()
   VISU::ScalarMap_i* aPrsObject = dynamic_cast<VISU::ScalarMap_i*>(aServant.in());
   if (!aPrsObject) return;
 
-  SVTK_ViewWindow* vw = GetViewWindow();
+  SVTK_ViewWindow* vw = GetViewWindow(this);
   if (!vw) return;
 
   VISU_Actor* aActor = GetActor(aPrsObject, vw);
@@ -1617,7 +1558,7 @@ OnSweep()
         float aPercents = float(i)/aSteps;
         aPrsObject->SetMapScale(aPercents);
         aPrsObject->UpdateActor(aActor);
-        vw->getRenderWindow()->getRenderWindow()->Render();
+        vw->getRenderWindow()->Render();
         usleep(aTemp);
       } catch (std::exception& exc) {
         INFOS("Follow exception was occured :\n" << exc.what());
@@ -1633,9 +1574,11 @@ void
 VisuGUI::
 OnTimeAnimation()
 {
+  if(!VISU::GetViewWindow(this))
+    return;
+
   _PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
   VisuGUI_TimeAnimationDlg* aAnimationDlg =
-//    new VisuGUI_TimeAnimationDlg(GetDesktop(this), aCStudy);
     new VisuGUI_TimeAnimationDlg (this, aCStudy);
 
   LightApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(this);
@@ -1670,6 +1613,9 @@ void
 VisuGUI::
 OnShowAnimation()
 {
+  if(!VISU::GetViewWindow(this))
+    return;
+
   LightApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(this);
   SALOME_ListIO aListIO;
   aSelectionMgr->selectedObjects(aListIO);
@@ -1707,7 +1653,7 @@ VisuGUI::
 OnCopyPresentation()
 {
   _PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
-  if (CheckLock(aCStudy))
+  if (CheckLock(aCStudy,GetDesktop(this)))
     return;
 
   Handle(SALOME_InteractiveObject) anIO;
@@ -1800,8 +1746,8 @@ void
 VisuGUI::
 OnSelectionInfo()
 {
-  if (GetViewWindow())
-    (new VisuGUI_SelectionDlg(GetDesktop(this)))->show();
+  if (GetViewWindow(this))
+    (new VisuGUI_SelectionDlg(this))->show();
   else
     SUIT_MessageBox::warn1(GetDesktop(this),
                            tr("WRN_VISU"),
@@ -1809,25 +1755,6 @@ OnSelectionInfo()
                            tr("BUT_OK") );
 }
 
-void
-VisuGUI::
-OnScaling()
-{
-  VisuGUI_NonIsometricDlg* m_NonIsoDlg =
-    new VisuGUI_NonIsometricDlg (GetDesktop(this), "m_NonIsoDlg",
-                                 false, Qt::WDestructiveClose);
-  m_NonIsoDlg->show();
-}
-
-void
-VisuGUI::
-OnCubeAxes()
-{
-  //Show dialog that allows to select scale function and corresponding scale factor
-  VisuGUI_CubeAxesDlg* aDlg = new VisuGUI_CubeAxesDlg (GetDesktop(this));
-  aDlg->show();
-}
-
 void
 VisuGUI::
 OnMergeScalarBars()
@@ -1969,7 +1896,7 @@ void
 VisuGUI::
 OnArrangeActors()
 {
-  SVTK_ViewWindow* vw = GetViewWindow();
+  SVTK_ViewWindow* vw = GetViewWindow(this);
   if (vw) {
     ArrangeDlg* aDlg = new ArrangeDlg (GetDesktop(this), vw);
     aDlg->exec();
@@ -2286,16 +2213,6 @@ createActions()
                 //this, SLOT(OnEraseAll()));
                 this);
 
-  aPixmap = aResourceMgr->loadPixmap("VISU",tr("ICON_SCALING"));
-  createAction( VISU_SCALING, tr("MEN_SCALING"), QIconSet(aPixmap),
-                tr("MEN_SCALING"), "", 0, aParent, false,
-                this, SLOT(OnScaling()));
-
-  aPixmap = aResourceMgr->loadPixmap("VISU",tr("ICON_CUBE_AXES"));
-  createAction( VISU_CUBE_AXES, tr("MEN_CUBE_AXES"), QIconSet(aPixmap),
-                tr("MEN_CUBE_AXES"), "", 0, aParent, false,
-                this, SLOT(OnCubeAxes()));
-
   createAction( VISU_SHOW_ANIMATION, tr("MEN_SHOW_ANIMATION"), QIconSet(),
                 tr("MEN_SHOW_ANIMATION"), "", 0, aParent, false,
                 this, SLOT(OnShowAnimation()));
@@ -2335,8 +2252,6 @@ createMenus()
   createMenu( VISU_ERASE_ALL, aMenuId, 10 ); // erase all
   createMenu( VISU_GLOBAL_SELECTION, aMenuId, 10 ); // global selection
   createMenu( VISU_PARTIAL_SELECTION, aMenuId, 10 ); // partial selection
-  createMenu( VISU_SCALING, aMenuId, 10 ); // scaling
-  createMenu( VISU_CUBE_AXES, aMenuId, 10 ); // scaling
 }
 
 void
@@ -2360,8 +2275,6 @@ createToolBars()
   createTool( VISU_ERASE_ALL, aToolId );
   createTool( VISU_GLOBAL_SELECTION, aToolId );
   createTool( VISU_PARTIAL_SELECTION, aToolId );
-  createTool( VISU_SCALING, aToolId );
-  createTool( VISU_CUBE_AXES, aToolId );
 }
 
 void
@@ -2501,7 +2414,7 @@ createPopupMenus()
   QString orCurveInvisible = "or (type='VISU::TCURVE'" + andInvisible + ")";
   QString aPrsVisible   = "(($type in {'VISU::TMESH' " + aPrsAll + "}) and isVisible)";
   QString aPrsInvisible = "(($type in {'VISU::TMESH' " + aPrsAll + "})" + andInvisible + ")";
-  QString aComponent = "( selcount=1 and canBeDisplayed )";
+  QString aComponent = "( selcount=1 and canBeDisplayed and isComponent )";
 
   QString anEraseRule = "( selcount>0 and ({true} in $canBeDisplayed) and (" + aPrsVisible +
     " or (client='ObjectBrowser' and (" + aTableOrCont + orCurveVisible + "))) ) or " + aComponent;
@@ -2525,10 +2438,10 @@ createPopupMenus()
   mgr->setRule( action( VISU_FREE_SCALAR_BARS ), aRule, true );
 
   // view parameters
-  aRule = "selcount=1 and type='VISU::TVIEW3D'";
+  aRule = "selcount=1 and type='VISU::TVIEW3D' and activeView='VTKViewer'";
   mgr->setRule( action( VISU_SAVE_VIEW_PARAMS_1 ), aRule, true );
-  mgr->setRule( action( VISU_SAVE_VIEW_PARAMS ), "client='VTKViewer' and selcount=0", true );
-  mgr->setRule( action( VISU_RESTORE_VIEW_PARAMS ), "selcount=1 and type='VISU::TVIEW3D'", true );
+  mgr->setRule( action( VISU_SAVE_VIEW_PARAMS ), "client='VTKViewer' and selcount=0 and activeView='VTKViewer'", true );
+  mgr->setRule( action( VISU_RESTORE_VIEW_PARAMS ), "selcount=1 and type='VISU::TVIEW3D' and activeView='VTKViewer'", true );
   //mgr->setRule( action( VISU_DELETE_VIEW_PARAMS ), "selcount=1 and type='VISU::TVIEW3D'", true );
 
   mgr->setRule( action( VISU_ARRANGE_ACTORS ), "client='VTKViewer' and selcount=0", true );
@@ -2619,7 +2532,10 @@ createPopupMenus()
   aRule = "client='VTKViewer' and selcount=1" + aInsideType;
   mgr->setRule( action( VISU_SELECTION_INFO ), aRule, true );
 
-  aRule = "client='ObjectBrowser' and selcount>0 and $type in {'VISU::TFIELD'} and nbTimeStamps>1";
+  aRule = "client='ObjectBrowser' and selcount>0";
+  aRule += " and $type in {'VISU::TFIELD'}";
+  aRule += " and nbTimeStamps>1";
+  aRule += " and activeView in {'VTKViewer' 'VVTK'}";
   mgr->setRule( action( VISU_ANIMATION ), aRule, true );
 
   aRule = "client='ObjectBrowser' and $type in {'VISU::TENTITY' 'VISU::TFAMILY' 'VISU::TGROUP'}";
@@ -2853,6 +2769,42 @@ void VisuGUI::createPreferences()
   // TAB: "Scalar Bar"
   int sbarTab = addPreference( tr( "VISU_SCALAR_BAR" ) );
 
+  int rangeGr = addPreference( tr( "VISU_SCALAR_RANGE" ), sbarTab );
+  setPreferenceProperty( rangeGr, "columns", 1 );
+
+  int mode = addPreference( tr( "VISU_SCALAR_MODE" ), rangeGr, LightApp_Preferences::Selector, "VISU", "scalar_bar_mode" );
+  QStringList modes;
+  modes.append( tr( "VISU_MODULUS" ) );
+  modes.append( tr( "VISU_COMPONENT" ) + tr("1") );
+  modes.append( tr( "VISU_COMPONENT" ) + tr("2") );
+  modes.append( tr( "VISU_COMPONENT" ) + tr("3") );
+  QValueList<QVariant> indices;
+  indices.append( 0 );
+  indices.append( 1 );
+  indices.append( 2 );
+  indices.append( 3 );
+  setPreferenceProperty( mode, "strings", modes );
+  setPreferenceProperty( mode, "indexes", indices );
+
+  addPreference( tr( "VISU_LOGARITHMIC_SCALING" ), rangeGr, LightApp_Preferences::Bool, "VISU", "scalar_bar_logarithmic" );
+
+  int rangetype = addPreference( tr( "VISU_RANGE_TO_USE" ), rangeGr, LightApp_Preferences::Selector, "VISU", "scalar_range_type" );
+  QStringList types;
+  types.append( tr( "VISU_FIELD_RANGE" ) );
+  types.append( tr( "VISU_IMPOSED_RANGE" ) );
+  indices.clear();
+  indices.append( 0 );
+  indices.append( 1 );
+  setPreferenceProperty( rangetype, "strings", types );
+  setPreferenceProperty( rangetype, "indexes", indices );
+
+  int imposedGr = addPreference( tr( "VISU_MINMAX_IMPOSED_RANGE" ), sbarTab );
+
+  int min = addPreference( tr( "VISU_MIN" ), imposedGr, LightApp_Preferences::DblSpin, "VISU", "scalar_range_min" );
+  int max = addPreference( tr( "VISU_MAX" ), imposedGr, LightApp_Preferences::DblSpin, "VISU", "scalar_range_max" );
+  setPreferenceProperty( min, "step", 0.1 );
+  setPreferenceProperty( max, "step", 0.1 );
+
   // group: "Font"
   int fontGr = addPreference( tr( "VISU_FONT" ), sbarTab );
   int tfont = addPreference( tr( "VISU_TITLE" ), fontGr,
@@ -2885,7 +2837,7 @@ void VisuGUI::createPreferences()
   int numcol = addPreference( tr( "VISU_NB_COLORS" ), colorsLabelsGr,
                               LightApp_Preferences::IntSpin, "VISU", "scalar_bar_num_colors" );
   setPreferenceProperty( numcol, "min", 2 );
-  setPreferenceProperty( numcol, "max", 64 );
+  setPreferenceProperty( numcol, "max", 256 );
 
   int numlab = addPreference( tr( "VISU_NB_LABELS" ), colorsLabelsGr,
                               LightApp_Preferences::IntSpin, "VISU", "scalar_bar_num_labels" );
@@ -2899,7 +2851,7 @@ void VisuGUI::createPreferences()
   QStringList orients;
   orients.append( tr( "VISU_VERTICAL" ) );
   orients.append( tr( "VISU_HORIZONTAL" ) );
-  QValueList<QVariant> indices;
+  indices.clear();
   indices.append( 0 );
   indices.append( 1 );
   setPreferenceProperty( orient, "strings", orients );
@@ -2953,54 +2905,9 @@ void VisuGUI::createPreferences()
 
   // group: "Scalar bars default position"
   int scalarBarGr = addPreference( tr( "Scalar bars default position" ), sbarTab );
-  addPreference( tr( "Arrange Scalar Bars" ), scalarBarGr,
-                 LightApp_Preferences::Bool, "VISU", "scalar_bars_default_position" );
-
-  // TAB: "Scalar range, Sweep, MED import, Shading"
-  int srangeTab = addPreference( tr( "VISU_PREF_SECOND_TAB" ) );
+  addPreference( tr( "Arrange Scalar Bars" ), scalarBarGr, LightApp_Preferences::Bool, "VISU", "scalar_bars_default_position" );
 
-  // group: "Scalar range"
-  int rangeGr = addPreference( tr( "VISU_SCALAR_RANGE" ), srangeTab );
-  setPreferenceProperty( rangeGr, "columns", 1 );
-
-  int mode = addPreference( tr( "VISU_SCALAR_MODE" ), rangeGr,
-                            LightApp_Preferences::Selector, "VISU", "scalar_bar_mode" );
-  QStringList modes;
-  modes.append( tr( "VISU_MODULUS" ) );
-  modes.append( tr( "VISU_COMPONENT" ) + tr("1") );
-  modes.append( tr( "VISU_COMPONENT" ) + tr("2") );
-  modes.append( tr( "VISU_COMPONENT" ) + tr("3") );
-  indices.clear();
-  indices.append( 0 );
-  indices.append( 1 );
-  indices.append( 2 );
-  indices.append( 3 );
-  setPreferenceProperty( mode, "strings", modes );
-  setPreferenceProperty( mode, "indexes", indices );
-
-  addPreference( tr( "VISU_LOGARITHMIC_SCALING" ), rangeGr,
-                 LightApp_Preferences::Bool, "VISU", "scalar_bar_logarithmic" );
-
-  int rangetype = addPreference( tr( "VISU_RANGE_TO_USE" ), rangeGr,
-                                 LightApp_Preferences::Selector, "VISU", "scalar_range_type" );
-  QStringList types;
-  types.append( tr( "VISU_FIELD_RANGE" ) );
-  types.append( tr( "VISU_IMPOSED_RANGE" ) );
-  indices.clear();
-  indices.append( 0 );
-  indices.append( 1 );
-  setPreferenceProperty( rangetype, "strings", types );
-  setPreferenceProperty( rangetype, "indexes", indices );
-
-  // group: "Min and max for imposed range"
-  int imposedGr = addPreference( tr( "VISU_MINMAX_IMPOSED_RANGE" ), srangeTab );
-
-  int min = addPreference( tr( "VISU_MIN" ), imposedGr,
-                           LightApp_Preferences::DblSpin, "VISU", "scalar_range_min" );
-  int max = addPreference( tr( "VISU_MAX" ), imposedGr,
-                           LightApp_Preferences::DblSpin, "VISU", "scalar_range_max" );
-  setPreferenceProperty( min, "step", 0.1 );
-  setPreferenceProperty( max, "step", 0.1 );
+  int srangeTab = addPreference( tr( "Sweep, MED import" ) );
 
   // group: "Sweeping preferences"
   int sweepGr = addPreference( tr( "VISU_SWEEPING_PREF" ), srangeTab );
@@ -3019,9 +2926,14 @@ void VisuGUI::createPreferences()
   setPreferenceProperty( nbsteps,  "max",  200  );
 
   // group: "MED files import"
-  int importGr = addPreference( tr( "VISU_PREF_MED_IMPORT" ), srangeTab );
-  addPreference( tr( "VISU_PREF_MED_FULL_LOAD" ), importGr,
-                 LightApp_Preferences::Bool, "VISU", "full_med_loading" );
+  int importGr = addPreference( tr( "MED files import" ), srangeTab );
+  setPreferenceProperty( importGr, "columns", 1 );
+  addPreference( tr( "Full MED loading" ), importGr, LightApp_Preferences::Bool, "VISU", "full_med_loading" );
+  addPreference( tr( "Build at once" ), importGr, LightApp_Preferences::Bool, "VISU", "build_at_once" );
+  addPreference( tr( "Build fields" ), importGr, LightApp_Preferences::Bool, "VISU", "build_fields" );
+  addPreference( tr( "Build min/max" ), importGr, LightApp_Preferences::Bool, "VISU", "build_min_max" );
+  addPreference( tr( "Build groups" ), importGr, LightApp_Preferences::Bool, "VISU", "build_groups" );
+  addPreference( tr( "Close dialog at finish" ), importGr, LightApp_Preferences::Bool, "VISU", "close_at_finish" );
 
   // group: "Representation properties"
   int representGr = addPreference( tr( "VISU_PREF_REPRESENT_PROPS" ), srangeTab );
index 45e3b059f3330d1352ecdc90fa0a5e06c4ba8621..411b0bfc82323cfdf3f7104397db48cb07d5e983 100644 (file)
@@ -138,8 +138,8 @@ protected slots:
   void OnMergeScalarBars();
   void OnFreeScalarBars();
 
-  void OnSaveViewParams();
-  void OnRestoreViewParams();
+  virtual void OnSaveViewParams();
+  virtual void OnRestoreViewParams();
 
   void OnRename();
   void OnClippingPlanes();
@@ -154,9 +154,6 @@ protected slots:
   void OnTranslatePrs();
   void OnArrangeActors();
 
-  void OnScaling();
-  void OnCubeAxes();
-
 protected:
   virtual LightApp_Selection* createSelection() const;
 
diff --git a/src/VISUGUI/VisuGUI_BuildProgressDlg.cxx b/src/VISUGUI/VisuGUI_BuildProgressDlg.cxx
new file mode 100644 (file)
index 0000000..7705f32
--- /dev/null
@@ -0,0 +1,392 @@
+//  VISU VISUGUI : GUI of VISU 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   : VisuGUI_BuildProgressDlg.cxx
+//  Author : Oleg UVAROV
+//  Module : VISU
+
+#include "VisuGUI_BuildProgressDlg.h"
+
+#include "VisuGUI_Tools.h"
+
+#include "SUIT_FileDlg.h"
+#include "SUIT_MessageBox.h"
+#include "SUIT_ResourceMgr.h"
+
+#include <vtkTimerLog.h>
+
+#include <qcheckbox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlcdnumber.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qtimer.h>
+
+/*!
+ * Constructor
+ */
+VisuGUI_BuildProgressDlg::VisuGUI_BuildProgressDlg( QWidget* theParent ):
+  QDialog( theParent, "VisuGUI_BuildProgressBar", false ),
+  myIsRaiseColor( false )
+{
+  setCaption( tr( "DLG_BUILD_PROGRESS_TITLE" ) );
+
+  SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr();
+
+  QVBoxLayout* aTopLayout = new QVBoxLayout( this );
+  aTopLayout->setSpacing( 6 );
+  aTopLayout->setMargin( 6 );
+  aTopLayout->setAutoAdd( true );
+
+  // Settings
+  mySettingsBox = new QGroupBox( tr( "IMPORT_SETTINGS" ), this );
+  mySettingsBox->setColumnLayout( 0, Qt::Vertical );
+  mySettingsBox->layout()->setSpacing( 0 );
+  mySettingsBox->layout()->setMargin( 0 );
+
+  QGridLayout* aSettingsLayout = new QGridLayout( mySettingsBox->layout() );
+  aSettingsLayout->setSpacing( 6 );
+  aSettingsLayout->setMargin( 11 );
+
+  QLabel* aFileNameLabel = new QLabel( tr( "FILE_NAME" ), mySettingsBox );
+  myFileNameLineEdit = new QLineEdit( mySettingsBox );
+  myFileNameLineEdit->setMinimumWidth( 250 );
+  myFileNameLineEdit->setReadOnly( true );
+  /*
+  QPushButton* aFileNameButton = new QPushButton( mySettingsBox );
+  aFileNameButton->setAutoDefault( false );
+  aFileNameButton->setPixmap( aResourceMgr->loadPixmap( "VISU", tr( "ICON_LOAD_TEXTURE" ) ) );
+  connect( aFileNameButton, SIGNAL( clicked() ), this, SLOT( onBrowseFile() ) );
+  */
+  myBuildAllCheckBox = new QCheckBox( tr( "BUILD_ALL" ), mySettingsBox );
+  myBuildAllCheckBox->setChecked( aResourceMgr->booleanValue( "VISU", "full_med_loading", false ) );
+  connect( myBuildAllCheckBox, SIGNAL( clicked() ), this, SLOT( onBuildCheckBoxClicked() ) );
+
+  myBuildAtOnceCheckBox = new QCheckBox( tr( "BUILD_AT_ONCE" ), mySettingsBox );
+  myBuildAtOnceCheckBox->setChecked( aResourceMgr->booleanValue( "VISU", "build_at_once", false ) );
+  connect( myBuildAtOnceCheckBox, SIGNAL( clicked() ), this, SLOT( onBuildCheckBoxClicked() ) );
+
+  myCloseCheckBox = new QCheckBox( tr( "CLOSE_AT_FINISH" ), mySettingsBox );
+  myCloseCheckBox->setChecked( aResourceMgr->booleanValue( "VISU", "close_at_finish", true ) );
+
+  aSettingsLayout->addWidget(  aFileNameLabel,       0, 0 );
+  aSettingsLayout->addMultiCellWidget( myFileNameLineEdit, 1, 1, 0, 1 );
+  //aSettingsLayout->addWidget(  aFileNameButton,      1, 2 );
+  aSettingsLayout->addWidget( myBuildAllCheckBox,    2, 0 );
+  aSettingsLayout->addWidget( myBuildAtOnceCheckBox, 3, 0 );
+  aSettingsLayout->addWidget( myCloseCheckBox,       4, 0 );
+
+  // Progress
+  myProgressBox = new QGroupBox( tr( "IMPORT_PROGRESS" ), this );
+  myProgressBox->setColumnLayout( 0, Qt::Vertical );
+  myProgressBox->layout()->setSpacing( 0 );
+  myProgressBox->layout()->setMargin( 0 );
+
+  QGridLayout* aProgressLayout = new QGridLayout( myProgressBox->layout() );
+  aProgressLayout->setSpacing( 6 );
+  aProgressLayout->setMargin( 11 );
+
+  myBuildEntitiesCheckBox = new QCheckBox( tr( "BUILD_ENTITIES" ), myProgressBox );
+  myBuildEntitiesCheckBox->setChecked( true );
+  myBuildEntitiesCheckBox->setEnabled( false );
+  myBuildEntitiesButton = new QPushButton( myProgressBox );
+  myBuildEntitiesButton->setEnabled( false );
+  myBuildEntitiesButton->setFixedSize( 30, 30 );
+  myBuildEntitiesButton->setPaletteBackgroundColor( Qt::red );
+  connect( myBuildEntitiesCheckBox, SIGNAL( clicked() ), this, SLOT( onBuildCheckBoxClicked() ) );
+
+  myBuildFieldsCheckBox = new QCheckBox( tr( "BUILD_FIELDS" ), myProgressBox );
+  myBuildFieldsCheckBox->setChecked( aResourceMgr->booleanValue( "VISU", "build_fields", true ) );
+  myBuildFieldsButton = new QPushButton( myProgressBox );
+  myBuildFieldsButton->setEnabled( false );
+  myBuildFieldsButton->setFixedSize( 30, 30 );
+  myBuildFieldsButton->setPaletteBackgroundColor( Qt::red );
+  connect( myBuildFieldsCheckBox, SIGNAL( clicked() ), this, SLOT( onBuildCheckBoxClicked() ) );
+
+  myBuildMinMaxCheckBox = new QCheckBox( tr( "BUILD_MINMAX" ), myProgressBox );
+  myBuildMinMaxCheckBox->setChecked( aResourceMgr->booleanValue( "VISU", "build_min_max", true ) );
+  myBuildMinMaxButton = new QPushButton( myProgressBox );
+  myBuildMinMaxButton->setEnabled( false );
+  myBuildMinMaxButton->setFixedSize( 30, 30 );
+  myBuildMinMaxButton->setPaletteBackgroundColor( Qt::red );
+  connect( myBuildMinMaxCheckBox, SIGNAL( clicked() ), this, SLOT( onBuildCheckBoxClicked() ) );
+
+  myBuildGroupsCheckBox = new QCheckBox( tr( "BUILD_GROUPS" ), myProgressBox );
+  myBuildGroupsCheckBox->setChecked( aResourceMgr->booleanValue( "VISU", "build_groups", true ) );
+  myBuildGroupsButton = new QPushButton( myProgressBox );
+  myBuildGroupsButton->setEnabled( false );
+  myBuildGroupsButton->setFixedSize( 30, 30 );
+  myBuildGroupsButton->setPaletteBackgroundColor( Qt::red );
+  connect( myBuildGroupsCheckBox, SIGNAL( clicked() ), this, SLOT( onBuildCheckBoxClicked() ) );
+
+  aProgressLayout->addWidget( myBuildEntitiesCheckBox, 0, 0 );
+  aProgressLayout->addWidget( myBuildEntitiesButton,   0, 1 );
+  aProgressLayout->addWidget( myBuildFieldsCheckBox,   1, 0 );
+  aProgressLayout->addWidget( myBuildFieldsButton,     1, 1 );
+  aProgressLayout->addWidget( myBuildMinMaxCheckBox,   2, 0 );
+  aProgressLayout->addWidget( myBuildMinMaxButton,     2, 1 );
+  aProgressLayout->addWidget( myBuildGroupsCheckBox,   3, 0 );
+  aProgressLayout->addWidget( myBuildGroupsButton,     3, 1 );
+
+  // Time
+  myTimeBox = new QGroupBox( tr( "IMPORT_TIME" ), this );
+  myTimeBox->setColumnLayout( 0, Qt::Vertical );
+  myTimeBox->layout()->setSpacing( 0 );
+  myTimeBox->layout()->setMargin( 0 );
+
+  QGridLayout* aTimeLayout = new QGridLayout( myTimeBox->layout() );
+  aTimeLayout->setSpacing( 6 );
+  aTimeLayout->setMargin( 11 );
+
+  QLabel* aTimeLabel = new QLabel( tr( "TIME" ), myTimeBox );
+
+  myTimeLCDNumber = new QLCDNumber( myTimeBox );
+  myTimeLCDNumber->setSegmentStyle( QLCDNumber::Filled );
+  myTimeLCDNumber->setPaletteBackgroundColor( Qt::black );
+  myTimeLCDNumber->setPaletteForegroundColor( Qt::white );
+  myTimeLCDNumber->setNumDigits( 8 );
+  myTimeLCDNumber->display( myTime.toString( "hh:mm:ss.zzz" ) );
+
+  aTimeLayout->addWidget(  aTimeLabel,     0, 0 );
+  aTimeLayout->addWidget( myTimeLCDNumber, 0, 1 );
+
+  // Start / Close
+  QGroupBox* CommonGroup = new QGroupBox( this );
+  CommonGroup->setColumnLayout(0, Qt::Vertical );
+  CommonGroup->layout()->setSpacing( 0 );
+  CommonGroup->layout()->setMargin( 0 );
+  QGridLayout* CommonGroupLayout = new QGridLayout( CommonGroup->layout() );
+  CommonGroupLayout->setAlignment( Qt::AlignTop );
+  CommonGroupLayout->setSpacing( 6 );
+  CommonGroupLayout->setMargin( 11 );
+
+  myStartButton = new QPushButton( tr( "START" ), CommonGroup );
+  myStartButton->setAutoDefault( true );
+  myStartButton->setDefault( true );
+  CommonGroupLayout->addWidget( myStartButton, 0, 0 );
+  CommonGroupLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 );
+
+  QPushButton* aCloseButton = new QPushButton( tr( "CLOSE" ), CommonGroup );
+  aCloseButton->setAutoDefault( true );
+  CommonGroupLayout->addWidget( aCloseButton, 0, 2 );
+
+  connect( myStartButton, SIGNAL( clicked() ), this, SLOT( onStart() ) );
+  connect(  aCloseButton, SIGNAL( clicked() ), this, SLOT( onClose() ) );
+
+  myTimer = new QTimer( this );
+  connect( myTimer, SIGNAL( timeout() ), this, SLOT( onTimer() ) );
+}
+
+VisuGUI_BuildProgressDlg::~VisuGUI_BuildProgressDlg()
+{
+}
+
+void VisuGUI_BuildProgressDlg::show()
+{
+  if( onBrowseFile() )
+    QWidget::show();
+}
+
+void VisuGUI_BuildProgressDlg::onStart()
+{
+  if( myFileName.isNull() )
+    return;
+
+  bool aBuildAll = myBuildAllCheckBox->isChecked();
+  bool aBuildAtOnce = myBuildAtOnceCheckBox->isChecked();
+
+  myResult = myGenerator->CreateResult( myFileName );
+
+  myResult->SetBuildFields( myBuildFieldsCheckBox->isChecked(), myBuildMinMaxCheckBox->isChecked() );
+  myResult->SetBuildGroups( myBuildGroupsCheckBox->isChecked() );
+
+  //setModal( false );
+  myFileNameLineEdit->setReadOnly( true );
+  /*
+  myBuildAllCheckBox->setNoChange();
+  myBuildAtOnceCheckBox->setNoChange();
+  myBuildEntitiesCheckBox->setNoChange();
+  myBuildFieldsCheckBox->setNoChange();
+  myBuildMinMaxCheckBox->setNoChange();
+  myBuildGroupsCheckBox->setNoChange();
+  */
+
+  myStartButton->setEnabled( false );
+
+  if( aBuildAtOnce )
+  {
+    QApplication::setOverrideCursor( Qt::waitCursor );
+    myCurrentTime = vtkTimerLog::GetCurrentTime();
+  }
+
+  myTime.setHMS( 0, 0, 0 );
+  myTimer->start( 100 );
+
+  myResult->Build( aBuildAll, aBuildAtOnce );
+}
+
+void VisuGUI_BuildProgressDlg::onClose()
+{
+  done( 0 );
+}
+
+bool VisuGUI_BuildProgressDlg::onBrowseFile()
+{
+  QString aRootDir = QString( getenv( "VISU_ROOT_DIR") );
+
+  QStringList aFilter;
+  aFilter.append( tr( "FLT_MED_FILES" ) );
+  aFilter.append( tr( "FLT_ALL_FILES" ) );
+
+  QFileInfo aFileInfo = SUIT_FileDlg::getFileName( this, "", aFilter, tr( "IMPORT_FROM_FILE" ), true );
+  QString aFileName = aFileInfo.filePath();
+
+  if( aFileName.isNull() )
+    return false;
+
+  myFileName = aFileName;
+  myFileNameLineEdit->setText( aFileName.section( '/', -1 ) );
+
+  return true;
+}
+
+void VisuGUI_BuildProgressDlg::onTimer()
+{
+  try {
+    bool aBuildAtOnce = myBuildAtOnceCheckBox->isChecked();
+
+    if( !aBuildAtOnce )
+    {
+      myTime = myTime.addMSecs( 100 );
+      if( myTime.minute() > 9 && myTimeLCDNumber->numDigits() < 9 )
+       myTimeLCDNumber->setNumDigits( 9 );
+      myTimeLCDNumber->display( myTime.toString( "m:ss.zzz" ) );
+
+      bool isEntitiesDone = myResult->IsEntitiesDone();
+      bool isFieldsDone = myResult->IsFieldsDone();
+      bool isMinMaxDone = myResult->IsMinMaxDone();
+      bool isGroupsDone = myResult->IsGroupsDone();
+
+      updateButton( myBuildEntitiesButton, isEntitiesDone );
+      updateButton( myBuildFieldsButton, isFieldsDone );
+      updateButton( myBuildMinMaxButton, isMinMaxDone );
+      updateButton( myBuildGroupsButton, isGroupsDone );
+    }
+
+    if( myResult->IsDone() )
+    {
+      myTimer->stop();
+
+      if( aBuildAtOnce )
+      {
+       QApplication::restoreOverrideCursor();
+
+       QTime aTime;
+       int mSecs = ( int )( 1000 * ( vtkTimerLog::GetCurrentTime() - myCurrentTime ) );
+       aTime = aTime.addMSecs( mSecs );
+       if( aTime.minute() > 9 )
+         myTimeLCDNumber->setNumDigits( 9 );
+       myTimeLCDNumber->display( aTime.toString( "m:ss.zzz" ) );
+      }
+
+      if( myCloseCheckBox->isChecked() )
+       done( 0 );
+      else
+       SUIT_MessageBox::warn1( this, tr( "INF_VISU" ), tr( "IMPORT_DONE" ), tr( "BUT_OK" ) );
+    }
+  }
+  catch( ... ) {
+    done( 1 );
+  }
+}
+
+void VisuGUI_BuildProgressDlg::updateButton( QPushButton* theButton, bool theIsDone )
+{
+  QColor aCurrentColor = theButton->paletteBackgroundColor();
+  if( aCurrentColor == Qt::gray || aCurrentColor == Qt::green )
+    return;
+
+  QColor aNewColor = Qt::green;
+
+  if( !theIsDone )
+  {
+    int r, g, b;
+    aCurrentColor.getRgb( &r, &g, &b );
+    if( g == 0 )
+      myIsRaiseColor = true;
+    else if( g == 255 )
+      myIsRaiseColor = false;
+
+    int gNew = g + ( myIsRaiseColor ? 1 : -1 ) * 51;
+
+    aNewColor.setRgb( 255, gNew, 0 );
+  }
+
+  theButton->setPaletteBackgroundColor( aNewColor );
+}
+
+void VisuGUI_BuildProgressDlg::done( int r )
+{
+  QApplication::restoreOverrideCursor();
+  myTimer->stop();
+  QDialog::done( r );
+}
+
+void VisuGUI_BuildProgressDlg::onBuildCheckBoxClicked()
+{
+  QCheckBox* aCheckBox = ( QCheckBox* )sender();
+  if( !aCheckBox )
+    return;
+
+  bool anIsChecked = aCheckBox->isChecked();
+
+  QColor aColor = anIsChecked ? Qt::red : Qt::gray;
+
+  if( aCheckBox == myBuildAllCheckBox )
+  {
+    if( anIsChecked && !myBuildAtOnceCheckBox->isChecked() )
+      myBuildAtOnceCheckBox->animateClick();
+  }
+  else if( aCheckBox == myBuildAtOnceCheckBox )
+  {
+    if( !anIsChecked && myBuildAllCheckBox->isChecked() )
+      myBuildAllCheckBox->animateClick();
+  }
+  else if( aCheckBox == myBuildFieldsCheckBox )
+  {
+    myBuildFieldsButton->setPaletteBackgroundColor( aColor );
+    if( !anIsChecked && myBuildMinMaxCheckBox->isChecked() )
+      myBuildMinMaxCheckBox->animateClick();
+  }
+  else if( aCheckBox == myBuildMinMaxCheckBox )
+  {
+    myBuildMinMaxButton->setPaletteBackgroundColor( aColor );
+    if( anIsChecked && !myBuildFieldsCheckBox->isChecked() )
+      myBuildFieldsCheckBox->animateClick();
+  }
+  else if( aCheckBox == myBuildGroupsCheckBox )
+    myBuildGroupsButton->setPaletteBackgroundColor( aColor );
+
+}
diff --git a/src/VISUGUI/VisuGUI_BuildProgressDlg.h b/src/VISUGUI/VisuGUI_BuildProgressDlg.h
new file mode 100644 (file)
index 0000000..4d88059
--- /dev/null
@@ -0,0 +1,111 @@
+//  VISU VISUGUI : GUI of VISU 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   : VisuGUI_BuildProgressDlg.h
+//  Author : Oleg UVAROV
+//  Module : VISU
+//  $Header$
+
+#ifndef VISUGUI_BUILDPROGRESSDLG_H
+#define VISUGUI_BUILDPROGRESSDLG_H
+
+#include "VISU_Gen_i.hh"
+
+#include <qdatetime.h>
+#include <qdialog.h>
+
+class QCheckBox;
+class QGroupBox;
+class QLCDNumber;
+class QLineEdit;
+class QPushButton;
+class QTimer;
+
+//! Build Progress Dialog.
+class VisuGUI_BuildProgressDlg : public QDialog
+{
+  Q_OBJECT
+
+public:
+  VisuGUI_BuildProgressDlg( QWidget* );
+  ~VisuGUI_BuildProgressDlg();
+
+  virtual void     setGenerator( VISU::VISU_Gen_i* theGenerator ) { myGenerator = theGenerator; }
+  virtual void     show();
+
+  QString          fileName() const { return myFileName; }
+
+protected slots:
+  void             done( int );
+
+  void             onStart();
+  void             onClose();
+
+  bool             onBrowseFile();
+  void             onTimer();
+
+  void             onBuildCheckBoxClicked();
+
+private:
+  void             updateButton( QPushButton*, bool );
+
+private:
+  VISU::Result_var myResult;
+  VISU::VISU_Gen_i* myGenerator;
+
+  QString          myFileName;
+  QTime            myTime;
+  QTimer*          myTimer;
+
+  QGroupBox*       mySettingsBox;
+
+  QLineEdit*       myFileNameLineEdit;
+  QCheckBox*       myBuildAllCheckBox;
+  QCheckBox*       myBuildAtOnceCheckBox;
+
+  QGroupBox*       myProgressBox;
+
+  QCheckBox*       myBuildEntitiesCheckBox;
+  QPushButton*     myBuildEntitiesButton;
+
+  QCheckBox*       myBuildFieldsCheckBox;
+  QPushButton*     myBuildFieldsButton;
+
+  QCheckBox*       myBuildMinMaxCheckBox;
+  QPushButton*     myBuildMinMaxButton;
+
+  QCheckBox*       myBuildGroupsCheckBox;
+  QPushButton*     myBuildGroupsButton;
+
+  QGroupBox*       myTimeBox;
+  QLCDNumber*      myTimeLCDNumber;
+
+  QCheckBox*       myCloseCheckBox;
+
+  QPushButton*     myStartButton;
+
+  double           myCurrentTime;
+  bool             myIsRaiseColor;
+};
+
+#endif
diff --git a/src/VISUGUI/VisuGUI_CubeAxesDlg.cxx b/src/VISUGUI/VisuGUI_CubeAxesDlg.cxx
deleted file mode 100755 (executable)
index 97640bd..0000000
+++ /dev/null
@@ -1,594 +0,0 @@
-//  VISU VISUGUI : GUI for SMESH 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   : VisuGUI_CubeAxesDlg.cxx
-//  Author : Sergey LITONIN
-//  Module : VISU
-
-#include "VisuGUI_CubeAxesDlg.h"
-
-#include "VisuGUI.h"
-#include "VisuGUI_Tools.h"
-#include "VisuGUI_FontWg.h"
-
-#include "SVTK_ViewWindow.h"
-#include "SVTK_CubeAxesActor2D.h"
-
-#include <qlayout.h>
-#include <qframe.h>
-#include <qpushbutton.h>
-#include <qtabwidget.h>
-#include <qcheckbox.h>
-#include <qgroupbox.h>
-#include <qlineedit.h>
-#include <qlabel.h>
-#include <qobjectlist.h>
-#include <qvalidator.h>
-
-#include <vtkAxisActor2D.h>
-#include <vtkTextProperty.h>
-
-/*!
- * Class       : AxisWg
- * Description : Tab of dialog
- */
-
-//=======================================================================
-// name    : VisuGUI_AxisWg::AxisWg
-// Purpose : Constructor
-//=======================================================================
-VisuGUI_AxisWg::VisuGUI_AxisWg (QWidget* theParent)
-:  QFrame(theParent)
-{
-  QValueList< QLabel* > aLabels;
-
-  // "Name" grp
-
-  myNameGrp = new QGroupBox(3, Qt::Vertical, tr("AXIS_NAME"), this);
-  myIsNameVisible = new QCheckBox(tr("IS_VISIBLE"), myNameGrp);
-
-  QHBox* aHBox = new QHBox(myNameGrp);
-  aHBox->setSpacing(5);
-  QLabel* aLabel = new QLabel(tr("NAME"), aHBox);
-  myAxisName = new QLineEdit(aHBox);
-  aLabels.append(aLabel);
-
-  aHBox = new QHBox(myNameGrp);
-  aHBox->setSpacing(5);
-  aLabel = new QLabel(tr("FONT"), aHBox);
-  myNameFont = new VisuGUI_FontWg(aHBox);
-  aLabels.append(aLabel);
-
-
-  // "Labels" grp
-
-  myLabelsGrp = new QGroupBox(4, Qt::Vertical, tr("LABELS"), this);
-  myIsLabelsVisible = new QCheckBox(tr("IS_VISIBLE"), myLabelsGrp);
-
-  aHBox = new QHBox(myLabelsGrp);
-  aHBox->setSpacing(5);
-  aLabel = new QLabel(tr("NUMBER"), aHBox);
-  myLabelNumber = new QLineEdit(aHBox);
-  myLabelNumber->setValidator(new QIntValidator(0, 25, this));
-  myLabelNumber->installEventFilter(this);
-  aLabels.append(aLabel);
-
-  aHBox = new QHBox(myLabelsGrp);
-  aHBox->setSpacing(5);
-  aLabel = new QLabel(tr("OFFSET"), aHBox);
-  myLabelOffset = new QLineEdit(aHBox);
-  aLabels.append(aLabel);
-
-  aHBox = new QHBox(myLabelsGrp);
-  aHBox->setSpacing(5);
-  aLabel = new QLabel(tr("FONT"), aHBox);
-  myLabelsFont = new VisuGUI_FontWg(aHBox);
-  aLabels.append(aLabel);
-
-  // "Tick marks" grp
-
-  myTicksGrp = new QGroupBox(2, Qt::Vertical, tr("TICK_MARKS"), this);
-  myIsTicksVisible = new QCheckBox(tr("IS_VISIBLE"), myTicksGrp);
-
-  aHBox = new QHBox(myTicksGrp);
-  aHBox->setSpacing(5);
-  aLabel = new QLabel(tr("LENGTH"), aHBox);
-  myTickLength = new QLineEdit(aHBox);
-  aLabels.append(aLabel);
-
-  // Layout
-
-  QVBoxLayout* aLay = new QVBoxLayout(this, 0, 5);
-  aLay->addWidget(myNameGrp);
-  aLay->addWidget(myLabelsGrp);
-  aLay->addWidget(myTicksGrp);
-
-  // init
-  myIsNameVisible->setChecked(true);
-  myIsLabelsVisible->setChecked(true);
-  myIsTicksVisible->setChecked(true);
-  updateControlState();
-
-  // Adjust label widths
-  QValueList< QLabel* >::iterator anIter;
-  int aMaxWidth = 0;
-  for (anIter = aLabels.begin(); anIter != aLabels.end(); anIter++)
-    aMaxWidth = QMAX(aMaxWidth, (*anIter)->sizeHint().width());
-  for (anIter = aLabels.begin(); anIter != aLabels.end(); anIter++)
-    (*anIter)->setFixedWidth(aMaxWidth);
-
-  // connect signals and slots
-  connect(myIsNameVisible, SIGNAL(stateChanged(int)), SLOT(onNameChecked()));
-  connect(myIsLabelsVisible, SIGNAL(stateChanged(int)), SLOT(onLabelsChecked()));
-  connect(myIsTicksVisible, SIGNAL(stateChanged(int)), SLOT(onTicksChecked()));
-}
-
-VisuGUI_AxisWg::~VisuGUI_AxisWg()
-{
-}
-
-void VisuGUI_AxisWg::updateControlState()
-{
-  onNameChecked();
-  onLabelsChecked();
-  onTicksChecked();
-}
-
-bool VisuGUI_AxisWg::eventFilter(QObject* o, QEvent* e)
-{
-  if (e->type() == QEvent::FocusOut) {
-    bool isOK = false;
-    int k = myLabelNumber->text().toInt(&isOK);
-    if (isOK && k > 25) myLabelNumber->setText("25");
-  }
-  return false;
-}
-
-//=======================================================================
-// name    : VisuGUI_AxisWg::onNameChecked
-// Purpose :
-//=======================================================================
-void VisuGUI_AxisWg::setEnabled(QGroupBox* theGrp, const bool theState)
-{
-  QObjectList aChildren(*theGrp->children());
-  QObject* anObj;
-  for(anObj = aChildren.first(); anObj !=0; anObj = aChildren.next())
-    if (anObj !=0 && anObj->inherits("QHBox"))
-      ((QHBox*)anObj)->setEnabled(theState);
-}
-
-//=======================================================================
-// Labels    : VisuGUI_AxisWg::onLabelsChecked
-// Purpose :
-//=======================================================================
-void VisuGUI_AxisWg::onLabelsChecked()
-{
-  setEnabled(myLabelsGrp, myIsLabelsVisible->isChecked());
-}
-
-//=======================================================================
-// Labels    : VisuGUI_AxisWg::onTicksChecked
-// Purpose :
-//=======================================================================
-void VisuGUI_AxisWg::onTicksChecked()
-{
-  setEnabled(myTicksGrp, myIsTicksVisible->isChecked());
-}
-
-//=======================================================================
-// name    : VisuGUI_AxisWg::onNameChecked
-// Purpose :
-//=======================================================================
-void VisuGUI_AxisWg::onNameChecked()
-{
-  setEnabled(myNameGrp, myIsNameVisible->isChecked());
-}
-
-//=======================================================================
-// name    : VisuGUI_AxisWg::UseName
-// Purpose :
-//=======================================================================
-void VisuGUI_AxisWg::UseName(const bool toUse)
-{
-  myIsNameVisible->setChecked(toUse);
-}
-
-//=======================================================================
-// name    : VisuGUI_AxisWg::SetName
-// Purpose :
-//================================================== =====================
-void VisuGUI_AxisWg::SetName(const QString& theName)
-{
-  myAxisName->setText(theName);
-}
-
-//=======================================================================
-// name    : VisuGUI_AxisWg::SetNameFont
-// Purpose :
-//=======================================================================
-void VisuGUI_AxisWg::SetNameFont(const QColor& theColor,
-                                  const int theFont,
-                                  const bool theIsBold,
-                                  const bool theIsItalic,
-                                  const bool theIsShadow)
-{
-  myNameFont->SetData(theColor, theFont, theIsBold, theIsItalic, theIsShadow);
-}
-
-//=======================================================================
-// name    : VisuGUI_AxisWg::SetNameFont
-// Purpose :
-//=======================================================================
-bool VisuGUI_AxisWg::ReadData(vtkAxisActor2D* theActor)
-{
-  if (theActor == 0)
-    return false;
-
-  // Name
-
-  bool useName = theActor->GetTitleVisibility();
-  QString aTitle(theActor->GetTitle());
-
-  QColor aTitleColor(255, 255, 255);
-  int aTitleFontFamily = VTK_ARIAL;
-  bool isTitleBold = false;
-  bool isTitleItalic = false;
-  bool isTitleShadow = false;
-
-  vtkTextProperty* aTitleProp = theActor->GetTitleTextProperty();
-  if (aTitleProp !=0)
-  {
-    float c[ 3 ];
-    aTitleProp->GetColor(c);
-    aTitleColor.setRgb((int)(c[ 0 ] * 255), (int)(c[ 1 ] * 255), (int)(c[ 2 ] * 255));
-    aTitleFontFamily = aTitleProp->GetFontFamily();
-    isTitleBold = aTitleProp->GetBold() ? true : false;
-    isTitleItalic = aTitleProp->GetItalic() ? true : false;
-    isTitleShadow = aTitleProp->GetShadow() ? true : false;
-  }
-
-  myIsNameVisible->setChecked(useName);
-  myAxisName->setText(aTitle);
-  myNameFont->SetData(aTitleColor, aTitleFontFamily, isTitleBold, isTitleItalic, isTitleShadow);
-
-  // Labels
-
-  bool useLabels = theActor->GetLabelVisibility();
-  int nbLabels = theActor->GetNumberOfLabels();
-  int anOffset = theActor->GetTickOffset();
-
-  QColor aLabelsColor(255, 255, 255);
-  int aLabelsFontFamily = VTK_ARIAL;
-  bool isLabelsBold = false;
-  bool isLabelsItalic = false;
-  bool isLabelsShadow = false;
-
-  vtkTextProperty* aLabelsProp = theActor->GetLabelTextProperty();
-  if (aLabelsProp !=0)
-  {
-    float c[ 3 ];
-    aLabelsProp->GetColor(c);
-    aLabelsColor.setRgb((int)(c[ 0 ] * 255), (int)(c[ 1 ] * 255), (int)(c[ 2 ] * 255));
-    aLabelsFontFamily = aLabelsProp->GetFontFamily();
-    isLabelsBold = aLabelsProp->GetBold() ? true : false;
-    isLabelsItalic = aLabelsProp->GetItalic() ? true : false;
-    isLabelsShadow = aLabelsProp->GetShadow() ? true : false;
-  }
-
-  myIsLabelsVisible->setChecked(useLabels);
-  myLabelNumber->setText(QString("%1").arg(nbLabels));
-  myLabelOffset->setText(QString("%1").arg(anOffset));
-  myLabelsFont->SetData(aLabelsColor, aLabelsFontFamily, isLabelsBold, isLabelsItalic, isLabelsShadow);
-
-  // Tick marks
-  bool useTickMarks = theActor->GetTickVisibility();
-  int aTickLength = theActor->GetTickLength();
-
-  myIsTicksVisible->setChecked(useTickMarks);
-  myTickLength->setText(QString("%1").arg(aTickLength));
-
-  return true;
-}
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::Apply
-// Purpose :
-//=======================================================================
-bool VisuGUI_AxisWg::Apply(vtkAxisActor2D* theActor)
-{
-   if (theActor == 0)
-    return false;
-
-  // Name
-
-  theActor->SetTitleVisibility(myIsNameVisible->isChecked() ? 1 : 0);
-  theActor->SetTitle(myAxisName->text().latin1());
-
-  QColor aTitleColor(255, 255, 255);
-  int aTitleFontFamily = VTK_ARIAL;
-  bool isTitleBold = false;
-  bool isTitleItalic = false;
-  bool isTitleShadow = false;
-
-  myNameFont->GetData(aTitleColor, aTitleFontFamily, isTitleBold, isTitleItalic, isTitleShadow);
-  vtkTextProperty* aTitleProp = theActor->GetTitleTextProperty();
-  if (aTitleProp)
-  {
-    aTitleProp->SetColor(aTitleColor.red() / 255.,
-                          aTitleColor.green() / 255.,
-                          aTitleColor.blue() / 255.);
-    aTitleProp->SetFontFamily(aTitleFontFamily);
-
-    aTitleProp->SetBold(isTitleBold ? 1 : 0);
-    aTitleProp->SetItalic(isTitleItalic ? 1 : 0);
-    aTitleProp->SetShadow(isTitleShadow ? 1 : 0);
-
-    theActor->SetTitleTextProperty(aTitleProp);
-  }
-
-  // Labels
-
-  theActor->SetLabelVisibility(myIsLabelsVisible->isChecked() ? 1 : 0);
-
-  bool isOk = false;
-  int nbLabels = myLabelNumber->text().toInt(&isOk);
-  if (isOk)
-    theActor->SetNumberOfLabels(nbLabels);
-
-  int anOffset = myLabelOffset->text().toInt(&isOk);
-  if (isOk)
-    theActor->SetTickOffset(anOffset);
-
-  QColor aLabelsColor(255, 255, 255);
-  int aLabelsFontFamily = VTK_ARIAL;
-  bool isLabelsBold = false;
-  bool isLabelsItalic = false;
-  bool isLabelsShadow = false;
-
-  myLabelsFont->GetData(aLabelsColor, aLabelsFontFamily, isLabelsBold, isLabelsItalic, isLabelsShadow);
-  vtkTextProperty* aLabelsProp = theActor->GetLabelTextProperty();
-  if (aLabelsProp)
-  {
-    aLabelsProp->SetColor(aLabelsColor.red() / 255.,
-                          aLabelsColor.green() / 255.,
-                          aLabelsColor.blue() / 255.);
-    aLabelsProp->SetFontFamily(aLabelsFontFamily);
-
-    aLabelsProp->SetBold(isLabelsBold ? 1 : 0);
-    aLabelsProp->SetItalic(isLabelsItalic ? 1 : 0);
-    aLabelsProp->SetShadow(isLabelsShadow ? 1 : 0);
-
-    aLabelsProp->Modified();
-    theActor->SetLabelTextProperty(aLabelsProp);
-  }
-
-
-  // Tick marks
-  theActor->SetTickVisibility(myIsTicksVisible->isChecked());
-  int aTickLength = myTickLength->text().toInt(&isOk);
-  if (isOk)
-    theActor->SetTickLength(aTickLength);
-
-  return true;
-}
-
-/*
-  Class       : VisuGUI_CubeAxesDlg
-  Description : Dialog for specifynig cube axes properties
-*/
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::VisuGUI_CubeAxesDlg
-// Purpose : Constructor
-//=======================================================================
-VisuGUI_CubeAxesDlg::VisuGUI_CubeAxesDlg(QWidget* theParent)
-: QDialog(theParent, "VisuGUI_CubeAxesDlg", false,
-    WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose)
-{
-  setCaption(tr("CAPTION"));
-
-  QVBoxLayout* aLay = new QVBoxLayout(this, 5, 5);
-  aLay->addWidget(createMainFrame(this));
-  aLay->addWidget(createButtonFrame(this));
-
-  Init();
-
-//if (VISU::GetDesktop()->getMainFrame())
-//  connect(VISU::GetDesktop()->getMainFrame(), SIGNAL(windowActivated(QWidget*)),
-//          SLOT(onWindowActivated(QWidget*)));
-}
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::createMainFrame
-// Purpose : Create frame containing dialog's input fields
-//=======================================================================
-QWidget* VisuGUI_CubeAxesDlg::createMainFrame(QWidget* theParent)
-{
-  QFrame* aFrame = new QFrame(theParent);
-
-  myTabWg = new QTabWidget(aFrame);
-
-  myAxes[ 0 ] = new VisuGUI_AxisWg(myTabWg);
-  myAxes[ 1 ] = new VisuGUI_AxisWg(myTabWg);
-  myAxes[ 2 ] = new VisuGUI_AxisWg(myTabWg);
-
-  myTabWg->addTab(myAxes[ 0 ], tr("X_AXIS"));
-  myTabWg->addTab(myAxes[ 1 ], tr("Y_AXIS"));
-  myTabWg->addTab(myAxes[ 2 ], tr("Z_AXIS"));
-
-  myTabWg->setMargin(5);
-
-  myIsVisible = new QCheckBox(tr("IS_VISIBLE"), aFrame);
-
-  QVBoxLayout* aLay = new QVBoxLayout(aFrame, 0, 5);
-  aLay->addWidget(myTabWg);
-  aLay->addWidget(myIsVisible);
-
-  return aFrame;
-}
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::createButtonFrame
-// Purpose : Create frame containing buttons
-//=======================================================================
-QWidget* VisuGUI_CubeAxesDlg::createButtonFrame(QWidget* theParent)
-{
-  QFrame* aFrame = new QFrame(theParent);
-  aFrame->setFrameStyle(QFrame::Box | QFrame::Sunken);
-
-  myOkBtn    = new QPushButton(tr("BUT_OK"), aFrame);
-  myApplyBtn = new QPushButton(tr("BUT_APPLY"), aFrame);
-  myCloseBtn = new QPushButton(tr("BUT_CLOSE"), aFrame);
-
-  QSpacerItem* aSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);
-
-  QHBoxLayout* aLay = new QHBoxLayout(aFrame, 5, 5);
-
-  aLay->addWidget(myOkBtn);
-  aLay->addWidget(myApplyBtn);
-  aLay->addItem(aSpacer);
-  aLay->addWidget(myCloseBtn);
-
-  connect(myOkBtn,    SIGNAL(clicked()), SLOT(onOk()));
-  connect(myApplyBtn, SIGNAL(clicked()), SLOT(onApply()));
-  connect(myCloseBtn, SIGNAL(clicked()), SLOT(onClose()));
-
-  return aFrame;
-}
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::~VisuGUI_CubeAxesDlg
-// Purpose : Destructor
-//=======================================================================
-VisuGUI_CubeAxesDlg::~VisuGUI_CubeAxesDlg()
-{
-}
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::Init
-// Purpose : Init dialog fields, connect signals and slots, show dialog
-//=======================================================================
-bool VisuGUI_CubeAxesDlg::Init()
-{
-  SVTK_ViewWindow* aFrame = VISU::GetViewWindow();
-  if (aFrame == 0)
-    return false;
-
-  SVTK_CubeAxesActor2D* anActor = aFrame->GetCubeAxes();
-  if (anActor == 0)
-    return false;
-
-  myAxes[ 0 ]->ReadData(anActor->GetXAxisActor2D());
-  myAxes[ 1 ]->ReadData(anActor->GetYAxisActor2D());
-  myAxes[ 2 ]->ReadData(anActor->GetZAxisActor2D());
-
-  myIsVisible->setChecked(anActor->GetVisibility() ? true : false);
-
-  return true;
-
-}
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::isValid
-// Purpose : Verify validity of entry data
-//=======================================================================
-bool VisuGUI_CubeAxesDlg::isValid() const
-{
-  return true;
-}
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::onApply
-// Purpose : Verify validity of entry data
-//=======================================================================
-bool VisuGUI_CubeAxesDlg::onApply()
-{
-  bool isOk = true;
-
-  try
-  {
-    SVTK_ViewWindow* aFrame = VISU::GetViewWindow();
-    if (aFrame == 0)
-      return false;
-
-    SVTK_CubeAxesActor2D* anActor = aFrame->GetCubeAxes();
-    if (anActor == 0)
-      return false;
-
-    isOk = isOk && myAxes[ 0 ]->Apply(anActor->GetXAxisActor2D());
-    isOk = isOk && myAxes[ 1 ]->Apply(anActor->GetYAxisActor2D());
-    isOk = isOk && myAxes[ 2 ]->Apply(anActor->GetZAxisActor2D());
-
-
-    //anActor->SetXLabel(myAxes[ 0 ]->myAxisName->text());
-    //anActor->SetYLabel(myAxes[ 1 ]->myAxisName->text());
-    //anActor->SetZLabel(myAxes[ 2 ]->myAxisName->text());
-
-    //anActor->SetNumberOfLabels(anActor->GetXAxisActor2D()->GetNumberOfLabels());
-    if (myIsVisible->isChecked())
-      anActor->VisibilityOn();
-    else
-      anActor->VisibilityOff();
-
-    if (isOk)
-      aFrame->Repaint();
-  }
-  catch(...)
-  {
-    isOk = false;
-  }
-
-  return isOk;
-}
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::onOk
-// Purpose : SLOT called when "Ok" button pressed.
-//=======================================================================
-void VisuGUI_CubeAxesDlg::onOk()
-{
-  if (onApply())
-    onClose();
-}
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::onClose
-// Purpose : SLOT called when "Close" button pressed. Close dialog
-//=======================================================================
-void VisuGUI_CubeAxesDlg::onClose()
-{
-  reject();
-}
-
-//=======================================================================
-// name    : VisuGUI_CubeAxesDlg::onClose
-// Purpose : SLOT called when "Close" button pressed. Close dialog
-//=======================================================================
-void VisuGUI_CubeAxesDlg::onWindowActivated (QWidget*)
-{
-  SVTK_ViewWindow* aFrame = VISU::GetViewWindow();
-  if (aFrame)
-    Init();
-  else
-    onClose();
-}
diff --git a/src/VISUGUI/VisuGUI_CubeAxesDlg.h b/src/VISUGUI/VisuGUI_CubeAxesDlg.h
deleted file mode 100755 (executable)
index 59bcbb0..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-//  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   : VisuGUI_CubeAxesDlg.h
-//  Author : Sergey LITONIN
-//  Module : VISU
-
-
-#ifndef VisuGUI_CubeAxesDlg_H
-#define VisuGUI_CubeAxesDlg_H
-
-#include <qdialog.h>
-#include <qframe.h>
-
-class QWidget;
-class QFrame;
-class QPushButton;
-class QTabWidget;
-class QCheckBox;
-class QLineEdit;
-class VisuGUI_FontWg;
-class QGroupBox;
-class VisuGUI_AxisWg;
-class vtkAxisActor2D;
-
-/*!
- * Class       : VisuGUI_CubeAxesDlg
- * Description : Dialog for specifynig cube axes properties
- */
-class VisuGUI_CubeAxesDlg : public QDialog
-{
-  Q_OBJECT
-
-public:
-                  VisuGUI_CubeAxesDlg( QWidget* );
-  virtual         ~VisuGUI_CubeAxesDlg();
-
-  bool            Init();
-
-private slots:
-  void            onOk();
-  bool            onApply();
-  void            onClose();
-
-  void            onWindowActivated( QWidget* );
-
-private:
-  QWidget*        createButtonFrame( QWidget* );
-  QWidget*        createMainFrame  ( QWidget* );
-  bool            isValid() const;
-
-private:
-  QTabWidget*     myTabWg;
-  QCheckBox*      myIsVisible;
-
-  QPushButton*    myOkBtn;
-  QPushButton*    myApplyBtn;
-  QPushButton*    myCloseBtn;
-  VisuGUI_AxisWg* myAxes[ 3 ];
-};
-
-/*!
- * Class       : VisuGUI_AxisWg
- * Description : Tab of dialog
- */
-class VisuGUI_AxisWg : public QFrame
-{
-  Q_OBJECT
-
-public:
-                  VisuGUI_AxisWg( QWidget* );
-                  ~VisuGUI_AxisWg();
-
-  void            UseName( const bool );
-  void            SetName( const QString& );
-  void            SetNameFont( const QColor&, const int, const bool, const bool, const bool );
-  bool            ReadData( vtkAxisActor2D* );
-  bool            Apply( vtkAxisActor2D* );
-
-protected:
-  bool            eventFilter(QObject*, QEvent*);
-
-private slots:
-  void            onNameChecked();
-  void            onLabelsChecked();
-  void            onTicksChecked();
-
-private:
-  void            updateControlState();
-  void            setEnabled( QGroupBox*, const bool );
-
-private:
-  // name
-  QGroupBox*      myNameGrp;
-  QCheckBox*      myIsNameVisible;
-  QLineEdit*      myAxisName;
-  VisuGUI_FontWg* myNameFont;
-
-  // labels
-  QGroupBox*      myLabelsGrp;
-  QCheckBox*      myIsLabelsVisible;
-  QLineEdit*      myLabelNumber;
-  QLineEdit*      myLabelOffset;
-  VisuGUI_FontWg* myLabelsFont;
-
-  // tick marks
-  QGroupBox*      myTicksGrp;
-  QCheckBox*      myIsTicksVisible;
-  QLineEdit*      myTickLength;
-
-  friend class VisuGUI_CubeAxesDlg;
-};
-
-#endif
index 68d8f28b8208cfb5682e65bfe1626b745ec39d39..380ee7f40e6425bf4ced77387b154e211c3f5aa0 100644 (file)
@@ -27,6 +27,7 @@
 //  $Header: /home/server/cvs/VISU/VISU_SRC/src/VISUGUI/VisuGUI_Displayer.cxx
 
 #include "VisuGUI_Displayer.h"
+#include "VVTK_ViewModel.h"
 #include "VisuGUI_Tools.h"
 #include "VISU_Actor.h"
 
@@ -116,11 +117,9 @@ void VisuGUI_Displayer::buildPrs3d( SVTK_ViewWindow* wnd, VISU::Prs3d_i* thePrs
   VISU_Actor* newAct = VISU::FindActor( wnd, thePrs );
   if( !newAct )
   {
-    VISU_Actor* a = thePrs->CreateActor();
-    if( a )
-      newAct = a->GetParent();
+    newAct = thePrs->CreateActor();
   }
-  if( newAct && newAct )
+  if( newAct )
   {
     wnd->AddActor( newAct );
     wnd->Repaint();
@@ -227,7 +226,7 @@ bool VisuGUI_Displayer::canBeDisplayed( const QString& entry, const QString& vie
   if( study->isComponent( entry ) )
     return true;
 
-  if( viewer_type==SVTK_Viewer::Type() )
+  if( viewer_type==SVTK_Viewer::Type() || viewer_type==VVTK_Viewer::Type())
   {
     VISU::Prs3d_i* thePrs = dynamic_cast<VISU::Prs3d_i*>( VISU::GetServant( anObj ).in() );
     return thePrs;
index 24ea841b2dad44f178bd481aa8d06f9cda2c066a..fea679cb0426c48627624e671a37b8d43fcfd517 100644 (file)
@@ -26,7 +26,7 @@
 //  Module : VISU
 //  $Header$
 
-#include "VisuGUI.h"
+#include "VisuGUI_Module.h"
 
 #include "CAM_Module.h"
 
@@ -34,7 +34,7 @@ extern "C" {
   CAM_Module*
   createModule()
   {
-    return new VisuGUI();
+    return new VisuGUI_Module();
   }
 }
 
diff --git a/src/VISUGUI/VisuGUI_FontWg.cxx b/src/VISUGUI/VisuGUI_FontWg.cxx
deleted file mode 100755 (executable)
index 78d62a1..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-//  VISU VISUGUI : GUI for SMESH 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   : VisuGUI_CubeAxesDlg.cxx
-//  Author : Sergey LITONIN
-//  Module : VISU
-
-#include "VisuGUI_FontWg.h"
-
-#include <qtoolbutton.h>
-#include <qcombobox.h>
-#include <qcolordialog.h>
-#include <qcheckbox.h>
-
-#include <vtkTextProperty.h>
-
-/*!
- * Class       : VisuGUI_FontWg
- * Description : Dialog for specifynig font
- */
-
-//=======================================================================
-// name    : VisuGUI_FontWg
-// Purpose : Constructor
-//=======================================================================
-VisuGUI_FontWg::VisuGUI_FontWg( QWidget* theParent )
-: QHBox( theParent )
-{
-  setSpacing( 5 );
-  myColorBtn = new QToolButton( this );
-  myColorBtn->setMinimumWidth( 20 );
-
-  myFamily = new QComboBox( this );
-  myFamily->insertItem( tr( "ARIAL" ) );
-  myFamily->insertItem( tr( "COURIER" ) );
-  myFamily->insertItem( tr( "TIMES" ) );
-
-  myBold = new QCheckBox( tr( "BOLD" ), this );
-  myItalic = new QCheckBox( tr( "ITALIC" ), this );
-  myShadow = new QCheckBox( tr( "SHADOW" ), this );
-
-  connect( myColorBtn, SIGNAL( clicked() ), SLOT( onColor() ) );
-}
-
-//=======================================================================
-// name    : ~VisuGUI_FontWg
-// Purpose : Destructor
-//=======================================================================
-VisuGUI_FontWg::~VisuGUI_FontWg()
-{
-}
-
-//=======================================================================
-// name    : SetColor
-// Purpose :
-//=======================================================================
-void VisuGUI_FontWg::SetColor( const QColor& theColor )
-{
-  myColorBtn->setPaletteBackgroundColor( theColor );
-}
-
-//=======================================================================
-// name    : GetColor
-// Purpose :
-//=======================================================================
-QColor VisuGUI_FontWg::GetColor() const
-{
-  return myColorBtn->paletteBackgroundColor();
-}
-
-//=======================================================================
-// name    : onColor
-// Purpose :
-//=======================================================================
-void VisuGUI_FontWg::onColor()
-{
-  QColor aColor = QColorDialog::getColor( GetColor(), this );
-  if ( aColor.isValid() )
-    SetColor( aColor );
-}
-
-//=======================================================================
-// name    : SetData
-// Purpose :
-//=======================================================================
-void VisuGUI_FontWg::SetData( const QColor& theColor,
-                              const int theFamily,
-                              const bool theBold,
-                              const bool theItalic,
-                              const bool theShadow )
-{
-  SetColor( theColor );
-
-  if ( theFamily == VTK_ARIAL )
-    myFamily->setCurrentItem( 0 );
-  else if ( theFamily == VTK_COURIER )
-    myFamily->setCurrentItem( 1 );
-  else
-    myFamily->setCurrentItem( 2 );
-
-  myBold->setChecked( theBold );
-  myItalic->setChecked( theItalic );
-  myShadow->setChecked( theShadow );
-}
-
-//=======================================================================
-// name    : GetData
-// Purpose :
-//=======================================================================
-void VisuGUI_FontWg::GetData( QColor& theColor,
-                              int& theFamily,
-                              bool& theBold,
-                              bool& theItalic,
-                              bool& theShadow ) const
-{
-  theColor = GetColor();
-
-  int anItem =myFamily->currentItem();
-  if ( anItem == 0 )
-    theFamily = VTK_ARIAL;
-  else if ( anItem == 1 )
-    theFamily = VTK_COURIER;
-  else
-    theFamily = VTK_TIMES;
-
-  theBold = myBold->isChecked();
-  theItalic = myItalic->isChecked();
-  theShadow = myShadow->isChecked();
-}
diff --git a/src/VISUGUI/VisuGUI_FontWg.h b/src/VISUGUI/VisuGUI_FontWg.h
deleted file mode 100755 (executable)
index e3a45ee..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//  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   : VisuGUI_FontWg.h
-//  Author : Sergey LITONIN
-//  Module : VISU
-
-
-#ifndef VisuGUI_FontWg_H
-#define VisuGUI_FontWg_H
-
-#include <qhbox.h>
-
-class QToolButton;
-class QComboBox;
-class QCheckBox;
-class QColor;
-
-
-/*!
- * Class       : VisuGUI_FontWg
- * Description : Dialog for specifynig font
- */
-class VisuGUI_FontWg : public QHBox
-{
-  Q_OBJECT
-
-public:
-                VisuGUI_FontWg( QWidget* );
-  virtual       ~VisuGUI_FontWg();
-
-  void          SetColor( const QColor& );
-  QColor        GetColor() const;
-
-  void          SetData( const QColor&, const int, const bool, const bool, const bool );
-
-  void          GetData( QColor&, int&, bool&, bool&, bool& ) const;
-
-private slots:
-  void          onColor();
-
-private:
-  QToolButton*  myColorBtn;
-  QComboBox*    myFamily;
-  QCheckBox*    myBold;
-  QCheckBox*    myItalic;
-  QCheckBox*    myShadow;
-};
-
-#endif
diff --git a/src/VISUGUI/VisuGUI_GaussPointsDlg.cxx b/src/VISUGUI/VisuGUI_GaussPointsDlg.cxx
new file mode 100644 (file)
index 0000000..7492c7f
--- /dev/null
@@ -0,0 +1,733 @@
+//  VISU VISUGUI : GUI of VISU 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   : VisuGUI_GaussPointsDlg.cxx
+//  Author : Oleg UVAROV
+//  Module : VISU
+
+#include "VisuGUI_GaussPointsDlg.h"
+
+#include "VISUConfig.hh"
+
+#include "VisuGUI_Tools.h"
+
+#include "VISU_GaussPoints_i.hh"
+#include "VISU_GaussPointsPL.hxx"
+#include "VISU_OpenGLPointSpriteMapper.hxx"
+#include "VISU_Convertor.hxx"
+
+#include "VVTK_PrimitiveBox.h"
+#include "VVTK_SizeBox.h"
+
+#include "SalomeApp_Application.h"
+#include "SalomeApp_Module.h"
+#include "SUIT_Desktop.h"
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Session.h"
+#include "SUIT_MessageBox.h"
+#include "SVTK_FontWidget.h"
+
+#include <qlayout.h>
+#include <qtabwidget.h>
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+#include <qfiledialog.h>
+#include <qvalidator.h>
+#include <qcolordialog.h>
+
+#include <vtkPolyData.h>
+#include <vtkDataSet.h>
+#include <vtkSphereSource.h>
+
+using namespace std;
+
+VisuGUI_GaussScalarBarPane::VisuGUI_GaussScalarBarPane (QWidget * parent, bool SetPref):
+  QVBox(parent)
+{
+  myVerX = 0.01;  myVerY = 0.10;  myVerW = 0.10;  myVerH = 0.80;
+  myHorX = 0.20;  myHorY = 0.01;  myHorW = 0.60;  myHorH = 0.12;
+  Imin = 0.0; Imax = 0.0;
+  myRangeMode = -1;
+
+  setSpacing(6);
+  //setMargin(11);
+
+  // Active bar ========================================================
+  QGroupBox* ActiveBarGroup = new QGroupBox (tr("ACTIVE_BAR_GRP"), this, "ActiveBarGroup");
+  ActiveBarGroup->setColumnLayout(0, Qt::Vertical );
+  ActiveBarGroup->layout()->setSpacing( 0 );
+  ActiveBarGroup->layout()->setMargin( 0 );
+  QGridLayout* ActiveBarGroupLayout = new QGridLayout( ActiveBarGroup->layout() );
+  ActiveBarGroupLayout->setAlignment( Qt::AlignTop );
+  ActiveBarGroupLayout->setSpacing( 6 );
+  ActiveBarGroupLayout->setMargin( 11 );
+
+  QButtonGroup* BarTypeGroup = new QButtonGroup( 2, Qt::Vertical, ActiveBarGroup, "BarTypeGroup" );
+  BarTypeGroup->setRadioButtonExclusive( true );
+  BarTypeGroup->setFrameStyle( QFrame::NoFrame );
+  BarTypeGroup->layout()->setMargin( 0 );
+
+  myRBLocal = new QRadioButton( tr( "LOCAL" ), BarTypeGroup );
+  myRBGlobal = new QRadioButton( tr( "GLOBAL" ), BarTypeGroup );
+
+  myCBDisplayed = new QCheckBox( tr( "DISPLAYED" ), ActiveBarGroup );
+
+  ActiveBarGroupLayout->addMultiCellWidget( BarTypeGroup, 0, 1, 0, 0 );
+  ActiveBarGroupLayout->addWidget( myCBDisplayed, 1, 1 );
+
+  // Range ============================================================
+  RangeGroup = new QButtonGroup (tr("SCALAR_RANGE_GRP"), this, "RangeGroup");
+  RangeGroup->setColumnLayout(0, Qt::Vertical );
+  RangeGroup->layout()->setSpacing( 0 );
+  RangeGroup->layout()->setMargin( 0 );
+  QGridLayout* RangeGroupLayout = new QGridLayout( RangeGroup->layout() );
+  RangeGroupLayout->setAlignment( Qt::AlignTop );
+  RangeGroupLayout->setSpacing( 6 );
+  RangeGroupLayout->setMargin( 11 );
+
+  myModeLbl = new QLabel("Scalar Mode", RangeGroup);
+
+  myModeCombo = new QComboBox(RangeGroup);
+
+  RangeGroupLayout->addWidget( myModeLbl, 0, 0 );
+  RangeGroupLayout->addWidget( myModeCombo, 0, 1 );
+
+  //TopLayout->addWidget( RangeGroup );
+
+  // Colors and Labels ========================================================
+  QGroupBox* ColLabGroup = new QGroupBox (tr("COLORS_LABELS_GRP"), this, "ColLabGroup");
+  ColLabGroup->setColumnLayout(0, Qt::Vertical );
+  ColLabGroup->layout()->setSpacing( 0 );
+  ColLabGroup->layout()->setMargin( 0 );
+  QGridLayout* ColLabGroupLayout = new QGridLayout( ColLabGroup->layout() );
+  ColLabGroupLayout->setAlignment( Qt::AlignTop );
+  ColLabGroupLayout->setSpacing( 6 );
+  ColLabGroupLayout->setMargin( 11 );
+
+  QButtonGroup* TypeGroup = new QButtonGroup( 2, Qt::Vertical, ColLabGroup, "TypeGroup" );
+  TypeGroup->setRadioButtonExclusive( true );
+  TypeGroup->setFrameStyle( QFrame::NoFrame );
+  TypeGroup->layout()->setMargin( 0 );
+
+  BicolorButton = new QRadioButton( tr( "BICOLOR" ), TypeGroup );
+  RainbowButton = new QRadioButton( tr( "RAINBOW" ), TypeGroup );
+
+  ColorLabel = new QLabel (tr("LBL_NB_COLORS"), ColLabGroup, "ColorLabel");
+  ColorSpin = new QSpinBox( 2, 256, 1, ColLabGroup );
+  ColorSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  ColorSpin->setMinimumWidth( 70 );
+  ColorSpin->setValue( 64 );
+
+  LabelLabel = new QLabel (tr("LBL_NB_LABELS"), ColLabGroup, "LabelLabel");
+  LabelSpin = new QSpinBox( 2, 65, 1, ColLabGroup );
+  LabelSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  LabelSpin->setMinimumWidth( 70 );
+  LabelSpin->setValue( 5 );
+
+  ColLabGroupLayout->addMultiCellWidget( TypeGroup, 0, 1, 0, 0);
+  ColLabGroupLayout->addWidget( ColorLabel, 1, 1);
+  ColLabGroupLayout->addWidget( ColorSpin,  1, 2);
+  ColLabGroupLayout->addWidget( LabelLabel, 1, 3);
+  ColLabGroupLayout->addWidget( LabelSpin,  1, 4);
+
+  //TopLayout->addWidget( ColLabGroup );
+
+  // Orientation ==========================================================
+  QButtonGroup* OrientGroup = new QButtonGroup (tr("ORIENTATION_GRP"), this, "OrientGroup");
+  OrientGroup->setColumnLayout(0, Qt::Vertical );
+  OrientGroup->layout()->setSpacing( 0 );
+  OrientGroup->layout()->setMargin( 0 );
+  QGridLayout* OrientGroupLayout = new QGridLayout( OrientGroup->layout() );
+  OrientGroupLayout->setAlignment( Qt::AlignTop );
+  OrientGroupLayout->setSpacing( 6 );
+  OrientGroupLayout->setMargin( 11 );
+
+  RBvert = new QRadioButton (tr("VERTICAL_BTN"), OrientGroup, "RBvert");
+  RBvert->setChecked( true );
+  RBhori = new QRadioButton (tr("HORIZONTAL_BTN"), OrientGroup, "RBhori");
+  OrientGroupLayout->addWidget( RBvert, 0, 0 );
+  OrientGroupLayout->addWidget( RBhori, 0, 1 );
+
+  //  TopLayout->addWidget( OrientGroup );
+
+  // Origin ===============================================================
+  QGroupBox* OriginGroup = new QGroupBox (tr("ORIGIN_GRP"), this, "OriginGroup");
+  OriginGroup->setColumnLayout(0, Qt::Vertical );
+  OriginGroup->layout()->setSpacing( 0 );
+  OriginGroup->layout()->setMargin( 0 );
+  QGridLayout* OriginGroupLayout = new QGridLayout( OriginGroup->layout() );
+  OriginGroupLayout->setAlignment( Qt::AlignTop );
+  OriginGroupLayout->setSpacing( 6 );
+  OriginGroupLayout->setMargin( 11 );
+
+  QLabel* XLabel = new QLabel (tr("LBL_X"), OriginGroup, "XLabel");
+  XSpin = new QtxDblSpinBox( 0.0, 1.0, 0.1, OriginGroup );
+  XSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  XSpin->setMinimumWidth( 70 );
+  XSpin->setValue( 0.01 );
+
+  QLabel* YLabel = new QLabel (tr("LBL_Y"), OriginGroup, "YLabel");
+  YSpin = new QtxDblSpinBox( 0.0, 1.0, 0.1, OriginGroup );
+  YSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  YSpin->setMinimumWidth( 70 );
+  YSpin->setValue( 0.01 );
+
+  OriginGroupLayout->addWidget( XLabel, 0, 0);
+  OriginGroupLayout->addWidget( XSpin,  0, 1);
+  OriginGroupLayout->addWidget( YLabel, 0, 2);
+  OriginGroupLayout->addWidget( YSpin,  0, 3);
+
+  //TopLayout->addWidget( OriginGroup );
+
+  // Dimensions =========================================================
+  QGroupBox* DimGroup = new QGroupBox (tr("DIMENSIONS_GRP"), this, "DimGroup");
+  DimGroup->setColumnLayout(0, Qt::Vertical );
+  DimGroup->layout()->setSpacing( 0 );
+  DimGroup->layout()->setMargin( 0 );
+  QGridLayout* DimGroupLayout = new QGridLayout( DimGroup->layout() );
+  DimGroupLayout->setAlignment( Qt::AlignTop );
+  DimGroupLayout->setSpacing( 6 );
+  DimGroupLayout->setMargin( 11 );
+
+  QLabel* WidthLabel = new QLabel (tr("LBL_WIDTH"), DimGroup, "WidthLabel");
+  WidthSpin = new QtxDblSpinBox( 0.0, 1.0, 0.1, DimGroup );
+  WidthSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  WidthSpin->setMinimumWidth( 70 );
+  WidthSpin->setValue( 0.1 );
+
+  QLabel* HeightLabel = new QLabel (tr("LBL_HEIGHT"), DimGroup, "HeightLabel");
+  HeightSpin = new QtxDblSpinBox( 0.0, 1.0, 0.1, DimGroup );
+  HeightSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  HeightSpin->setMinimumWidth( 70 );
+  HeightSpin->setValue( 0.8 );
+
+  QLabel* SpacingLabel = new QLabel (tr("LBL_SPACING"), DimGroup, "SpacingLabel");
+  SpacingSpin = new QtxDblSpinBox( 0.0, 1.0, 0.01, DimGroup );
+  SpacingSpin->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  SpacingSpin->setMinimumWidth( 70 );
+  SpacingSpin->setValue( 0.01 );
+
+  DimGroupLayout->addWidget( WidthLabel, 0, 0);
+  DimGroupLayout->addWidget( WidthSpin,  0, 1);
+  DimGroupLayout->addWidget( HeightLabel, 0, 2);
+  DimGroupLayout->addWidget( HeightSpin,  0, 3);
+  DimGroupLayout->addWidget( SpacingLabel, 0, 4);
+  DimGroupLayout->addWidget( SpacingSpin,  0, 5);
+
+  //TopLayout->addWidget( DimGroup );
+
+  // Save check box ===========================================================
+  QHBox* aSaveBox = new QHBox(this);
+  if (!SetPref) {
+    CBSave = new QCheckBox (tr("SAVE_DEFAULT_CHK"), aSaveBox, "CBSave");
+    //TopLayout->addWidget(CBSave);
+  }
+  else {
+    CBSave = 0;
+  }
+  myTextBtn = new QPushButton("Text properties...", aSaveBox);
+  myTextDlg = new VisuGUI_TextPrefDlg(this);
+  myTextDlg->setTitleVisible(!SetPref);
+
+  // signals and slots connections ===========================================
+  connect( myRBLocal,     SIGNAL( toggled( bool ) ), myCBDisplayed, SLOT( setEnabled( bool ) ) );
+  connect( myRBGlobal,    SIGNAL( clicked() ),       this, SLOT( onSetDisplayGlobal() ) );
+  connect( RainbowButton, SIGNAL( toggled( bool ) ), ColorLabel, SLOT( setEnabled( bool ) ) );
+  connect( RainbowButton, SIGNAL( toggled( bool ) ), ColorSpin, SLOT( setEnabled( bool ) ) );
+  connect( RainbowButton, SIGNAL( toggled( bool ) ), LabelLabel, SLOT( setEnabled( bool ) ) );
+  connect( RainbowButton, SIGNAL( toggled( bool ) ), LabelSpin, SLOT( setEnabled( bool ) ) );
+  connect( OrientGroup,   SIGNAL( clicked( int ) ), this, SLOT( changeDefaults( int ) ) );
+  connect( XSpin,         SIGNAL( valueChanged( double ) ), this, SLOT( XYChanged( double ) ) );
+  connect( YSpin,         SIGNAL( valueChanged( double ) ), this, SLOT( XYChanged( double ) ) );
+  connect( myTextBtn,     SIGNAL( clicked() ), this, SLOT( onTextPref() ) );
+
+  changeDefaults( 0 );
+  myIsStoreTextProp = false;
+}
+
+void VisuGUI_GaussScalarBarPane::onSetDisplayGlobal()
+{
+  myCBDisplayed->setChecked( true );
+}
+
+
+/**
+ * Initialise dialog box from presentation object
+ */
+void VisuGUI_GaussScalarBarPane::initFromPrsObject(VISU::GaussPoints_i* thePrs) {
+  myModeCombo->setCurrentItem(thePrs->GetScalarMode());
+  setPosAndSize( thePrs->GetPosX(),
+                thePrs->GetPosY(),
+                thePrs->GetWidth(),
+                thePrs->GetHeight(),
+                thePrs->GetBarOrientation());
+
+  SpacingSpin->setValue(thePrs->GetSpacing());
+
+  bool activeLocal = thePrs->GetIsActiveLocalScalarBar();
+  myRBLocal->setChecked( activeLocal );
+
+  myRBGlobal->setChecked( !activeLocal );
+  myRBGlobal->setEnabled( thePrs->IsGlobalRangeDefined() );
+  if( !thePrs->IsGlobalRangeDefined() )
+    myRBLocal->setChecked( true );
+
+  myCBDisplayed->setEnabled( activeLocal );
+  myCBDisplayed->setChecked( thePrs->GetIsDispGlobalScalarBar() );
+
+  bool bicolor = thePrs->GetGaussPointsPL()->GetBicolor();
+  BicolorButton->setChecked( bicolor );
+  RainbowButton->setChecked( !bicolor );
+  ColorLabel->setEnabled( !bicolor );
+  ColorSpin->setEnabled( !bicolor );
+  LabelLabel->setEnabled( !bicolor );
+  LabelSpin->setEnabled( !bicolor );
+
+  setScalarBarData( thePrs->GetNbColors(), thePrs->GetLabels() );
+
+  // Update myModeCombo
+  int aNbComp = thePrs->GetField()->myNbComp;
+  bool isScalarMode = (aNbComp > 1);
+  myModeCombo->clear();
+  myModeCombo->insertItem("<Modulus>");
+  const VISU::PField& aField = thePrs->GetField();
+  const VISU::TNames& aCompNames = aField->myCompNames;
+  const VISU::TNames& aUnitNames = aField->myUnitNames;
+  for(int i = 0; i < aNbComp; i++){
+    QString aComponent = QString(aCompNames[i]).simplifyWhiteSpace();
+    if(aComponent.isNull() || aComponent == "")
+      aComponent = "Component " + QString::number(i+1);
+    else
+      aComponent = "[" + QString::number(i+1) + "] " + aComponent;
+
+    QString anUnit = QString(aUnitNames[i]).simplifyWhiteSpace();
+    if(anUnit.isNull() || anUnit == "")
+      anUnit = "-";
+    
+    aComponent = aComponent + ", " + anUnit;
+
+    myModeCombo->insertItem(aComponent);
+  }
+  //
+  myModeCombo->setCurrentItem(thePrs->GetScalarMode());
+  if (aNbComp==1){
+    myModeCombo->setCurrentItem(1);
+  }
+  //
+  myModeLbl->setEnabled(isScalarMode);
+  myModeCombo->setEnabled(isScalarMode);
+
+  // "Title"
+  myTextDlg->setTitleText(QString(thePrs->GetTitle()));
+
+  float R, G, B;
+  thePrs->GetTitleColor(&R, &G, &B);
+
+  myTextDlg->myTitleFont->SetData(QColor((int)(R*255.), (int)(G*255.), (int)(B*255.)),
+                                  thePrs->GetTitFontType(),
+                                  thePrs->IsBoldTitle(),
+                                  thePrs->IsItalicTitle(),
+                                  thePrs->IsShadowTitle());
+
+  // "Labels"
+  thePrs->GetLabelColor(&R, &G, &B);
+
+  myTextDlg->myLabelFont->SetData(QColor((int)(R*255.), (int)(G*255.), (int)(B*255.)),
+                                  thePrs->GetLblFontType(),
+                                  thePrs->IsBoldLabel(),
+                                  thePrs->IsItalicLabel(),
+                                  thePrs->IsShadowLabel());
+}
+
+/**
+ * Store values to presentation object
+ */
+int VisuGUI_GaussScalarBarPane::storeToPrsObject(VISU::GaussPoints_i* thePrs) {
+  thePrs->SetScalarMode(myModeCombo->currentItem());
+  thePrs->SetPosition(XSpin->value(), YSpin->value());
+  thePrs->SetSize(WidthSpin->value(), HeightSpin->value());
+  thePrs->SetSpacing(SpacingSpin->value());
+  thePrs->SetBarOrientation((RBvert->isChecked())? VISU::ScalarMap::VERTICAL : VISU::ScalarMap::HORIZONTAL);
+  thePrs->SetIsActiveLocalScalarBar(myRBLocal->isChecked());
+  thePrs->SetIsDispGlobalScalarBar(myCBDisplayed->isChecked());
+  thePrs->SetNbColors(ColorSpin->value());
+  thePrs->SetLabels(LabelSpin->value());
+
+  thePrs->GetGaussPointsPL()->SetBicolor(BicolorButton->isChecked());
+
+  //if (isToSave()) storeToResources();
+
+  if (myIsStoreTextProp) {
+    // "Title"
+    thePrs->SetTitle(myTextDlg->getTitleText().latin1());
+
+    QColor aTitColor (255, 255, 255);
+    int aTitleFontFamily = VTK_ARIAL;
+    bool isTitleBold = false;
+    bool isTitleItalic = false;
+    bool isTitleShadow = false;
+
+    myTextDlg->myTitleFont->GetData(aTitColor, aTitleFontFamily,
+                                    isTitleBold, isTitleItalic, isTitleShadow);
+
+    thePrs->SetBoldTitle(isTitleBold);
+    thePrs->SetItalicTitle(isTitleItalic);
+    thePrs->SetShadowTitle(isTitleShadow);
+    thePrs->SetTitFontType(aTitleFontFamily);
+    thePrs->SetTitleColor(aTitColor.red()/255.,
+                         aTitColor.green()/255.,
+                         aTitColor.blue()/255.);
+
+    // "Label"
+    QColor aLblColor (255, 255, 255);
+    int aLabelFontFamily = VTK_ARIAL;
+    bool isLabelBold = false;
+    bool isLabelItalic = false;
+    bool isLabelShadow = false;
+
+    myTextDlg->myLabelFont->GetData(aLblColor, aLabelFontFamily,
+                                    isLabelBold, isLabelItalic, isLabelShadow);
+
+    thePrs->SetBoldLabel(isLabelBold);
+    thePrs->SetItalicLabel(isLabelItalic);
+    thePrs->SetShadowLabel(isLabelShadow);
+    thePrs->SetLblFontType(aLabelFontFamily);
+    thePrs->SetLabelColor(aLblColor.red()/255.,
+                         aLblColor.green()/255.,
+                         aLblColor.blue()/255.);
+  }
+
+  return 1;
+}
+
+/*!
+  Called when orientation is changed
+*/
+void VisuGUI_GaussScalarBarPane::changeDefaults( int )
+{
+  if ( RBvert->isChecked() ) {
+    XSpin->setValue( myVerX );
+    YSpin->setValue( myVerY );
+    WidthSpin->setValue( myVerW );
+    HeightSpin->setValue( myVerH );
+  }
+  else {
+    XSpin->setValue( myHorX );
+    YSpin->setValue( myHorY );
+    WidthSpin->setValue( myHorW );
+    HeightSpin->setValue( myHorH );
+  }
+}
+
+/*!
+  Called when X,Y position is changed
+*/
+void VisuGUI_GaussScalarBarPane::XYChanged( double )
+{
+  QtxDblSpinBox* snd = (QtxDblSpinBox*)sender();
+  if ( snd == XSpin ) {
+    WidthSpin->setMaxValue( 1.0 - XSpin->value() );
+  }
+  if ( snd == YSpin ) {
+    HeightSpin->setMaxValue( 1.0 - YSpin->value() );
+  }
+}
+
+/*!
+  Sets size and position
+*/
+void VisuGUI_GaussScalarBarPane::setPosAndSize( double x, double y, double w, double h, bool vert )
+{
+  if ( vert ) {
+    myVerX = x;
+    myVerY = y;
+    myVerW = w;
+    myVerH = h;
+    RBvert->setChecked( true );
+  }
+  else {
+    myHorX = x;
+    myHorY = y;
+    myHorW = w;
+    myHorH = h;
+    RBhori->setChecked( true );
+  }
+  changeDefaults( 0 );
+}
+
+/*!
+  Sets colors and labels number
+*/
+void VisuGUI_GaussScalarBarPane::setScalarBarData( int colors, int labels )
+{
+  ColorSpin->setValue( colors );
+  LabelSpin->setValue( labels );
+}
+
+/*!
+  Gets orientation
+*/
+int  VisuGUI_GaussScalarBarPane::getOrientation()
+{
+  if (RBvert->isChecked() )
+    return  1;
+  else
+    return 0;
+}
+
+
+void VisuGUI_GaussScalarBarPane::onTextPref()
+{
+  myIsStoreTextProp = myTextDlg->exec();
+}
+
+
+/*!
+ * Constructor
+ */
+VisuGUI_GaussPointsDlg::VisuGUI_GaussPointsDlg(SalomeApp_Module* theModule, bool SetPref):
+  QDialog(VISU::GetDesktop(theModule), 
+         "VisuGUI_GaussPointsDlg", true,
+         WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu),
+  myPrs(NULL)
+{
+  setName("VisuGUI_ScalarBarDlg");
+  setCaption(SetPref ? tr("DLG_PREF_TITLE") : tr("DLG_PROP_TITLE"));
+  setSizeGripEnabled(TRUE);
+
+  QVBoxLayout* TopLayout = new QVBoxLayout(this);
+  TopLayout->setSpacing(6);
+  TopLayout->setMargin(11);
+
+
+  // Presentation
+  QButtonGroup* PrsGroup = new QButtonGroup( 3, Qt::Horizontal, tr( "PRS_TITLE" ), this, "PrimitiveTypeGroup" );
+  PrsGroup->setRadioButtonExclusive( true );
+  PrsGroup->layout()->setMargin( 11 );
+  PrsGroup->layout()->setSpacing(6);
+
+  myResultsButton = new QRadioButton( tr( "RESULTS" ), PrsGroup );
+  myGeometryButton = new QRadioButton( tr( "GEOMETRY" ), PrsGroup );
+  myDefShapeButton = new QRadioButton( tr( "DEFORMED_SHAPE" ), PrsGroup );
+
+  QTabWidget* aTabBox = new QTabWidget (this);
+
+  // Gauss points pane
+  QVBox* aBox = new QVBox (this);
+  aBox->setMargin(11);
+  aBox->setSpacing(6);
+
+  // Primitive
+  myPrimitiveBox = new VVTK_PrimitiveBox( aBox );
+
+  // Size
+  mySizeBox = new VVTK_SizeBox( aBox );
+
+  // Deformed Shape
+  myDefShapeBox = new QGroupBox( tr( "DEFORMED_SHAPE_TITLE" ), aBox );
+  myDefShapeBox->setColumnLayout(0, Qt::Vertical );
+  myDefShapeBox->layout()->setSpacing( 0 );
+  myDefShapeBox->layout()->setMargin( 0 );
+
+  QGridLayout* aDefShapeLayout = new QGridLayout( myDefShapeBox->layout() );
+  aDefShapeLayout->setAlignment(Qt::AlignTop);
+  aDefShapeLayout->setSpacing(6);
+  aDefShapeLayout->setMargin(11);
+
+  QLabel* aScaleLabel = new QLabel( tr( "SCALE_FACTOR" ), myDefShapeBox );
+  myScaleSpinBox = new QtxDblSpinBox( 0.0, 10.0, 0.1, myDefShapeBox );
+
+  aDefShapeLayout->addWidget( aScaleLabel, 0, 0 );
+  aDefShapeLayout->addWidget( myScaleSpinBox, 0, 1 );
+
+  // Scalar Bar pane
+  myScalarPane = new VisuGUI_GaussScalarBarPane(this, SetPref);
+  myScalarPane->setMargin(5);
+
+
+  connect( myResultsButton,  SIGNAL( clicked() ),       mySizeBox,    SLOT( onToggleResults() ) );
+  connect( myResultsButton,  SIGNAL( toggled( bool ) ), myScalarPane, SLOT( setEnabled( bool ) ) );
+  connect( myGeometryButton, SIGNAL( clicked() ),       mySizeBox,    SLOT( onToggleGeometry() ) );
+  connect( myDefShapeButton, SIGNAL( toggled( bool ) ), this,         SLOT( onToggleDefShape( bool ) ) );
+  connect( myDefShapeButton, SIGNAL( toggled( bool ) ), myScalarPane, SLOT( setEnabled( bool ) ) );
+
+  aTabBox->addTab(aBox, tr("GAUSS_POINTS_TAB"));
+  aTabBox->addTab(myScalarPane, tr("SCALAR_BAR_TAB"));
+
+  // Common buttons ===========================================================
+  QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" );
+  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( "&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( "&Cancel" ) , GroupButtons, "buttonCancel" );
+  buttonCancel->setAutoDefault( TRUE );
+  GroupButtonsLayout->addWidget( buttonCancel, 0, 2 );
+
+  TopLayout->addWidget( PrsGroup );
+  TopLayout->addWidget( aTabBox );
+  TopLayout->addWidget( GroupButtons );
+
+  connect( buttonOk,     SIGNAL( clicked() ), this, SLOT( accept() ) );
+  connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( reject() ) );
+}
+
+void VisuGUI_GaussPointsDlg::initFromPrsObject( VISU::GaussPoints_i* thePrs )
+{
+  bool isDeformed = thePrs->GetIsDeformed();
+  myScaleSpinBox->setValue( thePrs->GetScaleFactor() );
+  myDefShapeButton->setChecked( isDeformed );
+  myDefShapeButton->setEnabled( thePrs->GetField()->myNbComp > 1 );
+  onToggleDefShape( isDeformed );
+
+  bool isResults = thePrs->GetIsColored();
+  myResultsButton->setChecked( isResults && !isDeformed );
+  myGeometryButton->setChecked( !isResults && !isDeformed );
+
+  myPrimitiveBox->setPrimitiveType( thePrs->GetPrimitiveType() );
+  myPrimitiveBox->setClampMaximum( thePrs->GetMaximumSupportedSize() );
+  myPrimitiveBox->setClamp( thePrs->GetClamp() );
+  myPrimitiveBox->setMainTexture( thePrs->GetMainTexture() );
+  myPrimitiveBox->setAlphaTexture( thePrs->GetAlphaTexture() );
+  myPrimitiveBox->setAlphaThreshold( thePrs->GetAlphaThreshold() );
+  myPrimitiveBox->setResolution( thePrs->GetResolution() );
+  myPrimitiveBox->setFaceLimit( thePrs->GetFaceLimit() );
+
+  mySizeBox->setType( isResults || isDeformed ? VVTK_SizeBox::Results : VVTK_SizeBox::Geometry );
+  mySizeBox->setGeomSize( thePrs->GetGeomSize() );
+  mySizeBox->setMinSize( thePrs->GetMinSize() );
+  mySizeBox->setMaxSize( thePrs->GetMaxSize() );
+  mySizeBox->setMagnification( thePrs->GetMagnification() );
+  mySizeBox->setIncrement( thePrs->GetMagnificationIncrement() );
+  mySizeBox->setColor( thePrs->GetColor() );
+
+  myScalarPane->initFromPrsObject(thePrs);
+
+  myPrs = thePrs;
+}
+
+int VisuGUI_GaussPointsDlg::storeToPrsObject( VISU::GaussPoints_i* thePrs )
+{
+  thePrs->SetIsDeformed( myDefShapeButton->isChecked() );
+  thePrs->SetScaleFactor( myScaleSpinBox->value() );
+
+  thePrs->SetPrimitiveType( myPrimitiveBox->getPrimitiveType() );
+
+  thePrs->SetClamp( myPrimitiveBox->getClamp() );
+
+  QString aMainTexture = myPrimitiveBox->getMainTexture();
+  QString anAlphaTexture = myPrimitiveBox->getAlphaTexture();
+
+  aMainTexture = aMainTexture.isNull() ? thePrs->GetMainTexture() : aMainTexture;
+  anAlphaTexture = anAlphaTexture.isNull() ? thePrs->GetAlphaTexture() : anAlphaTexture;
+  
+  thePrs->SetTextures( aMainTexture, anAlphaTexture );
+
+  thePrs->SetAlphaThreshold( myPrimitiveBox->getAlphaThreshold() );
+
+  thePrs->SetResolution( myPrimitiveBox->getResolution() );
+  thePrs->SetFaceLimit( myPrimitiveBox->getFaceLimit() );
+
+  bool isColored = !myGeometryButton->isChecked();
+  if( isColored )
+  {
+    thePrs->SetIsColored( true );
+    thePrs->SetMinSize( mySizeBox->getMinSize() );
+    thePrs->SetMaxSize( mySizeBox->getMaxSize() );
+  }
+  else
+  {
+    thePrs->SetIsColored( false );
+    thePrs->SetColor( mySizeBox->getColor() );
+    thePrs->SetGeomSize( mySizeBox->getGeomSize() );
+  }
+
+  thePrs->SetMagnification( mySizeBox->getMagnification() );
+  thePrs->SetMagnificationIncrement( mySizeBox->getIncrement() );
+
+  return myScalarPane->storeToPrsObject(thePrs);
+}
+
+void VisuGUI_GaussPointsDlg::onToggleDefShape( bool on )
+{
+  if( on )//myDefShapeButton->isChecked() )
+  {
+    myDefShapeBox->show();
+    mySizeBox->setType( VVTK_SizeBox::Results );
+  }
+  else
+    myDefShapeBox->hide();
+}
+
+void VisuGUI_GaussPointsDlg::accept()
+{
+  if( myPrs && myPrimitiveBox->getPrimitiveType() == VISU_OpenGLPointSpriteMapper::GeomSphere )
+  {
+    int aNumberOfFaces = myPrimitiveBox->getFaceNumber();
+    int aNumberOfPoints = ( (vtkPolyData*)myPrs->GetGaussPointsPL()->GetInput() )->GetNumberOfCells();
+
+    if( aNumberOfFaces * aNumberOfPoints > myPrimitiveBox->getFaceLimit() )
+    {
+      QString aWarning = "The number of faces needed to perform the 'Geometrical Sphere' primitive\n";
+      aWarning.append( "presentation might be too important to ensure an acceptable frame rate.\n\n" );
+      aWarning.append( "Can you please confirm that you want to continue anyway?" );
+      if( SUIT_MessageBox::warn2( this, tr( "Warning" ), aWarning, tr( "&OK" ), tr( "&Cancel" ), 0, 1, 1 ) == 1 )
+       return;
+    }
+
+    /*
+    float aMemory = 50.0 * 1024.0 * (float)aNumberOfFaces * (float)aNumberOfPoints;
+
+    cout << aNumberOfFaces << endl;
+    cout << aNumberOfPoints << endl;
+    cout << aMemory << endl;
+
+    vtkSphereSource* aSphere = vtkSphereSource::New();
+    aSphere->SetThetaResolution( myPrimitiveBox->getResolution() );
+    aSphere->SetPhiResolution( myPrimitiveBox->getResolution() );
+    aSphere->GetOutput()->Update();
+    aSphere->GetOutput()->GetActualMemorySize();
+
+    aMemory = aSphere->GetOutput()->GetActualMemorySize() * 1024.0 * (float)aNumberOfPoints;
+
+    if( VISU_PipeLine::CheckAvailableMemory( aMemory ) == 0 )
+    {
+      SUIT_MessageBox::error1( this, "caption", "text", "ok" );
+      return 0;
+    }
+    */
+  }
+
+  //if( myScalarPane->check() )
+  QDialog::accept();
+}
diff --git a/src/VISUGUI/VisuGUI_GaussPointsDlg.h b/src/VISUGUI/VisuGUI_GaussPointsDlg.h
new file mode 100644 (file)
index 0000000..c845d01
--- /dev/null
@@ -0,0 +1,162 @@
+//  VISU VISUGUI : GUI of VISU 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   : VisuGUI_GaussPointsDlg.h
+//  Author : Oleg UVAROV
+//  Module : VISU
+
+#ifndef VISUGUI_GAUSSPOINTSDLS_H
+#define VISUGUI_GAUSSPOINTSDLS_H
+
+#include "VisuGUI_ScalarBarDlg.h"
+
+#include <qvbox.h>
+#include <qdialog.h>
+#include <qgroupbox.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qlineedit.h>
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+#include <qspinbox.h>
+#include <qcombobox.h>
+#include <qtoolbutton.h>
+
+class SalomeApp_Module;
+class VVTK_PrimitiveBox;
+class VVTK_SizeBox;
+class VisuGUI_TextPrefDlg;
+
+namespace VISU
+{
+  class GaussPoints_i;
+}
+
+//! Specific Scalar Bar tab.
+/*! Uses for set up Gauss Points Scalar Bars preferenses. */
+class VisuGUI_GaussScalarBarPane : public QVBox
+{
+  Q_OBJECT
+
+ public:
+  VisuGUI_GaussScalarBarPane(QWidget* parent, bool SetPref);
+  ~VisuGUI_GaussScalarBarPane() {};
+
+  int     getOrientation();
+  void    setPosAndSize( double x, double y, double w, double h, bool vert );
+  double  getX() {return XSpin->value();}
+  double  getY() {return YSpin->value();}
+  double  getWidth() {return WidthSpin->value();}
+  double  getHeight() {return HeightSpin->value();}
+  void    setScalarBarData( int colors, int labels );
+  int     getNbColors() {return ColorSpin->value();}
+  int     getNbLabels() {return LabelSpin->value();}
+  bool    isToSave() {return CBSave ? CBSave->isChecked() : false;}
+
+  void    initFromPrsObject(VISU::GaussPoints_i* thePrs);
+  int     storeToPrsObject(VISU::GaussPoints_i* thePrs);
+
+ protected:
+  QButtonGroup*   RangeGroup;
+
+  QRadioButton*   RBhori;
+  QRadioButton*   RBvert;
+
+  QtxDblSpinBox*  XSpin;
+  QtxDblSpinBox*  YSpin;
+
+  QtxDblSpinBox*  WidthSpin;
+  QtxDblSpinBox*  HeightSpin;
+  QtxDblSpinBox*  SpacingSpin;
+
+  QRadioButton*   BicolorButton;
+  QRadioButton*   RainbowButton;
+  QLabel*         ColorLabel;
+  QSpinBox*       ColorSpin;
+  QLabel*         LabelLabel;
+  QSpinBox*       LabelSpin;
+
+  QCheckBox*      CBSave;
+  QLabel*         myModeLbl;
+  QComboBox*      myModeCombo;
+  QPushButton*    myTextBtn;
+  VisuGUI_TextPrefDlg* myTextDlg;
+  QRadioButton*   myRBLocal;
+  QRadioButton*   myRBGlobal;
+  QCheckBox*      myCBDisplayed;
+
+  double          Imin,   Imax;
+  double          myHorX, myHorY, myHorW, myHorH;
+  double          myVerX, myVerY, myVerW, myVerH;
+  int             myRangeMode;
+  bool myIsStoreTextProp;
+
+ private slots:
+  void changeDefaults( int );
+  void changeRange( int );
+  void XYChanged( double );
+  void onTextPref();
+  void onSetDisplayGlobal();
+};
+
+//! Create Gauss Points Presentation Dialog.
+/*!
+ * Uses for set up initial parameters of the Gauss Points
+ * presentation and edit them interactively.
+ */
+class VisuGUI_GaussPointsDlg : public QDialog
+{
+  Q_OBJECT
+
+public:
+  VisuGUI_GaussPointsDlg (SalomeApp_Module* theModule, bool SetPref = FALSE);
+  ~VisuGUI_GaussPointsDlg() {}
+
+  //! Initializing dialog from the Gauss Points presentation.
+  void    initFromPrsObject(VISU::GaussPoints_i* thePrs);
+
+  //! Update Gauss Points presentation using parameters from the dialog.
+  int     storeToPrsObject(VISU::GaussPoints_i* thePrs);
+
+protected slots:
+  void    onToggleDefShape( bool );
+
+  void    accept();
+
+private:
+  VISU::GaussPoints_i*     myPrs;
+  VisuGUI_GaussScalarBarPane* myScalarPane;
+
+  QRadioButton*            myResultsButton;
+  QRadioButton*            myGeometryButton;
+  QRadioButton*            myDefShapeButton;
+
+  VVTK_PrimitiveBox*       myPrimitiveBox;
+  VVTK_SizeBox*            mySizeBox;
+
+  QGroupBox*               myDefShapeBox;
+  QtxDblSpinBox*           myScaleSpinBox;
+};
+
+#endif // VISUGUI_GAUSSPOINTSDLS_H
diff --git a/src/VISUGUI/VisuGUI_Module.cxx b/src/VISUGUI/VisuGUI_Module.cxx
new file mode 100644 (file)
index 0000000..dfd14a2
--- /dev/null
@@ -0,0 +1,1658 @@
+
+//
+//  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   : VisuGUI_Module.cxx
+//  Author : Laurent CORNABE
+//  Module : VISU
+//  $Header$
+
+#include "VisuGUI_Module.h"
+
+#include "QtxPopupMgr.h"
+
+#include "SUIT_Study.h"
+#include "SUIT_Desktop.h"
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Accel.h"
+#include "SUIT_Session.h"
+
+#include "CAM_Module.h"
+
+#include "SALOME_Event.hxx"
+#include "SalomeApp_Application.h"
+#include "LightApp_SelectionMgr.h"
+#include "LightApp_VTKSelector.h"
+#include "LightApp_Preferences.h"
+
+#include "VVTK_ViewManager.h"
+#include "VVTK_ViewWindow.h"
+#include "VVTK_ViewModel.h"
+
+#include "SVTK_ViewModel.h"
+#include "SVTK_ViewManager.h"
+#include "SVTK_MainWindow.h"
+#include "SVTK_RenderWindowInteractor.h"
+#include "VISU_Event.h"
+
+#include "VisuGUI_Prs3dTools.h"
+
+#include "VISU_GaussPoints_i.hh"
+#include "VISU_GaussPtsAct.h"
+#include "VisuGUI_GaussPointsDlg.h"
+
+#include "VISU_Gen_i.hh"
+#include "VISU_Result_i.hh"
+#include "VISU_CutLines_i.hh"
+
+#include "VISU_Actor.h"
+#include "VisuGUI_Tools.h"
+#include "VisuGUI_ActionsDef.h"
+
+#include "VISU_WidgetCtrl.hxx"
+#include "VISU_PlanesWidget.hxx"
+#include "VISU_SphereWidget.hxx"
+
+#include "SalomeApp_Study.h"
+#include "VVTK_MainWindow.h"
+#include "VISU_View_i.hh"
+
+#include <qaction.h>
+
+#include <vtkRenderer.h>
+#include <vtkCamera.h>
+#include <vtkTimerLog.h>
+
+#include <sstream>
+
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+#else
+static int MYDEBUG = 0;
+#endif
+
+#define GAUSS_NEW_VIEWER         5100
+#define GAUSS_CREATE_PRS         5200
+#define GAUSS_RENAME             5210
+#define GAUSS_EDIT_PRS           5300
+#define GAUSS_COPY_PRS           5310
+#define GAUSS_ERASE_PRS          5400
+#define GAUSS_DISPLAY_PRS        5500
+#define GAUSS_DISPLAY_ONLY_PRS   5600
+
+#define GAUSS_SAVE_CONFIGURATION       5700
+#define GAUSS_OVERWRITE_CONFIGURATION  5701
+#define GAUSS_RESTORE_CONFIGURATION    5702
+#define GAUSS_RENAME_CONFIGURATION     5703
+
+void
+CreateCurves( SalomeApp_Module* theModule,
+              VISU::CutLines_i* thePrs,
+              QDialog* theDlg,
+              const bool theCreate = true );
+
+using namespace VISU;
+
+namespace VISU
+{
+  //---------------------------------------------------------------
+  class Viewer
+  {
+    VVTK_ViewManager* myViewManager;
+    LightApp_VTKSelector* mySelector;
+  public:
+
+    Viewer(VisuGUI_Module* theModule, TViewerMap& theViewerMap)
+    {
+      SalomeApp_Application* anApp = theModule->getApp();
+      myViewManager = new VVTK_ViewManager( anApp->activeStudy(), anApp->desktop() );
+      VVTK_Viewer* aViewer = (VVTK_Viewer*)myViewManager->getViewModel();
+      mySelector = new LightApp_VTKSelector( aViewer, anApp->selectionMgr() );
+      anApp->addViewManager( myViewManager );
+
+      theViewerMap.insert(TViewerMap::value_type(myViewManager,PViewer(this)));
+      QObject::connect( myViewManager, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ),
+                       theModule, SLOT( onLastViewClosed( SUIT_ViewManager* ) ) );
+      
+      //aViewer->setBackgroundColor( Qt::darkGreen );
+      myViewManager->createViewWindow();
+    }
+    
+    VVTK_ViewManager* getViewManager() 
+    {
+      return myViewManager;
+    }
+
+    virtual
+    ~Viewer()
+    {
+    }
+  };
+
+
+  //---------------------------------------------------------------
+  typedef void (SUIT_ViewWindow::* TViewVisibility)();
+  void
+  SetViewVisibility(const TViewerMap& theViewerMap, 
+                   TViewVisibility theViewVisibility)
+  {
+    TViewerMap::const_iterator anIter = theViewerMap.begin();
+    for(; anIter != theViewerMap.end(); anIter++){
+      if(SUIT_ViewManager* aViewManager = anIter->first){
+       QPtrVector<SUIT_ViewWindow> aViews = aViewManager->getViews();
+       int aSize = aViews.size();
+       for(int anId = 0; anId < aSize; anId++){
+         if(SUIT_ViewWindow* aView = aViews[anId]){
+           (aView->* theViewVisibility)();
+         }
+       }
+      }
+    }
+  }
+
+}
+
+//---------------------------------------------------------------
+VisuGUI_Module
+::VisuGUI_Module() : 
+  VisuGUI()
+{
+}
+
+
+//---------------------------------------------------------------
+VisuGUI_Module
+::~VisuGUI_Module()
+{
+}
+
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module
+::initialize( CAM_Application* theApp )
+{
+  VisuGUI::initialize( theApp );
+
+  SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+
+  QPixmap aPixmap;
+  aPixmap = aResourceMgr->loadPixmap("VISU",tr("ICON_GAUSS_NEW_VIEWER"));
+  createAction( GAUSS_NEW_VIEWER, 
+               tr("MEN_GAUSS_NEW_VIEWER"), 
+               aPixmap,
+                tr("MEN_GAUSS_NEW_VIEWER"), 
+               tr("MEN_GAUSS_NEW_VIEWER"),
+               ALT+Key_S, 
+               this, 
+               false,
+                this, 
+               SLOT(onCreateViewManager()));
+  int windowMenu = createMenu( tr( "MEN_DESK_WINDOW" ), -1, 100 );
+  int newWinMenu = createMenu( tr( "MEN_DESK_NEWWINDOW" ), windowMenu, -1, 0 );
+  createMenu( action( GAUSS_NEW_VIEWER ), newWinMenu, -1 );
+  
+  // Add actions to menus
+  createMenu( tr( "MEN_GAUSS" ), -1, -1, 30 );
+  //createMenu( GAUSS_CREATE_PRS, aMenuId, 10 );
+
+  QString aViewerType = VVTK_Viewer::Type();
+  SUIT_Accel* accel = getApp()->accel();
+  accel->setActionKey( SUIT_Accel::PanLeft, Key_Left, aViewerType );
+  accel->setActionKey( SUIT_Accel::PanRight, Key_Right, aViewerType );
+  accel->setActionKey( SUIT_Accel::PanUp, Key_Up, aViewerType );
+  accel->setActionKey( SUIT_Accel::PanDown, Key_Down, aViewerType );
+  accel->setActionKey( SUIT_Accel::ZoomIn, Key_PageUp, aViewerType );
+  accel->setActionKey( SUIT_Accel::ZoomOut, Key_PageDown, aViewerType );
+  accel->setActionKey( SUIT_Accel::RotateLeft, CTRL+Key_Left, aViewerType );
+  accel->setActionKey( SUIT_Accel::RotateRight, CTRL+Key_Right, aViewerType );
+  accel->setActionKey( SUIT_Accel::RotateUp, CTRL+Key_Up, aViewerType );
+  accel->setActionKey( SUIT_Accel::RotateDown, CTRL+Key_Down, aViewerType );
+  accel->setActionKey( SVTK::PlusSpeedIncrementEvent, Key_Plus, aViewerType );
+  accel->setActionKey( SVTK::MinusSpeedIncrementEvent, Key_Minus, aViewerType );
+
+  connect( getApp(), SIGNAL( viewManagerAdded( SUIT_ViewManager* ) ), this, SLOT( OnViewManagerAdded (SUIT_ViewManager*) ) );
+
+  // Prepare popup menus
+  QtxPopupMgr* mgr = popupMgr();
+  QString aRule;
+
+  aPixmap = aResourceMgr->loadPixmap( "VISU", tr( "ICON_GAUSS_POINTS" ) );
+  createAction( GAUSS_CREATE_PRS, tr("MEN_GAUSS_CREATE_PRS"), aPixmap,
+                tr("MEN_GAUSS_CREATE_PRS"), "", 0, this, false,
+                this, SLOT(OnCreateGaussPoints()));
+  mgr->insert( action( GAUSS_CREATE_PRS ), -1, 0, -1 );
+  mgr->setRule( action( GAUSS_CREATE_PRS ), 
+               "client='ObjectBrowser' and selcount=1 "
+               "and type='VISU::TTIMESTAMP' "
+               "and $medEntity in {'EDGE_ENTITY' 'FACE_ENTITY' 'CELL_ENTITY'} "
+               "and $medSource in {'eImportFile' 'eCopyAndImportFile'} ",
+               true );
+
+  createMenu( action( GAUSS_CREATE_PRS ), createMenu( tr( "MEN_VISUALISATION" ), -1 ), -1 );
+  createTool( GAUSS_CREATE_PRS, createTool( tr( "TOOL_VISUALISATION" ) ), -1 );
+
+  createAction( GAUSS_RENAME, VisuGUI::tr("MEN_RENAME"), QIconSet(),
+                VisuGUI::tr("MEN_RENAME"), "", 0, this, false,
+                this, SLOT(OnRename()));
+  mgr->insert( action( GAUSS_RENAME ), -1, 0, -1 );
+  mgr->setRule( action( GAUSS_RENAME ), 
+               "selcount=1 and type='VISU::TGAUSSPOINTS'", 
+               true );
+
+  createAction( GAUSS_EDIT_PRS, VisuGUI::tr("MEN_EDIT_PRS"), QIconSet(),
+                VisuGUI::tr("MEN_EDIT_PRS"), "", 0, this, false,
+                this, SLOT(OnEditGaussPoints()));
+  mgr->insert( action( GAUSS_EDIT_PRS ), -1, 0, -1 );
+  mgr->setRule( action( GAUSS_EDIT_PRS ), 
+               "selcount=1 and type='VISU::TGAUSSPOINTS'", 
+               true );
+
+  createAction( GAUSS_COPY_PRS, VisuGUI::tr("MEN_COPY_PRS"), QIconSet(),
+                VisuGUI::tr("MEN_COPY_PRS"), "", 0, this, false,
+                this, SLOT(OnCopyPresentation()));
+  mgr->insert( action( GAUSS_COPY_PRS ), -1, 0, -1 );
+  mgr->setRule( action( GAUSS_COPY_PRS ), 
+               "selcount=1 and type='VISU::TGAUSSPOINTS'", 
+               true );
+  action( GAUSS_COPY_PRS )->setEnabled(false);
+
+  aRule = "(selcount>0 and type='VISU::TGAUSSPOINTS')";
+
+  createAction( GAUSS_ERASE_PRS, VisuGUI::tr("MEN_ERASE"), QIconSet(),
+                VisuGUI::tr("MEN_ERASE"), "", 0, this, false,
+                this, SLOT(OnErasePrs()));
+  mgr->insert( action( GAUSS_ERASE_PRS ), -1, -1, -1 ); // erase
+  mgr->setRule( action( GAUSS_ERASE_PRS ), 
+               aRule + " and (isVisible=true)", true );
+
+  createAction( GAUSS_DISPLAY_PRS, VisuGUI::tr("MEN_DISPLAY"), QIconSet(),
+                VisuGUI::tr("MEN_DISPLAY"), "", 0, this, false,
+                this, SLOT(OnDisplayPrs()));
+  mgr->insert( action( GAUSS_DISPLAY_PRS ), -1, -1, -1 ); // display
+  mgr->setRule( action( GAUSS_DISPLAY_PRS ), 
+               aRule + " and (isVisible=false)", true );
+
+  createAction( GAUSS_DISPLAY_ONLY_PRS, VisuGUI::tr("MEN_DISPLAY_ONLY"), QIconSet(),
+                VisuGUI::tr("MEN_DISPLAY_ONLY"), "", 0, this, false,
+                this, SLOT(OnDisplayOnlyPrs()));
+  mgr->insert( action( GAUSS_DISPLAY_ONLY_PRS ), -1, -1, -1 ); // display only
+  mgr->setRule( action( GAUSS_DISPLAY_ONLY_PRS ), 
+               aRule, true );
+
+  createAction( GAUSS_RENAME_CONFIGURATION, VisuGUI::tr("MEN_RENAME"), QIconSet(), 
+               VisuGUI::tr("MEN_RENAME"), "", 0, this, false,
+                this, SLOT(OnRename()));
+  mgr->insert( action( GAUSS_RENAME_CONFIGURATION ), -1, -1, -1 );
+  mgr->setRule( action( GAUSS_RENAME_CONFIGURATION ), "selcount=1 and type='VISU::TGAUSSVIEW'", true );
+
+  createAction( GAUSS_SAVE_CONFIGURATION, tr("MEN_SAVE_CONFIGURATION"), QIconSet(),
+                tr("MEN_SAVE_CONFIGURATION"), "", 0, this, false,
+                this, SLOT(OnSaveConfiguration()));
+  mgr->insert( action( GAUSS_SAVE_CONFIGURATION ), -1, -1, -1 );
+  mgr->setRule( action( GAUSS_SAVE_CONFIGURATION ), "selcount>=0 and client='VVTK' and activeView='VVTK'", true );
+
+  createAction( GAUSS_OVERWRITE_CONFIGURATION, tr("MEN_OVERWRITE_CONFIGURATION"), QIconSet(),
+                tr("MEN_OVERWRITE_CONFIGURATION"), "", 0, this, false,
+                this, SLOT(OnOverwriteConfiguration()));
+  mgr->insert( action( GAUSS_OVERWRITE_CONFIGURATION ), -1, -1, -1 );
+  mgr->setRule( action( GAUSS_OVERWRITE_CONFIGURATION ),
+               "selcount>0 and type='VISU::TGAUSSVIEW' and activeView='VVTK'", true );
+
+  createAction( GAUSS_RESTORE_CONFIGURATION, tr("MEN_RESTORE_CONFIGURATION"), QIconSet(),
+                tr("MEN_RESTORE_CONFIGURATION"), "", 0, this, false,
+                this, SLOT(OnRestoreConfiguration()));
+  mgr->insert( action( GAUSS_RESTORE_CONFIGURATION ), -1, -1, -1 );
+  mgr->setRule( action( GAUSS_RESTORE_CONFIGURATION ),
+               "selcount=1 and type='VISU::TGAUSSVIEW'", true );
+}
+
+//---------------------------------------------------------------
+bool
+VisuGUI_Module
+::activateModule( SUIT_Study* theStudy )
+{
+  VisuGUI::activateModule( theStudy );
+
+  SetViewVisibility(myViewerMap,&SUIT_ViewWindow::show);
+
+  return true;
+}
+
+
+//---------------------------------------------------------------
+bool
+VisuGUI_Module
+::deactivateModule( SUIT_Study* theStudy )
+{
+  VisuGUI::deactivateModule( theStudy );
+
+  SetViewVisibility(myViewerMap,&SUIT_ViewWindow::hide);
+
+  return true;
+}
+
+
+//---------------------------------------------------------------
+SUIT_ViewManager*
+VisuGUI_Module
+::onCreateViewManager()
+{
+  Viewer* aViewer = new Viewer( this, myViewerMap );
+  return aViewer->getViewManager();
+}
+
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module
+::onLastViewClosed(SUIT_ViewManager* theViewManager)
+{
+  myViewerMap.erase(theViewManager);
+}
+
+
+//---------------------------------------------------------------
+void 
+VisuGUI_Module
+::createPreferences()
+{
+  VisuGUI::createPreferences();
+
+  createGaussPointsPreferences();
+  createInsideCursorPreferences();
+  createOutsideCursorPreferences();
+  createPickingPreferences();
+  createSpaceMousePreferences();
+  createRecorderPreferences();
+}
+
+
+//---------------------------------------------------------------
+void 
+VisuGUI_Module
+::createGaussPointsPreferences()
+{
+  int gaussTab = addPreference( tr( "VISU_GAUSS_PREF_TAB_TTL" ) );
+  int primitiveGr = addPreference( tr( "VISU_GAUSS_PREF_PRIMITIVE_GROUP_TTL" ), gaussTab );
+  setPreferenceProperty( primitiveGr, "columns", 1 );
+
+  int primitiveTypePref = addPreference( tr( "VISU_GAUSS_PREF_PRIMITIVE_TYPE" ), primitiveGr,
+                                        LightApp_Preferences::Selector, "VISU", "point_sprite_primitive_type" );
+
+  QStringList values;
+  values.append( tr( "VISU_GAUSS_PREF_POINTSPRITE" ) );
+  values.append( tr( "VISU_GAUSS_PREF_OPENGLPOINT" ) );
+  values.append( tr( "VISU_GAUSS_PREF_GEOMSPHERE" ) );
+  QValueList<QVariant> indices;
+  indices.append( 0 );
+  indices.append( 1 );
+  indices.append( 2 );
+  setPreferenceProperty( primitiveTypePref, "strings", values );
+  setPreferenceProperty( primitiveTypePref, "indexes", indices );
+
+  int clampPref = addPreference( tr( "VISU_GAUSS_PREF_CLAMP" ), primitiveGr,
+                                LightApp_Preferences::IntSpin, "VISU", "point_sprite_clamp" );
+  setPreferenceProperty( clampPref, "min", 1 );
+  setPreferenceProperty( clampPref, "max", 512 );
+
+  addPreference( tr( "VISU_GAUSS_PREF_MAIN_TEXTURE" ), primitiveGr,
+                LightApp_Preferences::File, "VISU", "point_sprite_main_texture" );
+
+  addPreference( tr( "VISU_GAUSS_PREF_ALPHA_TEXTURE" ), primitiveGr,
+                LightApp_Preferences::File, "VISU", "point_sprite_alpha_texture" );
+
+  int alphaThresholdPref = addPreference( tr( "VISU_GAUSS_PREF_ALPHA_THRESHOLD" ), primitiveGr,
+                                         LightApp_Preferences::DblSpin, "VISU", "point_sprite_alpha_threshold" );
+  setPreferenceProperty( alphaThresholdPref, "min", 0.0 );
+  setPreferenceProperty( alphaThresholdPref, "max", 1.0 );
+  setPreferenceProperty( alphaThresholdPref, "step", 0.1 );
+
+  int resolutionPref = addPreference( tr( "VISU_GAUSS_PREF_RESOLUTION" ), primitiveGr,
+                                     LightApp_Preferences::IntSpin, "VISU", "geom_sphere_resolution" );
+  setPreferenceProperty( resolutionPref, "min", 3 );
+  setPreferenceProperty( resolutionPref, "max", 100 );
+
+  int faceLimitPref = addPreference( tr( "VISU_GAUSS_PREF_FACE_LIMIT" ), primitiveGr,
+                                    LightApp_Preferences::IntSpin, "VISU", "geom_sphere_face_limit" );
+  setPreferenceProperty( faceLimitPref, "min", 10 );
+  setPreferenceProperty( faceLimitPref, "max", 1000000 );
+
+  int sizeGr = addPreference( tr( "VISU_GAUSS_PREF_SIZE_GROUP_TTL" ), gaussTab );
+  setPreferenceProperty( sizeGr, "columns", 2 );
+
+  int minSizePref = addPreference( tr( "VISU_GAUSS_PREF_MIN_SIZE" ), sizeGr,
+                                  LightApp_Preferences::IntSpin, "VISU", "point_sprite_min_size" );
+  setPreferenceProperty( minSizePref, "min", 1 );
+  setPreferenceProperty( minSizePref, "max", 100 );
+
+  int maxSizePref = addPreference( tr( "VISU_GAUSS_PREF_MAX_SIZE" ), sizeGr,
+                                  LightApp_Preferences::IntSpin, "VISU", "point_sprite_max_size" );
+  setPreferenceProperty( maxSizePref, "min", 1 );
+  setPreferenceProperty( maxSizePref, "max", 100 );
+
+  int magnificationPref = addPreference( tr( "VISU_GAUSS_PREF_MAGNIFICATION" ), sizeGr,
+                                        LightApp_Preferences::IntSpin, "VISU", "point_sprite_magnification" );
+  setPreferenceProperty( magnificationPref, "min", 10 );
+  setPreferenceProperty( magnificationPref, "max", 1000 );
+
+  int incrementPref = addPreference( tr( "VISU_GAUSS_PREF_INCREMENT" ), sizeGr,
+                                    LightApp_Preferences::DblSpin, "VISU", "point_sprite_increment" );
+  setPreferenceProperty( incrementPref, "min", 0.01 );
+  setPreferenceProperty( incrementPref, "max", 10 );
+  setPreferenceProperty( incrementPref, "step", 0.1 );
+
+  int geomGr = addPreference( tr( "VISU_GAUSS_PREF_GEOM_GROUP_TTL" ), gaussTab );
+  setPreferenceProperty( geomGr, "columns", 1 );
+
+  int sizePref = addPreference( tr( "VISU_GAUSS_PREF_SIZE" ), geomGr,
+                               LightApp_Preferences::IntSpin, "VISU", "point_sprite_size" );
+  setPreferenceProperty( sizePref, "min", 1 );
+  setPreferenceProperty( sizePref, "max", 100 );
+
+  addPreference( tr( "VISU_GAUSS_PREF_COLOR" ), geomGr,
+                LightApp_Preferences::Color, "VISU", "point_sprite_color" );
+
+  // ScalarBar Preferences
+  int scalarBarGr = addPreference( tr( "VISU_GAUSS_SCALAR_BAR_PREF_GROUP_TTL" ), gaussTab );
+  setPreferenceProperty( scalarBarGr, "columns", 1 );
+
+  int activeBarPref = addPreference( tr( "VISU_GAUSS_PREF_ACTIVE_BAR" ), scalarBarGr,
+                                    LightApp_Preferences::Selector, "VISU", "scalar_bar_active_local" );
+
+  values.clear();
+  values.append( tr( "VISU_GAUSS_PREF_LOCAL" ) );
+  values.append( tr( "VISU_GAUSS_PREF_GLOBAL" ) );
+  indices.clear();
+  indices.append( 0 );
+  indices.append( 1 );
+  setPreferenceProperty( activeBarPref, "strings", values );
+  setPreferenceProperty( activeBarPref, "indexes", indices );
+
+  addPreference( tr( "VISU_GAUSS_PREF_DISPLAY_GLOBAL" ), scalarBarGr,
+                LightApp_Preferences::Bool, "VISU", "scalar_bar_display_global" );
+
+  int colorPref = addPreference( tr( "VISU_GAUSS_PREF_SCALAR_BAR_MODE" ), scalarBarGr,
+                                LightApp_Preferences::Selector, "VISU", "scalar_bar_bicolor" );
+
+  values.clear();
+  values.append( tr( "VISU_GAUSS_PREF_BICOLOR" ) );
+  values.append( tr( "VISU_GAUSS_PREF_RAINBOW" ) );
+  indices.clear();
+  indices.append( 0 );
+  indices.append( 1 );
+  setPreferenceProperty( colorPref, "strings", values );
+  setPreferenceProperty( colorPref, "indexes", indices );
+
+  int spacingPref = addPreference( tr( "VISU_GAUSS_PREF_SPACING" ), scalarBarGr,
+                                    LightApp_Preferences::DblSpin, "VISU", "scalar_bar_spacing" );
+  setPreferenceProperty( spacingPref, "min", 0.01 );
+  setPreferenceProperty( spacingPref, "max", 1.0 );
+  setPreferenceProperty( spacingPref, "step", 0.01 );
+}
+
+
+//---------------------------------------------------------------
+void 
+VisuGUI_Module
+::createInsideCursorPreferences()
+{
+  int insideCursorTab = addPreference( tr( "VISU_GAUSS_INSIDE_CURSOR_PREF_TAB_TTL" ) );
+
+  int primitiveGr = addPreference( tr( "VISU_GAUSS_PREF_PRIMITIVE_GROUP_TTL" ), insideCursorTab );
+  setPreferenceProperty( primitiveGr, "columns", 1 );
+
+  int primitiveTypePref = addPreference( tr( "VISU_GAUSS_PREF_PRIMITIVE_TYPE" ), primitiveGr,
+                               LightApp_Preferences::Selector, "VISU", "inside_point_sprite_primitive_type" );
+
+  QStringList values;
+  values.append( tr( "VISU_GAUSS_PREF_POINTSPRITE" ) );
+  values.append( tr( "VISU_GAUSS_PREF_OPENGLPOINT" ) );
+  values.append( tr( "VISU_GAUSS_PREF_GEOMSPHERE" ) );
+  QValueList<QVariant> indices;
+  indices.append( 0 );
+  indices.append( 1 );
+  indices.append( 2 );
+  setPreferenceProperty( primitiveTypePref, "strings", values );
+  setPreferenceProperty( primitiveTypePref, "indexes", indices );
+
+  int clampPref = addPreference( tr( "VISU_GAUSS_PREF_CLAMP" ), primitiveGr,
+                                LightApp_Preferences::IntSpin, "VISU", "inside_point_sprite_clamp" );
+  setPreferenceProperty( clampPref, "min", 1 );
+  setPreferenceProperty( clampPref, "max", 512 );
+
+  addPreference( tr( "VISU_GAUSS_PREF_MAIN_TEXTURE" ), primitiveGr,
+                LightApp_Preferences::File, "VISU", "inside_point_sprite_main_texture" );
+
+  addPreference( tr( "VISU_GAUSS_PREF_ALPHA_TEXTURE" ), primitiveGr,
+                LightApp_Preferences::File, "VISU", "inside_point_sprite_alpha_texture" );
+
+  int alphaThresholdPref = addPreference( tr( "VISU_GAUSS_PREF_ALPHA_THRESHOLD" ), primitiveGr,
+                                         LightApp_Preferences::DblSpin, "VISU", "inside_point_sprite_alpha_threshold" );  
+  setPreferenceProperty( alphaThresholdPref, "min", 0.0 );
+  setPreferenceProperty( alphaThresholdPref, "max", 1.0 );
+  setPreferenceProperty( alphaThresholdPref, "step", 0.1 );
+
+  int resolutionPref = addPreference( tr( "VISU_GAUSS_PREF_RESOLUTION" ), primitiveGr,
+                                     LightApp_Preferences::IntSpin, "VISU", "inside_geom_sphere_resolution" );
+  setPreferenceProperty( resolutionPref, "min", 3 );
+  setPreferenceProperty( resolutionPref, "max", 100 );
+
+  int faceLimitPref = addPreference( tr( "VISU_GAUSS_PREF_FACE_LIMIT" ), primitiveGr,
+                                    LightApp_Preferences::IntSpin, "VISU", "inside_geom_sphere_face_limit" );
+  setPreferenceProperty( faceLimitPref, "min", 10 );
+  setPreferenceProperty( faceLimitPref, "max", 1000000 );
+
+  int sizeGr = addPreference( tr( "VISU_GAUSS_PREF_SIZE_GROUP_TTL" ), insideCursorTab );
+  setPreferenceProperty( sizeGr, "columns", 2 );
+
+  int minSizePref = addPreference( tr( "VISU_GAUSS_PREF_MIN_SIZE" ), sizeGr,
+                                  LightApp_Preferences::IntSpin, "VISU", "inside_point_sprite_min_size" );
+  setPreferenceProperty( minSizePref, "min", 1 );
+  setPreferenceProperty( minSizePref, "max", 100 );
+
+  int maxSizePref = addPreference( tr( "VISU_GAUSS_PREF_MAX_SIZE" ), sizeGr,
+                                  LightApp_Preferences::IntSpin, "VISU", "inside_point_sprite_max_size" );
+  setPreferenceProperty( maxSizePref, "min", 1 );
+  setPreferenceProperty( maxSizePref, "max", 100 );
+
+  int magnificationGr = addPreference( tr( "VISU_GAUSS_PREF_MAGNIFICATION_GROUP_TTL" ), insideCursorTab );
+  setPreferenceProperty( magnificationGr, "columns", 2 );
+
+  int magnificationPref = addPreference( tr( "VISU_GAUSS_PREF_MAGNIFICATION" ), magnificationGr,
+                                        LightApp_Preferences::IntSpin, "VISU", "inside_point_sprite_magnification" );
+  setPreferenceProperty( magnificationPref, "min", 10 );
+  setPreferenceProperty( magnificationPref, "max", 1000 );
+
+  int incrementPref = addPreference( tr( "VISU_GAUSS_PREF_INCREMENT" ), magnificationGr,
+                                    LightApp_Preferences::DblSpin, "VISU", "inside_point_sprite_increment" );
+  setPreferenceProperty( incrementPref, "min", 0.01 );
+  setPreferenceProperty( incrementPref, "max", 10 );
+  setPreferenceProperty( incrementPref, "step", 0.1 );
+
+}
+
+
+//---------------------------------------------------------------
+void 
+VisuGUI_Module
+::createOutsideCursorPreferences()
+{
+  int outsideCursorTab = addPreference( tr( "VISU_GAUSS_OUTSIDE_CURSOR_PREF_TAB_TTL" ) );
+
+  int primitiveGr = addPreference( tr( "VISU_GAUSS_PREF_PRIMITIVE_GROUP_TTL" ), outsideCursorTab );
+  setPreferenceProperty( primitiveGr, "columns", 1 );
+
+  int primitiveTypePref = addPreference( tr( "VISU_GAUSS_PREF_PRIMITIVE_TYPE" ), primitiveGr,
+                               LightApp_Preferences::Selector, "VISU", "outside_point_sprite_primitive_type" );
+
+  QStringList values;
+  values.append( tr( "VISU_GAUSS_PREF_POINTSPRITE" ) );
+  values.append( tr( "VISU_GAUSS_PREF_OPENGLPOINT" ) );
+  values.append( tr( "VISU_GAUSS_PREF_GEOMSPHERE" ) );
+  QValueList<QVariant> indices;
+  indices.append( 0 );
+  indices.append( 1 );
+  indices.append( 2 );
+  setPreferenceProperty( primitiveTypePref, "strings", values );
+  setPreferenceProperty( primitiveTypePref, "indexes", indices );
+
+  int clampPref = addPreference( tr( "VISU_GAUSS_PREF_CLAMP" ), primitiveGr,
+                                LightApp_Preferences::IntSpin, "VISU", "outside_point_sprite_clamp" );
+  setPreferenceProperty( clampPref, "min", 1 );
+  setPreferenceProperty( clampPref, "max", 512 );
+
+  addPreference( tr( "VISU_GAUSS_PREF_MAIN_TEXTURE" ), primitiveGr,
+                LightApp_Preferences::File, "VISU", "outside_point_sprite_main_texture" );
+
+  addPreference( tr( "VISU_GAUSS_PREF_ALPHA_TEXTURE" ), primitiveGr,
+                LightApp_Preferences::File, "VISU", "outside_point_sprite_alpha_texture" );
+
+  int alphaThresholdPref = addPreference( tr( "VISU_GAUSS_PREF_ALPHA_THRESHOLD" ), primitiveGr,
+                                         LightApp_Preferences::DblSpin, "VISU", "outside_point_sprite_alpha_threshold" );  
+  setPreferenceProperty( alphaThresholdPref, "min", 0.0 );
+  setPreferenceProperty( alphaThresholdPref, "max", 1.0 );
+  setPreferenceProperty( alphaThresholdPref, "step", 0.1 );
+
+  int resolutionPref = addPreference( tr( "VISU_GAUSS_PREF_RESOLUTION" ), primitiveGr,
+                                     LightApp_Preferences::IntSpin, "VISU", "outside_geom_sphere_resolution" );
+  setPreferenceProperty( resolutionPref, "min", 3 );
+  setPreferenceProperty( resolutionPref, "max", 100 );
+
+  int faceLimitPref = addPreference( tr( "VISU_GAUSS_PREF_FACE_LIMIT" ), primitiveGr,
+                                    LightApp_Preferences::IntSpin, "VISU", "outside_geom_sphere_face_limit" );
+  setPreferenceProperty( faceLimitPref, "min", 10 );
+  setPreferenceProperty( faceLimitPref, "max", 1000000 );
+
+  int sizeGr = addPreference( tr( "VISU_GAUSS_PREF_SIZE_GROUP_TTL" ), outsideCursorTab );
+
+  int sizePref = addPreference( tr( "VISU_GAUSS_PREF_SIZE" ), sizeGr,
+                               LightApp_Preferences::IntSpin, "VISU", "outside_point_sprite_size" );
+  setPreferenceProperty( sizePref, "min", 1 );
+  setPreferenceProperty( sizePref, "max", 100 );
+
+  int colorGr = addPreference( tr( "VISU_GAUSS_PREF_COLOR_GROUP_TTL" ), outsideCursorTab );
+  setPreferenceProperty( colorGr, "columns", 1 );
+
+  addPreference( tr( "VISU_GAUSS_PREF_UNIFORM_COLOR" ), colorGr,
+                LightApp_Preferences::Bool, "VISU", "outside_point_sprite_uniform" );
+
+  addPreference( tr( "VISU_GAUSS_PREF_COLOR" ), colorGr,
+                LightApp_Preferences::Color, "VISU", "outside_point_sprite_color" );
+}
+
+
+//---------------------------------------------------------------
+void 
+VisuGUI_Module
+::createPickingPreferences()
+{
+  int pickingTab = addPreference( tr( "VISU_PICKING_PREF_TAB_TTL" ) );
+
+  // Cursor
+  int cursorGr = addPreference( tr( "VISU_PICKING_PREF_CURSOR_GROUP_TTL" ), pickingTab );
+  setPreferenceProperty( cursorGr, "columns", 1 );
+
+  int cursorSizePref = addPreference( tr( "VISU_PICKING_PREF_CURSOR_SIZE" ), cursorGr,
+                                        LightApp_Preferences::DblSpin, "VISU", "picking_cursor_size" );
+  setPreferenceProperty( cursorSizePref, "min", 0 );
+  setPreferenceProperty( cursorSizePref, "max", 1.0 );
+  setPreferenceProperty( cursorSizePref, "step", 0.1 );
+
+  int pyramidHeightPref = addPreference( tr( "VISU_PICKING_PREF_PYRAMID_HEIGHT" ), cursorGr,
+                                        LightApp_Preferences::DblSpin, "VISU", "picking_pyramid_height" );
+  setPreferenceProperty( pyramidHeightPref, "min", 1 );
+  setPreferenceProperty( pyramidHeightPref, "max", 100 );
+
+  int selectionColorPref = addPreference( tr( "VISU_PICKING_PREF_SELECTION_COLOR" ), cursorGr,
+                                         LightApp_Preferences::Color, "VISU", "picking_selection_color" );
+
+  // Tolerance
+  int toleranceGr = addPreference( tr( "VISU_PICKING_PREF_TOLERANCE_GROUP_TTL" ), pickingTab );
+
+  int pointTolerancePref = addPreference( tr( "VISU_PICKING_PREF_POINT_SELECTION_TOLERANCE" ), toleranceGr,
+                                        LightApp_Preferences::DblSpin, "VISU", "picking_point_tolerance" );
+  setPreferenceProperty( pointTolerancePref, "min", 0.001 );
+  setPreferenceProperty( pointTolerancePref, "max", 10 );
+  setPreferenceProperty( pointTolerancePref, "step", 0.01 );
+
+  // Info window
+  int infoWindowGr = addPreference( tr( "VISU_PICKING_PREF_INFO_WINDOW_GROUP_TTL" ), pickingTab );
+  setPreferenceProperty( infoWindowGr, "columns", 1 );
+
+  int transparencyPref = addPreference( tr( "VISU_PICKING_PREF_TRANSPARENCY" ), infoWindowGr,
+                                       LightApp_Preferences::IntSpin, "VISU", "picking_transparency" );
+  setPreferenceProperty( transparencyPref, "min", 0 );
+  setPreferenceProperty( transparencyPref, "max", 100 );
+  setPreferenceProperty( transparencyPref, "step", 10 );
+
+  int positionPref = addPreference( tr( "VISU_PICKING_PREF_POSITION" ), infoWindowGr,
+                                   LightApp_Preferences::Selector, "VISU", "picking_position" );
+  QStringList values;
+  values.append( tr( "VISU_PICKING_PREF_BELOW_POINT" ) );
+  values.append( tr( "VISU_PICKING_PREF_TOP_LEFT_CORNER" ) );
+  QValueList<QVariant> indices;
+  indices.append( 0 );
+  indices.append( 1 );
+  setPreferenceProperty( positionPref, "strings", values );
+  setPreferenceProperty( positionPref, "indexes", indices );
+
+  // Camera
+  int cameraGr = addPreference( tr( "VISU_PICKING_PREF_CAMERA_GROUP_TTL" ), pickingTab );
+  setPreferenceProperty( cameraGr, "columns", 1 );
+
+  int zoomFactorPref = addPreference( tr( "VISU_PICKING_PREF_ZOOM_FACTOR" ), cameraGr,
+                                     LightApp_Preferences::DblSpin, "VISU", "picking_zoom_factor" );
+  setPreferenceProperty( zoomFactorPref, "min", 0.1 );
+  setPreferenceProperty( zoomFactorPref, "max", 10.0 );
+  setPreferenceProperty( zoomFactorPref, "step", 0.1 );
+
+  int stepNumberPref = addPreference( tr( "VISU_PICKING_PREF_STEP_NUMBER" ), cameraGr,
+                                     LightApp_Preferences::IntSpin, "VISU", "picking_step_number" );
+  setPreferenceProperty( stepNumberPref, "min", 1 );
+  setPreferenceProperty( stepNumberPref, "max", 100 );
+
+  // Display parent mesh
+  int parentMeshGr = addPreference( tr( "VISU_PICKING_PREF_PARENT_MESH_TTL" ), pickingTab );
+  setPreferenceProperty( parentMeshGr, "columns", 1 );
+
+  addPreference( tr( "VISU_PICKING_PREF_DISPLAY_PARENT_MESH" ), parentMeshGr,
+                LightApp_Preferences::Bool, "VISU", "picking_display_parent_mesh" );
+}
+
+
+//---------------------------------------------------------------
+void 
+VisuGUI_Module
+::createSpaceMousePreferences()
+{
+  int mouseTab = addPreference( tr( "VISU_MOUSE_PREF_TAB_TLT" ) );
+
+  int mouseGr = addPreference( tr( "VISU_MOUSE_PREF_GROUP_TLT" ), mouseTab );
+  int mousePref = addPreference( tr( "VISU_MOUSE_PREF" ), mouseGr, LightApp_Preferences::Selector, "VISU", "mouse_behaviour" );
+  QStringList values;
+  values.append( tr( "VISU_MOUSE_PREF_STANDARD" ) );
+  values.append( tr( "VISU_MOUSE_PREF_KEYBOARD_FREE" ) );
+  QValueList<QVariant> indices;
+  indices.append( 0 );
+  indices.append( 1 );
+  setPreferenceProperty( mousePref, "strings", values );
+  setPreferenceProperty( mousePref, "indexes", indices );
+
+  int keybrdGr = addPreference( tr( "VISU_KEYBOARD_PREF_GROUP_TTL" ), mouseTab );
+  int keybrdPref = addPreference( tr( "VISU_KEYBOARD_PREF" ), keybrdGr, LightApp_Preferences::IntSpin, "VISU", "speed_increment" );
+  setPreferenceProperty( keybrdPref,  "max",  1000  );
+
+  int spacemouseGr = addPreference( tr( "VISU_SPACEMOUSE_PREF" ), mouseTab );
+  setPreferenceProperty( spacemouseGr, "columns", 1 );
+  int spacemousePref1 = addPreference( tr( "VISU_SPACEMOUSE_PREF_1" ), spacemouseGr, LightApp_Preferences::Selector, "VISU", "spacemouse_func1_btn" ); //decrease_speed_increment
+  int spacemousePref2 = addPreference( tr( "VISU_SPACEMOUSE_PREF_2" ), spacemouseGr, LightApp_Preferences::Selector, "VISU", "spacemouse_func2_btn" ); //increase_speed_increment
+  int spacemousePref3 = addPreference( tr( "VISU_SPACEMOUSE_PREF_3" ), spacemouseGr, LightApp_Preferences::Selector, "VISU", "spacemouse_func3_btn" ); //decrease_gauss_point_magnification
+  int spacemousePref4 = addPreference( tr( "VISU_SPACEMOUSE_PREF_4" ), spacemouseGr, LightApp_Preferences::Selector, "VISU", "spacemouse_func4_btn" ); //increase_gauss_point_magnification
+  int spacemousePref5 = addPreference( tr( "VISU_SPACEMOUSE_PREF_5" ), spacemouseGr, LightApp_Preferences::Selector, "VISU", "spacemouse_func5_btn" ); //dominant_combined_switch
+  values.clear();
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_1" ) );
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_2" ) );
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_3" ) );
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_4" ) );
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_5" ) );
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_6" ) );
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_7" ) );
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_8" ) );
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_*" ) );
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_10" ) );
+  values.append( tr( "VISU_SPACEMOUSE_PREF_BTN_11" ) );
+  indices.clear();
+  indices.append( 1 );
+  indices.append( 2 );
+  indices.append( 3 );
+  indices.append( 4 );
+  indices.append( 5 );
+  indices.append( 6 );
+  indices.append( 7 );
+  indices.append( 8 );
+  indices.append( 9 ); // == button_*
+  indices.append( 10 );
+  indices.append( 11 );
+  setPreferenceProperty( spacemousePref1, "strings", values );
+  setPreferenceProperty( spacemousePref1, "indexes", indices );
+  setPreferenceProperty( spacemousePref2, "strings", values );
+  setPreferenceProperty( spacemousePref2, "indexes", indices );
+  setPreferenceProperty( spacemousePref3, "strings", values );
+  setPreferenceProperty( spacemousePref3, "indexes", indices );
+  setPreferenceProperty( spacemousePref4, "strings", values );
+  setPreferenceProperty( spacemousePref4, "indexes", indices );
+  setPreferenceProperty( spacemousePref5, "strings", values );
+  setPreferenceProperty( spacemousePref5, "indexes", indices );
+}
+
+
+//---------------------------------------------------------------
+void 
+VisuGUI_Module
+::createRecorderPreferences()
+{
+  int recorderTab = addPreference( tr( "VISU_RECORDER_PREF_TAB_TTL" ) );
+
+  int recorderGr = addPreference( tr( "VISU_RECORDER_PREF_GROUP_TTL" ), recorderTab );
+  setPreferenceProperty( recorderGr, "columns", 1 );
+
+  int modePref = addPreference( tr( "VISU_RECORDER_PREF_RECORDING_MODE" ), recorderGr,
+                               LightApp_Preferences::Selector, "VISU", "recorder_mode" );
+  QStringList values;
+  values.append( tr( "VISU_RECORDER_PREF_SKIPPED_FRAMES" ) );
+  values.append( tr( "VISU_RECORDER_PREF_ALL_DISLPAYED_FRAMES" ) );
+  QValueList<QVariant> indices;
+  indices.append( 0 );
+  indices.append( 1 );
+  setPreferenceProperty( modePref, "strings", values );
+  setPreferenceProperty( modePref, "indexes", indices );
+
+  int fpsPref = addPreference( tr( "VISU_RECORDER_PREF_FPS" ), recorderGr,
+                              LightApp_Preferences::DblSpin, "VISU", "recorder_fps" );
+  setPreferenceProperty( fpsPref, "min", 0.1 );
+  setPreferenceProperty( fpsPref, "max", 100 );
+
+  int qualityPref = addPreference( tr( "VISU_RECORDER_PREF_QUALITY" ), recorderGr,
+                                  LightApp_Preferences::IntSpin, "VISU", "recorder_quality" );
+  setPreferenceProperty( qualityPref, "min", 1 );
+  setPreferenceProperty( qualityPref, "max", 100 );
+
+  addPreference( tr( "VISU_RECORDER_PREF_PROGRESSIVE" ), recorderGr,
+                LightApp_Preferences::Bool, "VISU", "recorder_progressive" );
+}
+
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module
+::OnCreateGaussPoints()
+{
+  double initialTime = vtkTimerLog::GetCPUTime();
+  CreatePrs3d<VISU::GaussPoints_i,VVTK_Viewer,VisuGUI_GaussPointsDlg,1>(this,true);
+  INFOS( "VisuGUI_Module::OnCreateGaussPoints() : Gauss Points created in " <<
+        vtkTimerLog::GetCPUTime() - initialTime << " seconds" );
+}
+
+void
+VisuGUI_Module
+::OnViewManagerAdded(SUIT_ViewManager* viewMgr)
+{
+  QString type = viewMgr->getViewModel()->getType();
+  if ( type == VVTK_Viewer::Type() ) 
+    connect( viewMgr, SIGNAL( viewCreated( SUIT_ViewWindow* ) ), this, SLOT( OnViewCreated( SUIT_ViewWindow* ) ) );
+}
+
+void
+VisuGUI_Module
+::OnViewCreated(SUIT_ViewWindow* view)
+{
+  SVTK_ViewWindow* viewWindow = dynamic_cast<SVTK_ViewWindow*>( view );
+  if ( viewWindow ) {
+    setProperty( viewWindow, "speed_increment" );
+    setProperty( viewWindow, "spacemouse_func1_btn" );
+    setProperty( viewWindow, "spacemouse_func2_btn" );
+    setProperty( viewWindow, "spacemouse_func3_btn" );
+    setProperty( viewWindow, "spacemouse_func4_btn" );
+    setProperty( viewWindow, "spacemouse_func5_btn" );
+  }
+}
+
+void
+VisuGUI_Module
+::setProperty( SVTK_ViewWindow* viewWindow, const QString& pref )
+{
+  if ( !viewWindow )
+    return;
+
+  SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+  SVTK_MainWindow* aMainWindow = viewWindow->getMainWindow();
+  int val;
+  if ( pref == "speed_increment" ) {
+    val = resMgr->integerValue( "VISU", pref, 10 );
+    aMainWindow->InvokeEvent( SVTK::SetSpeedIncrementEvent, &val );
+  }
+  else if ( pref == "spacemouse_func1_btn" ) {
+    val = resMgr->integerValue( "VISU", pref, 1 );
+    aMainWindow->InvokeEvent( SVTK::SetSMDecreaseSpeedEvent, &val );
+  }
+  else if ( pref == "spacemouse_func2_btn" ) {
+    val = resMgr->integerValue( "VISU", pref, 2 );
+    aMainWindow->InvokeEvent( SVTK::SetSMIncreaseSpeedEvent, &val );
+  }
+  else if ( pref == "spacemouse_func3_btn" ) {
+    val = resMgr->integerValue( "VISU", pref, 10 );
+    aMainWindow->InvokeEvent( VISU::SetSMDecreaseMagnificationEvent, &val );
+  }
+  else if ( pref == "spacemouse_func4_btn" ) {
+    val = resMgr->integerValue( "VISU", pref, 11 );
+    aMainWindow->InvokeEvent( VISU::SetSMIncreaseMagnificationEvent, &val );
+  }
+  else if ( pref == "spacemouse_func5_btn" ) {
+    val = resMgr->integerValue( "VISU", pref, 9 );
+    aMainWindow->InvokeEvent( SVTK::SetSMDominantCombinedSwitchEvent, &val );
+  }
+}
+
+void
+VisuGUI_Module
+::setProperty( SVTK_ViewManager* vm, const QString& prop )
+{
+  if ( !vm )
+    return;
+
+  QPtrVector<SUIT_ViewWindow> windows = vm->getViews();
+  for ( int n = windows.count(), i = 0; i < n; i++ )
+    setProperty( dynamic_cast<SVTK_ViewWindow*>( windows[i] ), prop );
+}
+
+void
+VisuGUI_Module
+::preferencesChanged( const QString& group, const QString& pref )
+{
+  if ( group == "VISU" && ( pref == "speed_increment" || pref == "spacemouse_func1_btn" ||
+                           pref == "spacemouse_func2_btn" || pref == "spacemouse_func3_btn" || 
+                           pref == "spacemouse_func4_btn" || pref == "spacemouse_func5_btn" ) ) {
+
+    // update properties of VVTK view windows
+    SUIT_ViewManager* vm = getApp()->getViewManager( VVTK_Viewer::Type(), false );
+    if ( vm ) 
+      setProperty( dynamic_cast<SVTK_ViewManager*>( vm ), pref );
+  }
+}
+
+
+//---------------------------------------------------------------
+SUIT_ViewManager*
+VisuGUI_Module
+::getViewManager(const QString& theType, 
+                const bool theIsCreate)
+{
+  if(SUIT_ViewManager* aViewManager = VisuGUI::getViewManager(theType,theIsCreate))
+    return aViewManager;
+
+  if(theIsCreate && VVTK_Viewer::Type() == theType)
+    return onCreateViewManager();
+
+  return NULL;
+}
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module
+::OnEditGaussPoints()
+{
+  Handle(SALOME_InteractiveObject) anIO;
+  if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
+    EditPrs3d<VISU::GaussPoints_i,VisuGUI_GaussPointsDlg,1>(this, aPrs3d);
+    if(SVTK_ViewWindow* aViewWindow = GetViewWindow<VVTK_Viewer>(this,true)){
+      aViewWindow->highlight(anIO,1);
+    }
+  }
+}
+
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module
+::OnDisplayPrs()
+{
+  if(MYDEBUG) MESSAGE("VisuGUI_Module::OnDisplayPrs");
+
+  QApplication::setOverrideCursor(Qt::waitCursor);
+
+  if(LightApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(this)){
+    SALOME_ListIO aList;
+    aSelectionMgr->selectedObjects(aList);
+    for(SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next()){
+      Handle(SALOME_InteractiveObject) anIO = it.Value();
+      CORBA::Object_var anObject = GetSelectedObj( GetAppStudy(this), anIO->getEntry() );
+
+      // is it a Prs3d object ?
+      if(!CORBA::is_nil(anObject)){
+       if(VISU::Prs3d_i* aPrs3d = dynamic_cast<VISU::Prs3d_i*>(VISU::GetServant(anObject).in())){
+         if(MYDEBUG) MESSAGE("VisuGUI_Module::OnDisplayPrs : Prs3d object");
+         if(aPrs3d->GetType() == VISU::TGAUSSPOINTS)
+           VISU::UpdateViewer<VVTK_Viewer>(this,aPrs3d,false,true,true);
+         else if(SUIT_ViewManager* aViewManager = getApp()->activeViewManager()){
+           QString aType = aViewManager->getType();
+           if(aType == SVTK_Viewer::Type())
+             VISU::UpdateViewer<SVTK_Viewer>(this,aPrs3d,false,true,true);
+           else if(aType == VVTK_Viewer::Type())
+             VISU::UpdateViewer<VVTK_Viewer>(this,aPrs3d,false,true,true);
+         }
+         continue;
+       }
+      }
+
+      // is it Curve ?
+      if(VISU::Curve_i* aCurve = dynamic_cast<VISU::Curve_i*>(VISU::GetServant(anObject).in())){
+        if(MYDEBUG) MESSAGE("VisuGUI_Module::OnDisplayPrs : Curve object");
+        PlotCurve( this, aCurve, VISU::eDisplay );
+        continue;
+      }
+
+      // is it Container ?
+      if(VISU::Container_i* aContainer = dynamic_cast<VISU::Container_i*>(VISU::GetServant(anObject).in())){
+        if(MYDEBUG) MESSAGE("VisuGUI_Module::DisplayPrs : Container object");
+        PlotContainer( this, aContainer, VISU::eDisplay );
+        continue;
+      }
+
+      // is it Table ?
+      if(VISU::Table_i* aTable = dynamic_cast<VISU::Table_i*>(VISU::GetServant(anObject).in())){
+        if(MYDEBUG) MESSAGE("VisuGUI_Module::DisplayPrs : Table object");
+        PlotTable( this, aTable, VISU::eDisplay );
+        continue;
+      }
+    }
+  }
+
+  QApplication::restoreOverrideCursor();
+}
+
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module
+::OnEraseAll()
+{
+  if(SUIT_ViewManager* aViewManager = getApp()->activeViewManager()){
+    QString aType = aViewManager->getType();
+    if(aType == SVTK_Viewer::Type())
+      VISU::OnEraseAll<SVTK_Viewer>(this);
+    else if(aType == VVTK_Viewer::Type())
+      VISU::OnEraseAll<VVTK_Viewer>(this);
+    else if(aType == SPlot2d_Viewer::Type())
+      VISU::OnEraseAll<SPlot2d_Viewer>(this);
+  }
+}
+
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module
+::OnDisplayOnlyPrs()
+{
+  OnEraseAll();
+  OnDisplayPrs();
+}
+
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module
+::OnErasePrs()
+{
+  QApplication::setOverrideCursor(Qt::waitCursor);
+
+  SALOME_ListIO aList;
+  LightApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(this);
+  aSelectionMgr->selectedObjects(aList);
+
+  for(SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next()){
+    Handle(SALOME_InteractiveObject) anIO = it.Value();
+    CORBA::Object_var anObject = GetSelectedObj(GetAppStudy(this),anIO->getEntry());
+    if(!CORBA::is_nil(anObject)){
+      VISU::Base_var aBase = VISU::Base::_narrow(anObject);
+      if(!CORBA::is_nil(aBase)) 
+       VISU::ErasePrs(this,aBase,true);
+    }
+  }
+
+  QApplication::restoreOverrideCursor();
+}
+
+
+//---------------------------------------------------------------
+namespace
+{
+  void
+  GetViewParams(VVTK_MainWindow* theViewWindow,
+               const char* theSuffix,
+               std::ostringstream& theStr)
+  {
+    float aColor[3];
+    vtkRenderer* aRenderer = theViewWindow->getRenderer();
+    aRenderer->GetBackground(aColor);
+    Storable::DataToStream(theStr,std::string("myColor") + theSuffix + ".R",aColor[0]);
+    Storable::DataToStream(theStr,std::string("myColor") + theSuffix + ".G",aColor[1]);
+    Storable::DataToStream(theStr,std::string("myColor") + theSuffix + ".B",aColor[2]);
+      
+    double aPosition[3];
+    vtkCamera* aCamera = aRenderer->GetActiveCamera();
+    aCamera->GetPosition(aPosition);
+    Storable::DataToStream(theStr,std::string("myPosition") + theSuffix + "[0]",aPosition[0]);
+    Storable::DataToStream(theStr,std::string("myPosition") + theSuffix + "[1]",aPosition[1]);
+    Storable::DataToStream(theStr,std::string("myPosition") + theSuffix + "[2]",aPosition[2]);
+
+    double aFocalPnt[3];
+    aCamera->GetFocalPoint(aFocalPnt);
+    Storable::DataToStream(theStr,std::string("myFocalPnt") + theSuffix + "[0]",aFocalPnt[0]);
+    Storable::DataToStream(theStr,std::string("myFocalPnt") + theSuffix + "[1]",aFocalPnt[1]);
+    Storable::DataToStream(theStr,std::string("myFocalPnt") + theSuffix + "[2]",aFocalPnt[2]);
+      
+    double aViewUp[3];
+    aCamera->GetViewUp(aViewUp);
+    Storable::DataToStream(theStr,std::string("myViewUp") + theSuffix + "[0]",aViewUp[0]);
+    Storable::DataToStream(theStr,std::string("myViewUp") + theSuffix + "[1]",aViewUp[1]);
+    Storable::DataToStream(theStr,std::string("myViewUp") + theSuffix + "[2]",aViewUp[2]);
+      
+    float aParallelScale = aCamera->GetParallelScale();
+    Storable::DataToStream(theStr,std::string("myParallelScale") + theSuffix,aParallelScale);
+      
+    double aScaleFactor[3];
+    theViewWindow->GetScale(aScaleFactor);
+    Storable::DataToStream(theStr,std::string("myScaleFactor") + theSuffix + "[0]",aScaleFactor[0]);
+    Storable::DataToStream(theStr,std::string("myScaleFactor") + theSuffix + "[1]",aScaleFactor[1]);
+    Storable::DataToStream(theStr,std::string("myScaleFactor") + theSuffix + "[2]",aScaleFactor[2]);
+  }
+
+  //---------------------------------------------------------------
+  void
+  SetViewParams(VVTK_MainWindow* theViewWindow,
+               const char* theSuffix,
+               const Storable::TRestoringMap& theMap)
+  {
+    float aColor[3];
+    aColor[0] = Storable::FindValue(theMap,std::string("myColor") + theSuffix + ".R").toDouble();
+    aColor[1] = Storable::FindValue(theMap,std::string("myColor") + theSuffix + ".G").toDouble();
+    aColor[2] = Storable::FindValue(theMap,std::string("myColor") + theSuffix + ".B").toDouble();
+    vtkRenderer* aRenderer = theViewWindow->getRenderer();
+    aRenderer->SetBackground(aColor);
+      
+    double aPosition[3];
+    aPosition[0] = Storable::FindValue(theMap,std::string("myPosition") + theSuffix + "[0]").toDouble();
+    aPosition[1] = Storable::FindValue(theMap,std::string("myPosition") + theSuffix + "[1]").toDouble();
+    aPosition[2] = Storable::FindValue(theMap,std::string("myPosition") + theSuffix + "[2]").toDouble();
+    vtkCamera* aCamera = aRenderer->GetActiveCamera();
+    aCamera->SetPosition(aPosition);
+
+    double aFocalPnt[3];
+    aFocalPnt[0] = Storable::FindValue(theMap,std::string("myFocalPnt") + theSuffix + "[0]").toDouble();
+    aFocalPnt[1] = Storable::FindValue(theMap,std::string("myFocalPnt") + theSuffix + "[1]").toDouble();
+    aFocalPnt[2] = Storable::FindValue(theMap,std::string("myFocalPnt") + theSuffix + "[2]").toDouble();
+    aCamera->SetFocalPoint(aFocalPnt);
+      
+    double aViewUp[3];
+    aViewUp[0] = Storable::FindValue(theMap,std::string("myViewUp") + theSuffix + "[0]").toDouble();
+    aViewUp[1] = Storable::FindValue(theMap,std::string("myViewUp") + theSuffix + "[1]").toDouble();
+    aViewUp[2] = Storable::FindValue(theMap,std::string("myViewUp") + theSuffix + "[2]").toDouble();
+    aCamera->SetViewUp(aViewUp);
+
+    float aParallelScale = Storable::FindValue(theMap,std::string("myParallelScale") + theSuffix).toDouble();
+    aCamera->SetParallelScale(aParallelScale);
+      
+    double aScaleFactor[3];
+    aScaleFactor[0] = Storable::FindValue(theMap,std::string("myScaleFactor") + theSuffix + "[0]").toDouble();
+    aScaleFactor[1] = Storable::FindValue(theMap,std::string("myScaleFactor") + theSuffix + "[1]").toDouble();
+    aScaleFactor[2] = Storable::FindValue(theMap,std::string("myScaleFactor") + theSuffix + "[2]").toDouble();
+    theViewWindow->SetScale(aScaleFactor);
+  }
+
+  //---------------------------------------------------------------
+  void
+  GetViewParams(VVTK_MainWindow1* theViewWindow,
+               std::ostringstream& theStr)
+  {
+    GetViewParams(theViewWindow,"1",theStr);
+
+    VISU_WidgetCtrl* aWidgetCtrl = theViewWindow->GetWidgetCtrl();
+    if(aWidgetCtrl->GetEnabled()){
+      std::string aSegmentationMode;
+      if(aWidgetCtrl->IsPlanesActive()){
+       VISU_PlanesWidget *aPlanesWidget = aWidgetCtrl->GetPlanesWidget();
+       float anOrigin[3];
+       aPlanesWidget->GetOrigin(anOrigin);
+       Storable::DataToStream(theStr,"myCursorOrigin[0]",anOrigin[0]);
+       Storable::DataToStream(theStr,"myCursorOrigin[1]",anOrigin[1]);
+       Storable::DataToStream(theStr,"myCursorOrigin[2]",anOrigin[2]);
+       
+       float aNormal[3];
+       aPlanesWidget->GetNormal(aNormal);
+       Storable::DataToStream(theStr,"myCursorNormal[0]",aNormal[0]);
+       Storable::DataToStream(theStr,"myCursorNormal[1]",aNormal[1]);
+       Storable::DataToStream(theStr,"myCursorNormal[2]",aNormal[2]);
+       
+       float aDepth = aPlanesWidget->Distance();
+       Storable::DataToStream(theStr,"myCursorDepth",aDepth);
+       
+       aSegmentationMode = "Planes";
+      }else if(aWidgetCtrl->IsSphereActive()){
+       VISU_SphereWidget *aSphereWidget = aWidgetCtrl->GetSphereWidget();
+       float aCenter[3];
+       aSphereWidget->GetCenter(aCenter);
+       Storable::DataToStream(theStr,"mySphereCursorCenter[0]",aCenter[0]);
+       Storable::DataToStream(theStr,"mySphereCursorCenter[1]",aCenter[1]);
+       Storable::DataToStream(theStr,"mySphereCursorCenter[2]",aCenter[2]);
+       
+       float aRadius = aSphereWidget->GetRadius();
+       Storable::DataToStream(theStr,"mySphereCursorRaduis",aRadius);
+       
+       aSegmentationMode = "Sphere";
+      }
+      
+      Storable::DataToStream(theStr,"mySegmentationMode",aSegmentationMode);
+    }
+  }
+
+  //---------------------------------------------------------------
+  void
+  SetViewParams(VVTK_MainWindow1* theViewWindow,
+               const Storable::TRestoringMap& theMap)
+  {
+    SetViewParams(theViewWindow,"1",theMap);
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  GetViewParams(VVTK_MainWindow2* theViewWindow,
+               std::ostringstream& theStr)
+  {
+    GetViewParams(theViewWindow,"2",theStr);
+  }
+
+  void
+  SetViewParams(VVTK_MainWindow2* theViewWindow,
+               const Storable::TRestoringMap& theMap)
+  {
+    SetViewParams(theViewWindow,"2",theMap);
+  }
+
+
+  //---------------------------------------------------------------
+  std::string
+  GetViewParams(VVTK_ViewWindow* theViewWindow)
+  {
+    std::ostringstream aStream;
+
+    Storable::DataToStream(aStream,"myComment","GAUSSVIEW");
+    
+    SVTK_Selector* aSelector = theViewWindow->GetSelector();
+    Selection_Mode aSelectionMode = aSelector->SelectionMode();
+    Storable::DataToStream(aStream,"mySelectionMode",aSelectionMode);
+    
+    GetViewParams(theViewWindow->getMainWindow1(),aStream);
+    GetViewParams(theViewWindow->getMainWindow2(),aStream);
+
+    return aStream.str();
+  }
+
+  //---------------------------------------------------------------
+  struct TSelection
+  {
+    bool myIsSelected;
+    bool myHasSubId;
+    int mySubId;
+    
+    TSelection():
+      myIsSelected(false),
+      myHasSubId(false),
+      mySubId(-1)
+    {}
+  };
+
+  typedef std::map<std::string,TSelection> TVisibleEntries;
+
+  struct TGetVisibleEntries
+  {
+    TVisibleEntries& myVisibleEntries;
+
+    TGetVisibleEntries(TVisibleEntries& theVisibleEntries):
+      myVisibleEntries(theVisibleEntries)
+    {}
+
+    void
+    operator()(VISU_GaussPtsAct* theActor) 
+    {
+      if(theActor->GetVisibility()){
+       const Handle(SALOME_InteractiveObject)& anIO = theActor->getIO();
+       myVisibleEntries.insert(TVisibleEntries::value_type(anIO->getEntry(),TSelection()));
+      }
+    }
+  };
+
+  void
+  GetGaussPointsSelection(VVTK_ViewWindow* theViewWindow,
+                         TVisibleEntries& theVisibleEntries)
+  {
+    // First find all visible Gauss Points presentations
+    vtkRenderer* aRenderer = theViewWindow->getRenderer();
+    vtkActorCollection* anActors = aRenderer->GetActors();
+    TGetVisibleEntries aGetVisibleEntries(theVisibleEntries);
+    SVTK::ForEach<VISU_GaussPtsAct>(anActors,
+                                   aGetVisibleEntries);
+    
+    // Next, find the sub-ids for the visible Gauss Points presentations
+    SVTK_Selector* aSelector = theViewWindow->GetSelector();
+    const SALOME_ListIO& aListIO = aSelector->StoredIObjects();
+    SALOME_ListIteratorOfListIO anIter(aListIO);
+    for(; anIter.More(); anIter.Next()){
+      Handle(SALOME_InteractiveObject) anIO = anIter.Value();
+      std::string anEntry = anIO->getEntry();
+      TVisibleEntries::iterator anEntriesIter = theVisibleEntries.find(anEntry);
+      if(anEntriesIter != theVisibleEntries.end()){
+       TSelection& aSelection = anEntriesIter->second;
+       aSelection.myIsSelected = true;
+       TColStd_IndexedMapOfInteger anIndexes;
+       aSelector->GetIndex(anIO,anIndexes);
+       if(anIndexes.Extent() > 0){
+         aSelection.myHasSubId = true;
+         aSelection.mySubId = anIndexes(1);
+       }
+      }
+    }
+  }
+
+
+  //---------------------------------------------------------------
+  inline
+  void
+  CreateReference(_PTR(Study) theStudyDocument,
+                 _PTR(StudyBuilder) theStudyBuilder,
+                 _PTR(SObject) theFatherSObject, 
+                 const string& theRefEntry,
+                 const TSelection& theSelection)
+  {
+    _PTR(SObject) aNewObj = theStudyBuilder->NewObject(theFatherSObject);
+    _PTR(SObject) aRefSObj = theStudyDocument->FindObjectID(theRefEntry);
+    theStudyBuilder->Addreference(aNewObj,aRefSObj);
+
+    std::ostringstream aStream;
+    Storable::DataToStream(aStream,"myIsSelected",theSelection.myIsSelected);
+    Storable::DataToStream(aStream,"myHasSubId",theSelection.myHasSubId);
+    Storable::DataToStream(aStream,"mySubId",theSelection.mySubId);
+
+    _PTR(GenericAttribute) anAttr;
+    anAttr = theStudyBuilder->FindOrCreateAttribute(aNewObj,"AttributeComment");
+    _PTR(AttributeComment) aComment(anAttr);
+    aComment->SetValue(aStream.str());
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  SetGaussPointsSelection(VisuGUI* theModule,
+                         VVTK_ViewWindow* theViewWindow,
+                         _PTR(Study) theCStudy,
+                         _PTR(SObject) theSObject)
+  {
+    SVTK_Selector* aSelector = theViewWindow->GetSelector();
+    aSelector->ClearIObjects();
+
+    bool anIsFirst = true;
+    _PTR(ChildIterator) aChildIter = theCStudy->NewChildIterator(theSObject);
+    for (; aChildIter->More(); aChildIter->Next()) {
+      _PTR(SObject) aChildSObject = aChildIter->Value();
+      _PTR(SObject) aSObject;
+      if(aChildSObject->ReferencedObject(aSObject)){
+       CORBA::Object_var anObject = VISU::ClientSObjectToObject(aSObject);
+       PortableServer::ServantBase_var aServant = VISU::GetServant(anObject);
+       if(VISU::Prs3d_i* aPrs3d = dynamic_cast<VISU::Prs3d_i*>(aServant.in())){
+         // To set visiblity
+         VISU::UpdateViewer<VVTK_Viewer>(theModule,aPrs3d,anIsFirst,false,false);
+         anIsFirst = false;
+         
+         // To update selection
+         _PTR(GenericAttribute) anAttr;
+         if(aChildSObject->FindAttribute(anAttr,"AttributeComment")){
+           _PTR(AttributeComment) aComment(anAttr);
+           
+           QString aStream(aComment->Value().c_str());
+           Storable::TRestoringMap aMap;
+           Storable::StrToMap(aStream,aMap);
+           
+           bool anIsSelected = Storable::FindValue(aMap,"myIsSelected").toInt();
+           bool aHasSubId = Storable::FindValue(aMap,"myHasSubId").toInt();
+           int aSubId = Storable::FindValue(aMap,"mySubId").toInt();
+           
+           if(anIsSelected){
+             std::string anEntry = aSObject->GetID();
+             Handle(SALOME_InteractiveObject) anIO = new SALOME_InteractiveObject(anEntry.c_str(),"");
+             aSelector->AddIObject(anIO);
+             if(aHasSubId)
+               aSelector->AddOrRemoveIndex(anIO,aSubId,false);
+           }
+         }
+       }
+      }
+    }
+
+    aSelector->EndPickCallback(); // To invoke selection changed signal
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  OnStoreConfiguration(SalomeApp_Module* theModule,
+                      bool theIsNew)
+  {
+    _PTR(Study) aCStudy = GetCStudy(GetAppStudy(theModule));
+    if (CheckLock(aCStudy,GetDesktop(theModule)))
+      return;
+    
+    LightApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(theModule);
+    
+    SUIT_ViewManager* aViewManager = theModule->getApp()->activeViewManager();
+    if(aViewManager->getType() == VVTK_Viewer::Type()){
+      SUIT_ViewWindow* aWindow = aViewManager->getActiveView();
+      VVTK_ViewWindow* aViewWindow = dynamic_cast<VVTK_ViewWindow*>(aWindow);
+      
+      SUIT_Study* aSStudy = aViewManager->study();
+      SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(aSStudy);
+      _PTR(Study) aCStudy = aStudy->studyDS();
+      _PTR(StudyBuilder) aStudyBuilder = aCStudy->NewBuilder();
+
+      std::string anEntry;
+      std::string aValue = GetViewParams(aViewWindow);
+
+      if(theIsNew){
+       _PTR(SComponent) aSComponent = ClientFindOrCreateVisuComponent(aCStudy);
+       
+       static int myNbConfigs = 0;
+       std::string aName = VISU::GenerateName("Config.", ++myNbConfigs).latin1();
+      
+       std::string aSComponentEntry = aSComponent->GetID();
+       anEntry = CreateAttributes(aCStudy, 
+                                  aSComponentEntry.c_str(), 
+                                  "", 
+                                  "", 
+                                  aName.c_str(),
+                                  "",
+                                  aValue.c_str());
+      }else{
+       SALOME_ListIO aListIO;
+       aSelectionMgr->selectedObjects(aListIO);
+       SALOME_ListIteratorOfListIO aListIter( aListIO );
+       for(; aListIter.More(); aListIter.Next()){
+         Handle(SALOME_InteractiveObject) anIO = aListIter.Value();
+         _PTR(SObject) aSObject = aCStudy->FindObjectID(anIO->getEntry());
+         _PTR(GenericAttribute) anAttr;
+         if(aSObject->FindAttribute(anAttr,"AttributeComment")){
+           _PTR(AttributeComment) aComment(anAttr);
+           std::string aCommentValue(aComment->Value());
+           if(aCommentValue.compare("myComment=GAUSSVIEW") >= 0){
+             aComment->SetValue(aValue.c_str());
+             anEntry = aSObject->GetID();
+             
+             _PTR(ChildIterator) aChildIter = aCStudy->NewChildIterator(aSObject);
+             for (; aChildIter->More(); aChildIter->Next()) {
+               _PTR(SObject) aChildSObject = aChildIter->Value();
+               aStudyBuilder->RemoveObject(aChildSObject);
+             }
+             break;
+           }
+         }
+       }
+      }
+
+      if(anEntry != ""){
+       TVisibleEntries aVisibleEntries;
+       GetGaussPointsSelection(aViewWindow,
+                               aVisibleEntries);
+       
+       _PTR(SObject) aSObject = aCStudy->FindObjectID(anEntry);
+       _PTR(StudyBuilder) aStudyBuilder = aCStudy->NewBuilder();
+       TVisibleEntries::const_iterator anIter =  aVisibleEntries.begin();
+       for(; anIter != aVisibleEntries.end(); anIter++){
+         const std::string& anEntry = anIter->first;
+         const TSelection& aSelection = anIter->second;
+         
+         CreateReference(aCStudy,
+                         aStudyBuilder,
+                         aSObject, 
+                         anEntry,
+                         aSelection);
+       }
+      
+       //UpdateObjBrowser(theModule,true,aSObject);
+       UpdateObjBrowser(theModule,true);
+      }
+    }
+  }
+
+
+  //---------------------------------------------------------------
+  template<class TMainWindow>
+  void
+  SetMainWindowParams(VisuGUI* theModule,
+                     _PTR(SObject) theSObject,
+                     VVTK_ViewWindow* theViewWindow,
+                     TMainWindow* theMainWindow)
+  {
+    _PTR(Study) aCStudy = GetCStudy(GetAppStudy(theModule));
+
+    _PTR(GenericAttribute) anAttr;
+    if(theSObject->FindAttribute(anAttr,"AttributeComment")){
+      _PTR(AttributeComment) aComment(anAttr);
+      QString aStream(aComment->Value().c_str());
+      Storable::TRestoringMap aMap;
+      Storable::StrToMap(aStream,aMap);
+      SetViewParams(theMainWindow,aMap);
+    }
+  }
+}
+
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module::
+OnSaveConfiguration()
+{
+  ::OnStoreConfiguration(this,true);
+}
+
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module::
+OnOverwriteConfiguration()
+{
+  ::OnStoreConfiguration(this,false);
+}
+
+
+//---------------------------------------------------------------
+void
+VisuGUI_Module::
+OnRestoreConfiguration()
+{
+  LightApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(this);
+
+  SALOME_ListIO aListIO;
+  aSelectionMgr->selectedObjects(aListIO);
+  if(aListIO.Extent() > 1)
+    return;
+
+  if(SUIT_ViewManager* aViewManager = getViewManager(VVTK_Viewer::Type(),true)){
+    const Handle(SALOME_InteractiveObject)& anIO = aListIO.First();
+    _PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
+    _PTR(SObject) aSObject = aCStudy->FindObjectID(anIO->getEntry());
+    myConfigSObject = aSObject;
+    _PTR(GenericAttribute) anAttr;
+    if(aSObject->FindAttribute(anAttr,"AttributeComment")){
+      _PTR(AttributeComment) aComment(anAttr);
+      QString aStream(aComment->Value().c_str());
+      Storable::TRestoringMap aMap;
+      Storable::StrToMap(aStream,aMap);
+      SUIT_ViewWindow* aWindow = aViewManager->getActiveView();
+      VVTK_ViewWindow* aViewWindow = dynamic_cast<VVTK_ViewWindow*>(aWindow);
+      
+      Selection_Mode aSelectionMode = Storable::FindValue(aMap,"mySelectionMode").toInt();
+      SVTK_Selector* aSelector = aViewWindow->GetSelector();
+      aSelector->SetSelectionMode(aSelectionMode);
+      
+      SetGaussPointsSelection(this,aViewWindow,aCStudy,aSObject);
+
+      std::string aSegmentationMode;
+      if(VVTK_MainWindow1* aMainWindow = aViewWindow->getMainWindow1()){
+       aMainWindow->SetPlanesSegementation(false);
+       aMainWindow->SetSphereSegementation(false);
+       VISU_WidgetCtrl* aWidgetCtrl = aMainWindow->GetWidgetCtrl();
+       aSegmentationMode = Storable::FindValue(aMap,"mySegmentationMode").latin1();
+       
+       if(aSegmentationMode == "Planes"){
+         VISU_PlanesWidget *aPlanesWidget = aWidgetCtrl->GetPlanesWidget();
+         float anOrigin[3];
+         anOrigin[0] = Storable::FindValue(aMap,"myCursorOrigin[0]").toDouble();
+         anOrigin[1] = Storable::FindValue(aMap,"myCursorOrigin[1]").toDouble();
+         anOrigin[2] = Storable::FindValue(aMap,"myCursorOrigin[2]").toDouble();
+         aPlanesWidget->SetOrigin(anOrigin);
+         
+         float aNormal[3];
+         aNormal[0] = Storable::FindValue(aMap,"myCursorNormal[0]").toDouble();
+         aNormal[1] = Storable::FindValue(aMap,"myCursorNormal[1]").toDouble();
+         aNormal[2] = Storable::FindValue(aMap,"myCursorNormal[2]").toDouble();
+         aPlanesWidget->SetNormal(aNormal);
+         
+         float aDepth = Storable::FindValue(aMap,"myCursorDepth").toDouble();
+         aPlanesWidget->SetDistance(aDepth);
+         
+         aMainWindow->SetPlanesSegementation(true);
+       }else if(aSegmentationMode == "Sphere"){
+         VISU_SphereWidget *aSphereWidget = aWidgetCtrl->GetSphereWidget();
+         float aCenter[3];
+         aCenter[0] = Storable::FindValue(aMap,"mySphereCursorCenter[0]").toDouble();
+         aCenter[1] = Storable::FindValue(aMap,"mySphereCursorCenter[1]").toDouble();
+         aCenter[2] = Storable::FindValue(aMap,"mySphereCursorCenter[2]").toDouble();
+         aSphereWidget->SetCenter(aCenter);
+         
+         float aRadius = Storable::FindValue(aMap,"mySphereCursorRaduis").toDouble();
+         aSphereWidget->SetRadius(aRadius);
+         
+         aMainWindow->SetSphereSegementation(true);
+       }
+      }
+
+      if(VVTK_MainWindow1* aMainWindow = aViewWindow->getMainWindow1()){
+       SVTK_RenderWindowInteractor* anInteractor = aMainWindow->GetInteractor();
+       if(anInteractor->isVisible()){
+         SetMainWindowParams(this,myConfigSObject,aViewWindow,aMainWindow);
+       }else
+         anInteractor->installEventFilter(this);
+      }
+
+      if(aSegmentationMode != ""){
+       if(VVTK_MainWindow2* aMainWindow = aViewWindow->getMainWindow2()){
+         SVTK_RenderWindowInteractor* anInteractor = aMainWindow->GetInteractor();
+         if(anInteractor->isVisible())
+           SetMainWindowParams(this,myConfigSObject,aViewWindow,aMainWindow);
+         else
+           anInteractor->installEventFilter(this);
+       }
+      }
+
+      SetGaussPointsSelection(this,aViewWindow,aCStudy,aSObject);
+    }
+  }
+}
+
+
+//---------------------------------------------------------------
+bool
+VisuGUI_Module::
+eventFilter( QObject * theWatched, QEvent * theEvent )
+{
+  bool aRet = VisuGUI::eventFilter(theWatched,theEvent);
+  if(theEvent->type() == QEvent::Show){
+    if(SUIT_ViewManager* aViewManager = getViewManager(VVTK_Viewer::Type(),false)){
+      SUIT_ViewWindow* aWindow = aViewManager->getActiveView();
+      VVTK_ViewWindow* aViewWindow = dynamic_cast<VVTK_ViewWindow*>(aWindow);
+      if(VVTK_MainWindow1* aMainWindow = aViewWindow->getMainWindow1()){
+       SVTK_RenderWindowInteractor* anInteractor = aMainWindow->GetInteractor();
+       if(theWatched == anInteractor){
+         SetMainWindowParams(this,myConfigSObject,aViewWindow,aMainWindow);
+         anInteractor->removeEventFilter(this);
+       }
+      }
+      if(VVTK_MainWindow2* aMainWindow = aViewWindow->getMainWindow2()){
+       SVTK_RenderWindowInteractor* anInteractor = aMainWindow->GetInteractor();
+       if(theWatched == aMainWindow->GetInteractor()){
+         SetMainWindowParams(this,myConfigSObject,aViewWindow,aMainWindow);
+         anInteractor->removeEventFilter(this);
+       }
+      }
+    }
+  }
+  return aRet;
+}
diff --git a/src/VISUGUI/VisuGUI_Module.h b/src/VISUGUI/VisuGUI_Module.h
new file mode 100644 (file)
index 0000000..c13c823
--- /dev/null
@@ -0,0 +1,192 @@
+//  VISU VISUGUI : GUI of VISU 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   : VisuGUI_Module.h
+//  Author : 
+//  Module : VISU
+//  $Header$
+
+#ifndef VisuGUI_Module_HeaderFile
+#define VisuGUI_Module_HeaderFile
+
+#include "VisuGUI.h"
+#include "STD_Application.h"
+#include "SALOMEDSClient_SObject.hxx"
+
+class SUIT_ViewManager;
+class SVTK_ViewManager;
+class SVTK_ViewWindow;
+
+#include "MED_SharedPtr.hxx"
+
+namespace VISU
+{
+  class Viewer;
+  typedef MED::SharedPtr<Viewer> PViewer;
+  
+  typedef std::map<SUIT_ViewManager*,PViewer> TViewerMap;
+}
+
+//! This class inherits base VisuGUI.
+/*! Used to display, erase end edit presentations in the VVTK viewer. */
+class VisuGUI_Module: public VisuGUI
+{
+  Q_OBJECT;
+
+  friend class VISU::Viewer;
+
+public:
+  VisuGUI_Module();
+
+  virtual
+  ~VisuGUI_Module();
+
+  virtual
+  bool
+  eventFilter( QObject * theWatched, QEvent * theEvent );
+
+  //! Redifined method of the module initializing.
+  virtual
+  void
+  initialize( CAM_Application* );
+
+  //! Redefined method of creating prefernces.
+  virtual 
+  void 
+  createPreferences();
+
+  virtual
+  void
+  preferencesChanged( const QString&, const QString& );
+
+  virtual
+  SUIT_ViewManager*
+  getViewManager(const QString& theType, 
+                const bool theIsCreate);
+
+public slots:
+  //! Reimplemented method of the module deactivation.
+  virtual 
+  bool
+  deactivateModule( SUIT_Study* );
+
+  //! Reimplemented method of the module activation.
+  virtual 
+  bool
+  activateModule( SUIT_Study* );
+
+protected:
+  //! Create preferences for Gauss Points presentation.
+  virtual 
+  void 
+  createGaussPointsPreferences();
+
+  //! Create preferences for Outside Cursor Gauss Points presentations.
+  virtual 
+  void 
+  createInsideCursorPreferences();
+
+  virtual 
+  void 
+  createOutsideCursorPreferences();
+
+  //! Create preferences for Picking.
+  virtual 
+  void 
+  createPickingPreferences();
+
+  //! Create preferences for Space Mouse.
+  virtual 
+  void 
+  createSpaceMousePreferences();
+
+  //! Create preferences for Recorder.
+  virtual 
+  void 
+  createRecorderPreferences();
+
+protected slots:
+  SUIT_ViewManager*
+  onCreateViewManager();
+
+  void
+  onLastViewClosed(SUIT_ViewManager*);
+
+  void
+  OnCreateGaussPoints();
+
+  void
+  OnViewCreated(SUIT_ViewWindow*);
+
+  void 
+  OnViewManagerAdded(SUIT_ViewManager*);
+
+  //! Reimplemented method of the Gauss Points edition.
+  virtual
+  void
+  OnEditGaussPoints();
+
+  //! Reimplemented method of the Gauss Points displaying.
+  virtual 
+  void
+  OnDisplayPrs();
+
+  //! Reimplemented method of the Gauss Points displaying only.
+  virtual 
+  void
+  OnDisplayOnlyPrs();
+
+  //! Reimplemented method of the Gauss Points full erasing.
+  virtual
+  void
+  OnEraseAll();
+
+  //! Reimplemented method of the Gauss Points erasing.
+  virtual
+  void
+  OnErasePrs();
+
+  //! Virtual method of saving configuration.
+  virtual
+  void
+  OnSaveConfiguration();
+
+  //! Virtual method of overwriting configuration.
+  virtual
+  void
+  OnOverwriteConfiguration();
+
+  //! Virtual method of restoring configuration.
+  virtual
+  void
+  OnRestoreConfiguration();
+
+protected:
+  VISU::TViewerMap myViewerMap;
+  _PTR(SObject) myConfigSObject;
+
+  void setProperty( SVTK_ViewWindow*, const QString& );  // set a property (speed_increment, etc ) for SVTK ViewWindow
+  void setProperty( SVTK_ViewManager*, const QString& ); // set a property for SVTK ViewWindow // set only 1 property for all ViewWindows of given view manager
+};
+
+#endif
diff --git a/src/VISUGUI/VisuGUI_NonIsometricDlg.h b/src/VISUGUI/VisuGUI_NonIsometricDlg.h
deleted file mode 100644 (file)
index 739f87e..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-//  VISU VISUGUI : GUI of VISU component
-//
-//  Copyright (C) 2003  CEA/DEN, EDF R&D
-//
-//
-//
-//  File   : VisuGUI_NonIsometricDlg.h
-//  Author : Vasily Rusyaev
-//  Module : VISU
-//  $Header$
-
-#ifndef VisuGUI_NONISOMETRICDLG_H
-#define VisuGUI_NONISOMETRICDLG_H
-
-#include <qdialog.h>
-class QtxDblSpinBox;
-class QPushButton;
-
-class VisuGUI_NonIsometricDlg : public QDialog
-{
-  Q_OBJECT
-
-public:
-  VisuGUI_NonIsometricDlg (QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0);
-  ~VisuGUI_NonIsometricDlg();
-
-private:
-  QtxDblSpinBox* m_sbXcoeff;
-  QtxDblSpinBox* m_sbYcoeff;
-  QtxDblSpinBox* m_sbZcoeff;
-  QPushButton*   m_bReset  ;
-
-private slots:
-  void onClickApply();
-  void onClickReset();
-  void onClickOk();
-  void onFunctionChanged();
-};
-
-#endif // VisuGUI_NONISOMETRICDLG_H
index a0bd394ace1ede3b103b4c70aa1ce074fb9a2dc4..3fca41a1d23db6973f7ec8d02551a5601f94ac12 100644 (file)
@@ -175,7 +175,7 @@ void VisuGUI_OffsetDlg::updateOffset (VISU::Prs3d_i* thePrs, float* theOffset)
 
   ViewManagerList aViewManagerList;
   SalomeApp_Application* anApp = myModule->getApp();
-  anApp->viewManagers(SVTK_Viewer::Type(), aViewManagerList);
+  anApp->viewManagers(aViewManagerList);
   QPtrListIterator<SUIT_ViewManager> anVMIter (aViewManagerList);
   for (; anVMIter.current(); ++anVMIter) {
     SUIT_ViewManager* aViewManager = anVMIter.current();
index 62ca73062480c08c3c20989840cb793e492e9017..a79356329eca42f54ff6e809e4cb6baa31ee5da2 100644 (file)
@@ -254,6 +254,7 @@ void VisuGUI_Plot3DPane::storePrsParams()
   if (!myPipeCopy)
     myPipeCopy = VISU_Plot3DPL::New();
   if (myPrs) {
+    myPipeCopy->SetIDMapper(myPrs->GetPL()->GetIDMapper());
     myPipeCopy->ShallowCopy(myPrs->GetPL());
     storeToPrsObject(myPrs);
   }
index 39f904b0ee0038628ff637af89b78db8fd157100..ef22f15454a23232ed99003694b996e019cb0793 100644 (file)
 //  Module : VISU
 
 #include "VisuGUI_PopupTools.h"
+#include "VisuGUI_ViewTools.h"
 #include "VisuGUI_Tools.h"
 #include "SalomeApp_Study.h"
 #include "LightApp_Study.h"
 
 #include "VISU_Actor.h"
 #include "VISU_ScalarMapAct.h"
+#include "VISU_Result_i.hh"
+#include "SalomeApp_Study.h"
 
 using namespace VISU;
 
@@ -45,6 +48,8 @@ QtxValue VisuGUI_Selection::param( const int ind, const QString& p ) const
   if ( !val.isValid() ) {
     if      ( p == "type"           ) val = QtxValue( type( ind ) );
     else if ( p == "nbComponents"   ) val = QtxValue( nbComponents( ind ) );
+    else if ( p == "medEntity"   ) val = QtxValue( medEntity( ind ) );
+    else if ( p == "medSource"   ) val = QtxValue( medSource( ind ) );
     else if ( p == "representation" ) val = QtxValue( representation( ind ) );
     else if ( p == "nbTimeStamps"   ) val = QtxValue( nbTimeStamps( ind ) );
     else if ( p == "nbChildren"     ) val = QtxValue( nbChildren( ind ) );
@@ -69,7 +74,7 @@ QString VisuGUI_Selection::type( const int ind ) const
 {
   QString aResStr;
   VISU::Storable::TRestoringMap aMap;
-  SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( ( LightApp_Study* )study() );
+  SalomeApp_Study* aStudy = GetStudy();
   if ( !aStudy )
     return aResStr;
   CORBA::Object_var anObject = GetSelectedObj( aStudy, entry( ind ), &aMap );  
@@ -125,7 +130,7 @@ QString VisuGUI_Selection::nbComponents( const int ind ) const
 {
   QString aResStr;
   VISU::Storable::TRestoringMap aMap;
-  SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( ( LightApp_Study* )study() );
+  SalomeApp_Study* aStudy = GetStudy();
   if ( !aStudy )
     return aResStr;
   GetSelectedObj( aStudy, entry( ind ), &aMap );  
@@ -136,11 +141,61 @@ QString VisuGUI_Selection::nbComponents( const int ind ) const
   return aResStr;
 }
 
+QString VisuGUI_Selection::medEntity( const int ind ) const
+{
+  bool isExist;
+  VISU::Storable::TRestoringMap aMap;
+  GetSelectedObj( GetStudy(), entry( ind ), &aMap );  
+  const QString& aVal = VISU::Storable::FindValue(aMap,"myEntityId",&isExist);
+  if ( isExist ) {
+    using namespace VISU;
+    TEntity anEntityId = TEntity(aVal.toInt());
+    switch(anEntityId){
+    case NODE_ENTITY :
+      return "NODE_ENTITY";
+    case EDGE_ENTITY :
+      return "EDGE_ENTITY";
+    case FACE_ENTITY :
+      return "FACE_ENTITY";
+    case CELL_ENTITY :
+      return "CELL_ENTITY";
+    default:
+      return QString();
+    }
+  }
+  return QString();
+}
+
+QString VisuGUI_Selection::medSource( const int ind ) const
+{
+  _PTR(Study) aStudyDS = GetStudy()->studyDS();
+  if(_PTR(SObject) aSObject = aStudyDS->FindObjectID(entry(ind))){
+    VISU::Result_var aRes;
+    if(VISU::Result_i* aResult = CheckResult(myModule,aSObject,aRes)){
+      using namespace VISU;
+      Result_i::ECreationId aCreationId = aResult->GetCreationId();
+      switch(aCreationId){
+      case Result_i::eImportFile :
+       return "eImportFile";
+      case Result_i::eCopyAndImportFile :
+       return "eCopyAndImportFile";
+      case Result_i::eImportMed :
+       return "eImportMed";
+      case Result_i::eImportMedField :
+       return "eImportMedField";
+      default:
+       return QString();
+      }      
+    }
+  }
+  return QString();
+}
+
 QString VisuGUI_Selection::nbTimeStamps( const int ind ) const
 {
   QString aResStr;
   VISU::Storable::TRestoringMap aMap;
-  SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( ( LightApp_Study* )study() );
+  SalomeApp_Study* aStudy = GetStudy();
   if ( !aStudy )
     return aResStr;
   GetSelectedObj( aStudy, entry( ind ), &aMap );  
@@ -171,10 +226,17 @@ QString VisuGUI_Selection::representation( const int ind ) const
   return aResStr;
 }
 
+SalomeApp_Study* VisuGUI_Selection::GetStudy() const
+  
+{
+  LightApp_Study* aLightStudy = const_cast<LightApp_Study*>( study() );
+  return dynamic_cast<SalomeApp_Study*>( aLightStudy );
+}
+
 int VisuGUI_Selection::nbChild( const int ind, const bool named ) const
 {
   int cnt = 0;
-  SalomeApp_Study* aSStudy = dynamic_cast<SalomeApp_Study*>( ( LightApp_Study* )study() );
+  SalomeApp_Study* aSStudy = GetStudy();
   if ( !aSStudy )
     return cnt;
   _PTR(Study) aStudy =  GetCStudy( aSStudy );
@@ -205,15 +267,47 @@ QString VisuGUI_Selection::nbNamedChildren( const int ind ) const
   return aResStr;
 }
 
-QString VisuGUI_Selection::isVisible( const int ind ) const
+namespace
 {
-  QString aResStr;
+  struct TIsVisibleFunctor
+  {
+    template<class TViewer>
+    QString
+    Get(VisuGUI* theModule, 
+       const QString& theEntry)
+    {
+      typedef typename TViewer::TViewWindow TViewWindow;
+      if(TViewWindow* aViewWindow = GetViewWindow<TViewer>(theModule))
+       if(VISU_Actor* anActor = FindActor(aViewWindow,theEntry.latin1()))
+         return anActor->GetVisibility() ? "true" : "false";
 
-  if ( SVTK_ViewWindow* aView = GetViewWindow( myModule ) )
-    if ( VISU_Actor* anVISUActor = FindActor( aView, entry( ind ).latin1() ) )
-      aResStr = anVISUActor->GetVisibility() ? "1" : "0";
+      return QString();
+    }
+  };
 
-  return aResStr;
+  template<class TPopupFunctor>
+  struct TPopupDispatcher
+  {
+    QString
+    operator()(VisuGUI* theModule, 
+              const QString& theEntry)
+    {
+      if(SUIT_ViewManager* aViewManager = theModule->getApp()->activeViewManager()){
+       QString aType = aViewManager->getType();
+       TPopupFunctor aFunctor;
+       if(aType == SVTK_Viewer::Type())
+         return aFunctor.template Get<SVTK_Viewer>(theModule,theEntry);
+       else if(aType == VVTK_Viewer::Type())
+         return aFunctor.template Get<VVTK_Viewer>(theModule,theEntry);
+      }
+      return QString();
+    }    
+  };
+}
+
+QString VisuGUI_Selection::isVisible( const int ind ) const
+{
+  return TPopupDispatcher<TIsVisibleFunctor>()((VisuGUI*)myModule,entry(ind));
 }
 
 QString VisuGUI_Selection::isShrunk( const int ind ) const
index 19005c88e2d6013e8622e159416a9554ea4675a9..1a7ae957869474101fb55e231f90a828d97cd736 100644 (file)
@@ -35,6 +35,7 @@
 //////////////////////////////////////////////////
 
 class SalomeApp_Module;
+class SalomeApp_Study;
 
 class VisuGUI_Selection : public LightApp_Selection
 {
@@ -47,6 +48,8 @@ public:
 private:
   QString          type( const int ) const;
   QString          nbComponents( const int ) const;
+  QString          medEntity( const int ) const;
+  QString          medSource( const int ) const;
   QString          nbTimeStamps( const int ) const;
   QString          representation( const int ) const;
   QString          nbChildren( const int ) const;
@@ -59,6 +62,7 @@ private:
 
 private:
   int              nbChild( const int, const bool ) const;
+  SalomeApp_Study* GetStudy() const;
 
 private:
   SalomeApp_Module* myModule;
index d6a6959bf85d06336ad8c3cf9d45ee109e9d888e..a832fbb523374efb8fb58dae2c1c115bc44cdec9 100644 (file)
 #ifndef VisuGUI_Prs3dTools_HeaderFile
 #define VisuGUI_Prs3dTools_HeaderFile
 
-#include "VisuGUI_Tools.h"
+#include "VISU_Gen_i.hh"
+#include "VisuGUI_ViewTools.h"
 #include "VisuGUI_DialogRunner.h"
 
-int runAndWait( QDialog* dlg, const bool modal )
-{
-  VisuGUI_DialogRunner r( dlg );
-  return r.run( modal );
-}
+#include <vtkRenderer.h>
 
 namespace VISU
 {
   class CutLines_i;
 
   //---------------------------------------------------------------
-  template<class TPrs3d_i, class TDlg, int IsDlgModal >
+  inline
+  int
+  runAndWait( QDialog* dlg, const bool modal )
+  {
+    VisuGUI_DialogRunner r( dlg );
+    return r.run( modal );
+  }
+
+  //---------------------------------------------------------------
+  template<class TPrs3d_i, class TViewer, class TDlg, int TIsDlgModal>
   void
-  EditPrs3d (SalomeApp_Module* theModule, VISU::Prs3d_i* thePrs3d)
+  EditPrs3d(VisuGUI* theModule, 
+           VISU::Prs3d_i* thePrs3d)
   {
-    TPrs3d_i* aPrsObject = dynamic_cast<TPrs3d_i*>(thePrs3d);
-    if (aPrsObject) {
+    if(TPrs3d_i* aPrs3d = dynamic_cast<TPrs3d_i*>(thePrs3d)){
       TDlg* aDlg = new TDlg (theModule);
-      aDlg->initFromPrsObject(aPrsObject);
-      if (runAndWait(aDlg,IsDlgModal)) {
-       if (!(aDlg->storeToPrsObject(aPrsObject))) {
+      aDlg->initFromPrsObject(aPrs3d);
+      if (runAndWait(aDlg,TIsDlgModal)) {
+       if (!(aDlg->storeToPrsObject(aPrs3d))) {
          delete aDlg;
          return;
        }
-       RecreateActor(theModule, aPrsObject);
-       if (SVTK_ViewWindow* vw = GetViewWindow(theModule)) {
-         vw->getRenderer()->ResetCameraClippingRange();
-         vw->Repaint();
+       aPrs3d->UpdateActors();
+       typedef typename TViewer::TViewWindow TViewWindow;
+       if(TViewWindow* aViewWindow = GetViewWindow<TViewer>(theModule)){
+         aViewWindow->getRenderer()->ResetCameraClippingRange();
+         aViewWindow->Repaint();
        }
        // Optionally, create table and curves for cut lines
        QApplication::setOverrideCursor(Qt::waitCursor);
        CreateCurves( theModule,
-                     dynamic_cast<VISU::CutLines_i*>( aPrsObject ),
+                     dynamic_cast<VISU::CutLines_i*>( aPrs3d ),
                      aDlg,
                      false ); // in edition mode
        QApplication::restoreOverrideCursor();
@@ -73,11 +80,20 @@ namespace VISU
     }
   }
 
+  template<class TPrs3d_i, class TDlg, int TIsDlgModal>
+  inline
+  void
+  EditPrs3d(VisuGUI* theModule, 
+           VISU::Prs3d_i* thePrs3d)
+  {
+    EditPrs3d<TPrs3d_i,SVTK_Viewer,TDlg,TIsDlgModal>(theModule,thePrs3d);
+  }
 
   //---------------------------------------------------------------
   template<class TPrs3d_i>
+  inline
   TPrs3d_i*
-  CreatePrs3d(SalomeApp_Module* theModule,
+  CreatePrs3d(VisuGUI* theModule,
              _PTR(SObject) theTimeStamp,
              const char* theMeshName,
              VISU::Entity theEntity,
@@ -87,13 +103,12 @@ namespace VISU
     VISU::Result_var aResult;
     if (CheckResult(theModule,theTimeStamp,aResult)){
       QApplication::setOverrideCursor(Qt::waitCursor);
-      typedef typename TPrs3d_i::TInterface TPrs3d;
-      typename TPrs3d::_var_type aPrs3d =
-       GetVisuGen(theModule)->template Prs3dOnField<TPrs3d_i>
+      TPrs3d_i* aPrs3d =
+       GetVisuGen(theModule)->template CreatePrs3d<TPrs3d_i>
        (aResult,theMeshName,theEntity,theFieldName,theTimeId);
       QApplication::restoreOverrideCursor();
-      if (!CORBA::is_nil(aPrs3d.in()))
-       return dynamic_cast<TPrs3d_i*>(VISU::GetServant(aPrs3d.in()).in());
+      if(aPrs3d)
+       return aPrs3d;
     }
     SUIT_MessageBox::warn1(GetDesktop(theModule),
                           QObject::tr("WRN_VISU"),
@@ -104,28 +119,28 @@ namespace VISU
 
 
   //---------------------------------------------------------------
-  template<class TPrs3d_i, class TDlg, int IsDlgModal>
+  template<class TPrs3d_i, class TViewer, class TDlg, int IsDlgModal>
+  inline
   bool
-  CreatePrs3d(SalomeApp_Module* theModule,
+  CreatePrs3d(VisuGUI* theModule,
              _PTR(SObject) theTimeStamp,
-             const Handle(SALOME_InteractiveObject)& theIO)
+             const Handle(SALOME_InteractiveObject)& theIO,
+             const bool theIsCreateView = false)
   {
-    using namespace VISU;
     Storable::TRestoringMap aMap = getMapOfValue(theTimeStamp);
+
     bool isExist;
     QString aType = Storable::FindValue(aMap,"myType",&isExist);
     if(!isExist || aType.toInt() != TTIMESTAMP )
       return false;
+
     QString aMeshName = Storable::FindValue(aMap,"myMeshName",&isExist).latin1();
     QString anEntity = Storable::FindValue(aMap,"myEntityId",&isExist).latin1();
     QString aFieldName = Storable::FindValue(aMap,"myFieldName",&isExist).latin1();
     QString aTimeStampId = Storable::FindValue(aMap,"myTimeStampId",&isExist).latin1();
     //
-    SUIT_ResourceMgr* aResourceMgr = GetResourceMgr();
-    VisuGUI* aMod = dynamic_cast<VisuGUI*>(theModule);
-    int aPos = 1;
-    if (aMod) aPos = GetFreePositionOfDefaultScalarBar(aMod);
-    aResourceMgr->setValue("VISU","scalar_bar_position_num",aPos);
+    int aPos = GetFreePositionOfDefaultScalarBar(theModule);
+    GetResourceMgr()->setValue("VISU","scalar_bar_position_num",aPos);
     //
     QApplication::setOverrideCursor(Qt::waitCursor);
     
@@ -152,6 +167,7 @@ namespace VISU
                            dynamic_cast<VISU::CutLines_i*>( aPrs3d ),
                            aDlg,
                            true ); // in creation mode
+             UpdateObjBrowser(theModule,true,theTimeStamp);
              QApplication::restoreOverrideCursor();
              delete aDlg;
            } else {
@@ -161,40 +177,57 @@ namespace VISU
            }
        }
       }
-      PublishInView(theModule,aPrs3d);
-      Prs3d_i* aPrs_i = dynamic_cast<Prs3d_i*>(aPrs3d);
-      if (aPrs_i != NULL && aMod != NULL)
-       AddScalarBarPosition(aMod,aPrs_i,aPos);
+      PublishInView<TViewer>(theModule,aPrs3d,true,theIsCreateView);
+
+      AddScalarBarPosition(theModule,aPrs3d,aPos);
+
       return true;
     }
+
     return false;
   }
   
-  
+
   //---------------------------------------------------------------
-  template<class TPrs3d_i, class TDlg, int IsDlgModal>
+  template<class TPrs3d_i, class TViewer, class TDlg, int IsDlgModal>
+  inline
   void
-  CreatePrs3d(SalomeApp_Module* theModule)
+  CreatePrs3d(VisuGUI* theModule,
+             const bool theIsCreateView = true)
   {
-    if (CheckLock(GetCStudy(GetAppStudy(theModule))))
+    if (CheckLock(GetCStudy(GetAppStudy(theModule)),GetDesktop(theModule)))
       return;
     
     _PTR(SObject) aTimeStampSObj;
     Handle(SALOME_InteractiveObject) anIO;
-    if (!CheckTimeStamp(theModule,aTimeStampSObj,&anIO))
+    if(!CheckTimeStamp(theModule,aTimeStampSObj,&anIO))
       return;
     
-    if (!CreatePrs3d<TPrs3d_i,TDlg,IsDlgModal>(theModule,aTimeStampSObj,anIO))
+    if(!CreatePrs3d<TPrs3d_i,TViewer,TDlg,IsDlgModal>(theModule,aTimeStampSObj,anIO,theIsCreateView))
       return;
     
     theModule->application()->putInfo(QObject::tr("INF_DONE"));
-    theModule->updateObjBrowser();
-    UpdateObjBrowser(theModule);
     
-    if (SVTK_ViewWindow* aView = GetViewWindow(theModule))
+    typedef typename TViewer::TViewWindow TView;
+    if(TView* aView = GetViewWindow<TViewer>(theModule,theIsCreateView))
       aView->onFitAll();
   }
 
+  template<class TPrs3d_i, class TDlg, int IsDlgModal>
+  inline
+  void
+  CreatePrs3d(VisuGUI* theModule,
+             const bool theIsCreateView = true)
+  {
+    if(SUIT_ViewManager* aViewManager = theModule->getApp()->activeViewManager()){
+      QString aType = aViewManager->getType();
+      if(aType == SVTK_Viewer::Type())
+       CreatePrs3d<TPrs3d_i,SVTK_Viewer,TDlg,IsDlgModal>(theModule,theIsCreateView);
+      else if(aType == VVTK_Viewer::Type())
+       CreatePrs3d<TPrs3d_i,VVTK_Viewer,TDlg,IsDlgModal>(theModule,theIsCreateView);
+    }
+  }
+
 }
 
 #endif
index 5d89779db6efda5c6e68657cc12dc647a7dd869a..9e811e47fe89f97e3c71db13d151e41352a9fc06 100644 (file)
 
 #include "VisuGUI.h"
 #include "VisuGUI_Tools.h"
-#include "VisuGUI_FontWg.h"
+
+#include "SVTK_FontWidget.h"
+
+#include "SVTK_ViewWindow.h"
 
 #include "SVTK_ViewWindow.h"
 
@@ -80,10 +83,6 @@ VisuGUI_ScalarBarPane::VisuGUI_ScalarBarPane (QWidget * parent, bool SetPref):
   myModeLbl = new QLabel("Scalar Mode", RangeGroup);
 
   myModeCombo = new QComboBox(RangeGroup);
-  myModeCombo->insertItem("Modulus");
-  myModeCombo->insertItem("Component 1");
-  myModeCombo->insertItem("Component 2");
-  myModeCombo->insertItem("Component 3");
 
   CBLog = new QCheckBox (tr("LOGARITHMIC_SCALING"), RangeGroup);
   CBLog->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
@@ -538,7 +537,6 @@ void VisuGUI_ScalarBarPane::storeToResources() {
 void VisuGUI_ScalarBarPane::initFromPrsObject(VISU::ScalarMap_i* thePrs) {
   initFromResources();
   myScalarMap = thePrs;
-  myModeCombo->setCurrentItem(thePrs->GetScalarMode());
   setPosAndSize( thePrs->GetPosX(),
                 thePrs->GetPosY(),
                 thePrs->GetWidth(),
@@ -557,7 +555,36 @@ void VisuGUI_ScalarBarPane::initFromPrsObject(VISU::ScalarMap_i* thePrs) {
   setRange( thePrs->GetMin(), thePrs->GetMax(),
            /*0.0, 0.0,*/ thePrs->IsRangeFixed() );
   setScalarBarData( thePrs->GetNbColors(), thePrs->GetLabels() );
-  bool isScalarMode = (thePrs->GetField()->myNbComp > 1);
+
+  // Update myModeCombo
+  int aNbComp = thePrs->GetField()->myNbComp;
+  bool isScalarMode = (aNbComp > 1);
+  myModeCombo->clear();
+  myModeCombo->insertItem("<Modulus>");
+  const VISU::PField& aField = thePrs->GetField();
+  const VISU::TNames& aCompNames = aField->myCompNames;
+  const VISU::TNames& aUnitNames = aField->myUnitNames;
+  for(int i = 0; i < aNbComp; i++){
+    QString aComponent = QString(aCompNames[i]).simplifyWhiteSpace();
+    if(aComponent.isNull() || aComponent == "")
+      aComponent = "Component " + QString::number(i+1);
+    else
+      aComponent = "[" + QString::number(i+1) + "] " + aComponent;
+
+    QString anUnit = QString(aUnitNames[i]).simplifyWhiteSpace();
+    if(anUnit.isNull() || anUnit == "")
+      anUnit = "-";
+    
+    aComponent = aComponent + ", " + anUnit;
+
+    myModeCombo->insertItem(aComponent);
+  }
+  //
+  myModeCombo->setCurrentItem(thePrs->GetScalarMode());
+  if (aNbComp==1){
+    myModeCombo->setCurrentItem(1);
+  }
+  //
   myModeLbl->setEnabled(isScalarMode);
   myModeCombo->setEnabled(isScalarMode);
 
@@ -610,7 +637,7 @@ void VisuGUI_ScalarBarPane::createScalarBar()
   if (myPreviewActor != 0) return;
   if (myScalarMap == NULL) return;
 
-  if (!check()) return;
+  if(!check()) return;
 
   if ( myBusy ) return;
 
@@ -706,9 +733,9 @@ void VisuGUI_ScalarBarPane::createScalarBar()
 void VisuGUI_ScalarBarPane::deleteScalarBar()
 {
   if ( myBusy ) return;
-
+  
   if (myPreviewActor == 0) return;
-  if (SVTK_ViewWindow* vf = VISU::GetViewWindow()) {
+  if (SVTK_ViewWindow* vf = VISU::GetViewWindow()){
     vf->RemoveActor(myPreviewActor);
     myPreviewActor->GetScalarBar()->VisibilityOff();
   }
@@ -724,8 +751,7 @@ void VisuGUI_ScalarBarPane::deletePreview()
 /**
  * Store values to presentation object
  */
-int VisuGUI_ScalarBarPane::storeToPrsObject(VISU::ScalarMap_i* thePrs)
-{
+int VisuGUI_ScalarBarPane::storeToPrsObject(VISU::ScalarMap_i* thePrs) {
   thePrs->SetScalarMode(myModeCombo->currentItem());
   thePrs->SetPosition(XSpin->value(), YSpin->value());
   thePrs->SetSize(WidthSpin->value(), HeightSpin->value());
@@ -1081,7 +1107,7 @@ VisuGUI_TextPrefDlg::VisuGUI_TextPrefDlg (QWidget* parent)
   //   font
   QHBox* aHBox = new QHBox (aTitleGrp);
   aHBox->setSpacing(5);
-  myTitleFont = new VisuGUI_FontWg (aHBox);
+  myTitleFont = new SVTK_FontWidget (aHBox);
 
   TopLayout->addWidget(aTitleGrp);
 
@@ -1091,7 +1117,7 @@ VisuGUI_TextPrefDlg::VisuGUI_TextPrefDlg (QWidget* parent)
   //   font
   aHBox = new QHBox (aLabelsGrp);
   aHBox->setSpacing(5);
-  myLabelFont = new VisuGUI_FontWg (aHBox);
+  myLabelFont = new SVTK_FontWidget (aHBox);
 
   TopLayout->addWidget(aLabelsGrp);
 
index ccb704ad5d654e28362ad2c8ef38da409cfbce15..f68b0f428f444b639b565d645bc4bc3468242b9e 100644 (file)
@@ -24,6 +24,7 @@
 //  File   : VisuGUI_ScalarBarDlg.h
 //  Author : Laurent CORNABE & Hubert ROLLAND
 //  Module : VISU
+//  $Header$
 
 #ifndef VISUGUI_SCALARBARDLG_H
 #define VISUGUI_SCALARBARDLG_H
@@ -59,7 +60,7 @@ class QToolButton;
 
 class QtxDblSpinBox;
 class SalomeApp_Module;
-class VisuGUI_FontWg;
+class SVTK_FontWidget;
 class VISU_ScalarMapAct;
 
 class VisuGUI_TextPrefDlg: public QDialog
@@ -77,8 +78,8 @@ class VisuGUI_TextPrefDlg: public QDialog
     { (isVisible)? myTitleEdt->show() : myTitleEdt->hide(); }
 
  public:
-  VisuGUI_FontWg* myTitleFont;
-  VisuGUI_FontWg* myLabelFont;
+  SVTK_FontWidget* myTitleFont;
+  SVTK_FontWidget* myLabelFont;
 
  private:
   QLineEdit* myTitleEdt;
index 7b0bf293add1a75d26156df1a4a51dd022f7624d..5bcf465face56786563e21be085f1cefb845ce6a 100644 (file)
@@ -89,10 +89,13 @@ using namespace std;
 
 static VisuGUI_SelectionDlg* mySelectionDlg = NULL;
 
-VisuGUI_SelectionDlg::VisuGUI_SelectionDlg (QWidget* parent)
-     : QDialog(parent, 0, false, WStyle_Customize | WStyle_NormalBorder |
-               WStyle_Title | WStyle_SysMenu | WDestructiveClose),
-       mySelectionMgr(NULL)
+VisuGUI_SelectionDlg::VisuGUI_SelectionDlg (const SalomeApp_Module* theModule):
+  QDialog(VISU::GetDesktop(theModule), 
+         0, 
+         false, 
+         WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose),
+  mySelectionMgr(NULL),
+  myModule(theModule)
 {
   if (mySelectionDlg)
     mySelectionDlg->close(true);
@@ -259,10 +262,9 @@ VisuGUI_SelectionDlg::VisuGUI_SelectionDlg (QWidget* parent)
   myFl = false;
 
   // Activate Points pane
-  SVTK_ViewWindow* aSVTKVW = VISU::GetViewWindow();
   myWidgetStack->raiseWidget(myPointsPane);
-  if (aSVTKVW)
-    aSVTKVW->SetSelectionMode(NodeSelection);
+  if(SVTK_ViewWindow* aViewWindow = VISU::GetViewWindow(myModule))
+    aViewWindow->SetSelectionMode(NodeSelection);
   onSelectionEvent();
 
   mySelectionDlg = this;
@@ -274,23 +276,23 @@ VisuGUI_SelectionDlg::~VisuGUI_SelectionDlg()
 
 void VisuGUI_SelectionDlg::onSelectionChange (int theId)
 {
-  SVTK_ViewWindow* aSVTKVW = VISU::GetViewWindow();
-  if (!aSVTKVW) return;
+  SVTK_ViewWindow* aViewWindow = VISU::GetViewWindow(myModule);
+  if (!aViewWindow) return;
 
   switch (theId) {
   case 0: // Points
     myWidgetStack->raiseWidget(myPointsPane);
-    aSVTKVW->SetSelectionMode(NodeSelection);
+    aViewWindow->SetSelectionMode(NodeSelection);
     onPointIdEdit(myIDValLbl->text());
     break;
   case 1: // Cells
     myWidgetStack->raiseWidget(myCellsPane);
-    aSVTKVW->SetSelectionMode(CellSelection);
+    aViewWindow->SetSelectionMode(CellSelection);
     onCellIdEdit(myCellIDValLbl->text());
     break;
   case 2: // Actor
     myWidgetStack->raiseWidget(myActorsPane);
-    aSVTKVW->SetSelectionMode(ActorSelection);
+    aViewWindow->SetSelectionMode(ActorSelection);
     onSelectionEvent();
   }
 }
@@ -298,12 +300,19 @@ void VisuGUI_SelectionDlg::onSelectionChange (int theId)
 
 void VisuGUI_SelectionDlg::closeEvent (QCloseEvent* theEvent)
 {
-  SVTK_ViewWindow* aSVTKVW = VISU::GetViewWindow();
-
-  mySelectionDlg = NULL;
-  if (aSVTKVW)
-    aSVTKVW->SetSelectionMode(ActorSelection);
-  disconnect(mySelectionMgr,0,0,0);
+  if( mySelectionDlg )
+  {
+    mySelectionDlg = NULL;
+    disconnect(mySelectionMgr,0,0,0);
+    if(SVTK_ViewWindow* aViewWindow = VISU::GetViewWindow(myModule)){
+      switch(aViewWindow->SelectionMode()){
+      case NodeSelection:
+      case CellSelection:
+       aViewWindow->SetSelectionMode(ActorSelection);
+       break;
+      }
+    }
+  }
   QDialog::closeEvent(theEvent);
 }
 
@@ -328,8 +337,18 @@ template<class TData> QString getVector(TData* theData, int theId){
 #define ABS(a) (a>=0)?a:-a
 
 void VisuGUI_SelectionDlg::onSelectionEvent() {
-  SVTK_ViewWindow* aSVTKVW = VISU::GetViewWindow();
-  if (!aSVTKVW) return;
+  SVTK_ViewWindow* aViewWindow = VISU::GetViewWindow(myModule);
+  if (!aViewWindow) return;
+
+  switch(aViewWindow->SelectionMode()){
+  case NodeSelection:
+  case CellSelection:
+  case ActorSelection:
+    break;
+  default:
+    close( TRUE );
+    return;
+  }
 
   if (myFl) return;
   myFl = true;
@@ -339,14 +358,14 @@ void VisuGUI_SelectionDlg::onSelectionEvent() {
   SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>
     (SUIT_Session::session()->activeApplication());
 
-  SVTK_Selector* aSelector = aSVTKVW->GetSelector();
+  SVTK_Selector* aSelector = aViewWindow->GetSelector();
 
   VISU::Prs3d_i* aPrs3d = NULL;
   _PTR(SObject) aSObject;
   Handle(SALOME_InteractiveObject) anIO;
 
   SALOME_ListIO aListIO;
-  mySelectionMgr->selectedObjects(aListIO, SVTK_Viewer::Type());
+  mySelectionMgr->selectedObjects(aListIO);
 
   if (aListIO.Extent() == 1) {
     anIO = aListIO.First();
@@ -392,7 +411,7 @@ void VisuGUI_SelectionDlg::onSelectionEvent() {
     myFieldName->setText((aFieldName == "NULL") ? QString("No name") : aFieldName);
 
     VISU_Actor* anVISUActor =
-      VISU::FindActor(aSVTKVW, aSObject->GetID().c_str());
+      VISU::FindActor(aViewWindow, aSObject->GetID().c_str());
     if (anVISUActor) {
       float aCoord[6];
       anVISUActor->GetBounds(aCoord);
@@ -414,33 +433,34 @@ void VisuGUI_SelectionDlg::onSelectionEvent() {
       vtkPointData* aPntData = aDataSet->GetPointData();
 
       for (int ind = 1; ind <= aMapIndex.Extent(); ind++) {
-        int aID = aMapIndex(ind);
+        int anID = aMapIndex(ind);
 
         switch (aType) {
         case 0:
           {
-            float aCoord[3];
-            aDataSet->GetPoint(aID, aCoord);
+            float* aCoord = anVISUActor->GetNodeCoord(anID);
+           int aVTKID = anVISUActor->GetNodeVTKID(anID);
             myXValLbl->setText( QString::number( aCoord[0] ) );
             myYValLbl->setText( QString::number( aCoord[1] ) );
             myZValLbl->setText( QString::number( aCoord[2] ) );
-            myIDValLbl->setText( QString::number(aID) );
-            myScalarValLbl->setText(getValue(aPntData, aID));
-            myVectorValLbl->setText(getVector(aPntData, aID));
+            myIDValLbl->setText( QString::number(anID) );
+            myScalarValLbl->setText(getValue(aPntData, aVTKID));
+            myVectorValLbl->setText(getVector(aPntData, aVTKID));
           }
           break;
         case 1:
           {
-            vtkCellData* aData = aDataSet->GetCellData();
-            vtkCell* aCell = aDataSet->GetCell(aID);
+            vtkCellData* aCellData = aDataSet->GetCellData();
+            vtkCell* aCell = anVISUActor->GetElemCell(anID);
+           int aVTKID = anVISUActor->GetElemVTKID(anID);
             if (aCell != NULL) {
               int aNbOfPoints = aCell->GetNumberOfPoints();
-              if (aNbOfPoints <=1 ) { // Cell is point
+              if ( aNbOfPoints <= 1 ) { // Cell is point
                 clearFields();
               } else {
-                myCellIDValLbl->setText( QString::number(aID) );
-                myCellScalarValLbl->setText(getValue(aData, aID));
-                myCellVectorValLbl->setText(getVector(aData, aID));
+                myCellIDValLbl->setText( QString::number(anID) );
+                myCellScalarValLbl->setText(getValue(aCellData, aVTKID));
+                myCellVectorValLbl->setText(getVector(aCellData, aVTKID));
 
                 float* aCoord;
                 vtkIdList *aPointList = aCell->GetPointIds();
@@ -511,16 +531,16 @@ typedef  vtkIdType (vtkDataSet::* TDataSetMethod)();
 bool onIdEdit (const QString& theText,
                TDataSetMethod theMethod,
                bool theIsCell,
+              const SalomeApp_Module* theModule,
                LightApp_SelectionMgr* theSelectionMgr,
                QLabel* theMeshName,
                QString theValue,
                QLabel* theFieldName)
 {
-  SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>
-    (SUIT_Session::session()->activeApplication());
-  SVTK_ViewWindow* aSVTKVW = VISU::GetViewWindow();
-  if (!aSVTKVW) return false;
-  SVTK_Selector* aSelector = aSVTKVW->GetSelector();
+  SalomeApp_Application* anApp = theModule->getApp();
+  SVTK_ViewWindow* aViewWindow = VISU::GetViewWindow(theModule);
+  if (!aViewWindow) return false;
+  SVTK_Selector* aSelector = aViewWindow->GetSelector();
 
   VISU::Prs3d_i* aPrs3d = NULL;
   Handle(SALOME_InteractiveObject) anIO;
@@ -560,7 +580,7 @@ bool onIdEdit (const QString& theText,
     TColStd_MapOfInteger newIndices;
     newIndices.Add(anId);
     aSelector->AddOrRemoveIndex(anIO, newIndices, false);
-    aSVTKVW->highlight(anIO, true, true);
+    aViewWindow->highlight(anIO, true, true);
 
     return true;
 
@@ -575,7 +595,7 @@ void VisuGUI_SelectionDlg::onPointIdEdit (const QString& theText)
 {
   if (myFl) return;
   TDataSetMethod aMethod = &vtkDataSet::GetNumberOfPoints;
-  bool anIsSelected = onIdEdit(theText,aMethod,false,mySelectionMgr,
+  bool anIsSelected = onIdEdit(theText,aMethod,false,myModule,mySelectionMgr,
                               myMeshName,tr("WRN_NO_AVAILABLE_DATA"),
                               myFieldName);
   if (anIsSelected)
@@ -589,7 +609,7 @@ void VisuGUI_SelectionDlg::onCellIdEdit (const QString& theText)
 {
   if (myFl) return;
   TDataSetMethod aMethod = &vtkDataSet::GetNumberOfCells;
-  bool anIsSelected = onIdEdit(theText,aMethod,true,mySelectionMgr,
+  bool anIsSelected = onIdEdit(theText,aMethod,true,myModule,mySelectionMgr,
                               myMeshName,tr("WRN_NO_AVAILABLE_DATA"),
                               myFieldName);
   if (anIsSelected)
index 4fc4f265b450de8c506f9ec923f9b1463cc613b4..467e9c182d810b2d6e45589fd95ced5cfa034824 100644 (file)
@@ -38,12 +38,13 @@ class QLineEdit;
 class QTable;
 class LightApp_SelectionMgr;
 class SalomeApp_Application;
+class SalomeApp_Module;
 
 class VisuGUI_SelectionDlg: public QDialog {
   Q_OBJECT
 
 public:
-  VisuGUI_SelectionDlg (QWidget*);
+  VisuGUI_SelectionDlg (const SalomeApp_Module* theModule);
   virtual ~VisuGUI_SelectionDlg ();
 
 protected:
@@ -85,6 +86,7 @@ private slots:
   QLabel* myDYLbl;
   QLabel* myDZLbl;
 
+  const SalomeApp_Module* myModule;
   LightApp_SelectionMgr* mySelectionMgr;
   bool myFl;
 };
index 0918a05ed579a3acb9acdf09dde9fe7b4d17cbf5..4d46d01d089eb139cfb5a21c7bbc1318e3f5e63b 100644 (file)
@@ -18,6 +18,7 @@
 #include "VisuGUI_VectorsDlg.h"
 #include "VisuGUI_IsoSurfacesDlg.h"
 #include "VisuGUI_StreamLinesDlg.h"
+#include "VisuGUI_GaussPointsDlg.h"
 
 #include "VISU_TimeAnimation.h"
 
@@ -29,6 +30,7 @@
 #include "VISU_CutLines_i.hh"
 #include "VISU_Vectors_i.hh"
 #include "VISU_StreamLines_i.hh"
+#include "VISU_GaussPoints_i.hh"
 
 #include "VISU_ViewManager_i.hh"
 
@@ -95,7 +97,7 @@ ArrangeDlg::ArrangeDlg(QWidget* theParent, SVTK_ViewWindow* theViewWindow)
     VISU_Actor* anVISUActor = dynamic_cast<VISU_Actor*>(anActor);
     if (anVISUActor)
       if (anVISUActor->GetVisibility() != 0) {
-       VISU::Prs3d_i* aPrs = anVISUActor->GetParent()->GetPrs3d();
+       VISU::Prs3d_i* aPrs = anVISUActor->GetPrs3d();
        if (aPrs) {
          if (!myPrsMap.contains(aPrs)) {
            SALOMEDS::SObject_var aSObject = aPrs->GetSObject();
@@ -431,22 +433,25 @@ void ArrangeDlg::acceptViewWindow()
 }
 
 
-//*****************************************************************************************************
-//*****************************************************************************************************
-//*****************************************************************************************************
-SetupDlg::SetupDlg (VisuGUI* theModule, VISU_TimeAnimation* theAnimator)
-     : QDialog(VISU::GetDesktop(theModule), "SetupDlg", true, WStyle_Customize |
-               WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu),
-       myModule(theModule)
+//------------------------------------------------------------------------
+//------------------------------------------------------------------------
+//------------------------------------------------------------------------
+SetupDlg::SetupDlg (QWidget* theParent,
+                   VisuGUI* theModule, 
+                   VISU_TimeAnimation* theAnimator) :
+  QDialog(theParent, 
+         "SetupDlg", 
+         true, 
+         WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu),
+  myAnimator(theAnimator),
+  myModule(theModule)
 {
   setCaption("Setup Animation");
   setSizeGripEnabled( TRUE );
-  myAnimator = theAnimator;
 
   QVBoxLayout* aMainLayout = new QVBoxLayout(this, 7, 6);
   aMainLayout->setSpacing(5);
 
-
   QFrame* aRangeGrp = new QFrame(this);
   QGridLayout* aRangeLayout = new QGridLayout( aRangeGrp );
   aRangeLayout->setSpacing( 6 );
@@ -548,7 +553,7 @@ SetupDlg::SetupDlg (VisuGUI* theModule, VISU_TimeAnimation* theAnimator)
   aMainLayout->addWidget(aBtnBox);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 enum PrsComboItem {
   TSCALARMAP_ITEM     = 0, // VISU::TSCALARMAP
   TISOSURFACE_ITEM    = 1, // VISU::TISOSURFACE
@@ -556,59 +561,93 @@ enum PrsComboItem {
   TPLOT3D_ITEM        = 3, // VISU::TPLOT3D
   TDEFORMEDSHAPE_ITEM = 4, // VISU::TDEFORMEDSHAPE
   TVECTORS_ITEM       = 5, // VISU::TVECTORS
-  TSTREAMLINES_ITEM   = 6  // VISU::TSTREAMLINES
+  TSTREAMLINES_ITEM   = 6, // VISU::TSTREAMLINES
+  TGAUSSPOINTS_ITEM   = 7  // VISU::TGAUSSPOINTS
 };
 
-//************************************************************************
+//------------------------------------------------------------------------
 void SetupDlg::onFieldChange (int theIndex)
 {
   FieldData& aData = myAnimator->getFieldData(theIndex);
   myTypeCombo->clear();
+  myTypeId2ComboId.clear();
+  myComboId2TypeId.clear();
+
   // ATTENTION: append items in the same order like it is done in the PrsComboItem enumeration
   myTypeCombo->insertItem("Scalar Map");   // item 0
+  myTypeId2ComboId[TSCALARMAP_ITEM] = myComboId2TypeId.size();
+  myComboId2TypeId.push_back(TSCALARMAP_ITEM);;
+
   myTypeCombo->insertItem("Iso Surfaces"); // item 1
+  myTypeId2ComboId[TISOSURFACE_ITEM] = myComboId2TypeId.size();
+  myComboId2TypeId.push_back(TISOSURFACE_ITEM);;
+
   myTypeCombo->insertItem("Cut Planes");   // item 2
+  myTypeId2ComboId[TCUTPLANES_ITEM] = myComboId2TypeId.size();
+  myComboId2TypeId.push_back(TCUTPLANES_ITEM);;
+
   myTypeCombo->insertItem("Plot 3D");      // item 3
+  myTypeId2ComboId[TPLOT3D_ITEM] = myComboId2TypeId.size();
+  myComboId2TypeId.push_back(TPLOT3D_ITEM);;
 
   _PTR(SObject) aSObject = aData.myField;
   long aNumComp = VISU::getValue(aSObject, "myNumComponent").toLong();
   if (aNumComp > 1) {
     myTypeCombo->insertItem("Deformed Shape"); // item 4
+    myTypeId2ComboId[TDEFORMEDSHAPE_ITEM] = myComboId2TypeId.size();
+    myComboId2TypeId.push_back(TDEFORMEDSHAPE_ITEM);;
+
     myTypeCombo->insertItem("Vectors");        // item 5
+    myTypeId2ComboId[TVECTORS_ITEM] = myComboId2TypeId.size();
+    myComboId2TypeId.push_back(TVECTORS_ITEM);;
+
     myTypeCombo->insertItem("Stream Lines");   // item 6
+    myTypeId2ComboId[TSTREAMLINES_ITEM] = myComboId2TypeId.size();
+    myComboId2TypeId.push_back(TSTREAMLINES_ITEM);;
+  }
+
+  long anEntityId = VISU::getValue(aSObject, "myEntityId").toLong();
+  if(anEntityId == VISU::CELL){
+    myTypeCombo->insertItem("Gauss Points");   // item 7
+    myTypeId2ComboId[TGAUSSPOINTS_ITEM] = myComboId2TypeId.size();
+    myComboId2TypeId.push_back(TGAUSSPOINTS_ITEM);;
   }
+
   switch (aData.myPrsType) {
   case VISU::TSCALARMAP: //Scalar Map
-    myTypeCombo->setCurrentItem(TSCALARMAP_ITEM);
+    myTypeCombo->setCurrentItem(myTypeId2ComboId[TSCALARMAP_ITEM]);
     break;
   case VISU::TISOSURFACE: //Iso Surfaces
-    myTypeCombo->setCurrentItem(TISOSURFACE_ITEM);
+    myTypeCombo->setCurrentItem(myTypeId2ComboId[TISOSURFACE_ITEM]);
     break;
   case VISU::TCUTPLANES: //Cut Planes
-    myTypeCombo->setCurrentItem(TCUTPLANES_ITEM);
+    myTypeCombo->setCurrentItem(myTypeId2ComboId[TCUTPLANES_ITEM]);
     break;
   case VISU::TPLOT3D: //Plot 3D
-    myTypeCombo->setCurrentItem(TPLOT3D_ITEM);
+    myTypeCombo->setCurrentItem(myTypeId2ComboId[TPLOT3D_ITEM]);
     break;
   case VISU::TDEFORMEDSHAPE: //Deformed Shape
-    myTypeCombo->setCurrentItem(TDEFORMEDSHAPE_ITEM);
+    myTypeCombo->setCurrentItem(myTypeId2ComboId[TDEFORMEDSHAPE_ITEM]);
     break;
   case VISU::TVECTORS: //Vectors
-    myTypeCombo->setCurrentItem(TVECTORS_ITEM);
+    myTypeCombo->setCurrentItem(myTypeId2ComboId[TVECTORS_ITEM]);
     break;
   case VISU::TSTREAMLINES: //Stream Lines
-    myTypeCombo->setCurrentItem(TSTREAMLINES_ITEM);
-    aData.myPrsType = VISU::TSTREAMLINES;
+    myTypeCombo->setCurrentItem(myTypeId2ComboId[TSTREAMLINES_ITEM]);
+    break;
+  case VISU::TGAUSSPOINTS: //Gauss Points
+    myTypeCombo->setCurrentItem(myTypeId2ComboId[TGAUSSPOINTS_ITEM]);
     break;
   }
   //myPropBtn->setEnabled(aData.myPrsType != VISU::TSCALARMAP);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void SetupDlg::onTypeChanged (int theIndex)
 {
   FieldData& aData = myAnimator->getFieldData(myFieldLst->currentItem());
-  switch (theIndex) {
+  int aType = myComboId2TypeId[theIndex];
+  switch (aType) {
   case TSCALARMAP_ITEM: //Scalar Map
     aData.myPrsType = VISU::TSCALARMAP;
     break;
@@ -630,30 +669,33 @@ void SetupDlg::onTypeChanged (int theIndex)
   case TSTREAMLINES_ITEM: //Stream Lines
     aData.myPrsType = VISU::TSTREAMLINES;
     break;
+  case TGAUSSPOINTS_ITEM: //Gauss Points
+    aData.myPrsType = VISU::TGAUSSPOINTS;
+    break;
   }
   myAnimator->clearData(aData);
   //myPropBtn->setEnabled(aData.myPrsType != VISU::TSCALARMAP);
   //myAnimator->generatePresentations(myFieldLst->currentItem());
 }
 
-//************************************************************************
-/*void SetupDlg::onScalarBarDlg() {
-  QApplication::setOverrideCursor( Qt::waitCursor );
-  FieldData& aData = myAnimator->getFieldData(myFieldLst->currentItem());
-  if (aData.myPrs == 0)
-    myAnimator->generatePresentations(myFieldLst->currentItem());
-  QApplication::restoreOverrideCursor();
 
-  VisuGUI_ScalarBarDlg* aScalarBarDlg = new VisuGUI_ScalarBarDlg();
-  aScalarBarDlg->initFromPrsObject(aData.myPrs[0]);
-  if (aScalarBarDlg->exec()) {
-    for (int i = 0; i < aData.myNbFrames; i++)
-      aScalarBarDlg->storeToPrsObject(aData.myPrs[i]);
+//------------------------------------------------------------------------
+namespace
+{
+  template<class TPrs3d, class TDialog>
+  void
+  EditPrs(VisuGUI* theModule,
+         FieldData& theData)
+  {
+    TDialog* aDlg = new TDialog(theModule);
+    aDlg->initFromPrsObject(dynamic_cast<TPrs3d*>(theData.myPrs[0]));
+    if (aDlg->exec())
+      for (int i = 0; i < theData.myNbFrames; i++)
+       aDlg->storeToPrsObject(dynamic_cast<TPrs3d*>(theData.myPrs[i]));
+    delete aDlg;
   }
 }
-*/
-
-//************************************************************************
+  
 void SetupDlg::onPreferencesDlg()
 {
   SUIT_OverrideCursor c;
@@ -661,83 +703,52 @@ void SetupDlg::onPreferencesDlg()
   if (aData.myPrs.empty())
     myAnimator->generatePresentations(myFieldLst->currentItem());
 
-// BUG VISU5725 : Compatibility gcc 2.95
-// #define EDITPRS(TYPE, DLG) \
-//     { \
-//       DLG* aDlg = new DLG(); \
-//       aDlg->initFromPrsObject(dynamic_cast<TYPE*>(aData.myPrs.at(0))); \
-//       if (aDlg->exec()) { \
-//     for (int i = 0; i < aData.myNbFrames; i++) \
-//       aDlg->storeToPrsObject(dynamic_cast<TYPE*>(aData.myPrs.at(i))); \
-//       } \
-//       delete aDlg; \
-//     }
-
-
-#define EDITPRS(TYPE, DLG) {\
-        DLG* aDlg = new DLG (myModule);\
-        aDlg->initFromPrsObject(dynamic_cast<TYPE*>(aData.myPrs[0]));\
-        if (aDlg->exec())\
-        { \
-         for (int i = 0; i < aData.myNbFrames; i++)\
-          aDlg->storeToPrsObject(dynamic_cast<TYPE*>(aData.myPrs[i]));\
-        } \
-        delete aDlg;}
-
-  switch (myTypeCombo->currentItem()) {
+  int aType = myComboId2TypeId[myTypeCombo->currentItem()];
+  switch (aType) {
   case TSCALARMAP_ITEM: //Scalar Map
     c.suspend();
-    EDITPRS(VISU::ScalarMap_i, VisuGUI_ScalarBarDlg);
+    EditPrs<VISU::ScalarMap_i,VisuGUI_ScalarBarDlg>(myModule,aData);
     break;
   case TISOSURFACE_ITEM: //Iso Surfaces
     c.suspend();
-    EDITPRS(VISU::IsoSurfaces_i, VisuGUI_IsoSurfacesDlg);
+    EditPrs<VISU::IsoSurfaces_i,VisuGUI_IsoSurfacesDlg>(myModule,aData);
     break;
   case TCUTPLANES_ITEM: //Cut Planes
     c.suspend();
-    EDITPRS(VISU::CutPlanes_i, VisuGUI_CutPlanesDlg);
-    /*{
-      VisuGUI_CutPlanesDlg* aDlg = new VisuGUI_CutPlanesDlg (myModule);
-      //_CS_PhB :operator [] .at      aDlg->initFromPrsObject(dynamic_cast<VISU::CutPlanes_i*>(aData.myPrs.at(0)));
-      aDlg->initFromPrsObject(dynamic_cast<VISU::CutPlanes_i*>(aData.myPrs[0]));
-
-      if (aDlg->exec()) {
-       for (int i = 0; i < aData.myNbFrames; i++)
-      //_CS_PhB:operator [] .at          aDlg->storeToPrsObject(dynamic_cast<VISU::CutPlanes_i*>(aData.myPrs.at(i)));
-         aDlg->storeToPrsObject(dynamic_cast<VISU::CutPlanes_i*>(aData.myPrs[i]));
-      }
-      delete aDlg;
-    }*/
+    EditPrs<VISU::CutPlanes_i,VisuGUI_CutPlanesDlg>(myModule,aData);
     break;
   case TPLOT3D_ITEM: //Plot 3D
     c.suspend();
-    EDITPRS(VISU::Plot3D_i, VisuGUI_Plot3DDlg);
+    EditPrs<VISU::Plot3D_i,VisuGUI_Plot3DDlg>(myModule,aData);
     break;
   case TDEFORMEDSHAPE_ITEM: //Deformed Shape
     c.suspend();
-    EDITPRS(VISU::DeformedShape_i, VisuGUI_DeformedShapeDlg);
+    EditPrs<VISU::DeformedShape_i,VisuGUI_DeformedShapeDlg>(myModule,aData);
     break;
   case TVECTORS_ITEM: //Vectors
     c.suspend();
-    EDITPRS(VISU::Vectors_i, VisuGUI_VectorsDlg);
+    EditPrs<VISU::Vectors_i,VisuGUI_VectorsDlg>(myModule,aData);
     break;
   case TSTREAMLINES_ITEM: //Stream Lines
     c.suspend();
-    EDITPRS(VISU::StreamLines_i, VisuGUI_StreamLinesDlg);
+    EditPrs<VISU::StreamLines_i,VisuGUI_StreamLinesDlg>(myModule,aData);
+    break;
+  case TGAUSSPOINTS_ITEM: //Gauss Points
+    c.suspend();
+    EditPrs<VISU::GaussPoints_i,VisuGUI_GaussPointsDlg>(myModule,aData);
     break;
   }
-#undef EDITPRS
 }
 
 
-//************************************************************************
+//------------------------------------------------------------------------
 void SetupDlg::onArrangeDlg()
 {
   ArrangeDlg aDlg(this, myAnimator);
   aDlg.exec();
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void SetupDlg::onRangeCheck (bool theCheck)
 {
   for (int i = 0; i < myAnimator->getNbFields(); i++)
@@ -758,7 +769,7 @@ void SetupDlg::onRangeCheck (bool theCheck)
   }
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void SetupDlg::onMinValue (double theVal)
 {
   if (theVal > myAnimator->getMaxRange()) {
@@ -771,7 +782,7 @@ void SetupDlg::onMinValue (double theVal)
   myAnimator->setAnimationRange(theVal, myAnimator->getMaxRange());
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void SetupDlg::onMaxValue (double theVal)
 {
   if (theVal < myAnimator->getMinRange()) {
@@ -891,11 +902,14 @@ static const char * pauseIco[] = {
 static QPixmap MYpausePixmap(pauseIco);
 
 
-VisuGUI_TimeAnimationDlg::VisuGUI_TimeAnimationDlg (VisuGUI* theModule, _PTR(Study) theStudy)
-     : QDialog(VISU::GetDesktop(theModule), "VisuGUI_TimeAnimationDlg", false, WStyle_Customize |
-               WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose),
-       myModule(theModule),
-       myStudy(theStudy)
+VisuGUI_TimeAnimationDlg::VisuGUI_TimeAnimationDlg (VisuGUI* theModule, _PTR(Study) theStudy) :
+  QDialog(VISU::GetDesktop(theModule), 
+         "VisuGUI_TimeAnimationDlg", 
+         false, 
+         WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | WDestructiveClose),
+  myModule(theModule),
+  myStudy(theStudy),
+  mySetupDlg(NULL)
 {
   setCaption("Animation");
   setSizeGripEnabled( TRUE );
@@ -903,7 +917,7 @@ VisuGUI_TimeAnimationDlg::VisuGUI_TimeAnimationDlg (VisuGUI* theModule, _PTR(Stu
 
   myAnimator = new VISU_TimeAnimation (theStudy);
   myAnimator->setSpeed(1);
-  myAnimator->setViewer(VISU::GetViewWindow());
+  myAnimator->setViewer(VISU::GetViewWindow(theModule));
   connect(myAnimator, SIGNAL(frameChanged(long, double)), this, SLOT(onExecution(long, double)));
   connect(myAnimator, SIGNAL(stopped()),                 this, SLOT(onStop()));
 
@@ -1086,13 +1100,13 @@ VisuGUI_TimeAnimationDlg::VisuGUI_TimeAnimationDlg (VisuGUI* theModule, _PTR(Stu
   myPlayFrame->setEnabled(false);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 VisuGUI_TimeAnimationDlg::~VisuGUI_TimeAnimationDlg()
 {
   delete myAnimator;
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onTypeChange (int index)
 {
   stopAnimation();
@@ -1102,14 +1116,14 @@ void VisuGUI_TimeAnimationDlg::onTypeChange (int index)
   myPlayFrame->setEnabled(false);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::addField (_PTR(SObject) theSObject)
 {
   myPlayFrame->setEnabled(false);
   myAnimator->addField(theSObject);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::createFrames()
 {
   stopAnimation();
@@ -1142,7 +1156,7 @@ void VisuGUI_TimeAnimationDlg::createFrames()
   //myPlayFrame->setEnabled(true);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onPlayPressed()
 {
   if (myPlayBtn->isOn() && (!myAnimator->running())) {
@@ -1165,38 +1179,44 @@ void VisuGUI_TimeAnimationDlg::onPlayPressed()
   }
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onBackPressed()
 {
   //stopAnimation();
   myAnimator->prevFrame();
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onForvardPressed()
 {
   myAnimator->nextFrame();
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onLastPressed()
 {
   myAnimator->lastFrame();
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onFirstPressed()
 {
   myAnimator->firstFrame();
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::clearView()
 {
   myAnimator->clearView();
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
+void VisuGUI_TimeAnimationDlg::showEvent(QShowEvent* theEvent)
+{
+  mySetupDlg = new SetupDlg(this,myModule, myAnimator);
+}
+
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::closeEvent (QCloseEvent* theEvent)
 {
   myAnimator->stopAnimation();
@@ -1209,20 +1229,20 @@ void VisuGUI_TimeAnimationDlg::closeEvent (QCloseEvent* theEvent)
   }
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onWindowChanged (int index)
 {
   if (myAnimator->isRunning()) return;
   myAnimator->gotoFrame(index);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onSpeedChange (double theSpeed)
 {
   myAnimator->setSpeed((int)theSpeed);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::stopAnimation()
 {
   myAnimator->stopAnimation();
@@ -1232,24 +1252,23 @@ void VisuGUI_TimeAnimationDlg::stopAnimation()
   myGenBtn->setEnabled(true);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onExecution (long theNewFrame, double theTime)
 {
   myTimeLbl->setText(QString("%1").arg(theTime));
   mySlider->setValue(theNewFrame);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onSetupDlg()
 {
-  if (myAnimator->getNbFrames() > 0) myAnimator->firstFrame();
-  SetupDlg* aDlg = new SetupDlg (myModule, myAnimator);
-  aDlg->exec();
+  if (myAnimator->getNbFrames() > 0) 
+    myAnimator->firstFrame();
+  mySetupDlg->exec();
   myPlayFrame->setEnabled(false);
-  delete aDlg;
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onBrowse()
 {
   QString aPath = SUIT_FileDlg::getExistingDirectory(this, "/", "Select path");
@@ -1257,7 +1276,7 @@ void VisuGUI_TimeAnimationDlg::onBrowse()
     myPathEdit->setText(Qtx::addSlash(aPath));
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::onStop()
 {
   if (isClosing) {
@@ -1270,14 +1289,14 @@ void VisuGUI_TimeAnimationDlg::onStop()
   }
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::saveToStudy()
 {
   myAnimator->saveAnimation();
   VISU::UpdateObjBrowser(myModule, true);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::publishToStudy()
 {
   myAnimator->publishInStudy();
@@ -1285,7 +1304,7 @@ void VisuGUI_TimeAnimationDlg::publishToStudy()
   mySaveBtn->setEnabled(myAnimator->isSavedInStudy());
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VisuGUI_TimeAnimationDlg::restoreFromStudy(_PTR(SObject) theAnimation)
 {
   myAnimator->restoreFromStudy(theAnimation);
index daeb134e6a3a053938e5e4f305c4641986e1b2a0..53191604996c1c1bcef7932a7b47877367954435 100644 (file)
@@ -90,7 +90,9 @@ class SetupDlg: public QDialog {
   Q_OBJECT
 
  public:
-  SetupDlg(VisuGUI* theModule, VISU_TimeAnimation* theAnimator);
+  SetupDlg(QWidget* theParent,
+          VisuGUI* theModule, 
+          VISU_TimeAnimation* theAnimator);
   ~SetupDlg() {};
 
  private slots:
@@ -106,8 +108,12 @@ class SetupDlg: public QDialog {
  private:
   VisuGUI* myModule;
   VISU_TimeAnimation* myAnimator;
+
   QListBox* myFieldLst;
   QComboBox* myTypeCombo;
+  std::vector<int> myComboId2TypeId;
+  std::map<int,int> myTypeId2ComboId;
+
   QPushButton* myPropBtn;
   QPushButton* myArrangeBtn;
   QCheckBox* myUseRangeChk;
@@ -130,6 +136,7 @@ class VisuGUI_TimeAnimationDlg: public QDialog
 
  protected:
     virtual void closeEvent(QCloseEvent* theEvent);
+    virtual void showEvent(QShowEvent* theEvent);
     void stopAnimation();
 
  private slots:
@@ -159,6 +166,7 @@ class VisuGUI_TimeAnimationDlg: public QDialog
     QPushButton* myGenBtn;
 
     QFrame* myPlayFrame;
+    SetupDlg* mySetupDlg;
     _PTR(Study) myStudy;
     VisuGUI* myModule;
 
diff --git a/src/VISUGUI/VisuGUI_Timer.cxx b/src/VISUGUI/VisuGUI_Timer.cxx
new file mode 100644 (file)
index 0000000..ca1eea9
--- /dev/null
@@ -0,0 +1,104 @@
+//  VISU VISUGUI : GUI of VISU 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   : VisuGUI_Timer.cxx
+//  Module : SALOME
+
+#include "VisuGUI_Timer.h"
+
+#include "SUIT_Desktop.h"
+
+#include "utilities.h"
+
+#ifndef WNT
+static struct timezone *tz=(struct timezone*) malloc(sizeof(struct timezone));
+#else
+//timezone *tz=_timezone;
+#endif
+
+#ifndef CLK_TCK
+# define CLK_TCK      CLOCKS_PER_SEC
+#endif
+
+VisuGUI_Timer::VisuGUI_Timer() :
+  Utils_Timer()
+{
+}
+
+VisuGUI_Timer::~VisuGUI_Timer()
+{
+}
+
+void VisuGUI_Timer::Start()
+{
+  if (Stopped) {
+    Stopped = 0;
+#ifndef WNT
+    times(RefToInitialTMS);
+    gettimeofday(RefToInitialTimeB,tz);
+#else
+    SYSTEMTIME st;
+    GetSystemTime(&st);
+    SystemTimeToFileTime(&st, RefToInitialTMS);
+         time(RefToCurrentTimeB);
+#endif
+  }
+}
+
+void VisuGUI_Timer::Stop()
+{
+  if (!Stopped) {
+#ifndef WNT
+    times(RefToCurrentTMS);
+    int diffr_user = RefToCurrentTMS->tms_utime - RefToInitialTMS->tms_utime;
+    int diffr_sys  = RefToCurrentTMS->tms_stime - RefToInitialTMS->tms_stime;
+    gettimeofday(RefToCurrentTimeB,tz);
+
+    static long aCLK_TCK=sysconf(_SC_CLK_TCK);
+    Cumul_user += (double) diffr_user / aCLK_TCK ;
+    Cumul_sys  += (double) diffr_sys  / aCLK_TCK ;
+#else
+    SYSTEMTIME st;
+    GetSystemTime(&st);
+    SystemTimeToFileTime(&st, RefToCurrentTMS);
+    Cumul_user += (int)(((ULARGE_INTEGER*)(RefToCurrentTMS))->QuadPart - ((ULARGE_INTEGER*)(RefToInitialTMS))->QuadPart) / 10000000;
+         Cumul_sys = Cumul_user;
+         time(RefToCurrentTimeB);
+#endif
+   Stopped = 1;
+  }
+}
+
+void VisuGUI_Timer::Reset() {
+  Stopped     = 1;
+  Cumul_user  = Cumul_sys = 0. ;
+}
+
+QString VisuGUI_Timer::GetTime() {
+  bool StopSav = Stopped;
+  if (!StopSav) Stop();
+
+  return QString::number( Cumul_user );
+
+  if (!StopSav) Start();
+}
diff --git a/src/VISUGUI/VisuGUI_Timer.h b/src/VISUGUI/VisuGUI_Timer.h
new file mode 100644 (file)
index 0000000..bbfb7e5
--- /dev/null
@@ -0,0 +1,43 @@
+//  VISU VISUGUI : GUI of VISU 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   : VisuGUI_Timer.h
+//  Module : SALOME
+
+#include <Utils_Timer.hxx>
+
+#include <qstring.h>
+
+class VisuGUI_Timer : public Utils_Timer
+{
+ public:
+  VisuGUI_Timer();
+  virtual ~VisuGUI_Timer();
+
+ public:
+  void Start();
+  void Stop();
+  void Reset();
+
+  QString GetTime();
+};
index 300112d568eef0bf45fe4527bc0bcafe90134543..b59e97ca89689ac4ada63def86db5bf3872978e0 100644 (file)
@@ -41,6 +41,9 @@
 #include "SalomeApp_Module.h"
 #include "SalomeApp_Study.h"
 #include "SalomeApp_Application.h"
+
+#include "OB_Browser.h"
+#include "LightApp_DataObject.h"
 #include "LightApp_SelectionMgr.h"
 
 #include "SALOME_ListIO.hxx"
@@ -101,21 +104,83 @@ namespace VISU
   }
 
   bool
-  CheckLock( _PTR(Study) theStudy )
+  CheckLock( _PTR(Study) theStudy,
+            QWidget* theWidget )
   {
-    if(IsStudyLocked(theStudy))
-      {
-       SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>
-         (SUIT_Session::session()->activeApplication());
-       if (anApp)
-         {
-           SUIT_MessageBox::warn1(anApp->desktop(),
-                                   QObject::tr("WRN_VISU_WARNING"),
-                                   QObject::tr("WRN_STUDY_LOCKED"),
-                                   QObject::tr("BUT_OK"));
-           return true;
+    if(IsStudyLocked(theStudy)){
+      SUIT_MessageBox::warn1(theWidget,
+                            QObject::tr("WRN_VISU_WARNING"),
+                            QObject::tr("WRN_STUDY_LOCKED"),
+                            QObject::tr("BUT_OK"));
+       return true;
+    }
+    return false;
+  }
+
+  LightApp_DataObject*
+  FindDataObject(SUIT_DataObject* theDataObject,
+                const QString& theEntry,
+                int theLevel)
+  {
+    int aLevel = theDataObject->level() + 2;
+    QString aSourceEntry = theEntry.section(':',0,aLevel);
+    DataObjectList aList;
+    theDataObject->children(aList);
+    DataObjectListIterator aDataObjectIter(aList);
+    while(SUIT_DataObject* aDataObject = aDataObjectIter.current()){
+      if(LightApp_DataObject* aChildDataObject = dynamic_cast<LightApp_DataObject*>(aDataObject)){
+       QString anEntry = aChildDataObject->entry();
+       QString aCurrentEntry = anEntry.section(':',0,aLevel);
+       if(aSourceEntry == aCurrentEntry){
+         if(theLevel == aLevel){
+           return aChildDataObject;
+         }else{
+           return FindDataObject(aChildDataObject,theEntry,theLevel);
          }
+       }
       }
+      ++aDataObjectIter;
+    }
+    return NULL;
+  }
+
+  LightApp_DataObject*
+  FindDataObject(CAM_Module* theModule,
+                _PTR(SObject) theSObject)
+  {
+    CAM_DataModel* aDataModel = theModule->dataModel();
+    CAM_DataObject* aRootDataObject = aDataModel->root();
+    if(_PTR(SComponent) aComponent = theSObject)
+      return dynamic_cast<LightApp_DataObject*>(aRootDataObject);
+
+    int aLevel = theSObject->Depth();
+    std::string anEntry = theSObject->GetID();
+    return FindDataObject(aRootDataObject,anEntry.c_str(),aLevel);
+  }
+
+  void
+  UpdateObjBrowser(SalomeApp_Module* theModule,
+                  bool theIsUpdateDataModel,
+                  _PTR(SObject) theSObject)
+  {
+    LightApp_DataObject* aDataObject = NULL;
+    if(theSObject)
+      aDataObject = FindDataObject(theModule,theSObject);
+
+    theModule->updateObjBrowser(theIsUpdateDataModel,aDataObject);
+    theModule->getApp()->updateActions();
+  }
+
+  bool
+  IsSObjectTable( _PTR(SObject) theSObject )
+  {
+    if ( theSObject ) {
+      _PTR(GenericAttribute) anAttr;
+      if (theSObject->FindAttribute( anAttr, "AttributeTableOfInteger" ))
+       return true;
+      if (theSObject->FindAttribute( anAttr, "AttributeTableOfReal" ))
+       return true;
+    }
     return false;
   }
 
@@ -225,7 +290,7 @@ namespace VISU
                 Handle(SALOME_InteractiveObject)* theIO,
                 VISU::Storable::TRestoringMap* theMap)
   {
-    if (CheckLock(GetCStudy(GetAppStudy(theModule))))
+    if (CheckLock(GetCStudy(GetAppStudy(theModule)),GetDesktop(theModule)))
       return NULL;
 
     CORBA::Object_var anObject = GetSelectedObj(theModule, theIO);
@@ -400,27 +465,24 @@ namespace VISU
   }
 
   void
-  DeleteSObject (SalomeApp_Module* theModule,
-                 _PTR(Study)       theStudy,
-                 _PTR(SObject)     theSObject)
+  DeleteSObject(VisuGUI* theModule,
+               _PTR(Study) theStudy,
+               _PTR(SObject) theSObject)
   {
-    //SalomeApp_Study* study = GetAppStudy( theModule );
-
     _PTR(ChildIterator) aChildIter = theStudy->NewChildIterator(theSObject);
     for (aChildIter->InitEx(true); aChildIter->More(); aChildIter->Next()) {
       _PTR(SObject) aChildSObject = aChildIter->Value();
       
       CORBA::Object_var aChildObj = VISU::ClientSObjectToObject(aChildSObject);
-      VisuGUI* aMod = dynamic_cast<VisuGUI*>(theModule);
-      if(aMod) RemoveScalarBarPosition(aMod,aChildObj);
+      RemoveScalarBarPosition(theModule,aChildObj);
       ErasePrs(theModule, aChildObj);
     }
 
     CORBA::Object_var anObj = VISU::ClientSObjectToObject(theSObject);
     if (!CORBA::is_nil(anObj)) {
-      VisuGUI* aMod = dynamic_cast<VisuGUI*>(theModule);
-      if(aMod) RemoveScalarBarPosition(aMod,anObj);
+      RemoveScalarBarPosition(theModule,anObj);
       ErasePrs(theModule, anObj);
+
       VISU::RemovableObject_var aRemovableObject = VISU::RemovableObject::_narrow(anObj);
       if (!CORBA::is_nil(aRemovableObject)) {
         aRemovableObject->RemoveFromStudy();
@@ -435,32 +497,17 @@ namespace VISU
   }
 
   void
-  DeletePrs3d(SalomeApp_Module* theModule,
+  DeletePrs3d(VisuGUI* theModule,
               VISU::Prs3d_i* thePrs,
               const Handle(SALOME_InteractiveObject)& theIO)
   {
     if (!thePrs)
       return;
-    if (CheckLock(GetCStudy(GetAppStudy(theModule))))
+    if (CheckLock(GetCStudy(GetAppStudy(theModule)),GetDesktop(theModule)))
       return;
-    SALOMEDS::SObject_var aSObject = thePrs->GetSObject();
-    CORBA::String_var anEntry = aSObject->GetID();
-    LightApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(theModule);
-    Remove(aSelectionMgr,theIO);
-    TViewWindows aViewWindows = GetViews(theModule);
-    for(int i = 0, iEnd = aViewWindows.size(); i < iEnd; i++){
-      SVTK_ViewWindow* aView = aViewWindows[i];
-      if(VISU_Actor* anActor = FindActor(aView,anEntry.in())){
-        aView->RemoveActor(anActor);
-        anActor->Delete();
-      }
-    }
-    thePrs->RemoveFromStudy();
 
-    VisuGUI* aMod = dynamic_cast<VisuGUI*>(theModule);
-    Prs3d_i* aPrs_i = dynamic_cast<Prs3d_i*>(thePrs);
-    if (aMod && aPrs_i)
-      RemoveScalarBarPosition(aMod,aPrs_i);
+    RemoveScalarBarPosition(theModule,thePrs);
+    thePrs->RemoveFromStudy();
   }
 
   void
@@ -468,9 +515,7 @@ namespace VISU
              VISU::Prs3d_i* thePrs)
   {
     if ( SVTK_ViewWindow* vw = GetViewWindow( theModule ) ){
-      VISU_Actor* anVISUActor = FindActor( vw, thePrs );
-      
-      if (anVISUActor) {
+      if (VISU_Actor* anVISUActor = FindActor( vw, thePrs )) {
         anVISUActor->VisibilityOff();
       }
     }
@@ -482,9 +527,7 @@ namespace VISU
   ChangeRepresentation (const SalomeApp_Module* theModule,
                         VISU::PresentationType  theType)
   {
-    SUIT_ViewWindow* aView = GetActiveView(theModule, SVTK_Viewer::Type());
-    if (!aView) return;
-    SVTK_ViewWindow* vw  = dynamic_cast<SVTK_ViewWindow*>( aView );
+    SVTK_ViewWindow* vw  = GetViewWindow( theModule, false );
     if( !vw )
       return;
 
@@ -581,6 +624,9 @@ namespace VISU
               _PTR(SObject)           theSource,
               VISU::Result_var&       theResult)
   {
+    if(theSource->Depth() < 3) // Bug of SALOMEDS : can\t get father from root object
+      return NULL;
+      
     _PTR(SObject) aSObj = theSource->GetFather();
     if (!aSObj)
       return NULL;
@@ -605,13 +651,7 @@ namespace VISU
       return NULL;
 
     theResult = VISU::Result::_narrow(anObject);
-    VISU::Result_i* pResult = dynamic_cast<VISU::Result_i*>(VISU::GetServant(anObject).in());
-    if (pResult == NULL)
-      SUIT_MessageBox::warn1(GetDesktop(theModule),
-                             QObject::tr("WRN_VISU"),
-                             QObject::tr("WRN_NO_AVAILABLE_DATA"),
-                             QObject::tr("BUT_OK"));
-    return pResult;
+    return dynamic_cast<VISU::Result_i*>(VISU::GetServant(anObject).in());
   }
 
   // Views
@@ -673,11 +713,15 @@ namespace VISU
   /*SVTK_ViewWindow*
   GetViewWindow(const SalomeApp_Module* theModule, const bool theCreate )
   {
-    if(SalomeApp_Application* anApp = theModule->getApp()){
-      if(SUIT_ViewManager* aViewManager = anApp->getViewManager( SVTK_Viewer::Type(), theCreate )){
-        if(SUIT_ViewWindow* aViewWindow = aViewManager->getActiveView()){
-          return dynamic_cast<SVTK_ViewWindow*>(aViewWindow);
-        }
+    if (SalomeApp_Application* anApp = theModule->getApp())
+    {
+      SVTK_ViewWindow* wnd = dynamic_cast<SVTK_ViewWindow*>(anApp->desktop()->activeWindow());
+      if( wnd )
+       return wnd;
+      else
+      {
+       if(SUIT_ViewManager* aViewManager = anApp->getViewManager( SVTK_Viewer::Type(), theCreate ))
+         return dynamic_cast<SVTK_ViewWindow*>( aViewManager->getActiveView() );
       }
     }
     return NULL;
@@ -734,20 +778,19 @@ namespace VISU
 
     vtkRenderer *aRen = vw->getRenderer();
     vtkActorCollection *anActColl = aRen->GetActors();
+    anActColl->InitTraversal();
 
     vtkActor *anActor;
     VISU_Actor* anVISUActor = NULL;
     VISU_Actor* aResActor = NULL;
-    for(anActColl->InitTraversal(); (anActor = anActColl->GetNextActor()) != NULL; ){
-      if(!SALOME_Actor::SafeDownCast(anActor))
-        continue;
-      if(anActor->IsA("VISU_Actor")){
-        anVISUActor = VISU_Actor::SafeDownCast(anActor);
+    while(vtkActor *anActor = anActColl->GetNextActor()){
+      anVISUActor = VISU_Actor::SafeDownCast(anActor);
+      if(anVISUActor){
         VISU::Prs3d_i* aPrs = anVISUActor->GetPrs3d();
         if(aPrs == NULL) continue;
         if (thePrs == aPrs) {
-          aResActor = anVISUActor->GetParent();
           try {
+           aResActor = anVISUActor;
             thePrs->UpdateActor(aResActor);
             aResActor->VisibilityOn();
           } catch (std::runtime_error& ex) {
@@ -758,7 +801,7 @@ namespace VISU
                                    QObject::tr("BUT_OK"));
           }
         } else if (theDispOnly) {
-          anVISUActor->GetParent()->VisibilityOff();
+          anVISUActor->VisibilityOff();
         } else {
         }
       } else if (theDispOnly && anActor->GetVisibility()) {
@@ -804,11 +847,11 @@ namespace VISU
   FindActor(SVTK_ViewWindow* theViewWindow,
             const char* theEntry)
   {
-    using namespace VTK;
+    using namespace SVTK;
     if(vtkRenderer* aRenderer = theViewWindow->getRenderer()){
       if(vtkActorCollection* aCollection = aRenderer->GetActors()){
         if(VISU_Actor* anActor = Find<VISU_Actor>(aCollection,TIsSameEntry<VISU_Actor>(theEntry))){
-          return anActor->GetParent();
+          return anActor;
         }
       }
     }
@@ -829,22 +872,13 @@ namespace VISU
                  VISU::Prs3d_i* thePrs)
   {
     QApplication::setOverrideCursor(Qt::waitCursor);
-    bool isPublished = false;
 
     SALOMEDS::SObject_var aSObject = thePrs->GetSObject();
     CORBA::String_var anEntry = aSObject->GetID();
 
     try {
       thePrs->Update();
-
-      TViewWindows aViewWindows = GetViews(theModule);
-      for (int i = 0, iEnd = aViewWindows.size(); i < iEnd; i++) {
-        SVTK_ViewWindow* aView = aViewWindows[i];
-        if (VISU_Actor* anActor = FindActor(aView, anEntry.in())) {
-          isPublished = true;
-          thePrs->UpdateActor(anActor);
-        }
-      }
+      thePrs->UpdateActors();
     } catch (std::runtime_error& ex) {
       INFOS(ex.what());
       QApplication::restoreOverrideCursor();
@@ -852,20 +886,10 @@ namespace VISU
                               QObject::tr("ERR_CANT_BUILD_PRESENTATION") + ": " + QObject::tr(ex.what()),
                               QObject::tr("BUT_OK"));
 
-      TViewWindows aViewWindows = GetViews(theModule);
-      for (int i = 0, iEnd = aViewWindows.size(); i < iEnd; i++) {
-        SVTK_ViewWindow* aView = aViewWindows[i];
-        if (VISU_Actor* anActor = FindActor(aView, anEntry.in())) {
-          aView->RemoveActor(anActor);
-          anActor->Delete();
-        }
-      }
+      thePrs->RemoveActors();
       return;
     }
     QApplication::restoreOverrideCursor();
-
-    if (!isPublished)
-      PublishInView(theModule, thePrs);
   }
 
   static bool ComputeVisiblePropBounds(SVTK_ViewWindow* theViewWindow,
@@ -1156,6 +1180,12 @@ namespace VISU
             }
           }
           PlotContainer( theModule, pContainer, VISU::eDisplay );
+
+         QString anEntry = pContainer->GetEntry();
+         _PTR(Study) aStudy = theTableSO->GetStudy();
+         _PTR(SObject) aContainerSO = aStudy->FindObjectID(anEntry.latin1());
+         _PTR(SObject) aParentSO = aContainerSO->GetFather();
+         UpdateObjBrowser(theModule,true,aParentSO);
         }
       }
     }
index 3fcfa37e5e5e54fbda98aefc95a65b0a58f1c858..d514b4b3a223fe691bcfc90bbf20f8767653b46c 100644 (file)
 
 #include "VISUConfig.hh"
 
-#include "SalomeApp_Module.h"
-#include "SalomeApp_Application.h"
-
 #include "SALOMEDSClient_Study.hxx"
 
 #include "SALOMEconfig.h"
 #include CORBA_SERVER_HEADER(MED_Gen)
 
+class QWidget;
+
 class SUIT_Desktop;
 class SUIT_ViewWindow;
 class VISU_Actor;
@@ -49,6 +48,7 @@ class SPlot2d_Curve;
 class Plot2d_ViewFrame;
 class CAM_Module;
 class LightApp_SelectionMgr;
+class SalomeApp_Module;
 class SalomeApp_Study;
 class VisuGUI;
 
@@ -66,10 +66,12 @@ namespace VISU {
   _PTR(Study)                          GetCStudy(const SalomeApp_Study* theStudy);
 
   bool                                 IsStudyLocked( _PTR(Study) theStudy );
-  bool                                 CheckLock( _PTR(Study) theStudy );
+  bool                                 CheckLock( _PTR(Study) theStudy,
+                                                 QWidget* theWidget );
 
-  inline void                          UpdateObjBrowser(SalomeApp_Module* theModule,
-                                                       bool updateDataModel = true);
+  void                                 UpdateObjBrowser(SalomeApp_Module* theModule,
+                                                       bool theIsUpdateDataModel = true,
+                                                       _PTR(SObject) theSObject = _PTR(SObject)());
 
   VISU_Gen_i*                          GetVisuGen(const CAM_Module* theModule);
   SALOME_MED::MED_Gen_var              GetMEDEngine();
@@ -100,10 +102,10 @@ namespace VISU {
   void                                 ErasePrs(const SalomeApp_Module* theModule,
                                                CORBA::Object_ptr theObject,
                                                bool theUpdate = true);
-  void                                 DeleteSObject(SalomeApp_Module* theModule,
+  void                                 DeleteSObject(VisuGUI* theModule,
                                                     _PTR(Study)       theStudy,
                                                     _PTR(SObject)     theSObject);
-  void                                 DeletePrs3d(SalomeApp_Module* theModule,
+  void                                 DeletePrs3d(VisuGUI* theModule,
                                                   VISU::Prs3d_i* thePrs,
                                                   const Handle(SALOME_InteractiveObject)& theIO);
   void                                 ErasePrs3d(const SalomeApp_Module* theModule,
@@ -122,7 +124,7 @@ namespace VISU {
   VISU::Result_i*                      CheckResult(const SalomeApp_Module* theModule,
                                                   _PTR(SObject) theSource,
                                                   VISU::Result_var& theResult);
-  inline bool                          IsSObjectTable(_PTR(SObject) theSObject);
+  bool                                 IsSObjectTable(_PTR(SObject) theSObject);
 
   // Views
   SUIT_ViewWindow*                     GetActiveView(const SalomeApp_Module* theModule,
@@ -203,23 +205,4 @@ namespace VISU {
   void RemoveScalarBarPosition(VisuGUI* theModule,CORBA::Object_ptr theObject);
 }
 
-bool VISU::IsSObjectTable( _PTR(SObject) theSObject )
-{
-  if ( theSObject ) {
-    _PTR(GenericAttribute) anAttr;
-    if (theSObject->FindAttribute( anAttr, "AttributeTableOfInteger" ))
-      return true;
-    if (theSObject->FindAttribute( anAttr, "AttributeTableOfReal" ))
-      return true;
-  }
-  return false;
-}
-
-void VISU::UpdateObjBrowser(SalomeApp_Module* theModule,
-                           bool updateDataModel)
-{
-  theModule->updateObjBrowser(updateDataModel);
-  theModule->getApp()->updateActions();
-}
-
 #endif
diff --git a/src/VISUGUI/VisuGUI_TransparencyDlg.cxx b/src/VISUGUI/VisuGUI_TransparencyDlg.cxx
new file mode 100644 (file)
index 0000000..bf893f5
--- /dev/null
@@ -0,0 +1,245 @@
+//  VISU VISUGUI : GUI of VISU 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   : VisuGUI_TransparencyDlg.cxx
+//  Author : Nicolas REJNERI
+//  Module : VISU
+//  $Header$
+
+#include "VisuGUI_TransparencyDlg.h"
+
+#include "VisuGUI.h"
+#include "VisuGUI_ViewTools.h"
+#include "VisuGUI_Tools.h"
+#include "VISU_Actor.h"
+
+#include "SUIT_Desktop.h"
+#include "SUIT_OverrideCursor.h"
+
+#include "SALOME_ListIO.hxx"
+#include "SALOME_ListIteratorOfListIO.hxx"
+#include "SALOME_InteractiveObject.hxx"
+
+#include "LightApp_Study.h"
+#include "LightApp_SelectionMgr.h"
+
+#include "SVTK_ViewWindow.h"
+
+// QT Includes
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qslider.h>
+#include <qlayout.h>
+#include <qgroupbox.h>
+
+using namespace std;
+
+//=================================================================================
+// class    : VisuGUI_TransparencyDlg()
+// purpose  :
+//
+//=================================================================================
+VisuGUI_TransparencyDlg::VisuGUI_TransparencyDlg( VisuGUI* theModule,
+                                     const char* name,
+                                     bool modal,
+                                     WFlags fl)
+     : QDialog( VISU::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder |
+                WStyle_Title | WStyle_SysMenu | WDestructiveClose ),
+     mySelectionMgr( VISU::GetSelectionMgr( theModule ) ),
+     myViewWindow( VISU::GetViewWindow( theModule ) )
+{
+  if (!name)
+    setName("VisuGUI_TransparencyDlg");
+  setCaption(tr("TRANSPARENCY_TITLE" ));
+  setSizeGripEnabled(TRUE);
+  QGridLayout* VisuGUI_TransparencyDlgLayout = new QGridLayout(this);
+  VisuGUI_TransparencyDlgLayout->setSpacing(6);
+  VisuGUI_TransparencyDlgLayout->setMargin(11);
+
+  /*************************************************************************/
+  QGroupBox* GroupC1 = new QGroupBox(this, "GroupC1");
+  GroupC1->setColumnLayout(0, Qt::Vertical);
+  GroupC1->layout()->setSpacing(0);
+  GroupC1->layout()->setMargin(0);
+  QGridLayout* GroupC1Layout = new QGridLayout(GroupC1->layout());
+  GroupC1Layout->setAlignment(Qt::AlignTop);
+  GroupC1Layout->setSpacing(6);
+  GroupC1Layout->setMargin(11);
+
+  TextLabelTransparent = new QLabel(GroupC1, "TextLabelTransparent");
+  TextLabelTransparent->setText(tr("TRANSPARENCY_TRANSPARENT" ));
+  TextLabelTransparent->setAlignment(AlignLeft);
+  GroupC1Layout->addWidget(TextLabelTransparent, 0, 0);
+
+  ValueLab = new QLabel(GroupC1, "ValueLab");
+  ValueLab->setAlignment(AlignCenter);
+  ValueLab->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
+  QFont fnt = ValueLab->font(); fnt.setBold(true); ValueLab->setFont(fnt);
+  GroupC1Layout->addWidget(ValueLab, 0, 1);
+
+  TextLabelOpaque = new QLabel(GroupC1, "TextLabelOpaque");
+  TextLabelOpaque->setText(tr("TRANSPARENCY_OPAQUE" ));
+  TextLabelOpaque->setAlignment(AlignRight);
+  GroupC1Layout->addWidget(TextLabelOpaque, 0, 2);
+
+  Slider1 = new QSlider(0, 10, 1, 5, Horizontal, GroupC1, "Slider1");
+  Slider1->setFocusPolicy(QWidget::NoFocus);
+  Slider1->setMinimumSize(300, 0);
+  Slider1->setTickmarks(QSlider::Above);
+  Slider1->setTickInterval(10);
+  Slider1->setTracking(true);
+  Slider1->setMinValue(0);
+  Slider1->setMaxValue(100);
+  Slider1->setLineStep(1);
+  Slider1->setPageStep(10);
+  GroupC1Layout->addMultiCellWidget(Slider1, 1, 1, 0, 2);
+
+  /*************************************************************************/
+  QGroupBox* GroupButtons = new QGroupBox(this, "GroupButtons");
+  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);
+
+  buttonOk = new QPushButton(GroupButtons, "buttonOk");
+  buttonOk->setText(tr("BUT_CLOSE"));
+  buttonOk->setAutoDefault(TRUE);
+  buttonOk->setDefault(TRUE);
+  GroupButtonsLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, 0);
+  GroupButtonsLayout->addWidget(buttonOk, 0, 1);
+  GroupButtonsLayout->addItem(new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum), 0, 2);
+
+  VisuGUI_TransparencyDlgLayout->addWidget(GroupC1,      0, 0);
+  VisuGUI_TransparencyDlgLayout->addWidget(GroupButtons, 1, 0);
+
+  // Initial state
+  this->onSelectionChanged();
+
+  // signals and slots connections : after ValueHasChanged()
+  connect(buttonOk, SIGNAL(clicked()),         this, SLOT(ClickOnOk()));
+  connect(Slider1,  SIGNAL(valueChanged(int)), this, SLOT(SetTransparency()));
+  connect(Slider1,  SIGNAL(sliderMoved(int)),  this, SLOT(ValueHasChanged()));
+  connect(mySelectionMgr,  SIGNAL(currentSelectionChanged()), this, SLOT(onSelectionChanged()));
+}
+
+//=================================================================================
+// function : ~VisuGUI_TransparencyDlg()
+// purpose  :
+//=================================================================================
+VisuGUI_TransparencyDlg::~VisuGUI_TransparencyDlg()
+{
+  // no need to delete child widgets, Qt does it all for us
+}
+
+//=======================================================================
+// function : ClickOnOk()
+// purpose  :
+//=======================================================================
+void VisuGUI_TransparencyDlg::ClickOnOk()
+{
+  close();
+}
+
+//=================================================================================
+// function : SetTransparency()
+// purpose  : Called when value of slider change
+//          : or the first time as initilisation
+//=================================================================================
+void VisuGUI_TransparencyDlg::SetTransparency()
+{
+  if( myViewWindow ) {
+    SUIT_OverrideCursor wc;
+    float opacity = this->Slider1->value() / 100.;
+
+    SALOME_ListIO aList;
+    mySelectionMgr->selectedObjects(aList);
+
+    SALOME_ListIteratorOfListIO It (aList);
+    for (;It.More(); It.Next()) {
+      Handle(SALOME_InteractiveObject) IOS = It.Value();
+      VISU_Actor* anActor = VISU::FindActor(myViewWindow, IOS->getEntry());
+      if (anActor)
+       anActor->SetOpacity(opacity);
+    }
+    myViewWindow->Repaint();
+  }
+  ValueHasChanged();
+}
+
+//=================================================================================
+// function : ValueHasChanged()
+// purpose  : Called when user moves a slider
+//=================================================================================
+void VisuGUI_TransparencyDlg::ValueHasChanged()
+{
+  ValueLab->setText(QString::number(this->Slider1->value()) + "%");
+}
+
+//=================================================================================
+// function : onSelectionChanged()
+// purpose  : Called when selection is changed
+//=================================================================================
+void VisuGUI_TransparencyDlg::onSelectionChanged()
+{
+  if( myViewWindow ) {
+    int opacity = 100;
+
+    SALOME_ListIO aList;
+    mySelectionMgr->selectedObjects(aList);
+
+    if (aList.Extent() == 1) {
+      Handle(SALOME_InteractiveObject) FirstIOS = aList.First();
+      if (!FirstIOS.IsNull()) {
+       VISU_Actor* anActor = VISU::FindActor(myViewWindow, FirstIOS->getEntry());
+       if (anActor)
+         opacity = int(anActor->GetOpacity() * 100. + 0.5);
+      }
+    } else if (aList.Extent() > 1) {
+      SALOME_ListIteratorOfListIO It (aList);
+      int setOp = -1;
+      for (; It.More(); It.Next()) {
+       Handle(SALOME_InteractiveObject) IO = It.Value();
+       if (!IO.IsNull()) {
+         VISU_Actor* anActor = VISU::FindActor(myViewWindow, IO->getEntry());
+         if (anActor) {
+           int op = int(anActor->GetOpacity() * 100. + 0.5);
+           if (setOp < 0)
+             setOp = op;
+           else if (setOp != op) {
+             setOp = 100;
+             break;
+           }
+         }
+       }
+      }
+      if (setOp >= 0)
+       opacity = setOp;
+    } else {
+    }
+    Slider1->setValue(opacity);
+  }
+  ValueHasChanged();
+}
diff --git a/src/VISUGUI/VisuGUI_TransparencyDlg.h b/src/VISUGUI/VisuGUI_TransparencyDlg.h
new file mode 100644 (file)
index 0000000..6dbc943
--- /dev/null
@@ -0,0 +1,76 @@
+//  VISU VisuGUI : GUI for VISU 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   : VisuGUI_TransparencyDlg.h
+//  Author : Nicolas REJNERI
+//  Module : VISU
+//  $Header$
+
+#ifndef VISUGUI_TRANSPARENCYDLG_H
+#define VISUGUI_TRANSPARENCYDLG_H
+
+// QT Includes
+#include <qdialog.h>
+
+class QLabel;
+class QPushButton;
+class QSlider;
+class LightApp_SelectionMgr;
+class SVTK_Selector;
+class SVTK_ViewWindow;
+class VisuGUI;
+
+//=================================================================================
+// class    : VisuGUI_TransparencyDlg
+// purpose  :
+//=================================================================================
+class VisuGUI_TransparencyDlg : public QDialog
+{ 
+  Q_OBJECT
+
+public:
+  VisuGUI_TransparencyDlg( VisuGUI* = 0, 
+                          const char* name = 0,
+                          bool modal = false,
+                          WFlags fl = 0 );
+
+  ~VisuGUI_TransparencyDlg();
+
+private :
+  LightApp_SelectionMgr*  mySelectionMgr;
+  SVTK_ViewWindow*        myViewWindow;
+
+  QPushButton*            buttonOk;
+  QLabel*                 TextLabelOpaque;
+  QLabel*                 ValueLab;
+  QLabel*                 TextLabelTransparent;
+  QSlider*                Slider1;
+
+public slots:
+  void ClickOnOk();
+  void ValueHasChanged();
+  void SetTransparency();
+  void onSelectionChanged();
+};
+
+#endif
diff --git a/src/VISUGUI/VisuGUI_ViewTools.cxx b/src/VISUGUI/VisuGUI_ViewTools.cxx
new file mode 100644 (file)
index 0000000..868ab60
--- /dev/null
@@ -0,0 +1,74 @@
+//  VISU VISUGUI : GUI of VISU component
+//
+//  Copyright (C) 2005  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   : VisuGUI_Tools.cxx
+//  Author : Sergey Anikin
+//  Module : VISU
+
+
+#include "VisuGUI_ViewTools.h"
+
+#include "VISU_Actor.h"
+
+#include "SVTK_ViewModel.h"
+#include "SVTK_ViewWindow.h"
+
+namespace VISU 
+{
+  void
+  ErasePrs(VisuGUI* theModule,
+          VISU::Base_ptr theBase, 
+          bool thIsUpdate)
+  {
+    VISU::VISUType aType = theBase->GetType();
+    switch (aType) {
+    case VISU::TCURVE: {
+      if (VISU::Curve_i* aCurve = dynamic_cast<VISU::Curve_i*>(VISU::GetServant(theBase).in()))
+       PlotCurve(theModule, aCurve, VISU::eErase );
+      break;
+    }
+    case VISU::TCONTAINER: {
+      if (VISU::Container_i* aContainer = dynamic_cast<VISU::Container_i*>(VISU::GetServant(theBase).in()))
+       PlotContainer(theModule, aContainer, VISU::eErase );
+      break;
+    }
+    case VISU::TTABLE: {
+      if (VISU::Table_i* aTable = dynamic_cast<VISU::Table_i*>(VISU::GetServant(theBase).in()))
+       PlotTable(theModule, aTable, VISU::eErase );
+      break;
+    }
+    default: {
+      if(VISU::Prs3d_i* aPrsObject = dynamic_cast<VISU::Prs3d_i*>(VISU::GetServant(theBase).in())){
+       if(aType == VISU::TGAUSSPOINTS)
+         ErasePrs3d<VVTK_Viewer>(theModule,aPrsObject,thIsUpdate);
+       else if(SUIT_ViewManager* aViewManager = theModule->getApp()->activeViewManager()){
+         QString aType = aViewManager->getType();
+         if(aType == SVTK_Viewer::Type())
+           ErasePrs3d<SVTK_Viewer>(theModule,aPrsObject,thIsUpdate);
+         else if(aType == VVTK_Viewer::Type())
+           ErasePrs3d<VVTK_Viewer>(theModule,aPrsObject,thIsUpdate);
+       }
+      }
+    }} // switch (aType)
+  }
+}
diff --git a/src/VISUGUI/VisuGUI_ViewTools.h b/src/VISUGUI/VisuGUI_ViewTools.h
new file mode 100644 (file)
index 0000000..4950054
--- /dev/null
@@ -0,0 +1,241 @@
+//  VISU VISUGUI : GUI of VISU component
+//
+//  Copyright (C) 2005  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   : VisuGUI_Tools.h
+//  Author : Sergey Anikin
+//  Module : VISU
+
+#ifndef VisuGUI_ViewTools_HeaderFile
+#define VisuGUI_ViewTools_HeaderFile
+
+#include "VisuGUI.h"
+
+#include "SUIT_MessageBox.h"
+#include "SUIT_ViewManager.h"
+#include "SUIT_ViewWindow.h"
+
+#include "SalomeApp_Module.h"
+#include "SalomeApp_Application.h"
+
+#include "VISU_Prs3d_i.hh"
+
+#include "VVTK_ViewModel.h"
+#include "VVTK_ViewWindow.h"
+
+#include "SVTK_ViewModel.h"
+#include "SVTK_ViewWindow.h"
+
+#include "VisuGUI_Tools.h"
+#include "VTKViewer_Algorithm.h"
+#include "SVTK_Functor.h"
+
+#include "VISU_Table_i.hh"
+#include "VISU_ViewManager_i.hh"
+#include "SALOME_ListIO.hxx"
+#include "SALOME_ListIteratorOfListIO.hxx"
+
+#include "SPlot2d_ViewModel.h"
+
+#include "VISU_Actor.h"
+
+#include <vtkActorCollection.h>
+#include <vtkRenderer.h>
+
+class VVTK_Viewer;
+
+namespace VISU 
+{
+  //---------------------------------------------------------------
+  template<class TViewer>
+  inline
+  typename TViewer::TViewWindow*
+  GetViewWindow(VisuGUI* theModule, 
+               const bool theIsViewCreate = false)
+  {
+    typedef typename TViewer::TViewWindow TView;
+    if(SUIT_ViewManager* aViewManager = theModule->getViewManager(TViewer::Type(),theIsViewCreate)){
+      if(SUIT_ViewWindow* aViewWindow = aViewManager->getActiveView()){
+       if(TView* aView = dynamic_cast<TView*>(aViewWindow)){
+         aViewWindow->raise();
+         aViewWindow->setFocus();
+         return aView;
+       }
+      }
+    }
+    return NULL;
+  }
+
+
+  //---------------------------------------------------------------
+  template<class TViewer>
+  inline
+  VISU_Actor*
+  PublishInView(VisuGUI* theModule,
+                Prs3d_i* thePrs,
+               const bool theIsHighlight = false,
+               const bool theIsCreateView = false)
+  {
+    typedef typename TViewer::TViewWindow TView;
+    if(TView* aView = GetViewWindow<TViewer>(theModule,theIsCreateView)){
+      QApplication::setOverrideCursor( Qt::waitCursor );
+      try{
+       if(VISU_Actor* anActor = thePrs->CreateActor()){
+         aView->AddActor(anActor);
+         if(theIsHighlight)
+           aView->highlight(anActor->getIO(),true);
+         aView->getRenderer()->ResetCameraClippingRange();
+         aView->Repaint();
+         QApplication::restoreOverrideCursor();
+         return anActor;
+       }
+      }catch(std::exception& exc){
+       SUIT_MessageBox::warn1(GetDesktop(theModule),
+                              QObject::tr("WRN_VISU"),
+                              QObject::tr("ERR_CANT_CREATE_ACTOR"),
+                              QObject::tr("BUT_OK"));
+      }
+    }
+    return NULL;
+  }
+
+
+  //---------------------------------------------------------------
+  template<class TViewer>
+  inline
+  VISU_Actor*
+  UpdateViewer(VisuGUI* theModule,
+               VISU::Prs3d_i* thePrs,
+               bool theDispOnly = false,
+              const bool theIsHighlight = false,
+              const bool theIsViewCreate = false)
+  {
+    typedef typename TViewer::TViewWindow TView;
+    if(TView* aView = GetViewWindow<TViewer>(theModule,theIsViewCreate)){
+      vtkRenderer *aRen = aView->getRenderer();
+      vtkActorCollection *anActColl = aRen->GetActors();
+      anActColl->InitTraversal();
+      VISU_Actor* aResActor = NULL;
+      while(vtkActor *anAct = anActColl->GetNextActor()){
+       if(VISU_Actor* anActor = dynamic_cast<VISU_Actor*>(anAct)){
+         if(VISU::Prs3d_i* aPrs3d = anActor->GetPrs3d()){
+           if(thePrs == aPrs3d){
+             aResActor = anActor;
+             thePrs->UpdateActors();
+             aResActor->VisibilityOn();
+           }else if(theDispOnly){
+             anActor->VisibilityOff();
+           }
+         }else if(theDispOnly && anActor->GetVisibility()){
+           anActor->VisibilityOff();
+         }
+       }
+      }
+      if(aResActor){
+       if(theIsHighlight)
+         aView->highlight(aResActor->getIO(),true);
+       aView->getRenderer()->ResetCameraClippingRange();
+       aView->Repaint();
+       return aResActor;
+      }
+      return PublishInView<TViewer>(theModule,thePrs,theIsHighlight,theIsViewCreate);
+    }
+    return NULL;
+  }
+
+
+  //---------------------------------------------------------------
+  template<class TViewer>
+  inline
+  void
+  OnEraseAll(VisuGUI* theModule)
+  {
+    typedef typename TViewer::TViewWindow TViewWindow;
+    if(TViewWindow* aViewWindow = GetViewWindow<TViewer>(theModule)){
+      aViewWindow->unHighlightAll();
+      if(vtkRenderer *aRen = aViewWindow->getRenderer()){
+       vtkActorCollection *aCollection = aRen->GetActors();
+       aCollection->InitTraversal();
+       while(vtkActor *anAct = aCollection->GetNextActor()){
+         if(anAct->GetVisibility() > 0)
+           if(SALOME_Actor* anActor = dynamic_cast<SALOME_Actor*>(anAct)){
+             anActor->VisibilityOff();
+           }
+       }
+       aViewWindow->Repaint();
+      }
+    }
+  }
+  
+  template<>
+  inline
+  void
+  OnEraseAll<SPlot2d_Viewer>(VisuGUI* theModule)
+  {
+    if(SPlot2d_Viewer* aPlot2d = GetPlot2dViewer(theModule,false))
+      aPlot2d->EraseAll();
+  }
+
+
+  //---------------------------------------------------------------
+  template<class TVieweWindow>
+  inline
+  VISU_Actor*
+  FindActor(TVieweWindow* theViewWindow,
+            const char* theEntry)
+  {
+    using namespace SVTK;
+    if(vtkRenderer* aRenderer = theViewWindow->getRenderer()){
+      if(vtkActorCollection* aCollection = aRenderer->GetActors()){
+        if(VISU_Actor* anActor = Find<VISU_Actor>(aCollection,TIsSameEntry<VISU_Actor>(theEntry))){
+          return anActor;
+        }
+      }
+    }
+    return NULL;
+  }
+
+  template<class TViewer>
+  inline
+  void
+  ErasePrs3d(VisuGUI* theModule,
+             VISU::Prs3d_i* thePrs,
+            const bool thIsUpdate = true)
+  {
+    typedef typename TViewer::TViewWindow TViewWindow;
+    if(TViewWindow* aViewWindow = GetViewWindow<TViewer>(theModule)){
+      if(VISU_Actor* anActor = FindActor(aViewWindow,thePrs)){
+        anActor->VisibilityOff();
+       if(thIsUpdate)
+         aViewWindow->Repaint();
+      }
+    }
+  }
+
+
+  void
+  ErasePrs(VisuGUI* theModule,
+          VISU::Base_ptr theBase, 
+          bool thIsUpdate);
+}
+
+#endif
index 330d5468e8cc6e122d06a238e5dba347d80562c1..68d8f5cbe77bd0105a6780742ce4d14ce3ca1511 100644 (file)
@@ -18,50 +18,152 @@ VPATH=.:@srcdir@:@top_srcdir@/idl
 # Libraries targets
 LIB = libVISUEngineImpl.la
 
-LIB_SRC = VISUConfig.cc VISU_Gen_i.cc \
-       VISU_Result_i.cc VISU_PrsObject_i.cc VISU_Table_i.cc \
-       VISU_Prs3d_i.cc VISU_Mesh_i.cc VISU_ScalarMap_i.cc \
-       VISU_IsoSurfaces_i.cc VISU_DeformedShape_i.cc \
-       VISU_Plot3D_i.cc VISU_CutPlanes_i.cc VISU_CutLines_i.cc \
-       VISU_Vectors_i.cc VISU_StreamLines_i.cc \
-       VISU_ViewManager_i.cc VISU_View_i.cc \
-       VISU_TimeAnimation.cxx VISU_CorbaMedConvertor.cxx \
+LIB_SRC = \
+       VISU_Result_i.cc \
+       VISUConfig.cc \
+       VISU_PrsObject_i.cc \
+       VISU_Prs3d_i.cc \
+       VISU_ColoredPrs3d_i.cc \
+       VISU_ScalarMap_i.cc \
+       VISU_GaussPoints_i.cc \
+       VISU_IsoSurfaces_i.cc \
+       VISU_DeformedShape_i.cc \
+       VISU_Plot3D_i.cc \
+       VISU_CutPlanes_i.cc \
+       VISU_CutLines_i.cc \
+       VISU_Vectors_i.cc \
+       VISU_StreamLines_i.cc \
+       VISU_Mesh_i.cc \
+       VISU_Table_i.cc \
+       VISU_Gen_i.cc \
+       VISU_ViewManager_i.cc \
+       VISU_View_i.cc \
+       VISU_TimeAnimation.cxx \
+       VISU_CorbaMedConvertor.cxx \
        VISU_DumpPython.cc
 
-LIB_MOC = VISU_TimeAnimation.h
+LIB_MOC = \
+       VISU_TimeAnimation.h
 
-LIB_SERVER_IDL = VISU_Gen.idl SALOME_Component.idl \
-                 SALOME_Exception.idl SALOME_GenericObj.idl MED.idl
+LIB_SERVER_IDL = \
+       MED.idl \
+       VISU_Gen.idl \
+       SALOME_Component.idl \
+       SALOME_Exception.idl \
+       SALOME_GenericObj.idl 
 
-LIB_CLIENT_IDL = SALOMEDS.idl SALOMEDS_Attributes.idl SALOME_Comm.idl
+LIB_CLIENT_IDL = \
+       SALOMEDS.idl \
+       SALOMEDS_Attributes.idl \
+       SALOME_Comm.idl
 
 # Executables targets
-BIN =
+BIN = VISU_I
 BIN_SRC =
 
 BIN_CLIENT_IDL =
 BIN_SERVER_IDL =
 
-EXPORT_HEADERS = VISUConfig.hh VISU_Gen_i.hh \
-       VISU_Result_i.hh VISU_PrsObject_i.hh VISU_Table_i.hh \
-       VISU_Prs3d_i.hh VISU_Mesh_i.hh VISU_ScalarMap_i.hh \
-       VISU_IsoSurfaces_i.hh VISU_DeformedShape_i.hh \
-       VISU_Plot3D_i.hh VISU_CutPlanes_i.hh VISU_CutLines_i.hh \
-       VISU_Vectors_i.hh VISU_StreamLines_i.hh \
-       VISU_ViewManager_i.hh VISU_View_i.hh \
+EXPORT_HEADERS = \
+       VISUConfig.hh \
+       VISU_Gen_i.hh \
+       VISU_Result_i.hh \
+       VISU_PrsObject_i.hh \
+       VISU_Table_i.hh \
+       VISU_Prs3d_i.hh \
+       VISU_Mesh_i.hh \
+       VISU_ColoredPrs3d_i.hh \
+       VISU_ScalarMap_i.hh \
+       VISU_IsoSurfaces_i.hh \
+       VISU_DeformedShape_i.hh \
+       VISU_Plot3D_i.hh \
+       VISU_CutPlanes_i.hh \
+       VISU_CutLines_i.hh \
+       VISU_Vectors_i.hh \
+       VISU_StreamLines_i.hh \
+       VISU_GaussPoints_i.hh \
+       VISU_ViewManager_i.hh \
+       VISU_View_i.hh \
        VISU_TimeAnimation.h
 
 # additionnal information to compil and link file
-CPPFLAGS += -ftemplate-depth-32 $(QT_INCLUDES) $(PYTHON_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) \
-       $(HDF5_INCLUDES) $(QWT_INCLUDES) $(BOOST_CPPFLAGS)\
-       -I${KERNEL_ROOT_DIR}/include/salome -I${GUI_ROOT_DIR}/include/salome
-
-LDFLAGS  += $(PYTHON_LIBS) $(QT_MT_LIBS) $(VTK_LIBS) $(QWT_LIBS) -lSalomeNS -lTOOLSDS \
-       -lSalomeContainer -lOpUtil -lSalomeApp -lVTKViewer -lSVTK -lSPlot2d -lSalomeHDFPersist \
-       -lSalomeGenericObj -lVisuConvertor -lVisuPipeLine -lVisuObject -lVISUGUITOOLS \
-       -L${KERNEL_ROOT_DIR}/lib/salome -L${GUI_ROOT_DIR}/lib/salome -lEvent
-
-LIBS+=  -lPlot2d -L${KERNEL_ROOT_DIR}/lib/salome
+CPPFLAGS += \
+       -ftemplate-depth-32 \
+       $(QT_INCLUDES) \
+       $(PYTHON_INCLUDES) \
+       $(OCC_INCLUDES) \
+       $(VTK_INCLUDES) \
+       $(HDF5_INCLUDES) \
+       $(QWT_INCLUDES) \
+       $(BOOST_CPPFLAGS)\
+       -I${KERNEL_ROOT_DIR}/include/salome \
+       -I${MED_ROOT_DIR}/include/salome \
+       -I${GUI_ROOT_DIR}/include/salome
+
+LDFLAGS  += \
+       $(PYTHON_LIBS) \
+       $(QT_MT_LIBS) \
+       $(VTK_LIBS) \
+       $(QWT_LIBS) \
+       $(BOOST_LIBS) \
+       -L${KERNEL_ROOT_DIR}/lib/salome \
+       -L${GUI_ROOT_DIR}/lib/salome \
+       -L${MED_ROOT_DIR}/lib/salome 
+
+LIBS+=  -lboost_signals-mt \
+       -lSalomeHDFPersist \
+       -lSalomeGenericObj \
+       -lSalomeContainer \
+       -lSalomeNS \
+       -lTOOLSDS \
+       -lOpUtil \
+       -lEvent \
+       -lCASCatch \
+       -lSalomeApp \
+       -lSalomeSession \
+       -lVTKViewer \
+       -lSVTK \
+       -lSPlot2d \
+       -lVisuConvertor \
+       -lVisuPipeLine \
+       -lVisuObject \
+       -lVISUGUITOOLS
+
+LDFLAGSFORBIN=$(LDFLAGS) $(LIBS) \
+       -L${KERNEL_ROOT_DIR}/lib/salome \
+       -lSALOMEBasics \
+       -lSalomeCatalog \
+       -lwith_loggerTraceCollector \
+       -lSalomeLifeCycleCORBA \
+       -lRegistry \
+       -lSalomeNotification \
+       -lSALOMELocalTrace \
+       -lSalomeResourcesManager \
+       -lSalomeDS \
+       -lSalomeDSImpl \
+       -lSalomeObject \
+       -lqtx \
+       -lsuit \
+       -lstd \
+       -lCAM \
+       -lLightApp \
+       -lObjBrowser \
+       -lSalomePrs \
+       -lPyInterp \
+       -lPythonConsole \
+       -lLogWindow \
+       -lToolsGUI  \
+       -lGLViewer \
+       -lOCCViewer \
+       -lSUPERVGraph \
+       -lSOCC \
+       -lVVTK \
+       -lPlot2d \
+       -lMEDWrapper \
+       -lMEDWrapperBase \
+       -lMEDWrapper_V2_2 \
+       -lMEDWrapper_V2_1 \
+       -lmed_V2_1
 
 # additional file to be cleaned
 MOSTLYCLEAN =
index 3224f05abd36c7ab41a0d13f706a53a69d2855bc..6ec9a2d015ba90dce00fdd20403169043f77a357 100644 (file)
@@ -39,8 +39,8 @@
 #include "Utils_CorbaException.hxx"
 #include "utilities.h"
 
-#include <SALOMEDSClient_SObject.hxx>
-#include <SALOMEDSClient_Study.hxx>
+#include "SALOMEDSClient_SObject.hxx"
+#include "SALOMEDSClient_Study.hxx"
 
 // QT headers
 #include <qstring.h>
@@ -61,8 +61,8 @@
 class SUIT_Session;
 class SUIT_ResourceMgr;
 
-
-namespace VISU{
+namespace VISU
+{
 
   SUIT_Session *GetSession();
   SUIT_ResourceMgr *GetResourceMgr();
diff --git a/src/VISU_I/VISU_ColoredPrs3d_i.cc b/src/VISU_I/VISU_ColoredPrs3d_i.cc
new file mode 100644 (file)
index 0000000..94b2e9d
--- /dev/null
@@ -0,0 +1,727 @@
+//  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   : VISU_PrsObject_i.cxx
+//  Author : Alexey PETROV
+//  Module : VISU
+
+#include "VISU_ColoredPrs3d_i.hh"
+
+#include "VISU_ScalarMapPL.hxx"
+#include "VISU_Result_i.hh"
+#include "VISU_Convertor.hxx"
+
+#include "SUIT_ResourceMgr.h"
+
+#include <vtkMapper.h>
+
+using namespace VISU;
+using namespace std;
+
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+//#define _DEXCEPT_
+#else
+static int MYDEBUG = 0;
+#endif
+
+
+//============================================================================
+VISU::ColoredPrs3d_i::
+ColoredPrs3d_i(Result_i* theResult,
+              bool theAddToStudy) :
+  PrsObject_i(theResult->GetStudyDocument()),
+  Prs3d_i(theResult,theAddToStudy),
+  myScalarMapPL(NULL),
+  myIsFixedRange(false)
+{}
+
+VISU::ColoredPrs3d_i::
+ColoredPrs3d_i(Result_i* theResult,
+              SALOMEDS::SObject_ptr theSObject) :
+  PrsObject_i(theResult->GetStudyDocument()),
+  Prs3d_i(theResult,theSObject),
+  myScalarMapPL(NULL),
+  myIsFixedRange(false)
+{}
+
+VISU::ColoredPrs3d_i
+::~ColoredPrs3d_i()
+{}
+
+void 
+VISU::ColoredPrs3d_i
+::RemoveFromStudy()
+{
+  TSuperClass::RemoveFromStudy();
+  VISU::RemoveFromStudy(mySObject,false);
+}
+
+void
+VISU::ColoredPrs3d_i
+::SameAs(const Prs3d_i* theOrigin)
+{
+  if(const ColoredPrs3d_i* aPrs3d = dynamic_cast<const ColoredPrs3d_i*>(theOrigin)){
+    DoHook();
+
+    ColoredPrs3d_i* anOrigin = const_cast<ColoredPrs3d_i*>(aPrs3d);
+    myField = anOrigin->GetField();
+    myMeshName = myField->myMeshName;
+    myEntity = myField->myEntity;
+    myIteration = anOrigin->GetIteration();
+    myFieldName = anOrigin->GetFieldName();
+    
+    Build(-1);
+    
+    TSuperClass::SameAs(theOrigin);
+    
+    SetScalarMode(anOrigin->GetScalarMode());
+    SetNbColors(anOrigin->GetNbColors());
+    SetBarOrientation(anOrigin->GetBarOrientation());
+    
+    SetPosition(anOrigin->GetPosX(), anOrigin->GetPosY());
+    SetSize(anOrigin->GetWidth(), anOrigin->GetHeight());
+    SetLabels(anOrigin->GetLabels());
+    SetTitle(anOrigin->GetTitle());
+    
+    SetBoldTitle(anOrigin->IsBoldTitle());
+    SetItalicTitle(anOrigin->IsItalicTitle());
+    SetShadowTitle(anOrigin->IsShadowTitle());
+    SetTitFontType(anOrigin->GetTitFontType());
+    float r,g,b;
+    anOrigin->GetTitleColor(&r,&g,&b);
+    SetTitleColor(r,g,b);
+    
+    SetBoldLabel(anOrigin->IsBoldLabel());
+    SetItalicLabel(anOrigin->IsItalicLabel());
+    SetShadowLabel(anOrigin->IsShadowLabel());
+    SetLblFontType(anOrigin->GetLblFontType());
+    anOrigin->GetLabelColor(&r,&g,&b);
+    SetLabelColor(r,g,b);
+  }
+}
+  
+void
+VISU::ColoredPrs3d_i
+::SameAsParams(const ColoredPrs3d_i* theOrigin)
+{
+  int anIteration = GetIteration();
+  SameAs(theOrigin);
+  myIteration = anIteration;
+
+  Build(-1);
+  Update();
+}
+
+
+//----------------------------------------------------------------------------
+CORBA::Long 
+VISU::ColoredPrs3d_i
+::GetScalarMode()
+{
+  return myScalarMapPL->GetScalarMode();
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetScalarMode(CORBA::Long theScalarMode) 
+{
+  myScalarMapPL->SetScalarMode(theScalarMode);
+}
+
+CORBA::Double 
+VISU::ColoredPrs3d_i
+::GetMin()
+{
+  return myScalarMapPL->GetScalarRange()[0];
+}
+
+CORBA::Double 
+VISU::ColoredPrs3d_i
+::GetMax()
+{
+  return myScalarMapPL->GetScalarRange()[1];
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetNbColors(CORBA::Long theNbColors)
+{
+  myScalarMapPL->SetNbColors(theNbColors);
+}
+
+CORBA::Long 
+VISU::ColoredPrs3d_i
+::GetNbColors()
+{
+  return myScalarMapPL->GetNbColors();
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetBarOrientation(VISU::ScalarMap::Orientation theOrientation)
+{
+  myOrientation = theOrientation;
+}
+
+VISU::ScalarMap::Orientation 
+VISU::ColoredPrs3d_i
+::GetBarOrientation() 
+{
+  return myOrientation;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetPosition(CORBA::Double X, CORBA::Double Y) 
+{ 
+  myPosition[0] = X; 
+  myPosition[1] = Y;
+}
+
+CORBA::Double
+VISU::ColoredPrs3d_i
+::GetPosX() 
+{
+  return myPosition[0];
+}
+
+CORBA::Double
+VISU::ColoredPrs3d_i
+::GetPosY() 
+{ 
+  return myPosition[1];
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetSize(CORBA::Double theWidth, CORBA::Double theHeight) 
+{
+  myWidth = theWidth; 
+  myHeight = theHeight;
+}
+
+CORBA::Double
+VISU::ColoredPrs3d_i
+::GetWidth() 
+{
+  return myWidth;
+}
+
+CORBA::Double
+VISU::ColoredPrs3d_i
+::GetHeight() 
+{ 
+  return myHeight;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetLabels(CORBA::Long theNbLabels)
+{
+  myNumberOfLabels = theNbLabels;
+}
+
+CORBA::Long
+VISU::ColoredPrs3d_i
+::GetLabels() 
+{ 
+  return myNumberOfLabels;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetTitle(const char* theName) 
+{
+  myTitle = theName;
+}
+
+char* 
+VISU::ColoredPrs3d_i
+::GetTitle() 
+{ 
+  return CORBA::string_dup(myTitle.c_str());
+}
+
+bool
+VISU::ColoredPrs3d_i
+::IsBoldTitle() 
+{ 
+  return myIsBoldTitle;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetBoldTitle(bool isBold)
+{
+  myIsBoldTitle = isBold;
+}
+
+bool
+VISU::ColoredPrs3d_i
+::IsItalicTitle() 
+{ 
+  return myIsItalicTitle;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetItalicTitle(bool isItalic)
+{ 
+  myIsItalicTitle = isItalic;
+}
+
+bool
+VISU::ColoredPrs3d_i
+::IsShadowTitle() 
+{ 
+  return myIsShadowTitle;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetShadowTitle(bool isShadow)
+{ 
+  myIsShadowTitle = isShadow;
+}
+
+int
+VISU::ColoredPrs3d_i
+::GetTitFontType()
+{
+  return myTitFontType;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetTitFontType(int theType)
+{
+  myTitFontType = theType;
+}
+
+void
+VISU::ColoredPrs3d_i
+::GetTitleColor(float* theR, float* theG, float* theB)
+{
+  *theR = myTitleColor[0]; 
+  *theG = myTitleColor[1]; 
+  *theB = myTitleColor[2];
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetTitleColor(float theR, float theG, float theB)
+{
+  myTitleColor[0] = theR; 
+  myTitleColor[1] = theG; 
+  myTitleColor[2] = theB; 
+}
+
+bool
+VISU::ColoredPrs3d_i
+::IsBoldLabel()
+{
+  return myIsBoldLabel;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetBoldLabel(bool isBold) 
+{
+  myIsBoldLabel = isBold;
+}
+
+bool
+VISU::ColoredPrs3d_i
+::IsItalicLabel() 
+{
+  return myIsItalicLabel;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetItalicLabel(bool isItalic)
+{
+  myIsItalicLabel = isItalic;
+}
+
+bool
+VISU::ColoredPrs3d_i
+::IsShadowLabel() 
+{
+  return myIsShadowLabel;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetShadowLabel(bool isShadow)
+{
+  myIsShadowLabel = isShadow;
+}
+
+int
+VISU::ColoredPrs3d_i
+::GetLblFontType()
+{
+  return myLblFontType;
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetLblFontType(int theType)
+{
+  myLblFontType = theType;
+}
+
+void
+VISU::ColoredPrs3d_i
+::GetLabelColor(float* theR, float* theG, float* theB)
+{
+  *theR = myLabelColor[0]; 
+  *theG = myLabelColor[1]; 
+  *theB = myLabelColor[2];
+}
+
+void
+VISU::ColoredPrs3d_i
+::SetLabelColor(float theR, float theG, float theB)
+{
+  myLabelColor[0] = theR; 
+  myLabelColor[1] = theG; 
+  myLabelColor[2] = theB; 
+}
+
+
+//----------------------------------------------------------------------------
+/**
+ * Creates ColoredPrs3d and initialises it from resources
+ */
+VISU::Storable* 
+VISU::ColoredPrs3d_i
+::Create(const char* theMeshName, 
+        VISU::Entity theEntity,
+        const char* theFieldName, 
+        int theIteration)
+{
+  DoHook(); // to create proper pipeline
+
+  myMeshName = theMeshName;
+  myEntity = (VISU::TEntity)theEntity;
+  myFieldName =theFieldName;
+  myIteration = theIteration;
+
+  Build(false); // to get corresponding input from result and initilize the pipeline
+
+  SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr();
+
+  int aScalarMode = aResourceMgr->integerValue("VISU", "scalar_bar_mode", 0);
+  SetScalarMode(aScalarMode);
+
+  int aNumberOfColors = aResourceMgr->integerValue( "VISU", "scalar_bar_num_colors", 64 );
+  SetNbColors(aNumberOfColors);
+
+  // Orientation
+  int anOrientation = aResourceMgr->integerValue("VISU", "scalar_bar_orientation", 0);
+  if(anOrientation == 1)
+    myOrientation = VISU::ScalarMap::HORIZONTAL;
+  else
+    myOrientation = VISU::ScalarMap::VERTICAL;
+
+  // Scalar Bar origin
+  QString propertyName = QString( "scalar_bar_%1_" ).arg( anOrientation == 0 ? "vertical" : "horizontal" );
+
+  float aXorigin = (myOrientation == VISU::ScalarMap::VERTICAL) ? 0.01 : 0.2;
+  aXorigin = aResourceMgr->doubleValue("VISU", propertyName + "x", aXorigin);
+  myPosition[0] = aXorigin;
+
+  float aYorigin = (myOrientation == VISU::ScalarMap::VERTICAL) ? 0.1 : 0.012;
+  aYorigin = aResourceMgr->doubleValue("VISU", propertyName + "y", aYorigin);
+  myPosition[1] = aYorigin;
+
+  // Scalar Bar size
+  myWidth = (myOrientation == VISU::ScalarMap::VERTICAL)? 0.1 : 0.6;
+  myWidth = aResourceMgr->doubleValue("VISU", propertyName + "width", myWidth);
+
+  myHeight = (myOrientation == VISU::ScalarMap::VERTICAL)? 0.8:0.12;
+  myHeight = aResourceMgr->doubleValue("VISU", propertyName + "height", myHeight);
+
+  // scalar bar default position
+  bool anIsArrangeBar = aResourceMgr->booleanValue("VISU", "scalar_bars_default_position", 0);
+  int aPlace = 1;
+  if (anIsArrangeBar){
+    aPlace = aResourceMgr->integerValue("VISU", "scalar_bar_position_num",0);
+  }
+  if(myOrientation == VISU::ScalarMap::HORIZONTAL){
+    myPosition[1] += myHeight*(aPlace-1);
+  } else {
+    myPosition[0] += myWidth*(aPlace-1);
+  }
+
+  // Nb of Labels
+  myNumberOfLabels = aResourceMgr->integerValue( "VISU", "scalar_bar_num_labels", 5 );
+
+  // Fonts properties definition
+  myIsBoldTitle = myIsItalicTitle = myIsShadowTitle = true;
+  myTitFontType = VTK_ARIAL;
+
+  if(aResourceMgr->hasValue( "VISU", "scalar_bar_title_font" )){
+    QFont f = aResourceMgr->fontValue( "VISU", "scalar_bar_title_font" );
+    if ( f.family() == "Arial" )
+      myTitFontType = VTK_ARIAL;
+    else if ( f.family() == "Courier" )
+      myTitFontType = VTK_COURIER;
+    else if ( f.family() == "Times" )
+      myTitFontType = VTK_TIMES;
+    
+    myIsBoldTitle   = f.bold();
+    myIsItalicTitle = f.italic();
+    myIsShadowTitle =  f.underline();
+  }
+
+  QColor aTextColor = aResourceMgr->colorValue( "VISU", "scalar_bar_title_color", QColor( 255, 255, 255 ) );
+
+  myTitleColor[0] = aTextColor.red()   / 255;
+  myTitleColor[1] = aTextColor.green() / 255;
+  myTitleColor[2] = aTextColor.blue()  / 255;
+
+  myIsBoldLabel = myIsItalicLabel = myIsShadowLabel = true;
+  myLblFontType = VTK_ARIAL;
+
+  if( aResourceMgr->hasValue( "VISU", "scalar_bar_label_font" )){
+    QFont f = aResourceMgr->fontValue( "VISU", "scalar_bar_label_font" );
+    if ( f.family() == "Arial" )
+      myLblFontType = VTK_ARIAL;
+    else if ( f.family() == "Courier" )
+      myLblFontType = VTK_COURIER;
+    else if ( f.family() == "Times" )
+      myLblFontType = VTK_TIMES;
+    
+    myIsBoldLabel   = f.bold();
+    myIsItalicLabel = f.italic();
+    myIsShadowLabel =  f.underline();
+  }
+
+  QColor aLabelColor = aResourceMgr->colorValue( "VISU", "scalar_bar_label_color", QColor( 255, 255, 255 ) );
+
+  myLabelColor[0] = aLabelColor.red()   / 255;
+  myLabelColor[1] = aLabelColor.green() / 255;
+  myLabelColor[2] = aLabelColor.blue()  / 255;
+
+  return this;
+}
+
+VISU::Storable* 
+VISU::ColoredPrs3d_i
+::Restore(const Storable::TRestoringMap& theMap)
+{
+  DoHook();
+
+  myMeshName = VISU::Storable::FindValue(theMap,"myMeshName").latin1();
+  myEntity = (VISU::TEntity)VISU::Storable::FindValue(theMap,"myEntity").toInt();
+  myFieldName = VISU::Storable::FindValue(theMap,"myFieldName").latin1();
+  myIteration = VISU::Storable::FindValue(theMap,"myIteration").toInt();
+
+  myAddToStudy = false; //SRN Added 21/06/2003 SAL2983: to avoid addition of the new ScalarMap to study.
+
+  Build(true);
+
+  TSuperClass::Restore(theMap);
+
+  SetScalarMode(VISU::Storable::FindValue(theMap,"myScalarMode").toInt());
+  SetNbColors(VISU::Storable::FindValue(theMap,"myNumberOfColors").toInt());
+  SetBarOrientation((VISU::ScalarMap::Orientation)VISU::Storable::FindValue(theMap,"myOrientation").toInt());
+  
+  myTitle = VISU::Storable::FindValue(theMap,"myTitle").latin1();
+  myNumberOfLabels = VISU::Storable::FindValue(theMap,"myNumberOfLabels").toInt();
+  myPosition[0] = VISU::Storable::FindValue(theMap,"myPosition[0]").toDouble();
+  myPosition[1] = VISU::Storable::FindValue(theMap,"myPosition[1]").toDouble();
+  myWidth = VISU::Storable::FindValue(theMap,"myWidth").toDouble();
+  myHeight = VISU::Storable::FindValue(theMap,"myHeight").toDouble();
+
+  myTitFontType = VISU::Storable::FindValue(theMap,"myTitFontType").toInt();
+  myIsBoldTitle = VISU::Storable::FindValue(theMap,"myIsBoldTitle").toInt();
+  myIsItalicTitle = VISU::Storable::FindValue(theMap,"myIsItalicTitle").toInt();
+  myIsShadowTitle = VISU::Storable::FindValue(theMap,"myIsShadowTitle").toInt();
+  myTitleColor[0] = VISU::Storable::FindValue(theMap,"myTitleColor[0]").toFloat();
+  myTitleColor[1] = VISU::Storable::FindValue(theMap,"myTitleColor[1]").toFloat();
+  myTitleColor[2] = VISU::Storable::FindValue(theMap,"myTitleColor[2]").toFloat();
+
+  myLblFontType = VISU::Storable::FindValue(theMap,"myLblFontType").toInt();
+  myIsBoldLabel = VISU::Storable::FindValue(theMap,"myIsBoldLabel").toInt();
+  myIsItalicLabel = VISU::Storable::FindValue(theMap,"myIsItalicLabel").toInt();
+  myIsShadowLabel = VISU::Storable::FindValue(theMap,"myIsShadowLabel").toInt();
+  myLabelColor[0] = VISU::Storable::FindValue(theMap,"myLabelColor[0]").toFloat();
+  myLabelColor[1] = VISU::Storable::FindValue(theMap,"myLabelColor[1]").toFloat();
+  myLabelColor[2] = VISU::Storable::FindValue(theMap,"myLabelColor[2]").toFloat();
+
+  return this;
+}
+
+void 
+VISU::ColoredPrs3d_i
+::ToStream(std::ostringstream& theStr)
+{
+  TSuperClass::ToStream(theStr);
+
+  Storable::DataToStream( theStr, "myScalarMode",     int(GetScalarMode()) );
+  Storable::DataToStream( theStr, "myNumberOfColors", int(GetNbColors()) );
+  Storable::DataToStream( theStr, "myOrientation",    myOrientation );
+
+  Storable::DataToStream( theStr, "myMeshName",       myMeshName.c_str() );
+  Storable::DataToStream( theStr, "myEntity",         myEntity );
+  Storable::DataToStream( theStr, "myFieldName",      myFieldName.c_str() );
+  Storable::DataToStream( theStr, "myIteration",      myIteration );
+
+  Storable::DataToStream( theStr, "myTitle",          myTitle.c_str() );
+  Storable::DataToStream( theStr, "myNumberOfLabels", myNumberOfLabels );
+  Storable::DataToStream( theStr, "myPosition[0]",    myPosition[0] );
+  Storable::DataToStream( theStr, "myPosition[1]",    myPosition[1] );
+  Storable::DataToStream( theStr, "myWidth",          myWidth );
+  Storable::DataToStream( theStr, "myHeight",         myHeight );
+
+  Storable::DataToStream( theStr, "myTitFontType",    myTitFontType );
+  Storable::DataToStream( theStr, "myIsBoldTitle",    myIsBoldTitle );
+  Storable::DataToStream( theStr, "myIsItalicTitle",  myIsItalicTitle );
+  Storable::DataToStream( theStr, "myIsShadowTitle",  myIsShadowTitle );
+  Storable::DataToStream( theStr, "myTitleColor[0]",  myTitleColor[0] );
+  Storable::DataToStream( theStr, "myTitleColor[1]",  myTitleColor[1] );
+  Storable::DataToStream( theStr, "myTitleColor[2]",  myTitleColor[2] );
+
+  Storable::DataToStream( theStr, "myLblFontType",    myLblFontType );
+  Storable::DataToStream( theStr, "myIsBoldLabel",    myIsBoldLabel );
+  Storable::DataToStream( theStr, "myIsItalicLabel",  myIsItalicLabel );
+  Storable::DataToStream( theStr, "myIsShadowLabel",  myIsShadowLabel );
+  Storable::DataToStream( theStr, "myLabelColor[0]",  myLabelColor[0] );
+  Storable::DataToStream( theStr, "myLabelColor[1]",  myLabelColor[1] );
+  Storable::DataToStream( theStr, "myLabelColor[2]",  myLabelColor[2] );
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU::ColoredPrs3d_i
+::DoHook()
+{
+  if(MYDEBUG) MESSAGE("ColoredPrs3d_i::DoHook() - "<<myPipeLine);
+  if(!myPipeLine){
+    myPipeLine = VISU_ScalarMapPL::New();
+    myPipeLine->GetMapper()->SetScalarVisibility(1);
+  }
+  myScalarMapPL = dynamic_cast<VISU_ScalarMapPL*>(myPipeLine);
+}
+
+//----------------------------------------------------------------------------
+VISU::Storable* 
+VISU::ColoredPrs3d_i
+::Build(int theRestoring)
+{
+  if(MYDEBUG)
+    MESSAGE("ColoredPrs3d_i::Build - "<<myFieldName<<"; theRestoring = "<<theRestoring);
+  SALOMEDS::StudyBuilder_var aStudyBuilder = myStudy->NewBuilder();
+  if(myAddToStudy) 
+    aStudyBuilder->NewCommand();  // There is a transaction
+#ifndef _DEXCEPT_
+  try{
+#endif
+    DoSetInput(myResult);
+    QString aComment;
+    myName = "NoName";
+    if(theRestoring <= 0){
+      if(theRestoring == 0) myScalarMapPL->Init();
+      if(!myIsFixedRange) myScalarMapPL->SetSourceRange();
+      const VISU::TValField& aValField = myField->myValField;
+      const VISU::PValForTime aValForTime = aValField.find(myIteration)->second;
+      aComment.sprintf("%s %s",myFieldName.c_str(),VISU_Convertor::GenerateName(aValForTime->myTime).c_str());
+      if (theRestoring == 0) myTitle = aComment.simplifyWhiteSpace().latin1();
+    }
+    if(myAddToStudy){
+      myName = GenerateName().latin1();
+      aComment.sprintf("myComment=TIMESTAMP;myType=%d;myMeshName=%s;myEntityId=%d;myFieldName=%s;myTimeStampId=%d;myNumComponent=%d",
+                      VISU::TTIMESTAMP,myMeshName.c_str(),myEntity,myFieldName.c_str(),myIteration,myField->myNbComp);
+      string aResultEntry = myResult->GetEntry();
+      string aRefFatherEntry = myResult->GetRefFatherEntry();
+      string anEntry = myResult->GetEntry(aComment.latin1());
+      if(anEntry == "") throw std::runtime_error("There is no Entry for binding the presentation !!!");
+      aComment.sprintf("myComment=%s;myMeshName=%s;myEntityId=%d;myFieldName=%s;myTimeStampId=%d;myNumComponent=%d",
+                      GetComment(),myMeshName.c_str(),myEntity,myFieldName.c_str(),myIteration,myField->myNbComp);
+      CORBA::String_var anIOR = GetID();
+      CreateAttributes(myStudy,anEntry.c_str(),aRefFatherEntry.c_str(),anIOR,myName.c_str(),"",aComment.latin1(),true);
+      mySObject = myStudy->FindObjectIOR(anIOR);
+    }
+#ifndef _DEXCEPT_
+  }catch(std::exception& exc){
+    INFOS("Follow exception was occured :\n"<<exc.what());
+    throw;
+  }catch(...){
+    INFOS("Unknown exception was occured!");
+    throw;
+  }
+#endif
+  if(myAddToStudy) 
+    aStudyBuilder->CommitCommand();
+  return this;
+}
+
+
+//----------------------------------------------------------------------------
+const VISU::PField&
+VISU::ColoredPrs3d_i
+::GetField() const 
+{ 
+  return myField;
+}
+
+const std::string&
+VISU::ColoredPrs3d_i
+::GetMeshName() const 
+{ 
+  return myMeshName;
+}
+
+VISU::Entity
+VISU::ColoredPrs3d_i
+::GetEntity() const 
+{ 
+  return VISU::Entity(myEntity);
+}
+
+const std::string&
+VISU::ColoredPrs3d_i
+::GetFieldName() const 
+{ 
+  return myFieldName;
+}
+
+int
+VISU::ColoredPrs3d_i
+::GetIteration() const 
+{ 
+  return myIteration;
+}
+
+VISU_ScalarMapPL*
+VISU::ColoredPrs3d_i
+::GetScalarMapPL()
+{ 
+  return myScalarMapPL;
+}
diff --git a/src/VISU_I/VISU_ColoredPrs3d_i.hh b/src/VISU_I/VISU_ColoredPrs3d_i.hh
new file mode 100644 (file)
index 0000000..e03d772
--- /dev/null
@@ -0,0 +1,304 @@
+//  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   : VISU_PrsObject_i.hxx
+//  Author : Alexey PETROV
+//  Module : VISU
+
+#ifndef VISU_ColoredPrs3d_i_HeaderFile
+#define VISU_ColoredPrs3d_i_HeaderFile
+
+#include "VISU_Prs3d_i.hh"
+
+class VISU_ScalarMapPL;
+
+namespace VISU
+{
+  //============================================================================
+  class ColoredPrs3d_i : public virtual POA_VISU::ColoredPrs3d,
+                        public virtual Prs3d_i
+  {
+    ColoredPrs3d_i();
+    ColoredPrs3d_i(const ColoredPrs3d_i&);
+  public:
+    //----------------------------------------------------------------------------
+    typedef Prs3d_i TSuperClass;
+
+    explicit
+    ColoredPrs3d_i(Result_i* theResult,
+                  bool theAddToStudy);
+    explicit
+    ColoredPrs3d_i(Result_i* theResult,
+                  SALOMEDS::SObject_ptr theSObject);
+
+    virtual
+    ~ColoredPrs3d_i();
+
+    virtual
+    void
+    RemoveFromStudy();
+
+    //----------------------------------------------------------------------------
+    virtual
+    CORBA::Long
+    GetScalarMode();
+
+    virtual
+    void 
+    SetScalarMode(CORBA::Long theScalarMode);
+
+    virtual
+    CORBA::Double 
+    GetMin();
+
+    virtual
+    CORBA::Double 
+    GetMax();
+
+    virtual 
+    void 
+    SetNbColors(CORBA::Long theNbColors);
+
+    virtual
+    CORBA::Long 
+    GetNbColors();
+
+    virtual
+    void
+    SetBarOrientation(VISU::ScalarMap::Orientation theOrientation);
+
+    virtual 
+    VISU::ScalarMap::Orientation 
+    GetBarOrientation();
+
+    virtual
+    void
+    SetPosition(CORBA::Double X, CORBA::Double Y);
+
+    virtual
+    CORBA::Double
+    GetPosX();
+
+    virtual
+    CORBA::Double
+    GetPosY();
+
+    virtual 
+    void
+    SetSize(CORBA::Double theWidth, CORBA::Double theHeight);
+    
+    virtual 
+    CORBA::Double
+    GetWidth();
+
+    virtual
+    CORBA::Double
+    GetHeight();
+
+    virtual 
+    void
+    SetLabels(CORBA::Long theNbLabels);
+
+    virtual
+    CORBA::Long
+    GetLabels();
+
+    virtual
+    void
+    SetTitle(const char* theName);
+
+    virtual
+    char* 
+    GetTitle();
+
+    //----------------------------------------------------------------------------
+  protected:
+    VISU::ScalarMap::Orientation myOrientation;
+    std::string myTitle;
+    int myNumberOfLabels;
+    float myPosition[2], myWidth, myHeight;
+
+  public:
+    //----------------------------------------------------------------------------
+    virtual
+    Storable* 
+    Create(const char* theMeshName, 
+          VISU::Entity theEntity,
+          const char* theFieldName, 
+          int theIteration);
+
+    virtual 
+    Storable* 
+    Restore(const Storable::TRestoringMap& theMap);
+
+    virtual 
+    void
+    ToStream(std::ostringstream& theStr);
+
+    virtual 
+    void
+    SameAs(const Prs3d_i* theOrigin);
+
+    /*!
+     *  \brief Works like SameAs() method, but keep myIteration value unchanged.
+     *
+     *  Is used in VISU_TimeAnimation class implementation.
+     */
+    void
+    SameAsParams(const ColoredPrs3d_i* theOrigin);
+
+    const VISU::PField&
+    GetField() const;
+
+    const std::string& 
+    GetMeshName() const;
+
+    VISU::Entity
+    GetEntity() const;
+
+    const std::string& 
+    GetFieldName() const;
+
+    int
+    GetIteration() const;
+
+    VISU_ScalarMapPL* 
+    GetScalarMapPL();
+
+    virtual 
+    bool
+    IsBoldTitle();
+
+    virtual
+    void
+    SetBoldTitle(bool isBold);
+
+    virtual
+    bool
+    IsItalicTitle();
+
+    virtual
+    void
+    SetItalicTitle(bool isItalic);
+
+    virtual 
+    bool
+    IsShadowTitle();
+
+    virtual
+    void
+    SetShadowTitle(bool isShadow);
+
+    virtual 
+    int
+    GetTitFontType();
+
+    virtual
+    void
+    SetTitFontType(int theType);
+
+    virtual 
+    void
+    GetTitleColor(float* theR, float* theG, float* theB);
+    
+    virtual
+    void
+    SetTitleColor(float theR, float theG, float theB);    
+
+    virtual
+    bool
+    IsBoldLabel();
+
+    virtual
+    void
+    SetBoldLabel(bool isBold);
+
+    virtual
+    bool
+    IsItalicLabel();
+
+    virtual
+    void
+    SetItalicLabel(bool isItalic);
+
+    virtual
+    bool
+    IsShadowLabel();
+
+    virtual
+    void
+    SetShadowLabel(bool isShadow);
+
+    virtual 
+    int
+    GetLblFontType();
+
+    virtual
+    void
+    SetLblFontType(int theType);
+
+    virtual 
+    void
+    GetLabelColor(float* theR, float* theG, float* theB);
+
+    virtual
+    void
+    SetLabelColor(float theR, float theG, float theB);
+
+    //----------------------------------------------------------------------------
+  protected:
+    PField myField;
+    TEntity myEntity;
+    std::string myFieldName;
+    int myIteration;
+
+    //Font management
+    bool myIsBoldTitle;
+    bool myIsItalicTitle;
+    bool myIsShadowTitle;
+    int  myTitFontType;
+    float myTitleColor[3];
+
+    bool myIsBoldLabel;
+    bool myIsItalicLabel;
+    bool myIsShadowLabel;
+    int  myLblFontType;
+    float myLabelColor[3];
+
+    VISU_ScalarMapPL* myScalarMapPL;
+    bool myIsFixedRange;
+
+    virtual 
+    void
+    DoSetInput(Result_i* theResult) = 0;
+
+    Storable* 
+    Build(int theRestoring);
+
+    virtual
+    void 
+    DoHook();
+  };
+
+}
+
+#endif
index 56c39876d4d2fea091de8ace7501fd8a9826bde7..06bd2b6b37aba556f2c95074ebfc1783eedc2613 100644 (file)
@@ -58,7 +58,8 @@ extern "C" {
   }
 }
 
-namespace{
+namespace
+{
   using namespace SALOME_MED;
   
   const int MED_NBR_GEOMETRIE_MAILLE = 15;
@@ -107,7 +108,10 @@ namespace{
     MED_POINT1,
   };
   
-  int GetEntity2Geom(const VISU::TEntity& theEntity, medGeometryElement*& theVector)
+
+  //---------------------------------------------------------------
+  int
+  GetEntity2Geom(const VISU::TEntity& theEntity, medGeometryElement*& theVector)
   {
     switch(theEntity){
     case CELL_ENTITY: theVector = CELLGEOM; return MED_NBR_GEOMETRIE_MAILLE; break;
@@ -118,7 +122,10 @@ namespace{
     return -1;
   }
   
-  int MEDGeom2NbNodes(int theMEDGeomType)
+
+  //---------------------------------------------------------------
+  int
+  MEDGeom2NbNodes(int theMEDGeomType)
   { 
     switch(theMEDGeomType){
     case MED_NONE: return 0;
@@ -141,45 +148,35 @@ namespace{
     return -1;
   }
   
-  int MEDGeomToVTK(medGeometryElement theMEDGeomType)
-  { 
-    switch(theMEDGeomType){
-    case MED_NONE: return VTK_EMPTY_CELL;
-    case MED_POINT1: return VTK_VERTEX;
-    case MED_SEG2: return VTK_LINE;
-    case MED_SEG3: return VTK_LINE;
-    case MED_TRIA3: return VTK_TRIANGLE;
-    case MED_TRIA6: return VTK_TRIANGLE;
-    case MED_QUAD4: return VTK_QUAD;
-    case MED_QUAD8: return VTK_QUAD;
-    case MED_TETRA4: return VTK_TETRA;
-    case MED_TETRA10: return VTK_TETRA;
-    case MED_HEXA8: return VTK_HEXAHEDRON;
-    case MED_HEXA20: return VTK_HEXAHEDRON;
-    case MED_PENTA6: return VTK_WEDGE;
-    case MED_PENTA15: return VTK_WEDGE;
-    case MED_PYRA5: return VTK_PYRAMID;
-    case MED_PYRA13: return VTK_PYRAMID;
-    }
-    return -1;
-  }
-  
-  int VTKGeom2NbNodes(int theVTKGeomType)
+
+  //---------------------------------------------------------------
+  VISU::EGeometry
+  MEDGeom2VISU(medGeometryElement theGeom)
   { 
-    switch(theVTKGeomType){
-    case VTK_VERTEX: return 1;
-    case VTK_LINE: return 2;
-    case VTK_TRIANGLE: return 3;
-    case VTK_QUAD: return 4;
-    case VTK_TETRA: return 4;
-    case VTK_HEXAHEDRON: return 8;
-    case VTK_WEDGE: return 6;
-    case VTK_PYRAMID: return 5;
+    switch(theGeom){
+    case MED_POINT1: return VISU::ePOINT1;
+    case MED_SEG2: return VISU::eSEG2;
+    case MED_SEG3: return VISU::eSEG3;
+    case MED_TRIA3: return VISU::eTRIA3;
+    case MED_TRIA6: return VISU::eTRIA6;
+    case MED_QUAD4: return VISU::eQUAD4;
+    case MED_QUAD8: return VISU::eQUAD8;
+    case MED_TETRA4: return VISU::eTETRA4;
+    case MED_TETRA10: return VISU::eTETRA10;
+    case MED_HEXA8: return VISU::eHEXA8;
+    case MED_HEXA20: return VISU::eHEXA20;
+    case MED_PENTA6: return VISU::ePENTA6;
+    case MED_PENTA15: return VISU::ePENTA15;
+    case MED_PYRA5: return VISU::ePYRA5;
+    case MED_PYRA13: return VISU::ePYRA13;
     }
-    return -1;
+    return VISU::eNONE;
   }
   
-  medGeometryElement VTKGeomToMED(int theVTKGeomType)
+
+  //---------------------------------------------------------------
+  medGeometryElement 
+  VTKGeomToMED(int theVTKGeomType)
   { 
     switch(theVTKGeomType){
     case VTK_VERTEX: return MED_POINT1;
@@ -194,7 +191,9 @@ namespace{
     return medGeometryElement(-1);
   }
   
-  VISU::TEntity MEDEntityToVTK(medEntityMesh theMEDEntity)
+  //---------------------------------------------------------------
+  VISU::TEntity
+  MEDEntityToVTK(medEntityMesh theMEDEntity)
   {
     switch(theMEDEntity){
     case MED_NODE: return NODE_ENTITY;
@@ -205,7 +204,9 @@ namespace{
     return VISU::TEntity(-1);
   }
   
-  medEntityMesh VTKEntityToMED(VISU::TEntity theVTKEntity)
+  //---------------------------------------------------------------
+  medEntityMesh 
+  VTKEntityToMED(VISU::TEntity theVTKEntity)
   {
     switch(theVTKEntity){
     case NODE_ENTITY: return MED_NODE;
@@ -215,8 +216,12 @@ namespace{
     }
     return medEntityMesh(-1);
   }
+
   
-  string GetSObjectName(SALOMEDS::SObject_ptr aSObject){
+  //---------------------------------------------------------------
+  std::string 
+  GetSObjectName(SALOMEDS::SObject_ptr aSObject)
+  {
     SALOMEDS::GenericAttribute_var anAttr;
     if (aSObject->FindAttribute(anAttr,"AttributeName")) {
       SALOMEDS::AttributeName_var aName = SALOMEDS::AttributeName::_narrow(anAttr);
@@ -226,6 +231,8 @@ namespace{
     return "";
   }
   
+
+  //---------------------------------------------------------------
   void 
   GetCellsSize(vtkIdType& theNbCells, vtkIdType& theCellsSize,
               SALOME_MED::MESH_ptr theMEDMesh,
@@ -248,6 +255,7 @@ namespace{
   }
   
   
+  //---------------------------------------------------------------
   void 
   GetCellsSize(vtkIdType& theNbCells, vtkIdType& theCellsSize,
               SALOME_MED::FAMILY_ptr theMEDFamily)
@@ -269,6 +277,7 @@ namespace{
   }
   
   
+  //---------------------------------------------------------------
   void
   GetCellsSize(VISU::PCMesh theMesh, 
               SALOME_MED::MESH_ptr theMEDMesh, 
@@ -277,17 +286,14 @@ namespace{
     TMeshOnEntityMap& aMeshOnEntityMap = theMesh->myMeshOnEntityMap;
     VISU::PCMeshOnEntity aMeshOnEntity = aMeshOnEntityMap[theEntity];
     if(theEntity == NODE_ENTITY){
-      theMesh->myNbPoints = theMEDMesh->getNumberOfNodes();
       aMeshOnEntity->myNbCells = theMesh->myNbPoints;
       aMeshOnEntity->myCellsSize = 2*theMesh->myNbPoints;
       vtkIdType aNbCells, aCellsSize;
       GetCellsSize(aNbCells,aCellsSize,theMEDMesh,CELL_ENTITY);
       if(aNbCells > 0){
-       
        TMeshOnEntityMap::iterator aIter = aMeshOnEntityMap.find(CELL_ENTITY);
        if (aIter != aMeshOnEntityMap.end()){
          VISU::PCMeshOnEntity aMeshOnCells = aIter->second;
-       
          aMeshOnCells->myEntity = VISU::CELL_ENTITY;
          aMeshOnCells->myMeshName = theMesh->myName;
          aMeshOnCells->myNbCells = aNbCells;
@@ -302,6 +308,7 @@ namespace{
 }
 
 
+//---------------------------------------------------------------
 VISU_Convertor* 
 VISU_MEDFieldConvertor::Build()
 {
@@ -322,11 +329,15 @@ VISU_MEDFieldConvertor::Build()
   CORBA::String_var aFieldName = myField->getName();
 
   PCMesh aMesh = myMeshMap[aMeshName.in()](new TCMesh());
+  aMesh->myNamedPointCoords(new TNamedPointCoords());
+  aMesh->myNbPoints = aMEDMesh->getNumberOfNodes();
   aMesh->myDim = aMEDMesh->getSpaceDimension();
-  aMesh->myPointsDim.resize(aMesh->myDim);
   aMesh->myName = aMeshName.in();
   aMesh->myMesh = aMEDMesh;
 
+  TNamedPointCoords& aCoords = aMesh->myNamedPointCoords;
+  aCoords.Init(aMesh->myNbPoints,aMesh->myDim);
+
   if(MYDEBUG) MESSAGE("VISU_MEDFieldConvertor::Build - aMeshName = "<<aMeshName<<"; myDim = "<<aMesh->myDim);
 
   TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
@@ -354,10 +365,8 @@ VISU_MEDFieldConvertor::Build()
   aField->myName = aFieldName.in();
   aField->myEntity = aVEntity;
   aField->myMeshName = aMeshName.in();
-  aField->myNbComp = myField->getNumberOfComponents();
+  aField->InitArrays(myField->getNumberOfComponents());
   aField->myDataSize = aMeshOnEntity->myNbCells * aField->myNbComp;
-  aField->myCompNames.resize(aField->myNbComp);
-  aField->myUnitNames.resize(aField->myNbComp);
 
   if(MYDEBUG) MESSAGE("VISU_MEDFieldConvertor::Build - aMeshName = "<<aMeshName<<"; myDim = "<<aMesh->myDim);
 
@@ -377,6 +386,7 @@ VISU_MEDFieldConvertor::Build()
 }
 
 
+//---------------------------------------------------------------
 VISU_Convertor* 
 VISU_MEDConvertor::Build() 
 {
@@ -394,11 +404,14 @@ VISU_MEDConvertor::Build()
   return Build(aTimeStampIterator);
 }
 
+
 namespace{
 
   using namespace boost;
 
-  struct TSObjectByName{
+  //---------------------------------------------------------------
+  struct TSObjectByName
+  {
     std::string myName;
     typedef tuple<SALOMEDS::SObject_var> TRet;
 
@@ -421,7 +434,10 @@ namespace{
 
   };
 
-  struct TMeshByName{
+
+  //---------------------------------------------------------------
+  struct TMeshByName
+  {
     std::string myName;
     typedef tuple<SALOME_MED::MESH_var,SALOMEDS::SObject_var> TRet;
 
@@ -445,6 +461,8 @@ namespace{
     }
   };
 
+
+  //---------------------------------------------------------------
   template<typename TFun>
   typename TFun::TRet
   Find(SALOMEDS::SObject_ptr theStartSObj, 
@@ -466,6 +484,8 @@ namespace{
 
 }
 
+
+//---------------------------------------------------------------
 VISU_Convertor* 
 VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
 {
@@ -498,11 +518,15 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
 
       PCMesh aMesh = myMeshMap[aMeshName.in()](new TCMesh());
       SALOME_MED::MESH_var aMEDMesh = boost::get<0>(aMeshByNameRet);
+      aMesh->myNamedPointCoords(new TNamedPointCoords());
+      aMesh->myNbPoints = aMEDMesh->getNumberOfNodes();
       aMesh->myDim = aMEDMesh->getSpaceDimension();
       aMesh->myName = aMeshName.in();
-      aMesh->myPointsDim.resize(aMesh->myDim);
       aMesh->myMesh = aMEDMesh;
 
+      TNamedPointCoords& aCoords = aMesh->myNamedPointCoords;
+      aCoords.Init(aMesh->myNbPoints,aMesh->myDim);
+
       if(MYDEBUG) 
        MESSAGE("VISU_MEDConvertor::Build - aMeshName = "<<aMeshName<<"; myDim = "<<aMesh->myDim);
 
@@ -556,12 +580,16 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
            GetCellsSize(aNbCells,aCellsSize,aMeshOnSupport,aVEntity);
          
          if(aNbCells > 0){
-           PCMeshOnEntity aMeshOnEntity = aMeshOnEntityMap[aVEntity](new TCMeshOnEntity());
-           aMeshOnEntity->myMeshName = aMeshName.in();
-           aMeshOnEntity->myEntity = aVEntity;
-           aMeshOnEntity->myNbCells = aNbCells;
-           aMeshOnEntity->myCellsSize = aCellsSize;
-           aMeshOnEntity->mySupport = aMEDSupport;
+           TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.find(aVEntity);
+           if(aMeshOnEntityMapIter == aMeshOnEntityMap.end()){
+             PCMeshOnEntity aMeshOnEntity(new TCMeshOnEntity());
+             aMeshOnEntity->myMeshName = aMeshName.in();
+             aMeshOnEntity->myEntity = aVEntity;
+             aMeshOnEntity->myNbCells = aNbCells;
+             aMeshOnEntity->myCellsSize = aCellsSize;
+             aMeshOnEntity->mySupport = aMEDSupport;
+             aMeshOnEntityMap[aVEntity] = aMeshOnEntity;
+           }
          }
        }
       }
@@ -597,20 +625,25 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
            GetCellsSize(aNbCells,aCellsSize,aMEDFamily);
 
          if(MYDEBUG) 
-           MESSAGE("VISU_MEDConvertor::Build - aFamily = '"<<aSupportName<<
-                   "'; anIsOnAllElements = "<<anIsOnAllElements<<
+           MESSAGE("VISU_MEDConvertor::Build "<<
+                   "- aFamily = '"<<aSupportName<<"'"<<
+                   "; anIsOnAllElements = "<<anIsOnAllElements<<
                    "; aVEntity = "<<aVEntity<<
                    "; aNbCells = "<<aNbCells);
 
          if(aNbCells > 0){
            TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap;
-           PCFamily aFamily = aFamilyMap[aSupportName.in()](new TCFamily());
-           aFamily->myName = aSupportName.in();
-           aFamily->myEntity = aVEntity;
-           aFamily->myNbCells = aNbCells;
-           aFamily->myCellsSize = aCellsSize;
-           aFamily->myId = aMEDFamily->getIdentifier();
-           aFamily->myFamily = aMEDFamily;
+           TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.find(aSupportName.in());
+           if(aFamilyMapIter == aFamilyMap.end()){
+             PCFamily aFamily(new TCFamily());
+             aFamily->myEntity = aVEntity;
+             aFamily->myNbCells = aNbCells;
+             aFamily->myCellsSize = aCellsSize;
+             aFamily->myId = aMEDFamily->getIdentifier();
+             aFamily->myName = aSupportName.in();
+             aFamily->myFamily = aMEDFamily;
+             aFamilyMap[aSupportName.in()] = aFamily;
+           }
          }
        }
       }
@@ -638,36 +671,30 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
          CORBA::Boolean anIsOnAllElements = aMEDSupport->isOnAllElements();
 
          if(MYDEBUG) 
-           MESSAGE("VISU_MEDConvertor::Build - aGroup = '"<<aSupportName<<
-                   "'; anIsOnAllElements = "<<anIsOnAllElements<<
+           MESSAGE("VISU_MEDConvertor::Build "<<
+                   "- aGroup = '"<<aSupportName<<"'"<<
+                   "; anIsOnAllElements = "<<anIsOnAllElements<<
                    "; aVEntity = "<<aVEntity);
 
          PCGroup aGroup(new TCGroup());
          aGroup->myGroup = aMEDGroup;
-         aGroup->myName = aSupportName.in();
-         aGroup->myMeshName = aMeshName.in();
-         VISU::TFamilyAndEntitySet& aFamilyAndEntitySet = aGroup->myFamilyAndEntitySet;
+         VISU::TFamilySet& aFamilySet = aGroup->myFamilySet;
          
          SALOME_MED::Family_array_var aFamilies = aMEDGroup->getFamilies();
          int iFamilyEnd = aFamilies->length();
          for(int iFamaily = 0; iFamaily < iFamilyEnd; iFamaily++){
            SALOME_MED::FAMILY_var aMEDFamily = aFamilies[iFamaily];
            CORBA::String_var aFamilyName = aMEDFamily->getName();
-           PFamily aFamily = FindFamily(aMesh,aFamilyName.in());
+           TFindFamilyOnEntity aFindFamilyOnEntity = 
+             FindFamilyOnEntity(aMeshName.in(),aVEntity,aFamilyName.in());
+           PCFamily aFamily = boost::get<2>(aFindFamilyOnEntity);
            if(MYDEBUG) MESSAGE("VISU_MEDConvertor::Build - aGroup - aFamilyName = '"<<aFamilyName.in()<<"' = "<<bool(aFamily));
            if(aFamily){
-             TFamilyAndEntity aFamilyAndEntity(aFamilyName.in(),aFamily->myEntity);
-             aFamilyAndEntitySet.insert(aFamilyAndEntity);
-             
-             aGroup->myNbCells += aFamily->myNbCells;
-             aGroup->myCellsSize += aFamily->myCellsSize;
-             
-             VISU::TBindGroups& aBindGroups = aFamily->myGroups;
-             aBindGroups.insert(aSupportName.in());
+             aFamilySet.insert(aFamily);
            }
          }
          
-         if(!aGroup->myFamilyAndEntitySet.empty()){
+         if(!aFamilySet.empty()){
            TGroupMap& aGroupMap = aMesh->myGroupMap;
            aGroupMap[aSupportName.in()] = aGroup;
          }
@@ -731,12 +758,10 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
          aField->myName = aFieldName.in();
          aField->myEntity = anEntity;
          aField->myMeshName = aMeshName.in();
-         aField->myNbComp = aMEDField->getNumberOfComponents();
+         aField->InitArrays(aMEDField->getNumberOfComponents());
          aField->myDataSize = aMeshOnEntity->myNbCells * aField->myNbComp;
          if(MYDEBUG) 
            MESSAGE("VISU_MEDConvertor::Build - aMeshOnEntity->myNbCells = "<<aMeshOnEntity->myNbCells);
-         aField->myCompNames.resize(aField->myNbComp);
-         aField->myUnitNames.resize(aField->myNbComp);
        }else
          aField = aFieldMapIter->second;
 
@@ -757,6 +782,7 @@ VISU_MEDConvertor::Build(SALOME_MED::MED_ptr theMED)
 }
  
 
+//---------------------------------------------------------------
 VISU_Convertor* 
 VISU_MEDConvertor::Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator)
 {
@@ -784,48 +810,88 @@ VISU_MEDConvertor::Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator)
     CORBA::String_var aMeshName = aMEDMesh->getName();
     CORBA::String_var aFieldName = aMEDField->getName();
 
-    PCMesh aMesh = myMeshMap[aMeshName.in()](new TCMesh());
-    aMesh->myDim = aMEDMesh->getSpaceDimension();
-    aMesh->myPointsDim.resize(aMesh->myDim);
-    aMesh->myName = aMeshName.in();
-    aMesh->myNbPoints = aMEDMesh->getNumberOfNodes();
-    aMesh->myMesh = aMEDMesh;
-    if(MYDEBUG) MESSAGE("VISU_MEDConvertor::Build - aMeshName = '"<<aMeshName<<"'; myDim = "<<aMesh->myDim);
+    PCMesh aMesh;
+    TMeshMap::const_iterator aMeshMapIter = myMeshMap.find(aMeshName.in());
+    if(aMeshMapIter == myMeshMap.end()){
+      aMesh.reset(new TCMesh());
+      aMesh->myNamedPointCoords(new TNamedPointCoords());
+      aMesh->myNbPoints = aMEDMesh->getNumberOfNodes();
+      aMesh->myDim = aMEDMesh->getSpaceDimension();
+      aMesh->myName = aMeshName.in();
+      aMesh->myMesh = aMEDMesh;
+      
+      TNamedPointCoords& aCoords = aMesh->myNamedPointCoords;
+      aCoords.Init(aMesh->myNbPoints,aMesh->myDim);
 
+      myMeshMap[aMeshName.in()] = aMesh;
+
+      if(MYDEBUG) 
+       MESSAGE("VISU_MEDConvertor::Build "<<
+               "- aMeshName = '"<<aMeshName<<"'"<<
+               "; aDim = "<<aMesh->myDim);
+    }else
+      aMesh = aMeshMapIter->second;
+
+    PCMeshOnEntity aMeshOnEntity;
     TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
-    PCMeshOnEntity aMeshOnEntity = aMeshOnEntityMap[aVEntity](new TCMeshOnEntity());
-    aMeshOnEntity->myEntity = aVEntity;
-    aMeshOnEntity->myMeshName = aMeshName.in();
-    aMeshOnEntity->mySupport = aMEDSupport;
+    TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.find(aVEntity);
+    if(aMeshOnEntityMapIter == aMeshOnEntityMap.end()){
+      aMeshOnEntity.reset(new TCMeshOnEntity());
+      aMeshOnEntity->myEntity = aVEntity;
+      aMeshOnEntity->myMeshName = aMeshName.in();
+      aMeshOnEntity->mySupport = aMEDSupport;
+      aMeshOnEntityMap[aVEntity] = aMeshOnEntity;
+    }else
+      aMeshOnEntity = aMeshOnEntityMapIter->second;
+
+    PCMeshOnEntity aMeshOnEntity2;
     if(aVEntity == NODE_ENTITY){
-      PCMeshOnEntity aMeshOnEntity2 = aMeshOnEntityMap[CELL_ENTITY](new TCMeshOnEntity());
-      *aMeshOnEntity2 = *aMeshOnEntity;
-      aMeshOnEntity->myEntity = CELL_ENTITY;
-      GetCellsSize(aMesh,aMEDMesh,CELL_ENTITY);
+      TEntity aVEntity2 = CELL_ENTITY;
+      TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter2 = aMeshOnEntityMap.find(aVEntity2);
+      if(aMeshOnEntityMapIter2 == aMeshOnEntityMap.end()){
+       aMeshOnEntity2.reset(new TCMeshOnEntity());
+       aMeshOnEntity2->myEntity = aVEntity2;
+       aMeshOnEntity2->myMeshName = aMeshName.in();
+       aMeshOnEntity2->mySupport = aMEDSupport;
+       aMeshOnEntityMap[aVEntity2] = aMeshOnEntity2;
+      }else
+       aMeshOnEntity2 = aMeshOnEntityMapIter2->second;
+      GetCellsSize(aMesh,aMEDMesh,aVEntity2);
     }else{
-      PCMeshOnEntity aMeshOnEntity2 = aMeshOnEntityMap[NODE_ENTITY](new TCMeshOnEntity());
-      *aMeshOnEntity2 = *aMeshOnEntity;
-      aMeshOnEntity->myEntity = NODE_ENTITY;
-      GetCellsSize(aMesh,aMEDMesh,NODE_ENTITY);
+      TEntity aVEntity2 = NODE_ENTITY;
+      TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter2 = aMeshOnEntityMap.find(aVEntity2);
+      if(aMeshOnEntityMapIter2 == aMeshOnEntityMap.end()){
+       aMeshOnEntity2.reset(new TCMeshOnEntity());
+       aMeshOnEntity2->myEntity = aVEntity2;
+       aMeshOnEntity2->myMeshName = aMeshName.in();
+       aMeshOnEntity2->mySupport = aMEDSupport;
+       aMeshOnEntityMap[aVEntity2] = aMeshOnEntity2;
+      }else
+       aMeshOnEntity2 = aMeshOnEntityMapIter2->second;
+      GetCellsSize(aMesh,aMEDMesh,aVEntity2);
     }
+
     GetCellsSize(aMesh,aMEDMesh,aVEntity);
-    TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
-    TFieldMap::iterator aFieldMapIter = aFieldMap.find(aFieldName.in());
+
     PCField aField;
+    TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
+    TFieldMap::const_iterator aFieldMapIter = aFieldMap.find(aFieldName.in());
     if(aFieldMapIter == aFieldMap.end()){
-      aField = aFieldMap[aFieldName.in()](new TCField());
-      CORBA::Short iField = mySObject->Tag();
-      aField->myId = iField;
+      aField.reset(new TCField());
+      aField->myId = mySObject->Tag();
       aField->myName = aFieldName.in();
       aField->myEntity = aVEntity;
       aField->myMeshName = aMeshName.in();
-      aField->myNbComp = aMEDField->getNumberOfComponents();
+      aField->InitArrays(aMEDField->getNumberOfComponents());
       aField->myDataSize = aMeshOnEntity->myNbCells * aField->myNbComp;
+      
+      aFieldMap[aFieldName.in()] = aField;
+
       if(MYDEBUG) 
        MESSAGE("VISU_MEDConvertor::Build - aMeshOnEntity->myNbCells = "<<aMeshOnEntity->myNbCells);
-      aField->myCompNames.resize(aField->myNbComp);
-      aField->myUnitNames.resize(aField->myNbComp);
-    }
+    }else
+      aField = aFieldMapIter->second;
+
     TValField& aValField = aField->myValField;
     int anId = aMEDField->getIterationNumber();
     PCValForTime aValForTime = aValField[anId](new TCValForTime());
@@ -834,50 +900,75 @@ VISU_MEDConvertor::Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator)
     aValForTime->myTime = TTime(aDT,"");
     aValForTime->myField = aMEDField;
     if(MYDEBUG) 
-      MESSAGE("VISU_MEDConvertor::Build - aMeshName = '"<<aMeshName<<
-             "'; myEntity = "<<aVEntity<<"; myTime = "<<aDT);
+      MESSAGE("VISU_MEDConvertor::Build "<<
+             "- aMeshName = '"<<aMeshName<<"'"<<
+             "; myEntity = "<<aVEntity<<
+             "; myTime = "<<aDT<<
+             "; anId = "<<anId);
   }
   return this; 
 }
 
 
+//---------------------------------------------------------------
 int
-VISU_MEDConvertor::LoadMeshOnEntity(VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                                   const string& theFamilyName)
+VISU_MEDConvertor
+::LoadMeshOnEntity(VISU::PMeshImpl theMesh,
+                  VISU::PMeshOnEntityImpl theMeshOnEntity)
 {
-  //Main part of code
-  const string& aMeshName = theMeshOnEntity->myMeshName;
   const TEntity& aVEntity = theMeshOnEntity->myEntity;
-  PCMesh aMesh = myMeshMap[aMeshName];
-  int isPointsUpdated;
+  int isPointsUpdated = 0, isCellsOnEntityUpdated = 0;
   if(aVEntity == NODE_ENTITY) 
-    isPointsUpdated = LoadPoints(aMesh,theFamilyName);
-  else 
-    isPointsUpdated = LoadPoints(aMesh);
-  int isCellsOnEntityUpdated = LoadCellsOnEntity(aMesh,theMeshOnEntity,theFamilyName);
+    isPointsUpdated += LoadPoints(theMesh);
+  else{
+    isPointsUpdated += LoadPoints(theMesh);
+    isCellsOnEntityUpdated += LoadCellsOnEntity(theMesh,theMeshOnEntity);
+  }
 
   return (isPointsUpdated || isCellsOnEntityUpdated);
 }
  
  
+//---------------------------------------------------------------
+int
+VISU_MEDConvertor
+::LoadFamilyOnEntity(VISU::PMeshImpl theMesh,
+                    VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                    VISU::PFamilyImpl theFamily)
+{
+  const TEntity& anEntity = theMeshOnEntity->myEntity;
+  int isPointsUpdated = 0, isCellsOnEntityUpdated = 0;
+  if(anEntity == NODE_ENTITY){
+    isPointsUpdated += LoadPointsOnFamily(theMesh,theFamily);
+  }else{
+    isPointsUpdated += LoadPoints(theMesh);
+    isCellsOnEntityUpdated += LoadCellsOnFamily(theMesh,theMeshOnEntity,theFamily);
+  }
+
+  return (isPointsUpdated || isCellsOnEntityUpdated);
+}
+
+
+//---------------------------------------------------------------
 int 
-VISU_MEDConvertor::LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
-                                  const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet)
+VISU_MEDConvertor
+::LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
+                 const VISU::TFamilySet& theFamilySet)
 {
   //Main part of code
   int isPointsUpdated = 0;
   int isCellsOnEntityUpdated = 0;
-  VISU::TFamilyAndEntitySet::const_iterator aFamilyAndEntitySetIter = theFamilyAndEntitySet.begin();
-  for(; aFamilyAndEntitySetIter != theFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++){
-    const string& aFamilyName = aFamilyAndEntitySetIter->first;
-    const VISU::TEntity& aVEntity = aFamilyAndEntitySetIter->second;
+  TFamilySet::const_iterator aFamilyIter = theFamilySet.begin();
+  for(; aFamilyIter != theFamilySet.end(); aFamilyIter++){
+    PCFamily aFamily = *aFamilyIter;
+    const VISU::TEntity& aVEntity = aFamily->myEntity;
     PCMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[aVEntity];
     if(aVEntity == VISU::NODE_ENTITY){
-      isPointsUpdated += LoadPoints(theMesh,aFamilyName);
+      isPointsUpdated += LoadPointsOnFamily(theMesh,aFamily);
       isCellsOnEntityUpdated += LoadCellsOnEntity(theMesh,aMeshOnEntity);
     }else{
       isPointsUpdated += LoadPoints(theMesh);
-      isCellsOnEntityUpdated += LoadCellsOnEntity(theMesh,aMeshOnEntity,aFamilyName);
+      isCellsOnEntityUpdated += LoadCellsOnFamily(theMesh,aMeshOnEntity,aFamily);
     }
   }
 
@@ -885,11 +976,13 @@ VISU_MEDConvertor::LoadMeshOnGroup(VISU::PMeshImpl theMesh,
 }
 
 
+//---------------------------------------------------------------
 int 
-VISU_MEDConvertor::LoadFieldOnMesh(VISU::PMeshImpl theMesh, 
-                                  VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                                  VISU::PFieldImpl theField, 
-                                  VISU::PValForTimeImpl theValForTime)
+VISU_MEDConvertor
+::LoadValForTimeOnMesh(VISU::PMeshImpl theMesh, 
+                      VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                      VISU::PFieldImpl theField, 
+                      VISU::PValForTimeImpl theValForTime)
 {
   //Main part of code
   int isPointsUpdated = LoadPoints(theMesh);
@@ -899,209 +992,298 @@ VISU_MEDConvertor::LoadFieldOnMesh(VISU::PMeshImpl theMesh,
   return (isPointsUpdated || isCellsOnEntityUpdated || isFieldUpdated);
 }
 
+
+//---------------------------------------------------------------
 int 
-VISU_MEDConvertor::LoadPoints(VISU::PCMesh theMesh, 
-                             const string& theFamilyName)
+VISU_MEDConvertor
+::LoadPoints(VISU::PCMesh theMesh)
 {
   //Check on existing family
   PCMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[VISU::NODE_ENTITY];
-  PCFamily aFamily = GetFamily(aMeshOnEntity,theFamilyName);
+  
   //Check on loading already done
-  bool isPointsLoaded = !theMesh->myPointsCoord.empty();
-  if(isPointsLoaded) 
-    if(!aFamily) 
-      return 0;
-    else if(!aFamily->mySubMesh.empty()) 
-      return 0;
-
-  if(MYDEBUG) 
-    MESSAGE("LoadPoints - isPointsLoaded = "<<isPointsLoaded<<"; theFamilyName = '"<<theFamilyName<<"'");
-
+  if(theMesh->myIsDone) 
+    return 0;
+  
   SALOME_MED::MESH_var& aMedMesh = theMesh->myMesh;
-  int iNumElemEnd = aMedMesh->getNumberOfNodes();
-  TMeshImpl::TPointsCoord& aPointsCoord = theMesh->myPointsCoord;
+  int aDim = theMesh->myDim;
+  TNamedPointCoords& aCoords = theMesh->myNamedPointCoords;
+  int aNbElem = aCoords.GetNbPoints();
 
-  if(MYDEBUG) MESSAGE("LoadPoints - iNumElemEnd = "<<iNumElemEnd);
+  if(MYDEBUG) MESSAGE("LoadPoints - aNbElem = "<<aNbElem);
 
-  if (iNumElemEnd <= 0) 
+  if(aNbElem <= 0) 
     throw std::runtime_error("LoadPoints >> There is no points in the mesh !!!");
 
-  aPointsCoord.resize(theMesh->myDim*iNumElemEnd,0.0);
-  SALOME_MED::double_array_var coord = aMedMesh->getCoordinates(SALOME_MED::MED_FULL_INTERLACE);
-  if(!isPointsLoaded){
-    for (int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++) 
-      for(int iDim = 0, iNumElem2Dim = iNumElem*theMesh->myDim; iDim < theMesh->myDim; iDim++, iNumElem2Dim++)
-       aPointsCoord[iNumElem2Dim] = coord[iNumElem2Dim];
+  SALOME_MED::double_array_var aCCoord = aMedMesh->getCoordinates(SALOME_MED::MED_FULL_INTERLACE);
+  for(int iElem = 0, anId = 0; iElem < aNbElem; iElem++){
+    VISU::TCoordSlice aCoordSlice = aCoords.GetCoordSlice(iElem);
+    for(int iDim = 0; iDim < aDim; iDim++)
+      aCoordSlice[iDim] = aCCoord[anId++];
+  }
+  
+  if(MYDEBUG) MESSAGE("LoadPoints - Filling aMeshOnEntity with type NODE_ENTITY");
+  
+  TGeom2SubMesh& aGeom2SubMesh = aMeshOnEntity->myGeom2SubMesh;
+  PSubMeshImpl aSubMesh = aGeom2SubMesh[VISU::ePOINT1](new TCSubMesh());
 
-    if(MYDEBUG) MESSAGE("LoadPoints - Filling aMeshOnEntity with type NODE_ENTITY");
+  aSubMesh->myNbCells = theMesh->myNbPoints;
+  aSubMesh->myCellsSize = 2*theMesh->myNbPoints;
 
-    TMeshOnEntityImpl::TConnForCellType& aConnForCellType = aMeshOnEntity->myCellsConn[VTK_VERTEX];
-    aConnForCellType.resize(iNumElemEnd);
-    for (int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++)
-      aConnForCellType[iNumElem] = TMeshOnEntityImpl::TConnect(1,iNumElem);
-  }
-  if(aFamily){
-    if(MYDEBUG) MESSAGE("LoadPoints - Filling aFamily SubMesh");
-
-    SALOME_MED::FAMILY_var aMedFamily = aFamily->myFamily;
-    CORBA::Boolean anIsOnAllElements = aMedFamily->isOnAllElements();
-    TFamilyImpl::TSubMeshOnCellType& aSubMeshOnCellType = aFamily->mySubMesh[VTK_VERTEX];
-
-    if(!anIsOnAllElements){
-      SALOME_MED::medGeometryElement_array_var aGeom = aMedFamily->getTypes();
-      SALOME_MED::long_array_var aCellNumForType = aMedFamily->getNumber(aGeom[0]);
-      int iNumElemEndTmp = iNumElemEnd;
-      iNumElemEnd = aCellNumForType->length();
-      for (int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++) {
-       int tmp = aCellNumForType[iNumElem]-1;
-       if(0 > tmp || tmp >= iNumElemEndTmp) {
-         static QString aString;
-         aString.sprintf("LoadPoints >> iNumElemEndTmp(%d) <= aCellNumForType[%d]=%d < 0 !!!",iNumElemEnd,iNumElem,tmp);
-         throw std::runtime_error(aString.latin1());
-       }
-       aSubMeshOnCellType.insert(tmp);
-      }
-    }else{
-      for(int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++){
-       aSubMeshOnCellType.insert(iNumElem);
+  TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+  aCell2Connect.resize(aNbElem);
+  for(int iElem = 0; iElem < aNbElem; iElem++)
+    aCell2Connect[iElem] = TConnect(1,iElem);
+  
+  theMesh->myIsDone = true;
+
+  return 1;
+}
+
+
+//---------------------------------------------------------------
+int 
+VISU_MEDConvertor
+::LoadPointsOnFamily(VISU::PCMesh theMesh, 
+                    VISU::PCFamily theFamily)
+{
+  PCMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[VISU::NODE_ENTITY];
+
+  if(theFamily->myIsDone) 
+    return 0;
+
+  TNamedPointCoords& aCoords = theMesh->myNamedPointCoords;
+  int aNbElem = aCoords.GetNbPoints();
+
+  SALOME_MED::FAMILY_var aMedFamily = theFamily->myFamily;
+  CORBA::Boolean anIsOnAllElements = aMedFamily->isOnAllElements();
+  TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[VISU::ePOINT1];
+  
+  if(!anIsOnAllElements){
+    SALOME_MED::medGeometryElement_array_var aGeom = aMedFamily->getTypes();
+    SALOME_MED::long_array_var aCellNumForType = aMedFamily->getNumber(aGeom[0]);
+    int aMaxElemId = aNbElem;
+    aNbElem = aCellNumForType->length();
+    for(int iElem = 0; iElem < aNbElem; iElem++){
+      int aTmp = aCellNumForType[iElem]-1;
+      if(0 > aTmp || aTmp >= aMaxElemId){
+       static QString aString;
+       aString.sprintf("LoadPointsOnFamily - aMaxElemId(%d) <= aCellNumForType[%d]=%d < 0",aMaxElemId,iElem,aTmp);
+       throw std::runtime_error(aString.latin1());
       }
+      aSubMeshID.push_back(aTmp);
+    }
+  }else{
+    for(int iElem = 0; iElem < aNbElem; iElem++){
+      aSubMeshID.push_back(iElem);
     }
   }
+  
+  theFamily->myIsDone = true;
+
   return 1;
 }
 
 
+//---------------------------------------------------------------
 int 
-VISU_MEDConvertor::LoadCellsOnEntity(VISU::PCMesh theMesh,
-                                    VISU::PCMeshOnEntity theMeshOnEntity, 
-                                    const string& theFamilyName)
+VISU_MEDConvertor
+::LoadCellsOnEntity(VISU::PCMesh theMesh,
+                   VISU::PCMeshOnEntity theMeshOnEntity)
 {
-  //Check on existing family
-  PCFamily aFamily = GetFamily(theMeshOnEntity,theFamilyName);
-  //Check on loading already done
-  bool isCellsLoaded = !theMeshOnEntity->myCellsConn.empty();
-  if(isCellsLoaded) 
-    if(!aFamily) 
-      return 0;
-    else if(!aFamily->mySubMesh.empty()) 
-      return 0;
+  if(theMeshOnEntity->myIsDone) 
+    return 0;
 
   SALOME_MED::SUPPORT_var& aMedSupport = theMeshOnEntity->mySupport;
   SALOME_MED::MESH_var aMedMesh = aMedSupport->getMesh();
-  if(MYDEBUG) {
-    MESSAGE("LoadCellsOnEntity - theFamilyName = '"<<theFamilyName<<"'");
-    MESSAGE("LoadCellsOnEntity - isCellsLoaded = "<<isCellsLoaded<<"; isFamilyPresent = "<<bool(aFamily));
-  }
 
   //Main part of code
   SALOME_MED::medGeometryElement* aGeomElems;
   const TEntity& aVEntity = theMeshOnEntity->myEntity;
   int iGeomEnd = GetEntity2Geom(aVEntity,aGeomElems);
   const SALOME_MED::medEntityMesh& aMEntity = VTKEntityToMED(aVEntity);
-  int aNbPoints = theMesh->myPointsCoord.size()/theMesh->myDim;
-  if(!isCellsLoaded){
-    for(int iGeom = 0, aCounter = 0; iGeom < iGeomEnd; iGeom++){
-      SALOME_MED::medGeometryElement aGeom = aGeomElems[iGeom];
-      int aMNbNodes = MEDGeom2NbNodes(aGeom);
-      int aVGeom = MEDGeomToVTK(aGeom);
-      int aVNbNodes = VTKGeom2NbNodes(aVGeom);
-      int iNumElemEnd = aMedMesh->getNumberOfElements(aMEntity,aGeom);
-      if (iNumElemEnd > 0) {
-       SALOME_MED::long_array_var conn = 
-         aMedMesh->getConnectivity(SALOME_MED::MED_FULL_INTERLACE,SALOME_MED::MED_NODAL,aMEntity,aGeom);
-       TMeshOnEntityImpl::TConnForCellType& aConnForCellType = theMeshOnEntity->myCellsConn[aVGeom];
-       //APO - aConnForCellType.resize(iNumElemEnd);
-       vector<int> aConnect(aMNbNodes);
-       int aNbConnForElem = conn->length()/iNumElemEnd;
-       if(MYDEBUG) MESSAGE("LoadCellsOnEntity - aGeom = "<<aGeom<<
-                           "; iNumElemEnd = "<<iNumElemEnd<<
-                           "; aNbConnForElem = "<<aNbConnForElem);
-       for (int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++) {
-         VISU::TMeshOnEntityImpl::TConnect anArray(aVNbNodes);
-         for (int k = 0, kj = iNumElem*aNbConnForElem; k < aMNbNodes; k++) {
-           aConnect[k] = conn[kj+k] - 1;
-         }
-         switch(aGeom){
-         case SALOME_MED::MED_TETRA4 :
-         case SALOME_MED::MED_TETRA10 :
-           anArray[0] = aConnect[0];
-           anArray[1] = aConnect[1];
-           anArray[2] = aConnect[3];  
-           anArray[3] = aConnect[2];  
-           break;
-         case SALOME_MED::MED_PYRA5 :
-         case SALOME_MED::MED_PYRA13 :
-           anArray[0] = aConnect[0];
-           anArray[1] = aConnect[3];  
-           anArray[2] = aConnect[2];
-           anArray[3] = aConnect[1];  
-           anArray[4] = aConnect[4];
-           break;
-         default:
-           for (int k = 0; k < aVNbNodes; k++) 
-             anArray[k] = aConnect[k];
-         }
+  const TNamedPointCoords& aCoords = theMesh->myNamedPointCoords;
+  TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
+  int aNbPoints = aCoords.GetNbPoints();
+
+  for(int iGeom = 0, aCounter = 0; iGeom < iGeomEnd; iGeom++){
+    SALOME_MED::medGeometryElement aMGeom = aGeomElems[iGeom];
+    int aMNbNodes = MEDGeom2NbNodes(aMGeom);
+    VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+    int aVNbNodes = VISUGeom2NbNodes(aEGeom);
+    int aNbElem = aMedMesh->getNumberOfElements(aMEntity,aMGeom);
+    if (aNbElem > 0) {
+      using namespace SALOME_MED;
+      SALOME_MED::long_array_var conn = 
+       aMedMesh->getConnectivity(MED_FULL_INTERLACE,MED_NODAL,aMEntity,aMGeom);
+      PSubMeshImpl aSubMesh = aGeom2SubMesh[aEGeom](new TCSubMesh());
+
+      aSubMesh->myNbCells = aNbElem;      
+      aSubMesh->myCellsSize = aNbElem*(aVNbNodes+1);
+
+      TCell2Connect& aCell2Connect = aSubMesh->myCell2Connect;
+      std::vector<int> aConnect(aMNbNodes);
+      int aNbConnForElem = conn->length()/aNbElem;
+
+      if(MYDEBUG) MESSAGE("LoadCellsOnEntity - aMGeom = "<<aMGeom<<
+                         "; aNbElem = "<<aNbElem<<
+                         "; aMNbNodes = "<<aMNbNodes<<
+                         "; aVNbNodes = "<<aVNbNodes<<
+                         "; aNbConnForElem = "<<aNbConnForElem);
+
+      for(int iElem = 0; iElem < aNbElem; iElem++){
+       VISU::TConnect anArray(aVNbNodes);
+       for(int k = 0, kj = iElem*aNbConnForElem; k < aMNbNodes; k++)
+         aConnect[k] = conn[kj+k] - 1;
+
+       switch(aMGeom){
+#if !(defined(VTK_QUADRATIC_EDGE) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+       case SALOME_MED::MED_SEG3:
+         anArray[0] = aConnect[0];
+         anArray[2] = aConnect[1];  
+         
+         anArray[1] = aConnect[2];
+         break;
+#endif
+#if !(defined(VTK_QUADRATIC_TRIANGLE) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+       case SALOME_MED::MED_TRIA6:
+         anArray[0] = aConnect[0];
+         anArray[2] = aConnect[1];  
+         anArray[4] = aConnect[2];  
+         
+         anArray[1] = aConnect[3];
+         anArray[3] = aConnect[4];  
+         anArray[5] = aConnect[5];  
+         break;
+#endif
+#if !(defined(VTK_QUADRATIC_QUAD) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+       case SALOME_MED::MED_QUAD8:
+         anArray[0] = aConnect[0];
+         anArray[2] = aConnect[1];  
+         anArray[4] = aConnect[2];  
+         anArray[6] = aConnect[3];  
+         
+         anArray[1] = aConnect[4];
+         anArray[3] = aConnect[5];  
+         anArray[5] = aConnect[6];  
+         anArray[7] = aConnect[7];  
+         break;
+#endif
+#if (defined(VTK_QUADRATIC_TETRA) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+       case SALOME_MED::MED_TETRA10 :
+#endif
+       case SALOME_MED::MED_TETRA4 :
+         anArray[0] = aConnect[0];
+         anArray[1] = aConnect[1];
+         anArray[2] = aConnect[3];  
+         anArray[3] = aConnect[2];  
+         break;
+#if (defined(VTK_QUADRATIC_PYRAMID) && defined(VISU_USE_VTK_QUADRATIC)) && defined(VISU_ENABLE_QUADRATIC)
+       case SALOME_MED::MED_PYRA13:
+#endif
+       case SALOME_MED::MED_PYRA5 :
+         anArray[0] = aConnect[0];
+         anArray[1] = aConnect[3];  
+         anArray[2] = aConnect[2];
+         anArray[3] = aConnect[1];  
+         anArray[4] = aConnect[4];
+         break;
+       default:
          for (int k = 0; k < aVNbNodes; k++) 
-           if(anArray[k] < 0 || aNbPoints <= anArray[k]){
-             static QString aString;
-             aString.sprintf("ImportCells >> aNbPoints(%d) <= anArray[%d][%d]=%d < 0 !!!",aNbPoints,iNumElem,k,anArray[k]);
-             throw std::runtime_error(aString.latin1());
-           }
-         aConnForCellType.push_back(anArray);
+           anArray[k] = aConnect[k];
        }
-       //Workaround for MED Component data structure
-       int aSize = aConnForCellType.size();
-       theMeshOnEntity->myCellsFirstIndex[aGeom] = TCMeshOnEntity::TIndexAndSize(aCounter,aSize);
-       aCounter += aSize;
-      }
-    }
-  }
-  //Filling aFamily SubMesh
-  if(aFamily){
-    SALOME_MED::FAMILY_var aMedFamily = aFamily->myFamily;
-    CORBA::Boolean anIsOnAllElements = aMedFamily->isOnAllElements();
-    if(!anIsOnAllElements){
-      SALOME_MED::medGeometryElement_array_var aGeoms = aMedFamily->getTypes();
-      iGeomEnd = aGeoms->length();
-      if(MYDEBUG) MESSAGE("LoadCellsOnEntity - iGeomEnd = "<<iGeomEnd);
-      for (int iGeom = 0; iGeom < iGeomEnd; iGeom++) {
-       SALOME_MED::medGeometryElement aGeom = aGeoms[iGeom];
-       SALOME_MED::long_array_var aCellNumForType = aMedFamily->getNumber(aGeom);
-       int aVGeom = MEDGeomToVTK(aGeom);
-       TFamilyImpl::TSubMeshOnCellType& aSubMeshOnCellType = aFamily->mySubMesh[aVGeom]; 
-       int iNumElemEndTmp = theMeshOnEntity->myCellsConn[aVGeom].size();
-       int iNumElemEnd = aCellNumForType->length();
-       int aCounter = theMeshOnEntity->myCellsFirstIndex[aGeom].first;
-       if(MYDEBUG) 
-         MESSAGE("LoadCellsOnEntity - aGeom = "<<aGeom<<
-                 "; iNumElemEnd = "<<iNumElemEnd<<
-                 "; aCounter = "<<aCounter);
-       for (int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++) {
-         int tmp = aCellNumForType[iNumElem]-aCounter-1;
-         if(0 > tmp || tmp >= iNumElemEndTmp) {
+       for (int k = 0; k < aVNbNodes; k++) 
+         if(anArray[k] < 0 || aNbPoints <= anArray[k]){
            static QString aString;
-           aString.sprintf("LoadCellsOnEntity >> iNumElemEndTmp(%d) <= aCellNumForType[%d]=%d < 0 !!!",iNumElemEndTmp,iNumElem,tmp);
+           aString.sprintf("ImportCells >> aNbPoints(%d) <= anArray[%d][%d]=%d < 0 !!!",aNbPoints,iElem,k,anArray[k]);
            throw std::runtime_error(aString.latin1());
          }
-         aSubMeshOnCellType.insert(tmp);
-       }
+       aCell2Connect.push_back(anArray);
       }
-    }else{
-      const TMeshOnEntityImpl::TCellsConn& aCellsConn = theMeshOnEntity->myCellsConn;
-      TMeshOnEntityImpl::TCellsConn::const_iterator aCellsConnIter = aCellsConn.begin();
-      for(; aCellsConnIter != aCellsConn.end(); aCellsConnIter++){
-       int aVGeom = aCellsConnIter->first;
-       const TMeshOnEntityImpl::TConnForCellType& aConnForCellType = aCellsConnIter->second;
-       TFamilyImpl::TSubMeshOnCellType& aSubMeshOnCellType = aFamily->mySubMesh[aVGeom];
-       int iNumElemEnd = aConnForCellType.size();
-       for(int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++)
-         aSubMeshOnCellType.insert(iNumElem);
+      //Workaround for MED Component data structure
+      int aSize = aCell2Connect.size();
+      theMeshOnEntity->myCellsFirstIndex[aMGeom] = TCMeshOnEntity::TIndexAndSize(aCounter,aSize);
+      aCounter += aSize;
+    }
+  }
+
+  theMeshOnEntity->myIsDone = true;
+
+  return 1;
+}
+
+
+//---------------------------------------------------------------
+int 
+VISU_MEDConvertor
+::LoadCellsOnFamily(VISU::PCMesh theMesh,
+                   VISU::PCMeshOnEntity theMeshOnEntity, 
+                   VISU::PCFamily theFamily)
+{
+  if(theFamily->myIsDone) 
+    return 0;
+
+  const VISU::TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
+  SALOME_MED::FAMILY_var aMedFamily = theFamily->myFamily;
+  CORBA::Boolean anIsOnAllElements = aMedFamily->isOnAllElements();
+  if(!anIsOnAllElements){
+    SALOME_MED::medGeometryElement_array_var aGeoms = aMedFamily->getTypes();
+    int iGeomEnd = aGeoms->length();
+    if(MYDEBUG) MESSAGE("LoadCellsOnEntity - iGeomEnd = "<<iGeomEnd);
+    for(int iGeom = 0; iGeom < iGeomEnd; iGeom++){
+      SALOME_MED::medGeometryElement aMGeom = aGeoms[iGeom];
+      SALOME_MED::long_array_var aCellNumForType = aMedFamily->getNumber(aMGeom);
+      VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+
+      int iNumElemEndTmp = 0;
+      TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.find(aEGeom);
+      if(anIter != aGeom2SubMesh.end()){
+       const VISU::TSubMeshImpl& aSubMesh = anIter->second;
+       const VISU::TCell2Connect& anArray = aSubMesh.myCell2Connect;
+       iNumElemEndTmp = anArray.size();
+      }
+
+      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aEGeom]; 
+
+      int iNumElemEnd = aCellNumForType->length();
+      int aCounter = theMeshOnEntity->myCellsFirstIndex[aMGeom].first;
+      
+      if(MYDEBUG) 
+       MESSAGE("LoadCellsOnFamily "<<
+               "- aMGeom = "<<aMGeom<<
+               "; iNumElemEnd = "<<iNumElemEnd<<
+               "; aCounter = "<<aCounter);
+      
+      for(int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++){
+       int tmp = aCellNumForType[iNumElem]-aCounter-1;
+       if(0 > tmp || tmp >= iNumElemEndTmp){
+         static QString aString;
+         aString.sprintf("LoadCellsOnEntity >> iNumElemEndTmp(%d) <= aCellNumForType[%d]=%d < 0 !!!",iNumElemEndTmp,iNumElem,tmp);
+         throw std::runtime_error(aString.latin1());
+       }
+       aSubMeshID.push_back(tmp);
       }
     }
+  }else{
+    const VISU::TGeom2SubMesh& aGeom2SubMesh = theMeshOnEntity->myGeom2SubMesh;
+    VISU::TGeom2SubMesh::const_iterator anIter = aGeom2SubMesh.begin();
+    for(; anIter != aGeom2SubMesh.end(); anIter++){
+      VISU::EGeometry aEGeom = anIter->first;
+      const VISU::TSubMeshImpl& aSubMesh = anIter->second;
+      const VISU::TCell2Connect& aCell2Connect = aSubMesh.myCell2Connect;
+      TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aEGeom];
+      int iNumElemEnd = aCell2Connect.size();
+      for(int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++)
+       aSubMeshID.push_back(iNumElem);
+    }
   }
+  
+  theFamily->myIsDone = true;
+
   return 1;
 }
 
+
 template<class TArray> 
 int 
 ImportField(TArray& theArray, 
@@ -1110,35 +1292,55 @@ ImportField(TArray& theArray,
            VISU::PCValForTime theValForTime,
            VISU::PCMeshOnEntity theMeshOnEntity)
 {
+  int aNbComp = theField->myNbComp;
   if(theField->myEntity == NODE_ENTITY){
-    TValForTimeImpl::TValForCellsWithType& aValForCellsWithType = 
-      theValForTime->myValForCells[VTK_VERTEX];
-    int iNumElemEnd = theMesh->myPointsCoord.size()/theMesh->myDim*theField->myNbComp;
-    if(MYDEBUG) MESSAGE("ImportField - iNumElemEnd = "<<iNumElemEnd);
-    aValForCellsWithType.resize(iNumElemEnd);
-    for (int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++) 
-      aValForCellsWithType[iNumElem] = theArray[iNumElem];
+    VISU::EGeometry aEGeom = VISU::ePOINT1;
+    int aNbGauss = theValForTime->GetNbGauss(aEGeom);
+    const TNamedPointCoords& aCoords = theMesh->myNamedPointCoords;
+    int aNbElem = aCoords.GetNbPoints();
+
+    if(MYDEBUG) MESSAGE("ImportField - aNbElem = "<<aNbElem);
+
+    TMeshValue& aMeshValue = theValForTime->GetMeshValue(VISU::ePOINT1);
+    aMeshValue.Init(aNbElem,aNbGauss,aNbComp);
+    for(int iElem = 0, anId = 0; iElem < aNbElem; iElem++){
+      TValueSliceArr aValueSliceArr = aMeshValue.GetGaussValueSliceArr(iElem);
+      for(int iGauss = 0; iGauss < aNbGauss; iGauss++){
+       TValueSlice& aValueSlice = aValueSliceArr[iGauss];
+       for(int iComp = 0; iComp < aNbComp; iComp++){
+         aValueSlice[iComp] = theArray[anId++];
+       }
+      }
+    }
   }else{
     SALOME_MED::medGeometryElement* aGeomElems;
     const TEntity& aVEntity = theField->myEntity;
     int iGeomEnd = GetEntity2Geom(aVEntity,aGeomElems);
     for(int iGeom = 0; iGeom < iGeomEnd; iGeom++){
-      SALOME_MED::medGeometryElement aGeom = aGeomElems[iGeom];
-      int aVGeom = MEDGeomToVTK(aGeom);
+      SALOME_MED::medGeometryElement aMGeom = aGeomElems[iGeom];
+      VISU::EGeometry aEGeom = MEDGeom2VISU(aMGeom);
+      int aNbGauss = theValForTime->GetNbGauss(aEGeom);
       const TCMeshOnEntity::TCellsFirstIndex& aCellsFirstIndex = theMeshOnEntity->myCellsFirstIndex;
-      TCMeshOnEntity::TCellsFirstIndex::const_iterator aCellsFirstIndexIter = aCellsFirstIndex.find(aGeom);
+      TCMeshOnEntity::TCellsFirstIndex::const_iterator aCellsFirstIndexIter = aCellsFirstIndex.find(aMGeom);
       if(aCellsFirstIndexIter != aCellsFirstIndex.end()){
        const TCMeshOnEntity::TIndexAndSize& aIndexAndSize = aCellsFirstIndexIter->second;
-       int iNumElemEnd = aIndexAndSize.second;
        if(MYDEBUG) 
-         MESSAGE("ImportField - aGeom = "<<aGeom<<
+         MESSAGE("ImportField - aMGeom = "<<aMGeom<<
                  "; aIndexAndSize = {"<<aIndexAndSize.first<<
                  ","<<aIndexAndSize.second<<"}");
-       TValForTimeImpl::TValForCellsWithType& aValForCellsWithType = theValForTime->myValForCells[aVGeom];
-       aValForCellsWithType.resize(iNumElemEnd*theField->myNbComp);
-       for(int iNumElem = 0; iNumElem < iNumElemEnd; iNumElem++)
-         for(int k = 0, kj = iNumElem*theField->myNbComp; k < theField->myNbComp; k++)
-           aValForCellsWithType[kj+k] = theArray[aIndexAndSize.first*theField->myNbComp+kj+k];
+
+       int aNbElem = aIndexAndSize.second;
+       int aStart = aIndexAndSize.first*aNbComp;
+       TMeshValue& aMeshValue = theValForTime->GetMeshValue(aEGeom);
+       aMeshValue.Init(aNbElem,aNbGauss,aNbComp);
+       for(int iElem = 0, anId = 0; iElem < aNbElem; iElem++, anId += aNbComp){
+         TValueSliceArr aValueSliceArr = aMeshValue.GetGaussValueSliceArr(iElem);
+         for(int iGauss = 0; iGauss < aNbGauss; iGauss++){
+           TValueSlice& aValueSlice = aValueSliceArr[iGauss];
+           for(int iComp = 0; iComp < aNbComp; iComp++)
+             aValueSlice[iComp] = theArray[aStart+anId+iComp];
+         }
+       }
       }
     }
   }
@@ -1146,15 +1348,21 @@ ImportField(TArray& theArray,
 }
 
 int
-VISU_MEDConvertor::LoadField(VISU::PCMesh theMesh,
-                            VISU::PCMeshOnEntity theMeshOnEntity,
-                            VISU::PField theField, 
-                            VISU::PCValForTime theValForTime)
+VISU_MEDConvertor
+::LoadField(VISU::PCMesh theMesh,
+           VISU::PCMeshOnEntity theMeshOnEntity,
+           VISU::PField theField, 
+           VISU::PCValForTime theValForTime)
 {
   //Check on loading already done
-  if(!theValForTime->myValForCells.empty()) 
+  PIDMapperFilter anIDMapperFilter = theValForTime->myIDMapperFilter;
+  if(anIDMapperFilter->myIsVTKDone) 
     return 0;
+  
+  PCProfile aProfile(new TCProfile());
+  aProfile->myIsAll = true;
+  theValForTime->myProfile = aProfile;
+
   SALOME_MED::FIELD_var aMEDField = theValForTime->myField;
   SALOME_MED::FIELDDOUBLE_ptr aFieldDouble = SALOME_MED::FIELDDOUBLE::_narrow(aMEDField);
   if(!aFieldDouble->_is_nil()){
@@ -1168,5 +1376,8 @@ VISU_MEDConvertor::LoadField(VISU::PCMesh theMesh,
     if(MYDEBUG) MESSAGE("VISU_MEDConvertor::LoadField - There is FIELDINT = "<<anArray->length());
     ::ImportField(anArray,theMesh,theField,theValForTime,theMeshOnEntity);
   }
+
+  anIDMapperFilter->myIsVTKDone = true;
+
   return 1;
 }
index 6b7c94107ae077047bfd960a113b1fcc7ed26f90..f4a975aae5375fef6d5f5732e19851e73ad7a6e3 100644 (file)
 
 #include <string>      
 
-namespace VISU{
-
-  struct TCMesh: TMeshImpl{
+namespace VISU
+{
+  //---------------------------------------------------------------
+  struct TCMesh: virtual TMeshImpl
+  {
     SALOME_MED::MESH_var myMesh;
   };
-  typedef shared_ptr<TCMesh> PCMesh;
+  typedef SharedPtr<TCMesh> PCMesh;
+
+
+  //---------------------------------------------------------------
+  struct TCProfile: virtual TProfileImpl
+  {};
+  typedef SharedPtr<TCProfile> PCProfile;
+
+
+  //---------------------------------------------------------------
+  struct TCSubMesh: virtual TSubMeshImpl
+  {};
+  typedef SharedPtr<TCSubMesh> PCSubMesh;
+
 
-  struct TCMeshOnEntity: TMeshOnEntityImpl{
+  //---------------------------------------------------------------
+  struct TCMeshOnEntity: virtual TMeshOnEntityImpl
+  {
     SALOME_MED::SUPPORT_var mySupport;
     typedef std::pair<int,int> TIndexAndSize;
     typedef std::map<int,TIndexAndSize> TCellsFirstIndex;
     TCellsFirstIndex myCellsFirstIndex;
   };
-  typedef shared_ptr<TCMeshOnEntity> PCMeshOnEntity;
+  typedef SharedPtr<TCMeshOnEntity> PCMeshOnEntity;
   
-  struct TCFamily: TFamilyImpl{
+
+  //---------------------------------------------------------------
+  struct TCFamily: virtual TFamilyImpl
+  {
     SALOME_MED::FAMILY_var myFamily;
   };
-  typedef shared_ptr<TCFamily> PCFamily;
+  typedef SharedPtr<TCFamily> PCFamily;
   
-  struct TCGroup: TGroupImpl{
+
+  //---------------------------------------------------------------
+  struct TCGroup: virtual TGroupImpl
+  {
     SALOME_MED::GROUP_var myGroup;
   };
-  typedef shared_ptr<TCGroup> PCGroup;
+  typedef SharedPtr<TCGroup> PCGroup;
 
-  struct TCField: TFieldImpl{
-  };
-  typedef shared_ptr<TCField> PCField;
 
-  struct TCValForTime: TValForTimeImpl{
+  //---------------------------------------------------------------
+  struct TCField: virtual TFieldImpl
+  {};
+  typedef SharedPtr<TCField> PCField;
+
+
+  //---------------------------------------------------------------
+  struct TCValForTime: virtual TValForTimeImpl
+  {
     SALOME_MED::FIELD_var myField;
   };
-  typedef shared_ptr<TCValForTime> PCValForTime;
+  typedef SharedPtr<TCValForTime> PCValForTime;
 
 }
 
@@ -78,47 +106,93 @@ class VISU_MEDConvertor: public VISU_Convertor_impl{
   VISU_MEDConvertor() {};
 
  public:
-  VISU_MEDConvertor(SALOMEDS::SObject_ptr theMedSObject) : mySObject(SALOMEDS::SObject::_duplicate(theMedSObject)) {}
-  virtual VISU_Convertor* Build();
-
- protected:
-
-  VISU_Convertor* Build(SALOME_MED::MED_ptr theMED);
-  VISU_Convertor* Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator);
-
-  virtual int LoadMeshOnEntity(VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                              const std::string& theFamilyName = "");
+  VISU_MEDConvertor(SALOMEDS::SObject_ptr theMedSObject): 
+    mySObject(SALOMEDS::SObject::_duplicate(theMedSObject)) 
+  {}
 
-  virtual int LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
-                             const VISU::TFamilyAndEntitySet& theFamilyAndEntitySet);
+  virtual
+  VISU_Convertor* 
+  Build();
 
-  virtual int LoadFieldOnMesh(VISU::PMeshImpl theMesh, 
-                             VISU::PMeshOnEntityImpl theMeshOnEntity, 
-                             VISU::PFieldImpl theField, 
-                             VISU::PValForTimeImpl theValForTime);
+ protected:
 
-  int LoadPoints(VISU::PCMesh theMesh,
-                const std::string& theFamilyName = "") ;
+  VISU_Convertor* 
+  Build(SALOME_MED::MED_ptr theMED);
+  
+  VISU_Convertor* 
+  Build(SALOMEDS::ChildIterator_ptr theTimeStampIterator);
 
-  int LoadCellsOnEntity(VISU::PCMesh theMesh,
-                       VISU::PCMeshOnEntity theMeshOnEntity, 
-                       const std::string& theFamilyName = "");
+  virtual
+  int
+  LoadMeshOnEntity(VISU::PMeshImpl theMesh,
+                  VISU::PMeshOnEntityImpl theMeshOnEntity);
   
-  int LoadField(VISU::PCMesh theMesh,
-               VISU::PCMeshOnEntity theMeshOnEntity,
-               VISU::PField theField, 
-               VISU::PCValForTime theValForTime);
+  virtual
+  int
+  LoadFamilyOnEntity(VISU::PMeshImpl theMesh,
+                    VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                    VISU::PFamilyImpl theFamily);
+  
+  virtual
+  int
+  LoadMeshOnGroup(VISU::PMeshImpl theMesh, 
+                 const VISU::TFamilySet& theFamilySet);
+
+  virtual 
+  int
+  LoadValForTimeOnMesh(VISU::PMeshImpl theMesh, 
+                      VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                      VISU::PFieldImpl theField, 
+                      VISU::PValForTimeImpl theValForTime);
+
+  virtual
+  int
+  LoadValForTimeOnGaussPts(VISU::PMeshImpl theMesh, 
+                          VISU::PMeshOnEntityImpl theMeshOnEntity, 
+                          VISU::PFieldImpl theField, 
+                          VISU::PValForTimeImpl theValForTime)
+  {
+    return 0;
+  }
+
+  int 
+  LoadPoints(VISU::PCMesh theMesh) ;
+
+  int 
+  LoadPointsOnFamily(VISU::PCMesh theMesh, 
+                    VISU::PCFamily theFamily) ;
+
+  int 
+  LoadCellsOnEntity(VISU::PCMesh theMesh,
+                   VISU::PCMeshOnEntity theMeshOnEntity);
+  
+  int 
+  LoadCellsOnFamily(VISU::PCMesh theMesh,
+                   VISU::PCMeshOnEntity theMeshOnEntity, 
+                   VISU::PCFamily theFamily);
+  
+  int 
+  LoadField(VISU::PCMesh theMesh,
+           VISU::PCMeshOnEntity theMeshOnEntity,
+           VISU::PField theField, 
+           VISU::PCValForTime theValForTime);
 
 };
 
-class VISU_MEDFieldConvertor: public VISU_MEDConvertor{
+class VISU_MEDFieldConvertor: public VISU_MEDConvertor
+{
  protected:
   SALOME_MED::FIELD_var myField;
+
  public:
+
   VISU_MEDFieldConvertor(SALOME_MED::FIELD_ptr theField) : 
     myField(SALOME_MED::FIELD::_duplicate(theField)) 
   {}
-  virtual VISU_Convertor* Build() ;
+
+  virtual 
+  VISU_Convertor* 
+  Build();
 };
 
 extern "C" {
index e08e3ff7515c9ebdd864f576b67f286577543a16..879b0531b617b305203ecde56bf9350340b47257 100644 (file)
 //  Author : Alexey PETROV
 //  Module : VISU
 
-#include "VISU_CutLinesPL.hxx"
-#include "VISU_Result_i.hh"
 #include "VISU_CutLines_i.hh"
-#include "VISU_Actor.h"
+#include "VISU_Result_i.hh"
 
+#include "VISU_Actor.h"
+#include "VISU_CutLinesPL.hxx"
+#include "VISU_Convertor.hxx"
 #include "VISU_PipeLineUtils.hxx"
 
 #include <vtkAppendPolyData.h>
@@ -62,10 +63,10 @@ CutLines_i(Result_i* theResult,
           bool theAddToStudy) :
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theAddToStudy),
+  ColoredPrs3d_i(theResult,theAddToStudy),
   ScalarMap_i(theResult,theAddToStudy),
   myCutLinesPL(NULL)
-{
-}
+{}
 
 
 VISU::CutLines_i::
@@ -73,6 +74,7 @@ CutLines_i(Result_i* theResult,
           SALOMEDS::SObject_ptr theSObject) :
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theSObject),
+  ColoredPrs3d_i(theResult,theSObject),
   ScalarMap_i(theResult,theSObject),
   myCutLinesPL(NULL)
 {
@@ -95,7 +97,8 @@ VISU::Storable* VISU::CutLines_i::Create(const char* theMeshName, VISU::Entity t
 
 VISU::Storable* VISU::CutLines_i::Restore(const Storable::TRestoringMap& theMap)
 {
-  DoHook();
+  TSuperClass::Restore(theMap);
+
   SetNbLines(VISU::Storable::FindValue(theMap,"myNbLines").toInt());
   SetDisplacement(VISU::Storable::FindValue(theMap,"myDisplacement[0]").toDouble());
   SetDisplacement2(VISU::Storable::FindValue(theMap,"myDisplacement[1]").toDouble());
@@ -130,7 +133,7 @@ VISU::Storable* VISU::CutLines_i::Restore(const Storable::TRestoringMap& theMap)
       SetCurveInverted(i,false);
   }
       
-  return ScalarMap_i::Restore(theMap);
+  return this;
 }
 
 
@@ -302,6 +305,17 @@ void VISU::CutLines_i::DoHook(){
   ScalarMap_i::DoHook();
 }
 
+VISU_Actor* 
+VISU::CutLines_i
+::CreateActor(const Handle(SALOME_InteractiveObject)& theIO)
+{
+  if(VISU_Actor* anActor = ScalarMap_i::CreateActor(theIO)){
+    anActor->SetVTKMapping(true);
+    return anActor;
+  }
+  return NULL;
+}
+
 void VISU::CutLines_i::BuildTableOfReal(SALOMEDS::SObject_ptr theSObject){
   try{
     if(MYDEBUG) MESSAGE("CutPlanes_i::BuildTableOfReal");
index 84540a186645daca90937ae3fd4036e8584007df..cdc7184a97ce058b7eb9deb1b05718bf31880141 100644 (file)
@@ -111,6 +111,10 @@ namespace VISU{
 
     virtual Storable* Restore(const Storable::TRestoringMap& theMap);
 
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
     void BuildTableOfReal(SALOMEDS::SObject_ptr theSObject);
 
     static const std::string myComment;
index 9cd09af54ff892137646ff7caa54e9ee6a71eff5..d5c0ea04ac4fd0c0057b12bae0c172e453b178d3 100644 (file)
@@ -58,10 +58,10 @@ CutPlanes_i(Result_i* theResult,
            bool theAddToStudy) :
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theAddToStudy),
+  ColoredPrs3d_i(theResult,theAddToStudy),
   ScalarMap_i(theResult,theAddToStudy),
   myCutPlanesPL(NULL)
-{
-}
+{}
 
 
 VISU::CutPlanes_i::
@@ -69,6 +69,7 @@ CutPlanes_i(Result_i* theResult,
            SALOMEDS::SObject_ptr theSObject) :
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theSObject),
+  ColoredPrs3d_i(theResult,theSObject),
   ScalarMap_i(theResult,theSObject),
   myCutPlanesPL(NULL)
 {
@@ -84,7 +85,8 @@ VISU::Storable* VISU::CutPlanes_i::Create(const char* theMeshName, VISU::Entity
 
 VISU::Storable* VISU::CutPlanes_i::Restore(const Storable::TRestoringMap& theMap)
 {
-  DoHook();
+  TSuperClass::Restore(theMap);
+
   SetNbPlanes(VISU::Storable::FindValue(theMap,"myNbPlanes").toInt());
   SetDisplacement(VISU::Storable::FindValue(theMap,"myDisplacement").toDouble());
   SetOrientation(VISU::CutPlanes::Orientation(VISU::Storable::FindValue(theMap,"myBasePlane").toInt()),
@@ -96,7 +98,7 @@ VISU::Storable* VISU::CutPlanes_i::Restore(const Storable::TRestoringMap& theMap
     if(aCondList[i].toInt() == 0)
       SetPlanePosition(i,aPosList[i].toDouble());
 
-  return ScalarMap_i::Restore(theMap);
+  return this;
 }
 
 
@@ -180,3 +182,15 @@ void VISU::CutPlanes_i::DoHook(){
 
   ScalarMap_i::DoHook();
 }
+
+VISU_Actor* 
+VISU::CutPlanes_i
+::CreateActor(const Handle(SALOME_InteractiveObject)& theIO)
+{
+  if(VISU_Actor* anActor = ScalarMap_i::CreateActor(theIO)){
+    anActor->SetVTKMapping(true);
+    return anActor;
+  }
+  return NULL;
+}
+
index 7c76d8c89db197ca004812d7cf59327a83c61957..66c2d913f970afa26cedcbdbb7227a22f0a67f9e 100644 (file)
@@ -86,6 +86,10 @@ namespace VISU{
 
     virtual Storable* Restore(const Storable::TRestoringMap& theMap);
 
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
     static const std::string myComment;
     virtual const char* GetComment() const;
     virtual QString GenerateName();
index f99b0794b52b28a47de49a56c27f5f13ae2bbe68..64f13d0a4504a94eb948bf99e92e825d787ca651 100644 (file)
 //  Author : Alexey PETROV
 //  Module : VISU
 
-#include "VISU_DeformedShapePL.hxx"
-#include "VISU_Result_i.hh"
 #include "VISU_DeformedShape_i.hh"
+#include "VISU_Result_i.hh"
+
 #include "VISU_ScalarMapAct.h"
+#include "VISU_DeformedShapePL.hxx"
+#include "VISU_Convertor.hxx"
 
 #include <vtkDataSetMapper.h>
 
@@ -67,6 +69,7 @@ DeformedShape_i(Result_i* theResult,
                bool theAddToStudy) : 
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theAddToStudy),
+  ColoredPrs3d_i(theResult,theAddToStudy),
   ScalarMap_i(theResult,theAddToStudy),
   myDeformedShapePL(NULL)
 {
@@ -79,6 +82,7 @@ DeformedShape_i(Result_i* theResult,
                SALOMEDS::SObject_ptr theSObject) : 
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theSObject),
+  ColoredPrs3d_i(theResult,theSObject),
   ScalarMap_i(theResult,theSObject),
   myDeformedShapePL(NULL)
 {
@@ -88,12 +92,12 @@ DeformedShape_i(Result_i* theResult,
 
 void VISU::DeformedShape_i::SameAs(const Prs3d_i* theOrigin)
 {
-  VISU::ScalarMap_i::SameAs(theOrigin);
+  TSuperClass::SameAs(theOrigin);
 
-  if (const DeformedShape_i* aConstDefShape = dynamic_cast<const DeformedShape_i*>(theOrigin)) {
-    DeformedShape_i* aDefShape = const_cast<DeformedShape_i*>(aConstDefShape);
-    SetColor(aDefShape->GetColor());
-    ShowColored(aDefShape->IsColored());
+  if(const DeformedShape_i* aPrs3d = dynamic_cast<const DeformedShape_i*>(theOrigin)){
+    DeformedShape_i* anOrigin = const_cast<DeformedShape_i*>(aPrs3d);
+    SetColor(anOrigin->GetColor());
+    ShowColored(anOrigin->IsColored());
   }
 }
 
@@ -109,14 +113,15 @@ VISU::Storable* VISU::DeformedShape_i::Create(const char* theMeshName, VISU::Ent
 
 VISU::Storable* VISU::DeformedShape_i::Restore(const Storable::TRestoringMap& theMap)
 {
-  DoHook();
+  TSuperClass::Restore(theMap);
+
   SetScale(VISU::Storable::FindValue(theMap,"myFactor").toDouble());
   myIsColored = VISU::Storable::FindValue(theMap,"myIsColored").toInt();
   myColor.R = VISU::Storable::FindValue(theMap,"myColor.R").toDouble();
   myColor.G = VISU::Storable::FindValue(theMap,"myColor.G").toDouble();
   myColor.B = VISU::Storable::FindValue(theMap,"myColor.B").toDouble();
 
-  return ScalarMap_i::Restore(theMap);
+  return this;
 }
 
 
@@ -159,11 +164,14 @@ void VISU::DeformedShape_i::SetMapScale(double theMapScale){
 }
 
 
-VISU_Actor* VISU::DeformedShape_i::CreateActor(const Handle(SALOME_InteractiveObject)& theIO) 
+VISU_Actor* 
+VISU::DeformedShape_i
+::CreateActor(const Handle(SALOME_InteractiveObject)& theIO) 
 {
   VISU_Actor* anActor = VISU::ScalarMap_i::CreateActor(theIO);
   anActor->SetRepresentation(1);
   anActor->GetProperty()->SetColor(myColor.R,myColor.G,myColor.B);
+  anActor->SetVTKMapping(false);
   return anActor;
 }
 
index de9167b4ad7d49c2f30e3ec352bd029d73a57e10..e6fccb4485313709dd9b7561ebfd96d9359453f8 100644 (file)
@@ -85,7 +85,9 @@ namespace VISU{
 
     virtual void SetMapScale(double theMapScale = 1.0);
 
-    virtual VISU_Actor* CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
 
     virtual void UpdateActor(VISU_Actor* theActor) ;
   };
diff --git a/src/VISU_I/VISU_GaussPoints_i.cc b/src/VISU_I/VISU_GaussPoints_i.cc
new file mode 100644 (file)
index 0000000..3539d26
--- /dev/null
@@ -0,0 +1,835 @@
+//  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   :
+//  Author :
+//  Module :
+
+#include "VISU_GaussPoints_i.hh"
+#include "VISU_ScalarMap_i.hh"
+
+#include "VISU_Result_i.hh"
+#include "VISU_GaussPtsAct.h"
+#include "VISU_GaussPointsPL.hxx"
+#include "VVTK_SegmentationCursorDlg.h"
+
+#include "VISU_OpenGLPointSpriteMapper.hxx"
+#include "VISU_ScalarBarCtrl.hxx"
+
+#include "SUIT_ResourceMgr.h"
+
+#include <vtkImageData.h>
+#include <vtkXMLImageDataReader.h>
+#include <vtkScalarBarActor.h>
+#include <vtkTextProperty.h>
+
+
+using namespace VISU;
+using namespace std;
+
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+#else
+static int MYDEBUG = 0;
+#endif
+
+//----------------------------------------------------------------------------
+int
+VISU::GaussPoints_i
+::IsPossible(Result_i* theResult, 
+            const char* theMeshName, 
+            VISU::Entity theEntity, 
+            const char* theFieldName, 
+            int theIteration, 
+            int isMemoryCheck)
+{
+  try{
+    if(theEntity != VISU::NODE)
+      return VISU::ScalarMap_i::IsPossible(theResult,theMeshName,theEntity,theFieldName,theIteration,isMemoryCheck);
+    else
+      return false;
+  }catch(std::exception& exc){
+    INFOS("Follow exception was occured :\n"<<exc.what());
+  }catch(...){
+    INFOS("Unknown exception was occured!");
+  }
+  return 0;
+}
+
+//----------------------------------------------------------------------------
+int VISU::GaussPoints_i::myNbPresent = 0;
+
+QString 
+VISU::GaussPoints_i
+::GenerateName()
+{
+  return VISU::GenerateName("Gauss Points",myNbPresent++);
+}
+
+//----------------------------------------------------------------------------
+const string VISU::GaussPoints_i::myComment = "GAUSSPOINTS";
+
+const char* 
+VISU::GaussPoints_i
+::GetComment() const 
+{ 
+  return myComment.c_str();
+}
+
+
+//----------------------------------------------------------------------------
+VISU::GaussPoints_i::
+GaussPoints_i(Result_i* theResult, 
+             bool theAddToStudy) : 
+  PrsObject_i(theResult->GetStudyDocument()), 
+  Prs3d_i(theResult,theAddToStudy),
+  ColoredPrs3d_i(theResult,theAddToStudy),
+  myGaussPointsPL(NULL),
+  myIsColored(true),
+  myColor(Qt::blue),
+  myIsActiveLocalScalarBar(true),
+  myIsDispGlobalScalarBar(true),
+  mySpacing(0.01),
+  myFaceLimit(50000)
+{
+  if(MYDEBUG) MESSAGE("GaussPoints_i::GaussPoints_i - this = "<<this);
+}
+
+
+//----------------------------------------------------------------------------
+VISU::GaussPoints_i::
+GaussPoints_i(Result_i* theResult, 
+             SALOMEDS::SObject_ptr theSObject) : 
+  PrsObject_i(theResult->GetStudyDocument()), 
+  Prs3d_i(theResult,theSObject),
+  ColoredPrs3d_i(theResult,theSObject),
+  myGaussPointsPL(NULL),
+  myIsColored(true),
+  myColor(Qt::blue),
+  myIsActiveLocalScalarBar(true),
+  myIsDispGlobalScalarBar(true),
+  myFaceLimit(50000)
+{
+  if(MYDEBUG) MESSAGE("GaussPoints_i::GaussPoints_i - this = "<<this);
+}
+
+
+//----------------------------------------------------------------------------
+VISU::Storable* 
+VISU::GaussPoints_i
+::Create(const char* theMeshName, 
+        VISU::Entity theEntity, 
+        const char* theFieldName, 
+        int theIteration)
+{
+  TSuperClass::Create(theMeshName,theEntity,theFieldName,theIteration);
+
+  SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr();
+
+  int anActiveLocal = aResourceMgr->integerValue( "VISU", "scalar_bar_active_local", GetIsActiveLocalScalarBar() );
+  SetIsActiveLocalScalarBar( anActiveLocal == 0 );
+
+  bool aDisplayGlobal = aResourceMgr->booleanValue( "VISU", "scalar_bar_diplay_global", GetIsDispGlobalScalarBar() );
+  SetIsDispGlobalScalarBar( aDisplayGlobal );
+
+  int aBicolor = aResourceMgr->integerValue( "VISU", "scalar_bar_bicolor", GetBiColor() );
+  SetBiColor( aBicolor == 0 );
+
+  float aSpacing = aResourceMgr->doubleValue( "VISU", "scalar_bar_spacing", GetSpacing() );
+  SetSpacing( aSpacing );
+
+  float aScaleFactor = aResourceMgr->doubleValue( "VISU", "deformed_shape_scale_factor", GetScaleFactor() );
+  SetScaleFactor( aScaleFactor );
+
+  int aPrimitiveType = aResourceMgr->integerValue( "VISU", "point_sprite_primitive_type", GetPrimitiveType() );
+  SetPrimitiveType( aPrimitiveType );
+
+  float aClamp = aResourceMgr->doubleValue( "VISU", "point_sprite_clamp", GetClamp() );
+  SetClamp( aClamp );
+
+  int aMinSize = aResourceMgr->integerValue( "VISU", "point_sprite_min_size", ( int )( GetMinSize() * 100.0 ) );
+  SetMinSize( aMinSize / 100.0 );
+
+  int aMaxSize = aResourceMgr->integerValue( "VISU", "point_sprite_max_size", ( int )( GetMaxSize() * 100.0 ) );
+  SetMaxSize( aMaxSize / 100.0 );
+
+  int aGeomSize = aResourceMgr->integerValue( "VISU", "point_sprite_size", ( int )( GetGeomSize() * 100.0 ) );
+  SetGeomSize( aGeomSize / 100.0 );
+
+  int aMagnification = aResourceMgr->integerValue( "VISU", "point_sprite_magnification", ( int )( GetMagnification() * 100.0 ) );
+  SetMagnification( aMagnification / 100.0 );
+
+  float anIncrement = aResourceMgr->doubleValue( "VISU", "point_sprite_increment", GetMagnificationIncrement() );
+  SetMagnificationIncrement( anIncrement );
+
+  bool isColored = aResourceMgr->booleanValue( "VISU", "point_sprite_results", GetIsColored() );
+  SetIsColored( isColored );
+
+  QColor aColor = aResourceMgr->colorValue( "VISU", "point_sprite_color", GetColor() );
+  SetColor( aColor );
+
+  float anAlphaThreshold = aResourceMgr->doubleValue( "VISU", "point_sprite_alpha_threshold", GetAlphaThreshold() );
+  SetAlphaThreshold( anAlphaThreshold );
+
+  int aResolution = aResourceMgr->integerValue( "VISU", "geom_sphere_resolution", GetResolution() );
+  SetResolution( aResolution );
+
+  int aFaceLimit = aResourceMgr->integerValue( "VISU", "geom_sphere_face_limit", GetFaceLimit() );
+  SetFaceLimit( aFaceLimit );
+
+  QString aMainTexture = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/sprite_texture.bmp";
+  aMainTexture = aResourceMgr->stringValue( "VISU", "point_sprite_main_texture", aMainTexture );
+
+  QString anAlphaTexture = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/sprite_alpha.bmp";
+  anAlphaTexture = aResourceMgr->stringValue( "VISU", "point_sprite_alpha_texture", anAlphaTexture );
+
+  SetTextures( aMainTexture, anAlphaTexture );
+
+  return this;
+}
+
+
+//----------------------------------------------------------------------------
+VISU::Storable* 
+VISU::GaussPoints_i
+::Restore(const Storable::TRestoringMap& theMap)
+{
+  TSuperClass::Restore(theMap);
+
+  SetIsActiveLocalScalarBar(Storable::FindValue(theMap,"myIsActiveLocalScalarBar").toInt());
+  SetIsDispGlobalScalarBar(Storable::FindValue(theMap,"myIsDispGlobalScalarBar").toInt());
+  SetBiColor(Storable::FindValue(theMap,"myIsBiColor").toInt());
+  SetSpacing(Storable::FindValue(theMap,"mySpacing").toDouble());
+
+  SetPrimitiveType(Storable::FindValue(theMap,"myPrimitiveType").toInt());
+  SetClamp(Storable::FindValue(theMap,"myClamp").toDouble());
+  SetMinSize(Storable::FindValue(theMap,"myMinSize").toDouble());
+  SetMaxSize(Storable::FindValue(theMap,"myMaxSize").toDouble());
+  SetGeomSize(Storable::FindValue(theMap,"myGeomSize").toDouble());
+
+  SetMagnification(Storable::FindValue(theMap,"myMagnification").toDouble());
+  SetMagnificationIncrement(Storable::FindValue(theMap,"myMagnificationIncrement").toDouble());
+
+  SetIsDeformed(Storable::FindValue(theMap,"myIsDeformed").toInt());
+  SetScaleFactor(Storable::FindValue(theMap,"myScaleFactor").toDouble());
+
+  SetFaceLimit(Storable::FindValue(theMap,"myFaceLimit").toInt());
+
+  SetIsColored(Storable::FindValue(theMap,"myIsColored").toInt());
+  int aRed = Storable::FindValue(theMap,"myColor.R").toInt();
+  int aGreen = Storable::FindValue(theMap,"myColor.G").toInt();
+  int aBlue = Storable::FindValue(theMap,"myColor.B").toInt();
+  SetColor( QColor(aRed,aGreen,aBlue) );
+
+  SetAlphaThreshold(Storable::FindValue(theMap,"myAlphaThreshold").toDouble());
+
+  SetTextures( Storable::FindValue(theMap,"myMainTexture"),
+              Storable::FindValue(theMap,"myAlphaTexture") );
+
+  SetResolution(Storable::FindValue(theMap,"myResolution").toInt());
+
+  return this;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU::GaussPoints_i
+::ToStream(std::ostringstream& theStr)
+{
+  TSuperClass::ToStream(theStr);
+
+  Storable::DataToStream( theStr, "myIsActiveLocalScalarBar", myIsActiveLocalScalarBar );
+  Storable::DataToStream( theStr, "myIsDispGlobalScalarBar", myIsDispGlobalScalarBar );
+  Storable::DataToStream( theStr, "myIsBiColor", GetBiColor() );
+  Storable::DataToStream( theStr, "mySpacing", GetSpacing() );
+
+  Storable::DataToStream( theStr, "myPrimitiveType", GetPrimitiveType() );
+  Storable::DataToStream( theStr, "myClamp", GetClamp() );
+  Storable::DataToStream( theStr, "myMinSize", GetMinSize() );
+  Storable::DataToStream( theStr, "myMaxSize", GetMaxSize() );
+  Storable::DataToStream( theStr, "myGeomSize", GetGeomSize() );
+
+  Storable::DataToStream( theStr, "myMagnification", GetMagnification() );
+  Storable::DataToStream( theStr, "myMagnificationIncrement", GetMagnificationIncrement() );
+
+  Storable::DataToStream( theStr, "myIsDeformed", GetIsDeformed() );
+  Storable::DataToStream( theStr, "myScaleFactor", GetScaleFactor() );
+
+  Storable::DataToStream( theStr, "myFaceLimit", GetFaceLimit() );
+
+  Storable::DataToStream( theStr, "myIsColored", GetIsColored() );
+  QColor aColor = GetColor();
+  Storable::DataToStream( theStr, "myColor.R", aColor.red() );
+  Storable::DataToStream( theStr, "myColor.G", aColor.green() );
+  Storable::DataToStream( theStr, "myColor.B", aColor.blue() );
+
+  Storable::DataToStream( theStr, "myAlphaThreshold", GetAlphaThreshold() );
+  Storable::DataToStream( theStr, "myMainTexture", GetMainTexture() );
+  Storable::DataToStream( theStr, "myAlphaTexture", GetAlphaTexture() );
+
+  Storable::DataToStream( theStr, "myResolution", GetResolution() );
+}
+
+
+VISU::GaussPoints_i
+::~GaussPoints_i()
+{
+  if(MYDEBUG) MESSAGE("GaussPoints_i::~GaussPoints_i() - this = "<<this);
+}
+
+
+//----------------------------------------------------------------------------
+VISU_GaussPointsPL* 
+VISU::GaussPoints_i
+::GetGaussPointsPL()
+{ 
+  return myGaussPointsPL; 
+}
+
+void
+VISU::GaussPoints_i
+::SetIsDeformed( bool theIsDeformed )
+{
+  myGaussPointsPL->SetIsDeformed( theIsDeformed );
+}
+
+bool
+VISU::GaussPoints_i
+::GetIsDeformed()
+{
+  return myGaussPointsPL->GetIsDeformed();
+}
+
+void
+VISU::GaussPoints_i
+::SetScaleFactor( float theScaleFactor )
+{
+  myGaussPointsPL->SetScale( theScaleFactor );
+}
+
+float
+VISU::GaussPoints_i
+::GetScaleFactor()
+{
+  return myGaussPointsPL->GetScale();
+}
+
+void
+VISU::GaussPoints_i
+::SetIsColored( bool theIsColored )
+{
+  myIsColored = theIsColored;
+  myGaussPointsPL->SetIsColored( theIsColored );
+}
+
+bool
+VISU::GaussPoints_i
+::SetMainTexture( const QString& theMainTexture ) 
+{
+  bool update = myMainTexture != theMainTexture;
+  myMainTexture = theMainTexture;
+  return update;
+}
+
+const QString&
+VISU::GaussPoints_i
+::GetMainTexture() 
+{ 
+  return myMainTexture; 
+}
+
+bool
+VISU::GaussPoints_i
+::SetAlphaTexture( const QString& theAlphaTexture ) 
+{
+  bool update = myAlphaTexture != theAlphaTexture;
+  myAlphaTexture = theAlphaTexture;
+  return update;
+}
+
+const QString&
+VISU::GaussPoints_i
+::GetAlphaTexture() 
+{ 
+  return myAlphaTexture; 
+}
+
+void
+VISU::GaussPoints_i
+::SetAlphaThreshold( float theAlphaThreshold )
+{
+  myGaussPointsPL->SetAlphaThreshold( theAlphaThreshold );
+}
+
+float
+VISU::GaussPoints_i
+::GetAlphaThreshold()
+{
+  return myGaussPointsPL->GetAlphaThreshold();
+}
+
+void
+VISU::GaussPoints_i
+::SetResolution( int theResolution )
+{
+  myGaussPointsPL->SetResolution( theResolution );
+}
+
+int
+VISU::GaussPoints_i
+::GetResolution()
+{
+  return myGaussPointsPL->GetResolution();
+}
+
+void
+VISU::GaussPoints_i
+::SetPrimitiveType(int thePrimitiveType)
+{
+  myGaussPointsPL->SetPrimitiveType( thePrimitiveType );
+}
+
+int
+VISU::GaussPoints_i
+::GetPrimitiveType()
+{
+  return myGaussPointsPL->GetPrimitiveType();
+}
+
+float
+VISU::GaussPoints_i
+::GetMaximumSupportedSize()
+{
+  return myGaussPointsPL->GetMaximumSupportedSize();
+}
+
+void
+VISU::GaussPoints_i
+::SetClamp(float theClamp)
+{
+  myGaussPointsPL->SetClamp( theClamp );
+}
+
+float
+VISU::GaussPoints_i
+::GetClamp()
+{
+  return myGaussPointsPL->GetClamp();
+}
+
+void
+VISU::GaussPoints_i
+::SetGeomSize( float theGeomSize )
+{
+  myGaussPointsPL->SetSize( theGeomSize );
+}
+
+float
+VISU::GaussPoints_i
+::GetGeomSize()
+{
+  return myGaussPointsPL->GetSize();
+}
+
+void
+VISU::GaussPoints_i
+::SetMinSize( float theMinSize )
+{
+  myGaussPointsPL->SetMinSize( theMinSize );
+}
+
+float
+VISU::GaussPoints_i
+::GetMinSize()
+{
+  return myGaussPointsPL->GetMinSize();
+}
+
+void
+VISU::GaussPoints_i
+::SetMaxSize( float theMaxSize )
+{
+  myGaussPointsPL->SetMaxSize( theMaxSize );
+}
+
+float
+VISU::GaussPoints_i
+::GetMaxSize()
+{
+  return myGaussPointsPL->GetMaxSize();
+}
+
+void
+VISU::GaussPoints_i
+::SetMagnification( float theMagnification )
+{
+  myGaussPointsPL->SetMagnification( theMagnification );
+}
+
+float
+VISU::GaussPoints_i
+::GetMagnification()
+{
+  return myGaussPointsPL->GetMagnification();
+}
+
+void
+VISU::GaussPoints_i
+::SetMagnificationIncrement( float theIncrement )
+{
+  myGaussPointsPL->SetMagnificationIncrement( theIncrement );
+}
+
+float
+VISU::GaussPoints_i
+::GetMagnificationIncrement()
+{
+  return myGaussPointsPL->GetMagnificationIncrement();
+}
+
+//----------------------------------------------------------------------------
+void
+VISU::GaussPoints_i
+::DoSetInput(Result_i* theResult)
+{
+  VISU::Result_i::TInput* anInput = theResult->GetInput();
+  if(!anInput)
+    throw std::runtime_error("Mesh_i::Build - theResult->GetInput() == NULL !!!");
+
+  myField = anInput->GetField(myMeshName,myEntity,myFieldName);
+  if(!myField) 
+    throw std::runtime_error("There is no Field with the parameters !!!");
+
+  VISU::PGaussPtsIDMapper aGaussPtsIDMapper =
+    anInput->GetTimeStampOnGaussPts(myMeshName,myEntity,myFieldName,myIteration);
+
+  if(!aGaussPtsIDMapper) 
+    throw std::runtime_error("There is no TimeStamp with the parameters !!!");
+
+  myGaussPointsPL->SetGaussPtsIDMapper(aGaussPtsIDMapper);
+  myGaussPointsPL->Init();
+  myGaussPointsPL->Build();
+
+  theResult->MinMaxConnect(this);
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU::GaussPoints_i
+::DoHook()
+{
+  if(!myPipeLine) 
+    myPipeLine = VISU_GaussPointsPL::New();
+
+  myGaussPointsPL = dynamic_cast<VISU_GaussPointsPL*>(myPipeLine);
+
+  TSuperClass::DoHook();
+}
+
+
+//----------------------------------------------------------------------------
+VISU_PipeLine* 
+VISU::GaussPoints_i
+::GetPipeLine()
+{
+  // We create a new PipeLine instance in order to provide
+  //   different representations for different actors (basic and segmented)
+  VISU_GaussPointsPL* aPipeLine = VISU_GaussPointsPL::New();
+  aPipeLine->SetGaussPtsIDMapper(myGaussPointsPL->GetGaussPtsIDMapper());
+  aPipeLine->ShallowCopy(myPipeLine);
+  aPipeLine->Update();
+  return aPipeLine;
+}
+
+
+//----------------------------------------------------------------------------
+bool 
+VISU::GaussPoints_i
+::OnCreateActor(VISU_GaussPtsAct* theActor,
+               const Handle(SALOME_InteractiveObject)& theIO)
+{
+  try{
+    TSuperClass::CreateActor(theActor,theIO);
+    theActor->GetPipeLine()->Delete();
+    UpdateActor(theActor);
+    return true;
+  }catch(...){
+    theActor->Delete();
+    throw ;
+  }
+  return false;
+}
+
+VISU_GaussPtsAct1* 
+VISU::GaussPoints_i
+::OnCreateActor1(const Handle(SALOME_InteractiveObject)& theIO)
+{
+  VISU_GaussPtsAct1* anActor = VISU_GaussPtsAct1::New();
+  if(OnCreateActor(anActor,theIO))
+    return anActor;
+  return NULL;
+}
+
+VISU_GaussPtsAct2* 
+VISU::GaussPoints_i
+::OnCreateActor2(const Handle(SALOME_InteractiveObject)& theIO)
+{
+  VISU_GaussPtsAct2* anActor = VISU_GaussPtsAct2::New();
+  if(OnCreateActor(anActor,theIO))
+    return anActor;
+  return NULL;
+}
+
+VISU_Actor* 
+VISU::GaussPoints_i
+::CreateActor(const Handle(SALOME_InteractiveObject)& theIO) 
+{
+  return OnCreateActor1(theIO);
+}
+
+//----------------------------------------------------------------------------
+VISU_GaussPtsAct2* 
+VISU::GaussPoints_i
+::CloneActor(VISU_GaussPtsAct1* theActor) 
+{
+  if(MYDEBUG) MESSAGE("GaussPoints_i::CloneActor - this = "<<this);
+  if(VISU_GaussPtsAct2* anActor = OnCreateActor2()){
+    theActor->Connect(anActor);
+    return anActor;
+  }
+  return NULL;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU::GaussPoints_i
+::UpdateScalarBar(vtkScalarBarActor *theScalarBar,
+                 vtkLookupTable* theLookupTable)
+{
+  theScalarBar->SetTitle(myTitle.c_str());
+  theScalarBar->SetOrientation(myOrientation);
+  theScalarBar->SetNumberOfLabels(myNumberOfLabels);
+
+  vtkLookupTable* aLookupTable = myScalarMapPL->GetBarTable();
+  
+  theLookupTable->SetNumberOfColors(aLookupTable->GetNumberOfColors());
+  theScalarBar->SetMaximumNumberOfColors(aLookupTable->GetNumberOfColors());
+
+  vtkTextProperty* aTitleProp = theScalarBar->GetTitleTextProperty();
+  aTitleProp->SetFontFamily(myTitFontType);
+  aTitleProp->SetColor(myTitleColor);
+  (myIsBoldTitle)? aTitleProp->BoldOn() : aTitleProp->BoldOff();
+  (myIsItalicTitle)? aTitleProp->ItalicOn() : aTitleProp->ItalicOff();
+  (myIsShadowTitle)? aTitleProp->ShadowOn() : aTitleProp->ShadowOff();
+  
+  vtkTextProperty* aLabelProp = theScalarBar->GetLabelTextProperty();
+  aLabelProp->SetFontFamily(myLblFontType);
+  aLabelProp->SetColor(myLabelColor);
+  (myIsBoldLabel)? aLabelProp->BoldOn() : aLabelProp->BoldOff();
+  (myIsItalicLabel)? aLabelProp->ItalicOn() : aLabelProp->ItalicOff();
+  (myIsShadowLabel)? aLabelProp->ShadowOn() : aLabelProp->ShadowOff();
+  
+  theScalarBar->Modified();
+}
+
+
+//----------------------------------------------------------------------------
+void 
+VISU::GaussPoints_i
+::UpdateActor(VISU_Actor* theActor) 
+{
+  if(VISU_GaussPtsAct* anActor = dynamic_cast<VISU_GaussPtsAct*>(theActor)){
+    VISU_ScalarBarCtrl *aScalarBarCtrl = anActor->GetScalarBarCtrl();
+    if(GetIsColored()){
+      anActor->SetBarVisibility(true);
+      myPipeLine->GetMapper()->SetScalarVisibility(1);
+
+      float aRange[2];
+      myScalarMapPL->GetSourceRange(aRange);
+      aScalarBarCtrl->SetRangeLocal(aRange);
+      
+      TMinMax aTMinMax(-VTK_LARGE_FLOAT,VTK_LARGE_FLOAT);
+      bool anIsMinMaxDone = IsGlobalRangeDefined();
+      if(anIsMinMaxDone)
+       aTMinMax = myField->GetMinMax(GetScalarMode());
+      aScalarBarCtrl->SetGlobalRangeIsDefined(anIsMinMaxDone);
+      aScalarBarCtrl->SetRangeGlobal(aTMinMax.first, aTMinMax.second);
+      
+      VISU_ScalarBarCtrl::EMode aScalarBarMode = VISU_ScalarBarCtrl::eGlobal;
+      if(myIsActiveLocalScalarBar){
+       if(myIsDispGlobalScalarBar){
+         aScalarBarMode = VISU_ScalarBarCtrl::eLocal; 
+       }else{
+         aScalarBarMode = VISU_ScalarBarCtrl::eSimple; 
+       }
+      }
+      
+      if(aScalarBarMode == VISU_ScalarBarCtrl::eGlobal){
+       float aRangeGlobal[2];
+       //
+       aRangeGlobal[0] = aTMinMax.first;
+       aRangeGlobal[1] = aTMinMax.second;
+       
+       GetGaussPointsPL()->GetMapper()->SetScalarRange(aRangeGlobal);
+      }
+      
+      aScalarBarCtrl->SetMode(aScalarBarMode);
+      
+      // Position
+      aScalarBarCtrl->SetWidth(myWidth);
+      aScalarBarCtrl->SetHeight(myHeight);
+      aScalarBarCtrl->SetPosition(myPosition);
+      
+      aScalarBarCtrl->SetSpacing(mySpacing);
+      
+      // Bicolor
+      bool anIsBicolor = GetGaussPointsPL()->GetBicolor();
+      aScalarBarCtrl->SetBicolor(anIsBicolor);
+      
+      UpdateScalarBar(aScalarBarCtrl->GetLocalBar(),
+                     aScalarBarCtrl->GetLocalTable());
+      
+      UpdateScalarBar(aScalarBarCtrl->GetGlobalBar(),
+                     aScalarBarCtrl->GetGlobalTable());
+
+      aScalarBarCtrl->Update();
+    }else{
+      anActor->SetBarVisibility(false);
+
+      myPipeLine->GetMapper()->SetScalarVisibility(0);
+
+      anActor->GetProperty()->SetColor(myColor.red() / 255.0,
+                                      myColor.green() / 255.0,
+                                      myColor.blue() / 255.0);
+    }
+
+    if( GetGaussPointsPL()->GetPrimitiveType() != VISU_OpenGLPointSpriteMapper::GeomSphere )
+      theActor->SetRepresentation( VTK_POINTS );
+    else
+      theActor->SetRepresentation( VTK_SURFACE );
+  }
+  TSuperClass::UpdateActor(theActor);
+}
+
+//----------------------------------------------------------------------------
+void
+VISU::GaussPoints_i
+::UpdateFromActor(VISU_GaussPtsAct* theActor) 
+{
+  if(MYDEBUG) MESSAGE("GaussPoints_i::UpdateFromActor - this = "<<this);
+  myGaussPointsPL->ChangeMagnification(theActor->GetChangeMagnification());
+  UpdateActors();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU::GaussPoints_i
+::SetTextures( const QString& theMainTexture, 
+              const QString& theAlphaTexture )
+{
+  bool updateMainTexture = SetMainTexture( theMainTexture );
+  bool updateAlphaTexture = SetAlphaTexture( theAlphaTexture );
+  if( !updateMainTexture && !updateAlphaTexture )
+    return;
+
+  using namespace VISU;
+  TTextureValue aTextureValue = GetTexture(theMainTexture,theAlphaTexture);
+  myGaussPointsPL->SetImageData( aTextureValue.GetPointer() );
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU::GaussPoints_i
+::SetIsActiveLocalScalarBar(const bool theFlag)
+{
+  myIsActiveLocalScalarBar = theFlag;
+}
+
+bool
+VISU::GaussPoints_i
+::GetIsActiveLocalScalarBar() const 
+{
+  return myIsActiveLocalScalarBar;
+}
+
+void
+VISU::GaussPoints_i
+::SetIsDispGlobalScalarBar(const bool theFlag)
+{
+  myIsDispGlobalScalarBar=theFlag;
+}
+
+bool
+VISU::GaussPoints_i
+::IsGlobalRangeDefined() const 
+{
+  return myResult->IsMinMaxDone();
+}
+
+bool
+VISU::GaussPoints_i
+::GetIsDispGlobalScalarBar() const 
+{
+  return myIsDispGlobalScalarBar;
+}
+
+void
+VISU::GaussPoints_i
+::SetBiColor(bool theIsBiColor)
+{
+  GetGaussPointsPL()->SetBicolor(theIsBiColor);
+}
+
+bool
+VISU::GaussPoints_i
+::GetBiColor() 
+{
+  return GetGaussPointsPL()->GetBicolor();
+}
+
+void
+VISU::GaussPoints_i
+::SetSpacing(const float theSpacing)
+{
+  mySpacing = theSpacing;
+}
+
+float
+VISU::GaussPoints_i
+::GetSpacing() const 
+{
+  return mySpacing;
+}
+
+//----------------------------------------------------------------------------
+void
+VISU::GaussPoints_i
+::UpdateMinMax()
+{
+  MinMaxCunsomer::UpdateMinMax();
+  UpdateActors();
+}
diff --git a/src/VISU_I/VISU_GaussPoints_i.hh b/src/VISU_I/VISU_GaussPoints_i.hh
new file mode 100644 (file)
index 0000000..5a0fe10
--- /dev/null
@@ -0,0 +1,343 @@
+//  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   : VISU_PrsObject_i.hxx
+//  Author : Alexey PETROV
+//  Module : VISU
+
+#ifndef VISU_GaussPoints_i_HeaderFile
+#define VISU_GaussPoints_i_HeaderFile
+
+#include "VISU_Result_i.hh"
+#include "VISU_ColoredPrs3d_i.hh"
+#include "VISU_GaussPtsActorFactory.h"
+
+class vtkLookupTable;
+class vtkScalarBarActor;
+
+class VISU_GaussPointsPL;
+
+namespace VISU
+{
+  //! Class of the Gauss Points presentation.
+  class GaussPoints_i : public virtual POA_VISU::GaussPoints,
+                       public virtual VISU::TGaussPtsActorFactory,
+                       public virtual MinMaxCunsomer,
+                       public virtual ColoredPrs3d_i
+  {
+    static int myNbPresent;
+    GaussPoints_i();
+    GaussPoints_i(const GaussPoints_i&);
+
+  public:
+    //----------------------------------------------------------------------------
+    typedef ColoredPrs3d_i TSuperClass;
+
+    explicit
+    GaussPoints_i(Result_i* theResult,
+                 bool theAddToStudy);
+    explicit
+    GaussPoints_i(Result_i* theResult,
+                 SALOMEDS::SObject_ptr theSObject);
+
+    virtual
+    ~GaussPoints_i();
+
+    virtual 
+    VISU::VISUType 
+    GetType() 
+    {
+      return VISU::TGAUSSPOINTS;
+    }
+
+    typedef VISU::GaussPoints TInterface;
+
+    //! Get the Gauss Points Pipeline.
+    VISU_GaussPointsPL* 
+    GetGaussPointsPL();
+
+    int
+    GetFaceLimit() { return myFaceLimit; }
+
+    void
+    SetFaceLimit( int theFaceLimit ) { myFaceLimit = theFaceLimit; }
+
+    bool 
+    GetIsDeformed();
+
+    void
+    SetIsDeformed( bool theIsDeformed );
+
+    float
+    GetScaleFactor();
+
+    void
+    SetScaleFactor( float theScaleFactor );
+
+    //! Get color for Geometry mode of the presentation.
+    QColor
+    GetColor() { return myColor; }
+
+    //! Set color for Geometry mode of the presentation.
+    void
+    SetColor( const QColor& theColor ) { myColor = theColor; }
+
+    //! Get flag indicating which mode of the presentation is active.
+    /*! When Results mode is active, returns true. Geometry - false. */
+    bool 
+    GetIsColored() { return myIsColored; }
+
+    //! Get flag indicating which mode of the presentation is active.
+    void
+    SetIsColored( bool theIsColored );
+
+    //! Set path to the image using for Main Point Sprite texture.
+    bool
+    SetMainTexture( const QString& theMainTexture );
+
+    //! Get path to the image using for Main Point Sprite texture.
+    const QString&
+    GetMainTexture();
+
+    //! Set path to the image using for Alpha Point Sprite texture.
+    bool
+    SetAlphaTexture( const QString& theAlphaTexture );
+
+    //! Get path to the image using for Alpha Point Sprite texture.
+    const QString&
+    GetAlphaTexture();
+
+    //! Convert Main and AlphaMask images to VTI format and set them to pipeline.
+    void
+    SetTextures( const QString& theMainTexture,
+                const QString& theAlphaTexture );
+
+    //! Redirect the request to VISU_GaussPointsPL::SetAlphaThreshold.
+    void
+    SetAlphaThreshold(float theAlphaThreshold);
+
+    //! Redirect the request to VISU_GaussPointsPL::GetAlphaThreshold.
+    float
+    GetAlphaThreshold();
+
+    //! Redirect the request to VISU_GaussPointsPL::SetResolution.
+    void
+    SetResolution(int theResolution);
+
+    //! Redirect the request to VISU_GaussPointsPL::GetResolution.
+    int
+    GetResolution();
+
+    void
+    SetPrimitiveType(int thePrimitiveType);
+
+    int
+    GetPrimitiveType();
+
+    //! Redirect the request to VISU_GaussPointsPL::GetMaximumSupportedSize.
+    float 
+    GetMaximumSupportedSize();
+
+    //! Redirect the request to VISU_GaussPointsPL::SetClamp.
+    void
+    SetClamp(float theClamp);
+
+    //! Redirect the request to VISU_GaussPointsPL::GetClamp.
+    float
+    GetClamp();
+
+    //! Redirect the request to VISU_GaussPointsPL::SetSize.
+    void
+    SetGeomSize(float theGeomSize);
+
+    //! Redirect the request to VISU_GaussPointsPL::GetSize.
+    float 
+    GetGeomSize();
+
+    //! Redirect the request to VISU_GaussPointsPL::SetMinSize.
+    void
+    SetMinSize(float theMinSize);
+
+    //! Redirect the request to VISU_GaussPointsPL::GetMinSize.
+    float 
+    GetMinSize();
+
+    //! Redirect the request to VISU_GaussPointsPL::SetMaxSize.
+    void
+    SetMaxSize(float theMaxSize);
+
+    //! Redirect the request to VISU_GaussPointsPL::GetMaxSize.
+    float 
+    GetMaxSize();
+
+    //! Redirect the request to VISU_GaussPointsPL::SetMagnification.
+    void
+    SetMagnification(float theMagnification);
+
+    //! Redirect the request to VISU_GaussPointsPL::GetMagnification.
+    float
+    GetMagnification();
+
+    //! Redirect the request to VISU_GaussPointsPL::SetMagnificationIncrement.
+    void
+    SetMagnificationIncrement(float theIncrement);
+
+    //! Redirect the request to VISU_GaussPointsPL::GetMagnificationIncrement.
+    float
+    GetMagnificationIncrement();
+
+    //! Set flag indicating which scalar bar is active.
+    void
+    SetIsActiveLocalScalarBar(const bool theFlag);
+
+    //! Get flag indicating which scalar bar is active.
+    bool
+    GetIsActiveLocalScalarBar() const;
+
+    //! Set flag indicating visibility of global scalar bar.
+    void
+    SetIsDispGlobalScalarBar(const bool theFlag);
+
+    //! Get flag indicating visibility of global scalar bar.
+    bool
+    GetIsDispGlobalScalarBar() const;
+
+    //! Redirect the request to VISU_GaussPointsPL::SetBicolor.
+    void
+    SetBiColor(bool theIsBiColor);
+
+    //! Redirect the request to VISU_GaussPointsPL::GetBicolor.
+    bool
+    GetBiColor();
+
+    //! Set value of the distance between global and local scalar bars.
+    void
+    SetSpacing(const float theSpacing);
+
+    //! Get value of the distance between global and local scalar bars.
+    float
+    GetSpacing() const;
+
+    //! Let know is the global range is already calculated
+    bool
+    IsGlobalRangeDefined() const;
+
+    //! To update the min / max automatically
+    virtual
+    void
+    UpdateMinMax();
+
+  protected:
+    virtual
+    void
+    DoSetInput(Result_i* theResult);
+
+    virtual
+    void
+    DoHook();
+
+    virtual 
+    VISU_PipeLine* 
+    GetPipeLine();
+    
+    bool
+    OnCreateActor(VISU_GaussPtsAct* theActor,
+                 const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
+    VISU_GaussPtsAct1* 
+    OnCreateActor1(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
+    VISU_GaussPtsAct2* 
+    OnCreateActor2(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
+    void
+    UpdateScalarBar(vtkScalarBarActor *theScalarBar,
+                   vtkLookupTable* theLookupTable);
+
+
+    VISU_GaussPointsPL *myGaussPointsPL;
+
+    bool myIsColored;
+    bool myIsDispGlobalScalarBar;
+    bool myIsActiveLocalScalarBar;
+    QColor myColor;
+    float mySpacing;
+    int myFaceLimit;
+
+    QString myMainTexture;
+    QString myAlphaTexture;
+
+  public:
+    static 
+    int
+    IsPossible(Result_i* theResult, 
+              const char* theMeshName, 
+              VISU::Entity theEntity,
+              const char* theFieldName, 
+              int theIteration, 
+              int isMemoryCheck = true);
+    virtual
+    Storable* 
+    Create(const char* theMeshName, 
+          VISU::Entity theEntity,
+          const char* theFieldName, 
+          int theIteration);
+
+    static const std::string myComment;
+
+    virtual
+    const char* 
+    GetComment() const;
+
+    virtual
+    QString
+    GenerateName();
+
+    virtual
+    void
+    ToStream(std::ostringstream& theStr);
+
+    virtual 
+    Storable* 
+    Restore(const Storable::TRestoringMap& theMap);
+
+    //----------------------------------------------------------------------------
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
+    virtual 
+    VISU_GaussPtsAct2* 
+    CloneActor(VISU_GaussPtsAct1* theActor);
+
+    virtual
+    void
+    UpdateActor(VISU_Actor* theActor);
+
+    virtual 
+    void
+    UpdateFromActor(VISU_GaussPtsAct* theActor);
+  };
+}
+
+#endif
+
index 2a86c3a83161aedac7a33d974d410478d6b4b4db..46094327556f95c5b5224555e7b564b57d22e4e9 100644 (file)
@@ -38,6 +38,7 @@
 #include "VISU_CutLines_i.hh"
 #include "VISU_Vectors_i.hh"
 #include "VISU_StreamLines_i.hh"
+#include "VISU_GaussPoints_i.hh"
 #include "VISU_Plot3D_i.hh"
 #include "VISU_Table_i.hh"
 #include "VISU_TimeAnimation.h"
@@ -89,7 +90,8 @@ using namespace std;
 static QFileInfo aFileInfo;
 
 #ifdef _DEBUG_
-static int MYDEBUG = 1;
+static int MYDEBUG = 0;
+//#define _DEXCEPT_
 #else
 static int MYDEBUG = 0;
 #endif
@@ -107,7 +109,8 @@ extern "C" VISU::VISU_Gen_ptr GetImpl(CORBA::ORB_ptr theORB,
   return aVISU_Gen->_this();
 }
 
-namespace VISU{
+namespace VISU
+{
   static string VisuTmpDir;
 
   static CORBA::Boolean myIsMultiFile;
@@ -186,6 +189,7 @@ namespace VISU{
     Storable::Registry(Result_i::myComment.c_str(),&(Result_i::Restore));
     Storable::Registry(Mesh_i::myComment.c_str(),&(Restore<Mesh_i>));
     Storable::Registry(ScalarMap_i::myComment.c_str(),&(Restore<ScalarMap_i>));
+    Storable::Registry(GaussPoints_i::myComment.c_str(),&(Restore<GaussPoints_i>));
     Storable::Registry(DeformedShape_i::myComment.c_str(),&(Restore<DeformedShape_i>));
     Storable::Registry(CutPlanes_i::myComment.c_str(),&(Restore<CutPlanes_i>));
     Storable::Registry(CutLines_i::myComment.c_str(),&(Restore<CutLines_i>));
@@ -225,6 +229,28 @@ namespace VISU{
       if(MYDEBUG) MESSAGE("VISU_Gen_i::VISU_Gen_i : there is no opened study in StudyManager !!!");
   }
 
+  bool
+  CreatColoredPrs3d(ColoredPrs3d_i* theColoredPrs3d,
+                   const char* theMeshName, 
+                   VISU::Entity theEntity,
+                   const char* theFieldName, 
+                   CORBA::Double theIteration)
+  {
+#ifndef _DEXCEPT_
+    try{
+#endif
+      if(theColoredPrs3d->Create(theMeshName,theEntity,theFieldName,int(theIteration)))
+       return true;
+#ifndef _DEXCEPT_
+    }catch(std::exception& exc){
+      INFOS("Follow exception was occured :\n"<<exc.what());
+    }catch(...){
+      INFOS("Unknown exception was occured!");
+    }
+#endif
+    return false;
+  }
+
   VISU_Gen_i::~VISU_Gen_i(){
     if(MYDEBUG) MESSAGE("VISU_Gen_i::~VISU_Gen_i");
   }
@@ -425,8 +451,8 @@ namespace VISU{
            if (SUIT_Study* aSStudy = anApp->activeStudy()) {
              if (SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(aSStudy)) {
                 if (_PTR(Study) aCStudy = aStudy->studyDS()) {
-                 MESSAGE("There is an application with active study : StudyId = "
-                         << aCStudy->StudyId() << "; Name = '" << aCStudy->Name() << "'");
+                 if(MYDEBUG) MESSAGE("There is an application with active study : StudyId = "
+                                     << aCStudy->StudyId() << "; Name = '" << aCStudy->Name() << "'");
                  if (myStudyName == aCStudy->Name()) {
                    isActive = true;
                    break;
@@ -448,12 +474,12 @@ namespace VISU{
     {
       CORBA::String_var aName = theStudy->Name();
       std::string aStudyName (aName.in());
-      MESSAGE("StudyId = " << theStudy->StudyId() << "; Name = '" << aName.in() << "'");
+      if(MYDEBUG) MESSAGE("StudyId = " << theStudy->StudyId() << "; Name = '" << aName.in() << "'");
       myStudyDocument = SALOMEDS::Study::_duplicate(theStudy);
 
       ProcessVoidEvent(new TEvent(aStudyName));
     } else {
-      MESSAGE("CORBA::is_nil(theStudy)");
+      INFOS("CORBA::is_nil(theStudy)");
     }
   }
 
@@ -497,6 +523,23 @@ namespace VISU{
     }
   }
 
+  Result_ptr VISU_Gen_i::CreateResult(const char* theFileName){
+    if(myStudyDocument->GetProperties()->IsLocked())
+      return Result::_nil();
+    Mutex mt(myMutex);
+    aFileInfo.setFile(theFileName);
+    Result_i* pResult = new Result_i(myStudyDocument,
+                                    Result_i::eFile,
+                                    Result_i::eImportFile,
+                                    false);
+    if(pResult->Create(theFileName) != NULL)
+      return pResult->_this();
+    else{
+      pResult->_remove_ref();
+      return VISU::Result::_nil();
+    }
+  }
+
   Result_ptr VISU_Gen_i::CopyAndImportFile(const char* theFileName){
     if(myStudyDocument->GetProperties()->IsLocked())
       return Result::_nil();
@@ -607,6 +650,15 @@ namespace VISU{
     return Prs3dOnField<VISU::ScalarMap_i>(theResult,theMeshName,theEntity,theFieldName,theIteration,true)._retn();
   }
 
+  GaussPoints_ptr VISU_Gen_i::GaussPointsOnField(Result_ptr theResult,
+                                                const char* theMeshName,
+                                                VISU::Entity theEntity,
+                                                const char* theFieldName,
+                                                CORBA::Double theIteration)
+  {
+    return Prs3dOnField<VISU::GaussPoints_i>(theResult,theMeshName,theEntity,theFieldName,theIteration,true)._retn();
+  }
+
   DeformedShape_ptr VISU_Gen_i::DeformedShapeOnField(Result_ptr theResult,
                                                     const char* theMeshName,
                                                     VISU::Entity theEntity,
index 240b6beacb6be67d682c8fe464156e8515defccf..d1ab542439b44692d4c010201fe7bffe3d85db4b 100644 (file)
 #include "SALOME_Component_i.hxx"
 #include "SALOME_NamingService.hxx"
 
-namespace VISU{
+namespace VISU
+{
   class Result_i;
+  class ColoredPrs3d_i;
+
+  bool
+  CreatColoredPrs3d(ColoredPrs3d_i* theColoredPrs3d,
+                   const char* theMeshName, 
+                   VISU::Entity theEntity,
+                   const char* theFieldName, 
+                   CORBA::Double theIteration);
+
   class VISU_Gen_i : public virtual POA_VISU::VISU_Gen,
                     public virtual ::Engines_Component_i,
                     public virtual Base_i
@@ -31,56 +41,110 @@ namespace VISU{
               QMutex* theMutex);
     virtual ~VISU_Gen_i();
 
-    virtual char* GetID();
-    virtual VISU::VISUType GetType() { return VISU::TVISUGEN;};
+    virtual 
+    char* 
+    GetID();
+
+    virtual
+    VISU::VISUType 
+    GetType() { return VISU::TVISUGEN;};
+
+    virtual
+    void
+    SetCurrentStudy(SALOMEDS::Study_ptr theStudy);
 
-    virtual void SetCurrentStudy(SALOMEDS::Study_ptr theStudy);
-    virtual SALOMEDS::Study_ptr GetCurrentStudy();
+    virtual
+    SALOMEDS::Study_ptr
+    GetCurrentStudy();
 
-    virtual ViewManager_ptr GetViewManager();
+    virtual
+    ViewManager_ptr
+    GetViewManager();
 
-    virtual SALOMEDS::SObject_ptr ImportTables(const char* theFileName);
-    virtual CORBA::Boolean ExportTableToFile(SALOMEDS::SObject_ptr theTable, const char* theFileName );
+    virtual
+    SALOMEDS::SObject_ptr
+    ImportTables(const char* theFileName);
+
+    virtual
+    CORBA::Boolean
+    ExportTableToFile(SALOMEDS::SObject_ptr theTable, 
+                     const char* theFileName );
 
     //Create Result
-    virtual Result_ptr ImportFile(const char* theFileName);
-    virtual Result_ptr CopyAndImportFile(const char* theFileName);
-    virtual Result_ptr ImportMed(SALOMEDS::SObject_ptr theMedSObject);
-    virtual Result_ptr ImportMedField(SALOME_MED::FIELD_ptr theField);
+    virtual 
+    Result_ptr
+    ImportFile(const char* theFileName);
+
+    virtual
+    Result_ptr
+    CreateResult(const char* theFileName);
+
+    virtual
+    Result_ptr
+    CopyAndImportFile(const char* theFileName);
+
+    virtual
+    Result_ptr
+    ImportMed(SALOMEDS::SObject_ptr theMedSObject);
+
+    virtual
+    Result_ptr
+    ImportMedField(SALOME_MED::FIELD_ptr theField);
+
 
     //Create Presentation Of Submeshes
-    virtual Mesh_ptr MeshOnEntity(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity);
-    virtual Mesh_ptr FamilyMeshOnEntity(Result_ptr theResult, const char* theMeshName,
-                                       VISU::Entity theEntity, const char* theFamilyName);
-    virtual Mesh_ptr GroupMesh(Result_ptr theResult, const char* theMeshName, const char* theGroupName);
+    virtual
+    Mesh_ptr
+    MeshOnEntity(Result_ptr theResult, 
+                const char* theMeshName, 
+                VISU::Entity theEntity);
+
+    virtual
+    Mesh_ptr
+    FamilyMeshOnEntity(Result_ptr theResult, 
+                      const char* theMeshName,
+                      VISU::Entity theEntity, 
+                      const char* theFamilyName);
+
+    virtual
+    Mesh_ptr
+    GroupMesh(Result_ptr theResult, 
+             const char* theMeshName, 
+             const char* theGroupName);
 
     //Create 3D collored Presentation Of Different Types
     template<typename TPrs3d_i> TPrs3d_i*
-    CreatePrs3d(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity,
-               const char* theFieldName, CORBA::Double theIteration, bool theAddToStudy = true)
+    CreatePrs3d(Result_ptr theResult, 
+               const char* theMeshName, 
+               VISU::Entity theEntity,
+               const char* theFieldName, 
+               CORBA::Double theIteration, 
+               bool theAddToStudy = true)
     {
-      TPrs3d_i* aPresent = NULL;
       if(myStudyDocument->GetProperties()->IsLocked()) 
-       return aPresent;
+       return NULL;
 
       typedef typename TPrs3d_i::TInterface TPrs3d;
       typename TPrs3d::_var_type aPrs3d;
       Mutex mt(myMutex);
-      if(Result_i* pResult = dynamic_cast<Result_i*>(GetServant(theResult).in())){
-       if(TPrs3d_i::IsPossible(pResult,theMeshName,theEntity,theFieldName,int(theIteration))){
-         aPresent = new TPrs3d_i(pResult,theAddToStudy);
-         if(aPresent->Create(theMeshName,theEntity,theFieldName,int(theIteration)) == NULL){
-           aPresent->_remove_ref();
-           aPresent = NULL;
-         }
+      if(Result_i* aResult = dynamic_cast<Result_i*>(GetServant(theResult).in())){
+       if(TPrs3d_i::IsPossible(aResult,theMeshName,theEntity,theFieldName,int(theIteration))){
+         TPrs3d_i* aPresent = new TPrs3d_i(aResult,theAddToStudy);
+         if(CreatColoredPrs3d(aPresent,theMeshName,theEntity,theFieldName,theIteration))
+           return aPresent;
+         aPresent->_remove_ref();
        }
       }
-      return aPresent;
+      return NULL;
     }
 
     template<typename TPrs3d_i> typename TPrs3d_i::TInterface::_var_type
-    Prs3dOnField(Result_ptr theResult, const char* theMeshName, VISU::Entity theEntity,
-              const char* theFieldName, CORBA::Double theIteration, bool theAddToStudy = true)
+    Prs3dOnField(Result_ptr theResult, 
+                const char* theMeshName, 
+                VISU::Entity theEntity,
+                const char* theFieldName, 
+                CORBA::Double theIteration, 
+                bool theAddToStudy = true)
     {
       typedef typename TPrs3d_i::TInterface TPrs3d;
       typename TPrs3d::_var_type aPrs3d;
@@ -89,38 +153,104 @@ namespace VISU{
       return TPrs3d::_nil();
     }
 
-    virtual ScalarMap_ptr ScalarMapOnField(Result_ptr theResult,
-                                          const char* theMeshName, VISU::Entity theEntity,
-                                          const char* theFieldName, CORBA::Double theIteration);
-    virtual DeformedShape_ptr DeformedShapeOnField(Result_ptr theResult,
-                                                  const char* theMeshName, VISU::Entity theEntity,
-                                                  const char* theFieldName, CORBA::Double theIteration);
-    virtual Vectors_ptr VectorsOnField(Result_ptr theResult,
-                                      const char* theMeshName, VISU::Entity theEntity,
-                                      const char* theFieldName, CORBA::Double theIteration);
-    virtual IsoSurfaces_ptr IsoSurfacesOnField(Result_ptr theResult,
-                                              const char* theMeshName, VISU::Entity theEntity,
-                                              const char* theFieldName, CORBA::Double theIteration);
-    virtual CutPlanes_ptr CutPlanesOnField(Result_ptr theResult,
-                                          const char* theMeshName, VISU::Entity theEntity,
-                                          const char* theFieldName, CORBA::Double theIteration);
-    virtual CutLines_ptr CutLinesOnField(Result_ptr theResult,
-                                        const char* theMeshName, VISU::Entity theEntity,
-                                        const char* theFieldName, CORBA::Double theIteration);
-    virtual StreamLines_ptr StreamLinesOnField(Result_ptr theResult,
-                                              const char* theMeshName, VISU::Entity theEntity,
-                                              const char* theFieldName, CORBA::Double theIteration);
-    virtual Plot3D_ptr Plot3DOnField(Result_ptr theResult,
-                                    const char* theMeshName, VISU::Entity theEntity,
-                                    const char* theFieldName, CORBA::Double theIteration);
+    virtual
+    ScalarMap_ptr
+    ScalarMapOnField(Result_ptr theResult,
+                    const char* theMeshName, 
+                    VISU::Entity theEntity,
+                    const char* theFieldName, 
+                    CORBA::Double theIteration);
+
+    virtual
+    GaussPoints_ptr
+    GaussPointsOnField(Result_ptr theResult,
+                      const char* theMeshName, 
+                      VISU::Entity theEntity,
+                      const char* theFieldName, 
+                      CORBA::Double theIteration);
+
+    virtual
+    DeformedShape_ptr
+    DeformedShapeOnField(Result_ptr theResult,
+                        const char* theMeshName, 
+                        VISU::Entity theEntity,
+                        const char* theFieldName, 
+                        CORBA::Double theIteration);
+
+    virtual
+    Vectors_ptr
+    VectorsOnField(Result_ptr theResult,
+                  const char* theMeshName, 
+                  VISU::Entity theEntity,
+                  const char* theFieldName, 
+                  CORBA::Double theIteration);
+
+    virtual
+    IsoSurfaces_ptr
+    IsoSurfacesOnField(Result_ptr theResult,
+                      const char* theMeshName, 
+                      VISU::Entity theEntity,
+                      const char* theFieldName, 
+                      CORBA::Double theIteration);
+
+    virtual
+    CutPlanes_ptr
+    CutPlanesOnField(Result_ptr theResult,
+                    const char* theMeshName, 
+                    VISU::Entity theEntity,
+                    const char* theFieldName, 
+                    CORBA::Double theIteration);
+
+    virtual
+    CutLines_ptr
+    CutLinesOnField(Result_ptr theResult,
+                   const char* theMeshName, 
+                   VISU::Entity theEntity,
+                   const char* theFieldName, 
+                   CORBA::Double theIteration);
+
+    virtual
+    StreamLines_ptr
+    StreamLinesOnField(Result_ptr theResult,
+                      const char* theMeshName, 
+                      VISU::Entity theEntity,
+                      const char* theFieldName, 
+                      CORBA::Double theIteration);
+
+    virtual
+    Plot3D_ptr
+    Plot3DOnField(Result_ptr theResult,
+                 const char* theMeshName, 
+                 VISU::Entity theEntity,
+                 const char* theFieldName, 
+                 CORBA::Double theIteration);
+
     //Create Digital Presentation
-    virtual Table_ptr CreateTable(const char* theTableEntry);
-    virtual Curve_ptr CreateCurve(Table_ptr theTable, CORBA::Long theHRow, CORBA::Long theVRow);
-    virtual Container_ptr CreateContainer();
-    virtual Animation_ptr CreateAnimation(View3D_ptr theView3d);
+    virtual 
+    Table_ptr
+    CreateTable(const char* theTableEntry);
 
-    virtual void DeleteResult(Result_ptr theResult);
-    virtual void DeletePrs3d(Prs3d_ptr thePrs3d);
+    virtual
+    Curve_ptr
+    CreateCurve(Table_ptr theTable, 
+               CORBA::Long theHRow, 
+               CORBA::Long theVRow);
+
+    virtual
+    Container_ptr 
+    CreateContainer();
+
+    virtual
+    Animation_ptr
+    CreateAnimation(View3D_ptr theView3d);
+
+    virtual
+    void 
+    DeleteResult(Result_ptr theResult);
+
+    virtual
+    void 
+    DeletePrs3d(Prs3d_ptr thePrs3d);
 
     // inherited methods from Engines::Component
     virtual
@@ -128,47 +258,83 @@ namespace VISU{
     DumpPython(CORBA::Object_ptr theStudy,
               CORBA::Boolean theIsPublished,
               CORBA::Boolean& theIsValidScript);
+
     // inherited methods from SALOMEDS::Driver
-    virtual SALOMEDS::TMPFile* Save(SALOMEDS::SComponent_ptr theComponent,
-                                   const char* theURL,
-                                   bool isMultiFile);
-    virtual SALOMEDS::TMPFile* SaveASCII(SALOMEDS::SComponent_ptr theComponent,
-                                        const char* theURL,
-                                        bool isMultiFile);
-    virtual bool Load(SALOMEDS::SComponent_ptr,
-                     const SALOMEDS::TMPFile &,
-                     const char* theURL,
-                     bool isMultiFile);
-    virtual bool LoadASCII(SALOMEDS::SComponent_ptr,
-                          const SALOMEDS::TMPFile &,
-                          const char* theURL,
-                          bool isMultiFile);
-
-    virtual void Close(SALOMEDS::SComponent_ptr IORSComponent);
-
-    virtual char* ComponentDataType();
-
-    virtual char* IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
-                                        const char* IORString,
-                                        CORBA::Boolean isMultiFile,
-                                        CORBA::Boolean isASCII);
-    virtual char* LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
-                                        const char* aLocalPersistentID,
-                                        CORBA::Boolean isMultiFile,
-                                        CORBA::Boolean isASCII);
-
-    virtual bool CanPublishInStudy(CORBA::Object_ptr theIOR);
-    virtual SALOMEDS::SObject_ptr PublishInStudy(SALOMEDS::Study_ptr theStudy,
-                                                SALOMEDS::SObject_ptr theSObject,
-                                                CORBA::Object_ptr theObject,
-                                                const char* theName) throw (SALOME::SALOME_Exception);
-
-    CORBA::Boolean CanCopy(SALOMEDS::SObject_ptr theObject);
-    SALOMEDS::TMPFile* CopyFrom(SALOMEDS::SObject_ptr theObject, CORBA::Long& theObjectID);
-    CORBA::Boolean CanPaste(const char* theComponentName, CORBA::Long theObjectID);
-    SALOMEDS::SObject_ptr PasteInto(const SALOMEDS::TMPFile& theStream,
-                                   CORBA::Long theObjectID,
-                                   SALOMEDS::SObject_ptr theObject);
+    virtual
+    SALOMEDS::TMPFile* 
+    Save(SALOMEDS::SComponent_ptr theComponent,
+        const char* theURL,
+        bool isMultiFile);
+
+    virtual
+    SALOMEDS::TMPFile* 
+    SaveASCII(SALOMEDS::SComponent_ptr theComponent,
+             const char* theURL,
+             bool isMultiFile);
+
+    virtual
+    bool
+    Load(SALOMEDS::SComponent_ptr,
+        const SALOMEDS::TMPFile &,
+        const char* theURL,
+        bool isMultiFile);
+
+    virtual
+    bool
+    LoadASCII(SALOMEDS::SComponent_ptr,
+             const SALOMEDS::TMPFile &,
+             const char* theURL,
+             bool isMultiFile);
+    
+    virtual
+    void
+    Close(SALOMEDS::SComponent_ptr IORSComponent);
+
+    virtual
+    char* 
+    ComponentDataType();
+
+    virtual
+    char* 
+    IORToLocalPersistentID(SALOMEDS::SObject_ptr theSObject,
+                          const char* IORString,
+                          CORBA::Boolean isMultiFile,
+                          CORBA::Boolean isASCII);
+
+    virtual
+    char* 
+    LocalPersistentIDToIOR(SALOMEDS::SObject_ptr theSObject,
+                          const char* aLocalPersistentID,
+                          CORBA::Boolean isMultiFile,
+                          CORBA::Boolean isASCII);
+
+    virtual 
+    bool
+    CanPublishInStudy(CORBA::Object_ptr theIOR);
+
+    virtual
+    SALOMEDS::SObject_ptr
+    PublishInStudy(SALOMEDS::Study_ptr theStudy,
+                  SALOMEDS::SObject_ptr theSObject,
+                  CORBA::Object_ptr theObject,
+                  const char* theName) throw (SALOME::SALOME_Exception);
+
+    CORBA::Boolean 
+    CanCopy(SALOMEDS::SObject_ptr theObject);
+
+    SALOMEDS::TMPFile* 
+    CopyFrom(SALOMEDS::SObject_ptr theObject, 
+            CORBA::Long& theObjectID);
+
+    CORBA::Boolean 
+    CanPaste(const char* theComponentName, 
+            CORBA::Long theObjectID);
+
+    SALOMEDS::SObject_ptr
+    PasteInto(const SALOMEDS::TMPFile& theStream,
+             CORBA::Long theObjectID,
+             SALOMEDS::SObject_ptr theObject);
   };
 }
+
 #endif
diff --git a/src/VISU_I/VISU_I.cxx b/src/VISU_I/VISU_I.cxx
new file mode 100644 (file)
index 0000000..a3a39f2
--- /dev/null
@@ -0,0 +1,54 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   :
+//  Author :
+//  Module :
+//  $Header$
+
+#include "VISUConfig.hh"
+#include "VISU_Gen_i.hh"
+#include "VISU_Result_i.hh"
+#include "VISU_PrsObject_i.hh"
+#include "VISU_Table_i.hh"
+#include "VISU_Prs3d_i.hh"
+#include "VISU_Mesh_i.hh"
+#include "VISU_ScalarMap_i.hh"
+#include "VISU_IsoSurfaces_i.hh"
+#include "VISU_DeformedShape_i.hh"
+#include "VISU_DeformedShape_i.hh"
+#include "VISU_Plot3D_i.hh"
+#include "VISU_CutPlanes_i.hh"
+#include "VISU_CutLines_i.hh"
+#include "VISU_Vectors_i.hh"
+#include "VISU_StreamLines_i.hh"
+#include "VISU_GaussPoints_i.hh"
+#include "VISU_ViewManager_i.hh"
+#include "VISU_View_i.hh"
+#include "VISU_TimeAnimation.h"
+
+int
+main(int argc, char** argv)
+{
+  return 0;
+}
index 853a5499b20f02345f48c0ad9ebd21cb482f761e..4198c8a6497849222fb098c9207f99461cea2058 100644 (file)
@@ -56,10 +56,10 @@ IsoSurfaces_i(Result_i* theResult,
              bool theAddToStudy) :
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theAddToStudy),
+  ColoredPrs3d_i(theResult,theAddToStudy),
   ScalarMap_i(theResult,theAddToStudy),
   myIsoSurfacesPL(NULL)
-{
-}
+{}
 
 
 VISU::IsoSurfaces_i::
@@ -67,6 +67,7 @@ IsoSurfaces_i(Result_i* theResult,
              SALOMEDS::SObject_ptr theSObject) :
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theSObject),
+  ColoredPrs3d_i(theResult,theSObject),
   ScalarMap_i(theResult,theSObject),
   myIsoSurfacesPL(NULL)
 {
@@ -82,13 +83,14 @@ VISU::Storable* VISU::IsoSurfaces_i::Create(const char* theMeshName, VISU::Entit
 
 VISU::Storable* VISU::IsoSurfaces_i::Restore(const Storable::TRestoringMap& theMap)
 {
-  DoHook();
+  TSuperClass::Restore(theMap);
+
   SetNbSurfaces(VISU::Storable::FindValue(theMap,"myNbSurface").toInt());
   float aMin = VISU::Storable::FindValue(theMap,"myRange[0]").toDouble();
   float aMax = VISU::Storable::FindValue(theMap,"myRange[1]").toDouble();
   SetSubRange(aMin,aMax);
     
-  return ScalarMap_i::Restore(theMap);
+  return this;
 }
 
 void VISU::IsoSurfaces_i::ToStream(std::ostringstream& theStr){
@@ -134,6 +136,17 @@ void VISU::IsoSurfaces_i::DoHook(){
 }
 
 
+VISU_Actor* 
+VISU::IsoSurfaces_i
+::CreateActor(const Handle(SALOME_InteractiveObject)& theIO)
+{
+  if(VISU_Actor* anActor = ScalarMap_i::CreateActor(theIO)){
+    anActor->SetVTKMapping(true);
+    return anActor;
+  }
+  return NULL;
+}
+
 void VISU::IsoSurfaces_i::SetMapScale(double theMapScale){
   myIsoSurfacesPL->SetMapScale(theMapScale);
 }
index d51f36aaeb44cf1a678e95eba9e0b69c93db87d4..94e099155f6c267a1d7d365f1cdeec9c80adde47 100644 (file)
@@ -77,6 +77,10 @@ namespace VISU{
 
     virtual Storable* Restore(const Storable::TRestoringMap& theMap);
 
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
     virtual void SetMapScale(double theMapScale = 1.0);
   };
 }
index 5c3cb3179cc10cd8589e56bc50f70a0283d62c54..701e27ebd8e1230d4a87342ed444ba50037cde2c 100644 (file)
@@ -29,8 +29,9 @@
 #include "VISU_Result_i.hh"
 #include "VISU_ViewManager_i.hh"
 
-#include "VISU_MeshPL.hxx"
 #include "VISU_MeshAct.h"
+#include "VISU_MeshPL.hxx"
+#include "VISU_Convertor.hxx"
 
 using namespace VISU;
 using namespace std;
@@ -74,7 +75,7 @@ Mesh_i(Result_i* theResult,
 
 void VISU::Mesh_i::RemoveFromStudy()
 {
-  VISU::DeleteActors(this);
+  VISU::Prs3d_i::RemoveFromStudy();
   VISU::RemoveFromStudy(mySObject);
 }
 
@@ -92,7 +93,7 @@ int VISU::Mesh_i::IsPossible (Result_i* theResult, const char* theMeshName,
   try{
     MESSAGE("Mesh_i::IsPossible - theMeshName = '"<<theMeshName<<"'; theEntity = "<<theEntity<<"; theFamilyName = '"<<theFamilyName<<"'");
     float aSize = INCMEMORY*
-      theResult->GetInput()->GetMeshOnEntitySize(theMeshName,(VISU::TEntity)theEntity,theFamilyName);
+      theResult->GetInput()->GetMeshOnEntitySize(theMeshName,(VISU::TEntity)theEntity);
     bool aResult = VISU_PipeLine::CheckAvailableMemory(aSize);
     MESSAGE("Mesh_i::IsPossible - CheckAvailableMemory = "<<float(aSize)<<"; aResult = "<<aResult);
     return aResult;
@@ -214,41 +215,42 @@ VISU::Storable* VISU::Mesh_i::Build (int theRestoring)
       myNodeColor.R = myNodeColor.G = 1.0;  myNodeColor.B = 1.0;
       myLinkColor.R = myLinkColor.G = myLinkColor.B = 83/255.;
     }
-    //jfa IPAL9284:if (int(myEntity) >= 0)
-    if (myEntity >= 0) //jfa IPAL9284
-      if (mySubMeshName == "")
+
+    if(myEntity >= 0)
+      if(mySubMeshName == "")
        myType = VISU::TENTITY;
       else
        myType = VISU::TFAMILY;
     else
       myType = VISU::TGROUP;
+
     if(MYDEBUG) MESSAGE("Mesh_i::Build - myType = "<<myType);
     QString aComment;
 
-    VISU_Convertor::TOutput *anOutput;
+    VISU::PIDMapper anIDMapper;
     switch(myType){
     case VISU::TENTITY :
-      //jfa IPAL9284:anOutput = myResult->GetInput()->GetMeshOnEntity(myMeshName,myEntity);
-      anOutput = myResult->GetInput()->GetMeshOnEntity(myMeshName,(VISU::TEntity)myEntity);//jfa IPAL9284
+      anIDMapper = myResult->GetInput()->GetMeshOnEntity(myMeshName,(VISU::TEntity)myEntity);//jfa IPAL9284
       aComment.sprintf("myComment=ENTITY;myType=%d;myMeshName=%s;myId=%d",
                       VISU::TENTITY,myMeshName.c_str(),myEntity);
       break;
     case VISU::TFAMILY :
-      //jfa IPAL9284:anOutput = myResult->GetInput()->GetMeshOnEntity(myMeshName,myEntity,mySubMeshName);
-      anOutput = myResult->GetInput()->GetMeshOnEntity
-        (myMeshName,(VISU::TEntity)myEntity,mySubMeshName);//jfa IPAL9284
+      anIDMapper = myResult->GetInput()->GetFamilyOnEntity(myMeshName,(VISU::TEntity)myEntity,mySubMeshName);
       aComment.sprintf("myComment=FAMILY;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s",
                       VISU::TFAMILY,myMeshName.c_str(),myEntity,mySubMeshName.c_str());
       break;
     case VISU::TGROUP :
-      anOutput = myResult->GetInput()->GetMeshOnGroup(myMeshName,mySubMeshName);
+      anIDMapper = myResult->GetInput()->GetMeshOnGroup(myMeshName,mySubMeshName);
       aComment.sprintf("myComment=GROUP;myType=%d;myMeshName=%s;myName=%s",
                       VISU::TGROUP,myMeshName.c_str(),mySubMeshName.c_str());
       break;
     }
-    if(anOutput == NULL) throw std::runtime_error("Mesh_i::Build - anOutput == NULL !!!");
-    myMeshPL->SetInput(anOutput);
+    if(!anIDMapper) 
+      throw std::runtime_error("Mesh_i::Build - !anIDMapper !!!");
+
+    myMeshPL->SetIDMapper(anIDMapper);
     myMeshPL->Build();
+
     if(!theRestoring) { //Setting IOR on the label
       myMeshPL->Init();
       string aResultEntry = myResult->GetEntry();
index 8f69fd9f3810b2b12e97dd843a1b5118aaf5128c..0cc631b20c278920007658e0fc3ff79aed51ed7c 100644 (file)
@@ -48,21 +48,25 @@ QString VISU::Plot3D_i::GenerateName() { return VISU::GenerateName("Plot3D",myNb
 const string VISU::Plot3D_i::myComment = "PLOT3D";
 const char* VISU::Plot3D_i::GetComment() const { return myComment.c_str(); }
 
-VISU::Plot3D_i::Plot3D_i (Result_i* theResult, bool theAddToStudy)
-     : PrsObject_i(theResult->GetStudyDocument()),
-       Prs3d_i(theResult,theAddToStudy),
-       ScalarMap_i(theResult,theAddToStudy),
-       myPlot3DPL(NULL)
-{
-}
-
-VISU::Plot3D_i::Plot3D_i (Result_i* theResult, SALOMEDS::SObject_ptr theSObject)
-     : PrsObject_i(theResult->GetStudyDocument()),
-       Prs3d_i(theResult,theSObject),
-       ScalarMap_i(theResult,theSObject),
-       myPlot3DPL(NULL)
-{
-}
+VISU::Plot3D_i
+::Plot3D_i(Result_i* theResult, 
+          bool theAddToStudy) :
+  PrsObject_i(theResult->GetStudyDocument()),
+  Prs3d_i(theResult,theAddToStudy),
+  ColoredPrs3d_i(theResult,theAddToStudy),
+  ScalarMap_i(theResult,theAddToStudy),
+  myPlot3DPL(NULL)
+{}
+
+VISU::Plot3D_i
+::Plot3D_i(Result_i* theResult, 
+          SALOMEDS::SObject_ptr theSObject) :
+  PrsObject_i(theResult->GetStudyDocument()),
+  Prs3d_i(theResult,theSObject),
+  ColoredPrs3d_i(theResult,theSObject),
+  ScalarMap_i(theResult,theSObject),
+  myPlot3DPL(NULL)
+{}
 
 VISU::Storable* VISU::Plot3D_i::Create (const char* theMeshName, VISU::Entity theEntity,
                                        const char* theFieldName, int theIteration)
@@ -72,7 +76,8 @@ VISU::Storable* VISU::Plot3D_i::Create (const char* theMeshName, VISU::Entity th
 
 VISU::Storable* VISU::Plot3D_i::Restore (const Storable::TRestoringMap& theMap)
 {
-  DoHook();
+  TSuperClass::Restore(theMap);
+
   SetOrientation(VISU::Plot3D::Orientation(VISU::Storable::FindValue(theMap,"myBasePlane").toInt()),
                 Storable::FindValue(theMap,"aRot[0]").toDouble(),
                 Storable::FindValue(theMap,"aRot[1]").toDouble());
@@ -82,7 +87,7 @@ VISU::Storable* VISU::Plot3D_i::Restore (const Storable::TRestoringMap& theMap)
   SetContourPrs(VISU::Storable::FindValue(theMap,"myContourPrs").toInt());
   SetNbOfContours(VISU::Storable::FindValue(theMap,"myNbOfContours").toInt());
 
-  return ScalarMap_i::Restore(theMap);
+  return this;
 }
 
 void VISU::Plot3D_i::ToStream (std::ostringstream& theStr)
@@ -179,6 +184,17 @@ void VISU::Plot3D_i::DoHook()
   ScalarMap_i::DoHook();
 }
 
+VISU_Actor* 
+VISU::Plot3D_i
+::CreateActor(const Handle(SALOME_InteractiveObject)& theIO)
+{
+  if(VISU_Actor* anActor = ScalarMap_i::CreateActor(theIO)){
+    anActor->SetVTKMapping(true);
+    return anActor;
+  }
+  return NULL;
+}
+
 void VISU::Plot3D_i::SetMapScale(double theMapScale)
 {
   myPlot3DPL->SetMapScale(theMapScale);
index acd7644013132875935acd272f30d250531fdb65..a20df36301779223aebed246cbdef493e6e517e7 100644 (file)
@@ -86,6 +86,10 @@ namespace VISU {
 
     virtual Storable* Restore (const Storable::TRestoringMap& theMap);
 
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
     static const std::string myComment;
     virtual const char* GetComment() const;
     virtual QString GenerateName();
index 7838834f72dde338e7c79200c08526d3dd9ec5b7..f0d97655960e0de11a0900cb48b84c28fe860612 100644 (file)
 //  Module : VISU
 
 #include "VISU_PipeLine.hxx"
-#include "VISU_Result_i.hh"
 #include "VISU_Prs3d_i.hh"
+
+#include "VISU_Result_i.hh"
 #include "VISU_Actor.h"
 
-#include <vtkGeometryFilter.h>
-#include <vtkDataSetMapper.h>
+#include <vtkActorCollection.h>
+#include <vtkMapper.h>
+
+
+#include <boost/bind.hpp>
 
 using namespace VISU;
 using namespace std;
 
 #ifdef _DEBUG_
-static int MYDEBUG = 0;
+static int MYDEBUG = 1;
 #else
 static int MYDEBUG = 0;
 #endif
 
-VISU::Prs3d_i::
-Prs3d_i(Result_i* theResult,
-       SALOMEDS::SObject_ptr theSObject) :
+
+//----------------------------------------------------------------------------
+VISU::Prs3d_i
+::Prs3d_i(Result_i* theResult,
+         SALOMEDS::SObject_ptr theSObject) :
   PrsObject_i(theResult->GetStudyDocument()),
-  myResult(theResult),
   mySObject(SALOMEDS::SObject::_duplicate(theSObject)),
+  myActorCollection(vtkActorCollection::New()),
+  myResult(theResult),
   myAddToStudy(true),
   myPipeLine(NULL)
 {
+  if(MYDEBUG) MESSAGE("Prs3d_i::Prs3d_i - this = "<<this);
   myOffset[0] = myOffset[1] = myOffset[2] = 0;
+  myActorCollection->Delete();
   myResult->Register();
 }
 
-VISU::Prs3d_i::
-Prs3d_i(Result_i* theResult,
-       bool theAddToStudy) :
+VISU::Prs3d_i
+::Prs3d_i(Result_i* theResult,
+         bool theAddToStudy) :
   PrsObject_i(theResult->GetStudyDocument()),
-  myResult(theResult),
+  myActorCollection(vtkActorCollection::New()),
   mySObject(SALOMEDS::SObject::_nil()),
   myAddToStudy(theAddToStudy),
+  myResult(theResult),
   myPipeLine(NULL)
 {
+  if(MYDEBUG) MESSAGE("Prs3d_i::Prs3d_i - this = "<<this);
   myOffset[0] = myOffset[1] = myOffset[2] = 0;
+  myActorCollection->Delete();
   myResult->Register();
 }
 
-void VISU::Prs3d_i::SameAs(const Prs3d_i* theOrigin)
+void
+VISU::Prs3d_i
+::SameAs(const Prs3d_i* theOrigin)
 {
   if (Prs3d_i* aOrigin = const_cast<Prs3d_i*>(theOrigin)) {
     myPipeLine->SameAs(aOrigin->GetPL());
@@ -75,60 +89,20 @@ void VISU::Prs3d_i::SameAs(const Prs3d_i* theOrigin)
   }
 }
 
-VISU::Prs3d_i::~Prs3d_i() {
-  if(MYDEBUG) MESSAGE("~Prs3d_i() - this = "<<this
-                     <<"; GetReferenceCount() = "<<myPipeLine->GetReferenceCount());
+VISU::Prs3d_i
+::~Prs3d_i() 
+{
+  if(MYDEBUG) MESSAGE("Prs3d_i::~Prs3d_i - this = "<<this);
+  myRemoveActorsFromRendererSignal();
   myPipeLine->Delete();
   myResult->Destroy();
 }
 
-void VISU::Prs3d_i::CreateActor(VISU_Actor* theActor, const Handle(SALOME_InteractiveObject)& theIO)
-{
-  try{
-    Update();
-    //    if(myAddToStudy){
-    Handle(SALOME_InteractiveObject) anIO = theIO;
-    if(anIO.IsNull() && (!mySObject->_is_nil())){
-      anIO = new SALOME_InteractiveObject(mySObject->GetID(),"VISU",GetName());
-      theActor->setIO(anIO);
-    }
-      // }
-    theActor->SetPipeLine(GetPipeLine());
-    theActor->SetPrs3d(this);
-    theActor->SetPosition(myOffset);
-  }catch(std::bad_alloc& ex){
-    throw std::runtime_error("CreateActor >> No enough memory");
-    throw ex;
-  } catch(std::exception& ex){
-    throw ex;
-  }catch(...) {
-    throw std::runtime_error("CreateActor >> unexpected exception was caught!!!");
-  }
-}
-
-void VISU::Prs3d_i::UpdateActor(VISU_Actor* theActor) {
-  if(MYDEBUG) MESSAGE("Prs3d_i::UpdateActor() - this = "<<this);
-
-  // fix for bug 9808 BEGIN
-  vtkMapper *aMapper = myPipeLine->GetMapper();
-  vtkDataSet *aDataSet = aMapper->GetInput();
-  if (!aDataSet)
-    throw std::runtime_error("There is no input data !!!");
-  aDataSet->Update();
-  static float eps = VTK_LARGE_FLOAT * 0.1 ;
-  if (!aDataSet->GetNumberOfCells())
-    throw std::runtime_error("There is no visible elements");
-  if (aDataSet->GetLength() > eps)
-    throw std::runtime_error("Diagonal of the actor is too large !!!");
-  // fix for bug 9808 END
-
-  //theActor->GetMapper()->ShallowCopy(myPipeLine->GetMapper());
-  theActor->GetMapper()->ShallowCopy(aMapper);
-  theActor->SetPosition(myOffset);
-  theActor->Modified();
-}
 
-VISU::Storable* VISU::Prs3d_i::Restore(const Storable::TRestoringMap& theMap)
+//----------------------------------------------------------------------------
+VISU::Storable* 
+VISU::Prs3d_i
+::Restore(const Storable::TRestoringMap& theMap)
 {
   myName = VISU::Storable::FindValue(theMap,"myName").latin1();
   myOffset[0] = VISU::Storable::FindValue(theMap,"myOffset[0]").toFloat();
@@ -137,15 +111,51 @@ VISU::Storable* VISU::Prs3d_i::Restore(const Storable::TRestoringMap& theMap)
   return this;
 }
 
-void VISU::Prs3d_i::ToStream(std::ostringstream& theStr){
+void
+VISU::Prs3d_i
+::ToStream(std::ostringstream& theStr)
+{
   Storable::DataToStream( theStr, "myName",   myName.c_str() );
   Storable::DataToStream( theStr, "myOffset[0]", myOffset[0] );
   Storable::DataToStream( theStr, "myOffset[1]", myOffset[1] );
   Storable::DataToStream( theStr, "myOffset[2]", myOffset[2] );
 }
 
-void VISU::Prs3d_i::Update() {
-  if(MYDEBUG) MESSAGE("Prs3d_i::Update() - this = "<<this);
+
+//----------------------------------------------------------------------------
+SALOMEDS::SObject_var 
+VISU::Prs3d_i
+::GetSObject()
+{
+  if(CORBA::is_nil(mySObject.in())){
+    const SALOMEDS::Study_var& aStudy = myResult->GetStudyDocument();
+    CORBA::String_var anIOR = GetID();
+    mySObject = aStudy->FindObjectIOR(anIOR);
+  }
+  return mySObject;
+}
+
+Result_i* 
+VISU::Prs3d_i
+::GetResult() const 
+{ 
+  return myResult;
+}
+
+const std::string& 
+VISU::Prs3d_i
+::GetMeshName() const 
+{ 
+  return myMeshName; 
+}
+
+
+//----------------------------------------------------------------------------
+void
+VISU::Prs3d_i
+::Update() 
+{
+  if(MYDEBUG) MESSAGE("Prs3d_i::Update - this = "<<this);
   try{
     myPipeLine->Update();
   }catch(...){
@@ -153,84 +163,199 @@ void VISU::Prs3d_i::Update() {
   }
 }
 
-VISU_PipeLine* VISU::Prs3d_i::GetPipeLine(){
+void
+VISU::Prs3d_i
+::RemoveFromStudy() 
+{
+  myRemoveActorsFromRendererSignal();
+}
+
+
+//----------------------------------------------------------------------------
+VISU_PipeLine* 
+VISU::Prs3d_i
+::GetPipeLine()
+{
   return GetPL();
 }
 
-VISU_PipeLine* VISU::Prs3d_i::GetPL(){
+VISU_PipeLine* 
+VISU::Prs3d_i
+::GetPL()
+{
   return myPipeLine;
 }
 
-vtkUnstructuredGrid* VISU::Prs3d_i::GetInput(){
+vtkUnstructuredGrid* 
+VISU::Prs3d_i::
+GetInput()
+{
   return myPipeLine->GetInput();
 }
 
 
-SALOMEDS::SObject_var VISU::Prs3d_i::GetSObject(){
-  if (CORBA::is_nil(mySObject.in())) {
-    const SALOMEDS::Study_var& aStudy = myResult->GetStudyDocument();
-    CORBA::String_var anIOR = GetID();
-    mySObject = aStudy->FindObjectIOR(anIOR);
+//----------------------------------------------------------------------------
+void
+VISU::Prs3d_i
+::CreateActor(VISU_Actor* theActor, const Handle(SALOME_InteractiveObject)& theIO)
+{
+  try{
+    Handle(SALOME_InteractiveObject) anIO = theIO;
+    if(anIO.IsNull() && (!mySObject->_is_nil())){
+      anIO = new SALOME_InteractiveObject(mySObject->GetID(),"VISU",GetName());
+      theActor->setIO(anIO);
+    }
+
+    Update();
+    theActor->SetPrs3d(this);
+    theActor->SetShrinkFactor();
+    theActor->SetPosition(myOffset);
+    theActor->SetPipeLine(GetPipeLine());
+
+    theActor->SetFactory(this);
+    myUpdateActorsSignal.connect(boost::bind(&VISU_Actor::UpdateFromFactory,theActor));
+    myRemoveActorsFromRendererSignal.connect(boost::bind(&VISU_Actor::RemoveFromRender,theActor));
+
+    myActorCollection->AddItem(theActor);
+    theActor->Delete();
+
+  }catch(std::bad_alloc& ex){
+    throw std::runtime_error("CreateActor >> No enough memory");
+    throw ex;
+  } catch(std::exception& ex){
+    throw ex;
+  }catch(...) {
+    throw std::runtime_error("CreateActor >> unexpected exception was caught!!!");
   }
-  return mySObject;
 }
 
-void VISU::Prs3d_i::GetBounds(float aBounds[6]){
-  myPipeLine->GetMapper()->GetBounds(aBounds);
+void
+VISU::Prs3d_i
+::RemoveActor(VISU_Actor* theActor) 
+{
+  if(MYDEBUG) MESSAGE("Prs3d_i::RemoveActor - this = "<<this<<"; theActor = "<<theActor);
+  myActorCollection->RemoveItem(theActor);
 }
 
-// Clipping planes
+void
+VISU::Prs3d_i
+::RemoveActors()
+{
+  if(MYDEBUG) MESSAGE("Prs3d_i::RemoveActors - this = "<<this);
+  myRemoveActorsFromRendererSignal();
+  myActorCollection->RemoveAllItems();
+}
 
-void VISU::Prs3d_i::RemoveAllClippingPlanes(){
-  myPipeLine->RemoveAllClippingPlanes();
+void
+VISU::Prs3d_i
+::UpdateActor(VISU_Actor* theActor) 
+{
+  if(MYDEBUG) MESSAGE("Prs3d_i::UpdateActor - this = "<<this<<"; theActor = "<<theActor);
+  theActor->ShallowCopyPL(myPipeLine);
+  theActor->SetPosition(myOffset);
+  theActor->Modified();
 }
 
-vtkIdType VISU::Prs3d_i::GetNumberOfClippingPlanes() const{
-  return myPipeLine->GetNumberOfClippingPlanes();
+void
+VISU::Prs3d_i
+::UpdateActors()
+{
+  if(MYDEBUG) MESSAGE("Prs3d_i::UpdateActors - this = "<<this);
+  Update();
+  myUpdateActorsSignal();
+}
+
+
+//----------------------------------------------------------------------------
+// Clipping planes
+void
+VISU::Prs3d_i
+::RemoveAllClippingPlanes()
+{
+  myPipeLine->RemoveAllClippingPlanes();
 }
 
-bool VISU::Prs3d_i::AddClippingPlane(vtkPlane* thePlane){
+bool
+VISU::Prs3d_i
+::AddClippingPlane(vtkPlane* thePlane)
+{
   return myPipeLine->AddClippingPlane(thePlane);
 }
 
-vtkPlane* VISU::Prs3d_i::GetClippingPlane(vtkIdType theID) const{
+vtkIdType
+VISU::Prs3d_i
+::GetNumberOfClippingPlanes() const
+{
+  return myPipeLine->GetNumberOfClippingPlanes();
+}
+
+vtkPlane* 
+VISU::Prs3d_i::
+GetClippingPlane(vtkIdType theID) const
+{
   return myPipeLine->GetClippingPlane(theID);
 }
 
-void VISU::Prs3d_i::SetPlaneParam (float theDir[3], float theDist, vtkPlane* thePlane) {
+void
+VISU::Prs3d_i
+::SetPlaneParam (float theDir[3], float theDist, vtkPlane* thePlane) 
+{
   myPipeLine->SetPlaneParam(theDir, theDist, thePlane);
 }
 
-VISU::Result_i* VISU::GetResult(SALOMEDS::SObject_ptr theSObject){
-  VISU::Result_var aResult = FindResult(theSObject);
-  if(!aResult->_is_nil())
-    return dynamic_cast<VISU::Result_i*>(VISU::GetServant(aResult.in()).in());
-  return NULL;
+
+//----------------------------------------------------------------------------
+void
+VISU::Prs3d_i
+::GetBounds(float aBounds[6])
+{
+  myPipeLine->GetMapper()->GetBounds(aBounds);
 }
 
-void VISU::Prs3d_i::SetOffset(const float* theOffsets)
+void 
+VISU::Prs3d_i
+::SetOffset(const float* theOffsets)
 {
   myOffset[0] = theOffsets[0];
   myOffset[1] = theOffsets[1];
   myOffset[2] = theOffsets[2];
 }
 
-void VISU::Prs3d_i::SetOffset(float theDx, float theDy, float theDz)
+void
+VISU::Prs3d_i
+::SetOffset(float theDx, float theDy, float theDz)
 {
   myOffset[0] = theDx;
   myOffset[1] = theDy;
   myOffset[2] = theDz;
 }
 
-void VISU::Prs3d_i::GetOffset(float* theOffsets)
+void
+VISU::Prs3d_i
+::GetOffset(float* theOffsets)
 {
   theOffsets[0] = myOffset[0];
   theOffsets[1] = myOffset[1];
   theOffsets[2] = myOffset[2];
 }
-void VISU::Prs3d_i::GetOffset(float& theDx, float& theDy, float& theDz)
+
+void 
+VISU::Prs3d_i
+::GetOffset(float& theDx, float& theDy, float& theDz)
 {
   theDx = myOffset[0];
   theDy = myOffset[1];
   theDz = myOffset[2];
 }
+
+
+//----------------------------------------------------------------------------
+VISU::Result_i* 
+VISU::GetResult(SALOMEDS::SObject_ptr theSObject)
+{
+  VISU::Result_var aResult = FindResult(theSObject);
+  if(!aResult->_is_nil())
+    return dynamic_cast<VISU::Result_i*>(VISU::GetServant(aResult.in()).in());
+  return NULL;
+}
+
index 124a97ff75ca206d0f9ecea8bb68695a355542f1..a92161658e109add000487ac457df21384b388de 100644 (file)
 #define VISU_Prs3d_i_HeaderFile
 
 #include "VISU_PrsObject_i.hh"
+
+#include "VISU_ActorFactory.h"
+#include "VISU_ConvertorDef.hxx"
+
 #include "SALOME_GenericObj_i.hh"
-#include "Handle_SALOME_InteractiveObject.hxx"
-#include "VISU_Convertor.hxx"
+#include "SALOME_InteractiveObject.hxx"
 
-#include <vtkPlaneSource.h>
+#include <boost/signals/signal0.hpp>
+#include <vtkSmartPointer.h>
 
 class VISU_PipeLine;
 class VISU_Actor;
 
 class vtkPlane;
+class vtkActorCollection;
 class vtkUnstructuredGrid;
 
-namespace VISU{
+namespace VISU
+{
   class Result_i;
 
+  //----------------------------------------------------------------------------
+  //! Base class for all VTK 3D presentations.
+  /*!
+    It is a root class for a middle level of VISU functionality.
+    Almost all functionality of the the class implemented through redirection 
+    external requestes to its VISU_PipeLine.
+    It define an interface and implement the following topics:
+    - provide persistent mechanism;
+    - implement basic actor management (CreateActor, UpdateActor, UpdateActors, RemoveActor and RemoveActors);
+    - implement common 3D functionality like "clipping planes" and offset.
+  */
   class Prs3d_i :
     public virtual POA_VISU::Prs3d,
     public virtual SALOME::GenericObj_i,
+    public virtual TActorFactory,
     public virtual PrsObject_i
 
   {
@@ -53,70 +71,173 @@ namespace VISU{
     Prs3d_i(const Prs3d_i&);
 
   public:
+    //----------------------------------------------------------------------------
+    //! A constructor to create a fresh instance of the class
     explicit
     Prs3d_i(Result_i* theResult,
            bool theAddToStudy);
+
+    //! A constructor to restore an instance of the class
     explicit
     Prs3d_i(Result_i* theResult,
            SALOMEDS::SObject_ptr theSObject);
-    virtual void SameAs(const Prs3d_i* theOrigin);
-    virtual ~Prs3d_i();
 
-  protected:
-    bool myAddToStudy;
-    float myOffset[3];
-    Result_i *myResult;
-    VISU_PipeLine *myPipeLine;
-    SALOMEDS::SObject_var mySObject;
-    std::string myMeshName;
+    //! To create a deep copy from another instance of the class
+    virtual
+    void
+    SameAs(const Prs3d_i* theOrigin);
+
+    virtual
+    ~Prs3d_i();
+
+    //----------------------------------------------------------------------------
+    //! To generate an unique type name for the class (used into persistent functionality)
+    virtual
+    const char* 
+    GetComment() const = 0;
+
+    //! To generate an unique name for the instance of the class
+    virtual
+    QString
+    GenerateName() = 0;
+
+    //! To restore paramters of the instance from Storable::TRestoringMap
+    virtual
+    Storable* 
+    Restore(const Storable::TRestoringMap& theMap);
+
+    //! To save paramters of the instance to std::ostringstream
+    virtual
+    void
+    ToStream(std::ostringstream& theStr);
+
+    //----------------------------------------------------------------------------
+    //! Get corresponding Result_i
+    Result_i* 
+    GetResult() const;
+
+    //! Get corresponding SALOMEDS::SObject
+    virtual
+    SALOMEDS::SObject_var 
+    GetSObject();
+
+    const std::string& 
+    GetMeshName() const;
+
+    //----------------------------------------------------------------------------
+    //! To update is internal state
+    virtual 
+    void
+    Update();
+
+    //! To remove the instance from study
+    virtual
+    void
+    RemoveFromStudy();
+
+    //----------------------------------------------------------------------------
+    //! Get corresponding VISU_PipeLine
+    VISU_PipeLine* 
+    GetPL();
+
+    //! Get input of the VISU_PipeLine
+    vtkUnstructuredGrid* 
+    GetInput();
+
+    //----------------------------------------------------------------------------
+    //! To define a way to create VTK representation of the instance
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL) = 0;
+
+    //! To unregister the pointed actor
+    virtual 
+    void
+    RemoveActor(VISU_Actor* theActor);
+
+    //! To unregister all actors of the instance
+    virtual 
+    void
+    RemoveActors();
+
+    //! To update the pointed actor
+    virtual 
+    void
+    UpdateActor(VISU_Actor* theActor);
+
+    //! To update all actors of the instance
+    virtual 
+    void
+    UpdateActors();
+
+    //----------------------------------------------------------------------------
+    // Clipping planes
+    void
+    RemoveAllClippingPlanes();
 
-    void CreateActor(VISU_Actor* theActor, const Handle(SALOME_InteractiveObject)& theIO = NULL);
-    virtual VISU_PipeLine* GetPipeLine();
+    bool
+    AddClippingPlane(vtkPlane* thePlane);
 
-  public:
-    virtual void Update() ;
-    VISU_PipeLine* GetPL();
+    vtkIdType
+    GetNumberOfClippingPlanes() const;
 
-    vtkUnstructuredGrid* GetInput();
+    vtkPlane* 
+    GetClippingPlane(vtkIdType theID) const;
 
-    void GetBounds(float aBounds[6]);
+    void
+    SetPlaneParam(float theDir[3], float theDist, vtkPlane* thePlane);
 
-    void SetOffset(const float* theOffsets);
-    virtual void SetOffset(float theDx, float theDy, float theDz);
+    //----------------------------------------------------------------------------
+    void
+    GetBounds(float aBounds[6]);
 
-    void GetOffset(float* theOffsets);
-    virtual void GetOffset(float& theDx, float& theDy, float& theDz);
+    void
+    SetOffset(const float* theOffsets);
 
-    virtual const char* GetComment() const = 0;
-    virtual QString GenerateName() = 0;
+    virtual
+    void
+    SetOffset(float theDx, float theDy, float theDz);
 
-    virtual Storable* Restore(const Storable::TRestoringMap& theMap);
+    void
+    GetOffset(float* theOffsets);
 
-    virtual void ToStream(std::ostringstream& theStr);
+    virtual
+    void
+    GetOffset(float& theDx, float& theDy, float& theDz);
 
-    virtual VISU_Actor* CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL) = 0;
+    //----------------------------------------------------------------------------
+  protected:
+    void
+    CreateActor(VISU_Actor* theActor, 
+               const Handle(SALOME_InteractiveObject)& theIO = NULL);
 
-    virtual void UpdateActor(VISU_Actor* theActor) ;
+    virtual 
+    VISU_PipeLine* 
+    GetPipeLine();
 
-    Result_i* GetResult() const { return myResult;}
-    virtual SALOMEDS::SObject_var GetSObject();
-    const std::string& GetMeshName() const { return myMeshName; }
+    bool myAddToStudy;
+    float myOffset[3];
+    Result_i *myResult;
+    VISU_PipeLine *myPipeLine;
+    SALOMEDS::SObject_var mySObject;
+    std::string myMeshName;
 
-    // Clipping planes
-    void RemoveAllClippingPlanes();
-    vtkIdType GetNumberOfClippingPlanes() const;
-    bool AddClippingPlane(vtkPlane* thePlane);
-    vtkPlane* GetClippingPlane(vtkIdType theID) const;
+    boost::signal0<void> myUpdateActorsSignal;
+    boost::signal0<void> myRemoveActorsFromRendererSignal;
+    vtkSmartPointer<vtkActorCollection> myActorCollection;
 
-    void SetPlaneParam(float theDir[3], float theDist, vtkPlane* thePlane);
   };
 
-  Result_i* GetResult(SALOMEDS::SObject_ptr theSObject);
+  //----------------------------------------------------------------------------
+  Result_i* 
+  GetResult(SALOMEDS::SObject_ptr theSObject);
 
+  //----------------------------------------------------------------------------
   template<class TPrs3d>
-  Storable* Restore(SALOMEDS::SObject_ptr theSObject,
-                   const std::string& thePrefix,
-                   const Storable::TRestoringMap& theMap)
+  Storable* 
+  Restore(SALOMEDS::SObject_ptr theSObject,
+         const std::string& thePrefix,
+         const Storable::TRestoringMap& theMap)
   {
     VISU::Result_i* pResult = GetResult(theSObject);
     if(pResult != NULL){
@@ -125,6 +246,7 @@ namespace VISU{
     }
     return NULL;
   }
+  //----------------------------------------------------------------------------
 }
 
 #endif
index 167c412b8879e0d8dedb7e0edf1e0c40dd8f32f6..f16ae64cdef5dee3a50098a7fc255cdf15a638e1 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "VISU_Convertor_impl.hxx"
 #include "VISU_CorbaMedConvertor.hxx"
+#include "VISU_ConvertorUtils.hxx"
 #include "VISU_PipeLine.hxx"
 
 #include "SUIT_ResourceMgr.h"
 #include "SALOMEDS_Tool.hxx"
 #include "HDFascii.hxx"
 
+#include "SUIT_Session.h"
+#include "SALOME_Event.hxx"
+#include "SalomeApp_Study.h"
+#include "SalomeApp_Application.h"
+
+#include <boost/thread/recursive_mutex.hpp>
+#include <boost/thread/thread.hpp>
+
+#include <boost/thread/mutex.hpp>
+#include <boost/bind.hpp>
+
 // QT Includes
 #include <qstring.h>
 #include <qfileinfo.h>
+#include <qsemaphore.h>
+#include <qthread.h>
 
 // VTK Includes
 #include <vtkCell.h>
@@ -51,101 +65,771 @@ using namespace std;
 
 #ifdef _DEBUG_
 static int MYDEBUG = 0;
+static int MYTIMEDEBUG = 0;
 #else
 static int MYDEBUG = 0;
+static int MYTIMEDEBUG = 0;
 #endif
 
-VISU::Result_var VISU::FindResult (SALOMEDS::SObject_ptr theSObject)
+
+namespace VISU
 {
-  SALOMEDS::SComponent_var aSComponent = theSObject->GetFatherComponent();
-  SALOMEDS::SObject_var aFather = theSObject->GetFather();
-  CORBA::String_var aComponentID (aSComponent->GetID());
-  CORBA::String_var aFatherID    (aFather->GetID());
-  VISU::Result_var aResult;
-  while (strcmp(aComponentID, aFatherID) != 0) {
-    CORBA::Object_var anObject = VISU::SObjectToObject(aFather);
-    if (!CORBA::is_nil(anObject)) {
-      aResult = VISU::Result::_narrow(anObject);
-      if (!aResult->_is_nil()) return aResult;
-    }
-    aFather = aFather->GetFather();
-    aFatherID = aFather->GetID();
+  //---------------------------------------------------------------
+  Result_var 
+  FindResult (SALOMEDS::SObject_ptr theSObject)
+  {
+    SALOMEDS::SComponent_var aSComponent = theSObject->GetFatherComponent();
+    SALOMEDS::SObject_var aFather = theSObject->GetFather();
+    CORBA::String_var aComponentID (aSComponent->GetID());
+    CORBA::String_var aFatherID    (aFather->GetID());
+    Result_var aResult;
+    while (strcmp(aComponentID, aFatherID) != 0) {
+      CORBA::Object_var anObject = SObjectToObject(aFather);
+      if (!CORBA::is_nil(anObject)) {
+       aResult = Result::_narrow(anObject);
+       if (!aResult->_is_nil()) return aResult;
+      }
+      aFather = aFather->GetFather();
+      aFatherID = aFather->GetID();
+    }
+    return aResult;
   }
-  return aResult;
-}
 
-QString GenerateName (const char* theName)
-{
-  typedef map<string,int> TNameMap;
-  static TNameMap aMap;
-  TNameMap::const_iterator i = aMap.find(theName);
-  QString tmp;
-  if (i == aMap.end()) {
-    aMap[theName] = 0;
-    tmp = theName;
-  } else {
-    tmp = VISU::GenerateName(theName,++aMap[theName]);
+
+  //---------------------------------------------------------------
+  typedef boost::recursive_mutex TMutex;
+  typedef TMutex::scoped_lock TLock;
+
+  static TMutex myMutex;
+
+  //---------------------------------------------------------------
+  struct TGetStudy: public SALOME_Event
+  {
+    typedef _PTR(Study) TResult;
+    TResult myResult;
+    int myStudyId;
+
+    TGetStudy(const int theStudyId):
+      myStudyId(theStudyId)
+    {}
+    
+    virtual
+    void
+    Execute()
+    {
+      SUIT_Session* aSession = SUIT_Session::session();
+      QPtrList<SUIT_Application> anApplications = aSession->applications();
+      QPtrListIterator<SUIT_Application> anIter (anApplications);
+      while (SUIT_Application* aSApp = anIter.current()) {
+       if(SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>(aSApp)){
+         if(SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(anApp->activeStudy())) {
+           if(_PTR(Study) aStudyDS = aStudy->studyDS()){
+             if(aStudyDS->StudyId() == myStudyId){
+               myResult = aStudy->studyDS();
+               break;
+             }
+           }
+         }
+       }
+       ++anIter;
+      }
+    }
+  };
+
+
+  //---------------------------------------------------------------
+  QString
+  GenerateName (const char* theName)
+  {
+    TLock aLock(myMutex);
+
+    typedef map<string,int> TNameMap;
+    static TNameMap aMap;
+
+    TNameMap::const_iterator i = aMap.find(theName);
+    QString tmp;
+    if (i == aMap.end()) {
+      aMap[theName] = 0;
+      tmp = theName;
+    } else {
+      tmp = GenerateName(theName,++aMap[theName]);
+    }
+    if(MYDEBUG) MESSAGE("GenerateName - "<<tmp<<" from - "<<theName<<"; " <<aMap[theName]);
+    return tmp;
   }
-  if(MYDEBUG) MESSAGE("GenerateName - "<<tmp<<" from - "<<theName<<"; " <<aMap[theName]);
-  return tmp;
-}
+  
 
-QString GenerateFieldName (const string& theName, const string& theUnits)
-{
-  static QString aName;
-  const string tmp (theUnits.size(),' ');
-  if (theUnits == "" || theUnits == tmp)
-    aName.sprintf("%s, -",theName.c_str());
-  else
-    aName.sprintf("%s, %s",theName.c_str(),theUnits.c_str());
-  aName = aName.simplifyWhiteSpace();
-  return aName.latin1();
+  //---------------------------------------------------------------
+  QString 
+  GenerateFieldName (const string& theName, const string& theUnits)
+  {
+    QString aName;
+    const string tmp (theUnits.size(),' ');
+    if (theUnits == "" || theUnits == tmp)
+      aName.sprintf("%s, -",theName.c_str());
+    else
+      aName.sprintf("%s, %s",theName.c_str(),theUnits.c_str());
+    aName = aName.simplifyWhiteSpace();
+    return aName.latin1();
+  }
+
+
+  //---------------------------------------------------------------
+  string
+  GetComponentDataType (SALOMEDS::SObject_ptr theSObject)
+  {
+    SALOMEDS::SComponent_var aCompRefSObj = theSObject->GetFatherComponent();
+    CORBA::String_var aDataType = aCompRefSObj->ComponentDataType();
+    return aDataType.in();
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  CreateReference (SALOMEDS::Study_ptr theStudyDocument,
+                  const string& theFatherEntry, 
+                  const string& theRefEntry)
+  {
+    SALOMEDS::StudyBuilder_var aStudyBuilder = theStudyDocument->NewBuilder();
+    SALOMEDS::SObject_var aFather = theStudyDocument->FindObjectID(theFatherEntry.c_str());
+    SALOMEDS::SObject_var newObj = aStudyBuilder->NewObject(aFather);
+    SALOMEDS::SObject_var aRefSObj = theStudyDocument->FindObjectID(theRefEntry.c_str());
+    aStudyBuilder->Addreference(newObj,aRefSObj);
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  CreateReference (_PTR(Study) theStudyDocument,
+                  const string& theFatherEntry, 
+                  const string& theRefEntry)
+  {
+    TLock aLock(myMutex);
+
+    _PTR(StudyBuilder) aStudyBuilder = theStudyDocument->NewBuilder();
+    _PTR(SObject) aFather = theStudyDocument->FindObjectID(theFatherEntry);
+    _PTR(SObject) aNewObj = aStudyBuilder->NewObject(aFather);
+    _PTR(SObject) aRefSObj = theStudyDocument->FindObjectID(theRefEntry);
+    aStudyBuilder->Addreference(aNewObj,aRefSObj);
+  }
+
+  string 
+  CreateAttributes(_PTR(Study) theStudyDocument,
+                  const string& theFatherEntry, 
+                  const string& theIOR, 
+                  const string& theName,
+                  const string& thePersistentRef, 
+                  const string& theComment,
+                  CORBA::Boolean theCreateNew)
+  {
+    TLock aLock(myMutex);
+
+    _PTR(StudyBuilder) aStudyBuilder = theStudyDocument->NewBuilder();
+    _PTR(SObject) aFather = theStudyDocument->FindObjectID(theFatherEntry);
+
+    _PTR(SObject) aNewObj;
+    if(theCreateNew)
+      aNewObj = aStudyBuilder->NewObject(aFather);
+    else
+      aNewObj = aFather;
+
+    _PTR(GenericAttribute) anAttr;
+    if (theIOR != "") {
+      anAttr = aStudyBuilder->FindOrCreateAttribute(aNewObj, "AttributeIOR");
+      _PTR(AttributeIOR) anIOR (anAttr);
+      anIOR->SetValue(theIOR);
+    }
+    if (theName != "") {
+      anAttr = aStudyBuilder->FindOrCreateAttribute(aNewObj, "AttributeName");
+      _PTR(AttributeName) aName (anAttr);
+      aName->SetValue(theName);
+    }
+    if (thePersistentRef != "") {
+      anAttr = aStudyBuilder->FindOrCreateAttribute(aNewObj, "AttributePersistentRef");
+      _PTR(AttributePersistentRef) aPRef (anAttr);
+      aPRef->SetValue(thePersistentRef);
+    }
+    if (theComment != "") {
+      anAttr = aStudyBuilder->FindOrCreateAttribute(aNewObj, "AttributeComment");
+      _PTR(AttributeComment) aCmnt (anAttr);
+      aCmnt->SetValue(theComment);
+    }
+    return aNewObj->GetID();
+  }
+
+  //---------------------------------------------------------------
+  struct TResultManager
+  {
+    Result_i* myResult;
+
+    TResultManager(Result_i* theResult):
+      myResult(theResult)
+    {
+      myResult->Register();
+    }
+
+    ~TResultManager()
+    {
+      myResult->Destroy();
+    }
+  };
+
+
+  //---------------------------------------------------------------
+  struct TTransactionManager
+  {
+    _PTR(StudyBuilder) myStudyBuilder;
+
+    TTransactionManager(_PTR(Study) theStudyDocument):
+      myStudyBuilder(theStudyDocument->NewBuilder())
+    {
+      TLock aLock(myMutex);
+      myStudyBuilder->NewCommand();
+    }
+
+    ~TTransactionManager()
+    {
+      TLock aLock(myMutex);
+      myStudyBuilder->CommitCommand();
+    }
+  };
+
+
+  //---------------------------------------------------------------
+  struct TUpdateObjBrowser: public SALOME_Event
+  {
+    int myStudyId;
+    CORBA::Boolean* myIsDone;
+    TUpdateObjBrowser(const int theStudyId,
+                     CORBA::Boolean* theIsDone):
+      myStudyId(theStudyId),
+      myIsDone(theIsDone)
+    {}
+    
+    virtual
+    void
+    Execute()
+    {
+      TLock aLock(myMutex);
+      SUIT_Session* aSession = SUIT_Session::session();
+      QPtrList<SUIT_Application> anApplications = aSession->applications();
+      QPtrListIterator<SUIT_Application> anIter (anApplications);
+      while (SUIT_Application* aSApp = anIter.current()) {
+       if(SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>(aSApp)){
+         if (SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(anApp->activeStudy())) {
+           if (_PTR(Study) aCStudy = aStudy->studyDS()) {
+             if (myStudyId == aCStudy->StudyId()) {
+               TTimerLog aTimerLog(MYTIMEDEBUG,"Result_i::updateObjectBrowser");
+               anApp->updateObjectBrowser();
+               *myIsDone = true;
+               break;
+             }
+           }
+         }
+       }
+       ++anIter;
+      }
+    }
+  };
+
+
+  //---------------------------------------------------------------
+  void
+  BuildEntities(Result_i* theResult,
+               VISU_Convertor* theInput,
+               CORBA::Boolean* theIsDone,
+               std::string theResultEntry,
+               _PTR(Study) theStudy)
+  {
+    if(*theIsDone)
+      return;
+
+    TTimerLog aTimerLog(MYTIMEDEBUG,"Result_i::BuildEntities");
+    TResultManager aResultManager(theResult);
+    TTransactionManager aTransactionManager(theStudy);
+
+    {
+      TTimerLog aTimerLog(MYTIMEDEBUG,"theInput->BuildEntities");
+      theInput->BuildEntities();
+    }
+
+    QString aComment;
+    const TMeshMap& aMeshMap = theInput->GetMeshMap();
+    TMeshMap::const_iterator aMeshMapIter = aMeshMap.begin();
+    for(; aMeshMapIter != aMeshMap.end(); aMeshMapIter++){
+      const string& aMeshName = aMeshMapIter->first;
+      const PMesh& aMesh = aMeshMapIter->second;
+      const TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
+      if(aMeshOnEntityMap.empty()) 
+       continue;
+    
+      aComment.sprintf("myComment=MESH;myName=%s;myDim=%d",
+                      aMeshName.c_str(),
+                      aMesh->myDim);
+      aMesh->myEntry = 
+       CreateAttributes(theStudy,
+                        theResultEntry,
+                        "",
+                        aMeshName,
+                        "",
+                        aComment.latin1(),
+                        true);
+    
+      aComment.sprintf("myComment=FAMILIES;myMeshName=%s",
+                      aMeshName.c_str());
+      string aSubMeshesEntry = 
+       CreateAttributes(theStudy,
+                        aMesh->myEntry,
+                        "",
+                        "Families",
+                        "",
+                        aComment.latin1(),
+                        true);
+      //Import entities
+      TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.begin();
+      for(; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++){
+       const TEntity& anEntity = aMeshOnEntityMapIter->first;
+       const PMeshOnEntity& aMeshOnEntity = aMeshOnEntityMapIter->second;
+       
+       string anEntityName;
+       switch(anEntity){
+       case NODE_ENTITY: 
+         anEntityName = "onNodes"; 
+         break;
+       case EDGE_ENTITY: 
+         anEntityName = "onEdges"; 
+         break;
+       case FACE_ENTITY: 
+         anEntityName = "onFaces"; 
+         break;
+       case CELL_ENTITY: 
+         anEntityName = "onCells"; 
+         break;
+       default:
+       continue;
+       }
+       
+       aComment.sprintf("myComment=ENTITY;myType=%d;myMeshName=%s;myId=%d",
+                        VISU::TENTITY,
+                        aMeshName.c_str(),
+                        anEntity);
+       
+       aMeshOnEntity->myEntry = 
+         CreateAttributes(theStudy, 
+                          aSubMeshesEntry, 
+                          "", 
+                          anEntityName.c_str(), 
+                          "", 
+                          aComment.latin1(), 
+                          true);
+      }
+    }
+    
+    ProcessVoidEvent(new TUpdateObjBrowser(theStudy->StudyId(),theIsDone));
+  }
+
+  //---------------------------------------------------------------
+  void
+  BuildGroups(Result_i* theResult,
+             VISU_Convertor* theInput,
+             CORBA::Boolean* theIsDone,
+             CORBA::Boolean theIsBuild,
+             _PTR(Study) theStudy)
+  {
+    if(!theIsBuild || *theIsDone)
+      return;
+
+    TTimerLog aTimerLog(MYTIMEDEBUG,"Result_i::BuildGroups");
+    TResultManager aResultManager(theResult);
+    TTransactionManager aTransactionManager(theStudy);
+    
+    {
+      TTimerLog aTimerLog(MYTIMEDEBUG,"theInput->BuildGroups");
+      theInput->BuildGroups();
+    }
+
+    QString aComment;
+    const TMeshMap& aMeshMap = theInput->GetMeshMap();
+    TMeshMap::const_iterator aMeshMapIter = aMeshMap.begin();
+    for(; aMeshMapIter != aMeshMap.end(); aMeshMapIter++){
+      const string& aMeshName = aMeshMapIter->first;
+      const PMesh& aMesh = aMeshMapIter->second;
+      
+      const TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
+      if(aMeshOnEntityMap.empty()) 
+       continue;
+      
+      TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.begin();
+      for(; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++){
+       const TEntity& anEntity = aMeshOnEntityMapIter->first;
+       const PMeshOnEntity& aMeshOnEntity = aMeshOnEntityMapIter->second;
+       
+       const TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap;
+       TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.begin();
+       for(; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++){
+         const string& aFamilyName = aFamilyMapIter->first;
+         const PFamily& aFamily = aFamilyMapIter->second;
+         aComment.sprintf("myComment=FAMILY;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s",
+                          TFAMILY,
+                          aMeshName.c_str(),
+                          anEntity,
+                          aFamilyName.c_str());
+         aFamily->myEntry =
+           CreateAttributes(theStudy,
+                            aMeshOnEntity->myEntry,
+                            "",
+                            aFamilyName,
+                            "",
+                            aComment.latin1(),
+                            true);
+       }
+      }
+      //Importing groups
+      const TGroupMap& aGroupMap = aMesh->myGroupMap;
+      if(!aGroupMap.empty()){
+       aComment.sprintf("myComment=GROUPS;myMeshName=%s",
+                        aMeshName.c_str());
+       string aGroupsEntry =
+         CreateAttributes(theStudy,
+                          aMesh->myEntry,
+                          "",
+                          "Groups",
+                          "",
+                          aComment.latin1(),
+                          true);
+       TGroupMap::const_iterator aGroupMapIter = aGroupMap.begin();
+       for(; aGroupMapIter != aGroupMap.end(); aGroupMapIter++){
+         const string& aGroupName = aGroupMapIter->first;
+         const PGroup& aGroup = aGroupMapIter->second;
+         aComment.sprintf("myComment=GROUP;myType=%d;myMeshName=%s;myName=%s",
+                          TGROUP,aMeshName.c_str(),aGroupName.c_str());
+         aGroup->myEntry = 
+           CreateAttributes(theStudy,
+                            aGroupsEntry,
+                            "",
+                            aGroupName,
+                            "",
+                            aComment.latin1(),
+                            true);
+         const TFamilySet& aFamilySet = aGroup->myFamilySet;
+         TFamilySet::const_iterator aFamilyIter = aFamilySet.begin();
+         for(; aFamilyIter != aFamilySet.end(); aFamilyIter++){
+           const PFamily& aFamily = *aFamilyIter;
+           CreateReference(theStudy,
+                           aGroup->myEntry,
+                           aFamily->myEntry);
+         }
+       }
+      }
+    }
+    
+    ProcessVoidEvent(new TUpdateObjBrowser(theStudy->StudyId(),theIsDone));
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  BuildFields(Result_i* theResult,
+             VISU_Convertor* theInput,
+             CORBA::Boolean* theIsDone,
+             CORBA::Boolean theIsBuild,
+             _PTR(Study) theStudy)
+  {
+    if(!theIsBuild || *theIsDone)
+      return;
+
+    TTimerLog aTimerLog(MYTIMEDEBUG,"Result_i::BuildFields");
+    TResultManager aResultManager(theResult);
+    TTransactionManager aTransactionManager(theStudy);
+
+    {
+      TTimerLog aTimerLog(MYTIMEDEBUG,"theInput->BuildFields");
+      theInput->BuildFields();
+    }
+
+    QString aComment;
+    const TMeshMap& aMeshMap = theInput->GetMeshMap();
+    TMeshMap::const_iterator aMeshMapIter = aMeshMap.begin();
+    for(; aMeshMapIter != aMeshMap.end(); aMeshMapIter++){
+      const string& aMeshName = aMeshMapIter->first;
+      const PMesh& aMesh = aMeshMapIter->second;
+      
+      const TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
+      if(aMeshOnEntityMap.empty()) 
+       continue;
+      
+      //Import fields
+      string aFieldsEntry;
+      bool anIsFieldsEntryCreated = false;
+      
+      TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.begin();
+      for(; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++){
+       const TEntity& anEntity = aMeshOnEntityMapIter->first;
+       const PMeshOnEntity& aMeshOnEntity = aMeshOnEntityMapIter->second;
+       const TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
+       TFieldMap::const_iterator aFieldMapIter = aFieldMap.begin();
+       for(; aFieldMapIter != aFieldMap.end(); aFieldMapIter++){
+         if(!anIsFieldsEntryCreated){
+           aComment.sprintf("myComment=FIELDS;myMeshName=%s",
+                            aMeshName.c_str());
+           aFieldsEntry =
+             CreateAttributes(theStudy,
+                              aMesh->myEntry,
+                              "",
+                              "Fields",
+                              "",
+                              aComment.latin1(),
+                              true);
+           anIsFieldsEntryCreated = true;
+         }
+         const string& aFieldName = aFieldMapIter->first;
+         const PField& aField = aFieldMapIter->second;
+         const TValField& aValField = aField->myValField;
+         QString aFieldNameWithUnit = GenerateFieldName(aFieldName,aField->myUnitNames[0]);
+         aComment.sprintf("myComment=FIELD;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s;myNbTimeStamps=%d;myNumComponent=%d",
+                          TFIELD,
+                          aMeshName.c_str(),
+                          anEntity,
+                          aFieldName.c_str(),
+                          aValField.size(),
+                          aField->myNbComp);
+         aField->myEntry = 
+           CreateAttributes(theStudy,
+                            aFieldsEntry,
+                            "",
+                            aFieldNameWithUnit.latin1(),
+                            "",
+                            aComment.latin1(),
+                            true);
+         CreateReference(theStudy,
+                         aField->myEntry,
+                         aMeshOnEntity->myEntry);
+         TValField::const_iterator aValFieldIter = aValField.begin();
+         for(; aValFieldIter != aValField.end(); aValFieldIter++){
+           int aTimeStamp = aValFieldIter->first;
+           const PValForTime& aValForTime = aValFieldIter->second;
+           aComment.sprintf("myComment=TIMESTAMP;myType=%d;myMeshName=%s;myEntityId=%d;myFieldName=%s;myTimeStampId=%d;myNumComponent=%d",
+                            TTIMESTAMP,
+                            aMeshName.c_str(),
+                            anEntity,
+                            aFieldName.c_str(),
+                            aTimeStamp,
+                            aField->myNbComp);
+           string aTimeStampId = VISU_Convertor::GenerateName(aValForTime->myTime);
+           aValForTime->myEntry = 
+             CreateAttributes(theStudy,
+                              aField->myEntry,
+                              "",
+                              aTimeStampId,
+                              "",
+                              aComment.latin1(),
+                              true);
+         }
+       }
+      }
+    }
+    
+    ProcessVoidEvent(new TUpdateObjBrowser(theStudy->StudyId(),theIsDone));
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  BuildMinMax(Result_i* theResult,
+             VISU_Convertor* theInput,
+             CORBA::Boolean* theIsDone,
+             CORBA::Boolean theIsBuild,
+             Result_i::TUpdateMinMaxSignal* theUpdateMinMaxSignal)
+  {
+    if(!theIsBuild || *theIsDone)
+      return;
+
+    TTimerLog aTimerLog(MYTIMEDEBUG,"Result_i::BuildMinMax");
+    TResultManager aResultManager(theResult);
+    
+    theInput->BuildMinMax();
+
+    *theIsDone = true;
+
+    (*theUpdateMinMaxSignal)();
+  }
+
+
+  //---------------------------------------------------------------
+  void
+  BuildFieldDataTree(Result_i* theResult,
+                    VISU_Convertor* theInput,
+                    CORBA::Boolean* theIsFieldsDone,
+                    CORBA::Boolean theIsBuildFields,
+                    CORBA::Boolean* theIsMinMaxDone,
+                    CORBA::Boolean theIsBuildMinMax,
+                    Result_i::TUpdateMinMaxSignal* theUpdateMinMaxSignal,
+                    _PTR(Study) theStudy)
+  {
+    BuildFields(theResult,
+               theInput,
+               theIsFieldsDone,
+               theIsBuildFields,
+               theStudy);
+
+    BuildMinMax(theResult,
+               theInput,
+               theIsMinMaxDone,
+               theIsBuildMinMax,
+               theUpdateMinMaxSignal);
+  }
+  
+
+  //---------------------------------------------------------------
+  struct TBuildArgs
+  {
+    Result_i* myResult;
+    VISU_Convertor* myInput;
+    CORBA::Boolean* myIsEntitiesDone;
+    std::string myResultEntry;
+    CORBA::Boolean* myIsFieldsDone;
+    CORBA::Boolean myIsBuildFields;
+    CORBA::Boolean* myIsMinMaxDone;
+    CORBA::Boolean myIsBuildMinMax;
+    Result_i::TUpdateMinMaxSignal* myUpdateMinMaxSignal;
+    CORBA::Boolean* myIsGroupsDone;
+    CORBA::Boolean myIsBuildGroups;
+    _PTR(Study) myStudy;
+
+    TBuildArgs(Result_i* theResult,
+              VISU_Convertor* theInput,
+              CORBA::Boolean* theIsEntitiesDone,
+              std::string theResultEntry,
+              CORBA::Boolean* theIsFieldsDone,
+              CORBA::Boolean theIsBuildFields,
+              CORBA::Boolean* theIsMinMaxDone,
+              CORBA::Boolean theIsBuildMinMax,
+              Result_i::TUpdateMinMaxSignal* theUpdateMinMaxSignal,
+              CORBA::Boolean* theIsGroupsDone,
+              CORBA::Boolean theIsBuildGroups,
+              _PTR(Study) theStudy):
+      myResult(theResult),
+      myInput(theInput),
+      myIsEntitiesDone(theIsEntitiesDone),
+      myResultEntry(theResultEntry),
+      myIsFieldsDone(theIsFieldsDone),
+      myIsBuildFields(theIsBuildFields),
+      myIsMinMaxDone(theIsMinMaxDone),
+      myIsBuildMinMax(theIsBuildMinMax),
+      myUpdateMinMaxSignal(theUpdateMinMaxSignal),
+      myIsGroupsDone(theIsGroupsDone),
+      myIsBuildGroups(theIsBuildGroups),
+      myStudy(theStudy)
+    {}
+      
+  };
+
+  //---------------------------------------------------------------
+  void
+  BuildDataTree(TBuildArgs theBuildArgs)
+  {
+    BuildEntities(theBuildArgs.myResult,
+                 theBuildArgs.myInput,
+                 theBuildArgs.myIsEntitiesDone,
+                 theBuildArgs.myResultEntry,
+                 theBuildArgs.myStudy);
+    {
+      boost::thread aThread(boost::bind(&BuildGroups,
+                                       theBuildArgs.myResult,
+                                       theBuildArgs.myInput,
+                                       theBuildArgs.myIsGroupsDone,
+                                       theBuildArgs.myIsBuildGroups,
+                                       theBuildArgs.myStudy));
+    }
+    {
+      boost::thread aThread(boost::bind(&BuildFieldDataTree,
+                                       theBuildArgs.myResult,
+                                       theBuildArgs.myInput,
+                                       theBuildArgs.myIsFieldsDone,
+                                       theBuildArgs.myIsBuildFields,
+                                       theBuildArgs.myIsMinMaxDone,
+                                       theBuildArgs.myIsBuildMinMax,
+                                       theBuildArgs.myUpdateMinMaxSignal,
+                                       theBuildArgs.myStudy));
+    }
+  }
+  
 }
 
-void CreateReference (SALOMEDS::Study_ptr theStudyDocument,
-                     const string& theFatherEntry, const string& theRefEntry)
+
+//---------------------------------------------------------------
+VISU::MinMaxCunsomer
+::MinMaxCunsomer():
+  myMinMaxIsInitilized(false)
+{}
+
+bool
+VISU::MinMaxCunsomer
+::IsMinMaxInitilized()
 {
-  SALOMEDS::StudyBuilder_var aStudyBuilder = theStudyDocument->NewBuilder();
-  SALOMEDS::SObject_var aFather = theStudyDocument->FindObjectID(theFatherEntry.c_str());
-  SALOMEDS::SObject_var newObj = aStudyBuilder->NewObject(aFather);
-  SALOMEDS::SObject_var aRefSObj = theStudyDocument->FindObjectID(theRefEntry.c_str());
-  aStudyBuilder->Addreference(newObj,aRefSObj);
+  return myMinMaxIsInitilized;
 }
 
-string GetComponentDataType (SALOMEDS::SObject_ptr theSObject)
+void
+VISU::MinMaxCunsomer
+::UpdateMinMax()
 {
-  SALOMEDS::SComponent_var aCompRefSObj = theSObject->GetFatherComponent();
-  CORBA::String_var aDataType = aCompRefSObj->ComponentDataType();
-  return aDataType.in();
+  myMinMaxIsInitilized = true;
 }
 
-//==============================================================================
 
+//---------------------------------------------------------------
 const string VISU::Result_i::myComment = "RESULT";
 const char* VISU::Result_i::GetComment() const { return myComment.c_str();}
 
-VISU::Result_i::Result_i (SALOMEDS::Study_ptr theStudy,
-                         const ESourceId& theSourceId,
-                         const ECreationId& theCreationId):
+//---------------------------------------------------------------
+VISU::Result_i
+::Result_i (SALOMEDS::Study_ptr theStudy,
+           const ESourceId& theSourceId,
+           const ECreationId& theCreationId,
+           CORBA::Boolean theIsBuildImmediately):
   myStudyDocument(SALOMEDS::Study::_duplicate(theStudy)),
   myCreationId(theCreationId),
   mySourceId(theSourceId),
+  myIsBuildImmediately(theIsBuildImmediately),
   myInput(NULL),
-  myIsDone(0)
+  myIsEntitiesDone(false),
+  myIsFieldsDone(false),
+  myIsGroupsDone(false),
+  myIsMinMaxDone(false),
+  myIsBuildFields(true),
+  myIsBuildGroups(true),
+  myIsBuildMinMax(true),
+  myIsAllDone(false)
 {
+  myStudy = ProcessEvent(new TGetStudy(myStudyDocument->StudyId()));
 }
 
 
-void VISU::Result_i::RemoveFromStudy()
+//---------------------------------------------------------------
+void
+VISU::Result_i
+::RemoveFromStudy()
 {
   // Remove the result with all presentations and other possible sub-objects
   VISU::RemoveFromStudy(mySObject,false);
+  Destroy();
 }
 
 
+//---------------------------------------------------------------
+void 
+VISU::Result_i
+::MinMaxConnect(VISU::MinMaxCunsomer* theMinMaxCunsomer)
+{
+  myUpdateMinMaxSignal.connect(boost::bind(&MinMaxCunsomer::UpdateMinMax,theMinMaxCunsomer));
+}
+
+
+//---------------------------------------------------------------
 int
-VISU::Result_i::
-IsPossible()
+VISU::Result_i
+::IsPossible()
 {
   try{
     float aSize = myInput->GetSize();
@@ -161,13 +845,16 @@ IsPossible()
 }
 
 
+//---------------------------------------------------------------
 CORBA::Boolean
-VISU::Result_i::
-BuildAll()
+VISU::Result_i
+::BuildAll()
 {
-  if(MYDEBUG) MESSAGE("Result_i::Build - myIsDone = "<<myIsDone);
-  if(myIsDone) return 1;
-  if(!IsPossible()) return 0;
+  if(MYDEBUG) MESSAGE("Result_i::Build - myIsAllDone = "<<myIsAllDone);
+  if(myIsAllDone) 
+    return 1;
+  if(!IsPossible()) 
+    return 0;
   try{
     const VISU::TMeshMap& aMeshMap = myInput->GetMeshMap();
     VISU::TMeshMap::const_iterator aMeshMapIter = aMeshMap.begin();
@@ -218,7 +905,7 @@ BuildAll()
        for(; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++){
          const string& aFamilyName = aFamilyMapIter->first;
          try{
-           myInput->GetMeshOnEntity(aMeshName,anEntity,aFamilyName);
+           myInput->GetFamilyOnEntity(aMeshName,anEntity,aFamilyName);
          }catch(std::exception& exc){
            INFOS("Follow exception was occured :\n"<<exc.what());
          }catch(...){
@@ -235,197 +922,135 @@ BuildAll()
        }
       }
     }
-    myIsDone = 1;
+    myIsAllDone = 1;
   }catch(std::exception& exc){
     INFOS("Follow exception was occured :\n"<<exc.what());
   }catch(...){
     INFOS("Unknown exception was occured!!!");
   }
-  return myIsDone;
+  return myIsAllDone;
 }
 
 
-VISU::Storable*
-VISU::Result_i::
-Build(SALOMEDS::SObject_ptr theSObject)
+//---------------------------------------------------------------
+CORBA::Boolean
+VISU::Result_i
+::Build(CORBA::Boolean theIsBuildAll,
+       CORBA::Boolean theIsAtOnce)
 {
-  if(MYDEBUG) MESSAGE("Result_i::Build");
+  if(theIsBuildAll)
+    theIsAtOnce = true;
 
-  SALOMEDS::StudyBuilder_var aStudyBuilder = myStudyDocument->NewBuilder();
-  aStudyBuilder->NewCommand();  // There is a transaction
-
-  try {
-    const TMeshMap& aMeshMap = myInput->GetMeshMap();
-    if (aMeshMap.empty())
-      throw std::runtime_error("Build - There is no any mesh information in the file !!!");
-
-    mySComponent = FindOrCreateVisuComponent(myStudyDocument);
-    CORBA::String_var aSComponentEntry = mySComponent->GetID(), anIOR(GetID());
-    string aRefFatherEntry = GetRefFatherEntry();
-
-    QString aComment;
-    aComment.sprintf("myComment=%s;myType=%d;myFileName=%s;myInitFileName=%s",
-                    GetComment(), VISU::TRESULT, myFileInfo.filePath().latin1(),
-                    myInitFileName.c_str()); // Restoring of Python dump
-    string aResultEntry =
-      CreateAttributes(myStudyDocument, aSComponentEntry, aRefFatherEntry.c_str(),
-                      anIOR, myName.c_str(), "", aComment.latin1(), true);
+  if(Build(SALOMEDS::SObject::_nil(),theIsAtOnce)){
+    if(theIsBuildAll)
+      return BuildAll();
+    return true;
+  }
 
-    mySObject = myStudyDocument->FindObjectID(aResultEntry.c_str());
-    if (mySObject->_is_nil())
-      throw std::runtime_error("Build - There is no SObject for the Result !!!");
+  return false;
+}
 
-    if (!CORBA::is_nil(theSObject)) {
-      CORBA::String_var aString = theSObject->GetID();
-      CreateReference(myStudyDocument, aResultEntry, aString.in());
-    }
 
-    TMeshMap::const_iterator aMeshMapIter = aMeshMap.begin();
-    for (; aMeshMapIter != aMeshMap.end(); aMeshMapIter++) {
-      const string& aMeshName = aMeshMapIter->first;
-      const VISU::PMesh aMesh = aMeshMapIter->second;
-      aComment.sprintf("myComment=MESH;myName=%s;myDim=%d",
-                      aMeshName.c_str(), aMesh->myDim);
-      string aMeshEntry =
-       CreateAttributes(myStudyDocument, aResultEntry.c_str(), aRefFatherEntry.c_str(),
-                        "", aMeshName.c_str(), "", aComment.latin1(), true);
+//---------------------------------------------------------------
+VISU::Storable*
+VISU::Result_i
+::Build(SALOMEDS::SObject_ptr theSObject,
+       CORBA::Boolean theIsAtOnce)
+{
+  if(IsDone())
+    return this;
 
-      const VISU::TMeshOnEntityMap& aMeshOnEntityMap = aMesh->myMeshOnEntityMap;
-      if (aMeshOnEntityMap.empty()) continue;
-
-      aComment.sprintf("myComment=FAMILIES;myMeshName=%s", aMeshName.c_str());
-      string aSubMeshesEntry =
-       CreateAttributes(myStudyDocument, aMeshEntry.c_str(), aRefFatherEntry.c_str(),
-                        "", "Families", "", aComment.latin1(), true);
-
-      //Import entities and according families
-      typedef std::map<std::string,std::string> TComment2EntryMap;
-      typedef std::map<VISU::TEntity,std::string> TEntity2EntryMap;
-      TComment2EntryMap aComment2EntryMap;
-      TEntity2EntryMap aEntity2EntryMap;
-
-      VISU::TMeshOnEntityMap::const_iterator aMeshOnEntityMapIter = aMeshOnEntityMap.begin();
-      for (; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++) {
-       const VISU::TEntity& anEntity = aMeshOnEntityMapIter->first;
-       aComment.sprintf("myComment=ENTITY;myType=%d;myMeshName=%s;myId=%d",
-                        VISU::TENTITY, aMeshName.c_str(), anEntity);
-       string anEntityName;
-       switch (anEntity) {
-       case VISU::NODE_ENTITY : anEntityName = "onNodes"; break;
-       case VISU::EDGE_ENTITY : anEntityName = "onEdges"; break;
-       case VISU::FACE_ENTITY : anEntityName = "onFaces"; break;
-       case VISU::CELL_ENTITY : anEntityName = "onCells"; break;
-       default:
-         throw std::runtime_error("Build >> Value of entity is incorrect!");
-       }
-       aEntity2EntryMap[anEntity] = CreateAttributes
-         (myStudyDocument, aSubMeshesEntry.c_str(), aRefFatherEntry.c_str(),
-          "", anEntityName.c_str(), "", aComment.latin1(), true);
+  mySComponent = FindOrCreateVisuComponent(myStudyDocument);
+  CORBA::String_var aSComponentEntry = mySComponent->GetID();
+  CORBA::String_var anIOR(GetID());
+  QString aComment;
+  aComment.sprintf("myComment=%s;myType=%d;myFileName=%s;myInitFileName=%s",
+                  GetComment(),
+                  VISU::TRESULT,
+                  myFileInfo.filePath().latin1(),
+                  myInitFileName.c_str()); // Restoring of Python dump
+  string aResultEntry =
+    CreateAttributes(myStudy,
+                    aSComponentEntry.in(),
+                    anIOR.in(),
+                    myName,
+                    "",
+                    aComment.latin1(),
+                    true);
+  mySObject = myStudyDocument->FindObjectID(aResultEntry.c_str());
+  if(!CORBA::is_nil(theSObject)){
+    CORBA::String_var aString = theSObject->GetID();
+    CreateReference(myStudyDocument,aResultEntry,aString.in());
+  }
 
-       const VISU::PMeshOnEntity aMeshOnEntity = aMeshOnEntityMapIter->second;
-       const VISU::TFamilyMap& aFamilyMap = aMeshOnEntity->myFamilyMap;
-       VISU::TFamilyMap::const_iterator aFamilyMapIter = aFamilyMap.begin();
-       for (; aFamilyMapIter != aFamilyMap.end(); aFamilyMapIter++) {
-         const string& aFamilyName = aFamilyMapIter->first;
-         aComment.sprintf("myComment=FAMILY;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s",
-                          VISU::TFAMILY, aMeshName.c_str(), anEntity, aFamilyName.c_str());
-         aComment2EntryMap[aComment.latin1()] =
-           CreateAttributes(myStudyDocument, aEntity2EntryMap[anEntity].c_str(), aRefFatherEntry.c_str(),
-                            "", aFamilyName.c_str(), "", aComment.latin1(), true);
-       }
-      }
+  if(theIsAtOnce){
+    BuildEntities(this,
+                 myInput,
+                 &myIsEntitiesDone,
+                 aResultEntry,
+                 myStudy);
+    
+    BuildGroups(this,
+               myInput,
+               &myIsGroupsDone,
+               myIsBuildGroups,
+               myStudy);
+
+    BuildFields(this,
+               myInput,
+               &myIsFieldsDone,
+               myIsBuildFields,
+               myStudy);
+    
+    BuildMinMax(this,
+               myInput,
+               &myIsMinMaxDone,
+               myIsBuildMinMax,
+               &myUpdateMinMaxSignal);
+    
+  }else{
+    TBuildArgs aBuildArgs(this,
+                         myInput,
+                         &myIsEntitiesDone,
+                         aResultEntry,
+                         &myIsFieldsDone,
+                         myIsBuildFields,
+                         &myIsMinMaxDone,
+                         myIsBuildMinMax,
+                         &myUpdateMinMaxSignal,
+                         &myIsGroupsDone,
+                         myIsBuildGroups,
+                         myStudy);
+    boost::thread aThread(boost::bind(&BuildDataTree,
+                                     aBuildArgs));
+  }
 
-      //Importing groups
-      const VISU::TGroupMap& aGroupMap = aMesh->myGroupMap;
-      if (aGroupMap.size() > 0) {
-       aComment.sprintf("myComment=GROUPS;myMeshName=%s", aMeshName.c_str());
-       string aGroupsEntry =
-         CreateAttributes(myStudyDocument, aMeshEntry.c_str(), aRefFatherEntry.c_str(),
-                          "", "Groups", "", aComment.latin1(), true);
+  return this;
+}
 
-       VISU::TGroupMap::const_iterator aGroupMapIter = aGroupMap.begin();
-       for (; aGroupMapIter != aGroupMap.end(); aGroupMapIter++) {
-         const string& aGroupName = aGroupMapIter->first;
-         aComment.sprintf("myComment=GROUP;myType=%d;myMeshName=%s;myName=%s",
-                          VISU::TGROUP, aMeshName.c_str(), aGroupName.c_str());
-         string aGroupEntry =
-           CreateAttributes(myStudyDocument, aGroupsEntry.c_str(), aRefFatherEntry.c_str(),
-                            "", aGroupName.c_str(), "", aComment.latin1(), true);
-
-         const VISU::PGroup aGroup = aGroupMapIter->second;
-         const VISU::TFamilyAndEntitySet& aFamilyAndEntitySet = aGroup->myFamilyAndEntitySet;
-         VISU::TFamilyAndEntitySet::const_iterator aFamilyAndEntitySetIter = aFamilyAndEntitySet.begin();
-         for (; aFamilyAndEntitySetIter != aFamilyAndEntitySet.end(); aFamilyAndEntitySetIter++) {
-           const VISU::TFamilyAndEntity& aFamilyAndEntity = *aFamilyAndEntitySetIter;
-           const string& aFamilyName = aFamilyAndEntity.first;
-           const VISU::TEntity& anEntity = aFamilyAndEntity.second;
-           aComment.sprintf("myComment=FAMILY;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s",
-                            VISU::TFAMILY, aMeshName.c_str(), anEntity, aFamilyName.c_str());
-           if (aComment2EntryMap.count(aComment.latin1()) > 0)
-             CreateReference(myStudyDocument, aGroupEntry, aComment2EntryMap[aComment.latin1()]);
-         }
-       }
-      }
 
-      //Import fields
-      string aFieldsEntry;
-      bool isFieldEntryCreated = 0;
-      aMeshOnEntityMapIter = aMeshOnEntityMap.begin();
-      for (; aMeshOnEntityMapIter != aMeshOnEntityMap.end(); aMeshOnEntityMapIter++) {
-       const VISU::TEntity& anEntity = aMeshOnEntityMapIter->first;
-       const VISU::PMeshOnEntity aMeshOnEntity = aMeshOnEntityMapIter->second;
-       const VISU::TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
-       VISU::TFieldMap::const_iterator aFieldMapIter = aFieldMap.begin();
-       for (; aFieldMapIter != aFieldMap.end(); aFieldMapIter++) {
-         if (!isFieldEntryCreated) {
-           aComment.sprintf("myComment=FIELDS;myMeshName=%s", aMeshName.c_str());
-           aFieldsEntry =
-             CreateAttributes(myStudyDocument, aMeshEntry.c_str(), aRefFatherEntry.c_str(),
-                              "", "Fields", "", aComment.latin1(), true);
-           isFieldEntryCreated = true;
-         }
-         const string& aFieldName = aFieldMapIter->first;
-         const VISU::PField aField = aFieldMapIter->second;
-         const VISU::TValField& aValField = aField->myValField;
-         QString aFieldNameWithUnit = ::GenerateFieldName(aFieldName,aField->myUnitNames[0]);
-         aComment.sprintf("myComment=FIELD;myType=%d;myMeshName=%s;myEntityId=%d;myName=%s;"
-                          "myNbTimeStamps=%d;myNumComponent=%d",
-                          VISU::TFIELD, aMeshName.c_str(), anEntity, aFieldName.c_str(),
-                          aValField.size(), aField->myNbComp);
-         string aFieldEntry =
-           CreateAttributes(myStudyDocument, aFieldsEntry.c_str(), aRefFatherEntry.c_str(),
-                            "", aFieldNameWithUnit.latin1(), "", aComment.latin1(), true);
-         CreateReference(myStudyDocument, aFieldEntry, aEntity2EntryMap[anEntity]);
-
-         VISU::TValField::const_iterator aValFieldIter = aValField.begin();
-         for (; aValFieldIter != aValField.end(); aValFieldIter++) {
-           int aTimeStamp = aValFieldIter->first;
-           const VISU::PValForTime aValForTime = aValFieldIter->second;
-           aComment.sprintf("myComment=TIMESTAMP;myType=%d;myMeshName=%s;myEntityId=%d;"
-                            "myFieldName=%s;myTimeStampId=%d;myNumComponent=%d",
-                            VISU::TTIMESTAMP, aMeshName.c_str(), anEntity,
-                            aFieldName.c_str(), aTimeStamp, aField->myNbComp);
-           string aTimeStampId = VISU_Convertor::GenerateName(aValForTime->myTime);
-           CreateAttributes(myStudyDocument, aFieldEntry.c_str(), aRefFatherEntry.c_str(),
-                            "", aTimeStampId.c_str(), "", aComment.latin1(), true);
-         }
-       }
-      }
-    }
-    bool isBuildAll = VISU::GetResourceMgr()->booleanValue("VISU", "full_med_loading", false);
-    if (isBuildAll) BuildAll();
-  } catch(std::exception& exc) {
+//---------------------------------------------------------------
+VISU::Storable*
+VISU::Result_i
+::BuildAll(SALOMEDS::SObject_ptr theSObject)
+{
+  if(MYDEBUG) MESSAGE("Result_i::Build");
+  try{
+    Build(theSObject);
+    BuildAll();
+  }catch(std::exception& exc){
     INFOS("Follow exception was occured :\n"<<exc.what());
     return NULL;
-  } catch(...) {
+  }catch(...){
     INFOS("Unknown exception was occured!!!");
     return NULL;
   }
-  aStudyBuilder->CommitCommand();
+
   return this;
 }
 
 
+//---------------------------------------------------------------
 VISU::Storable*
 VISU::Result_i::
 Create(const char* theFileName)
@@ -446,9 +1071,11 @@ Create(const char* theFileName)
       myFileInfo.setFile(QString(aTmpDir.c_str()) + myFileInfo.fileName());
     }
     myInput = CreateConvertor(myFileInfo.absFilePath().latin1());
-    if(!myInput)
-      throw std::runtime_error("Create - Cannot create a Convertor for this file!!!");
-    return Build();
+    if(myInput){
+      if(myIsBuildImmediately)
+       Build(SALOMEDS::SObject::_nil());
+      return this;
+    }
   }catch(std::exception& exc){
     INFOS("Follow exception was occured :\n"<<exc.what());
   }catch(...){
@@ -458,6 +1085,7 @@ Create(const char* theFileName)
 }
 
 
+//---------------------------------------------------------------
 VISU::Storable*
 VISU::Result_i::
 Create(SALOMEDS::SObject_ptr theMedSObject)
@@ -468,14 +1096,15 @@ Create(SALOMEDS::SObject_ptr theMedSObject)
     if(myInput == NULL)
       return NULL;
 
+    myInput->Build();
+
     string aCompDataType = GetComponentDataType(theMedSObject);
     myFileInfo.setFile(aCompDataType.c_str());
     myInitFileName = aCompDataType;
 
     myName = ::GenerateName("aResult").latin1();
 
-    VISU::Storable* aStorable = Build(theMedSObject);
-    return aStorable;
+    return Build(theMedSObject);
   }catch(std::exception& exc){
     INFOS("Follow exception was occured :\n"<<exc.what());
   }catch(...){
@@ -484,6 +1113,8 @@ Create(SALOMEDS::SObject_ptr theMedSObject)
   return NULL;
 }
 
+
+//---------------------------------------------------------------
 VISU::Storable*
 VISU::Result_i::
 Create(SALOME_MED::FIELD_ptr theField)
@@ -494,6 +1125,8 @@ Create(SALOME_MED::FIELD_ptr theField)
     if(myInput == NULL)
       return NULL;
 
+    myInput->Build();
+
     string aCompDataType = "MED";
     myFileInfo.setFile(aCompDataType.c_str());
     myInitFileName = aCompDataType;
@@ -503,8 +1136,7 @@ Create(SALOME_MED::FIELD_ptr theField)
     CORBA::String_var anIOR = myStudyDocument->ConvertObjectToIOR(theField);
     SALOMEDS::SObject_var aFieldSObject = myStudyDocument->FindObjectIOR(anIOR);
 
-    VISU::Storable* aStorable = Build(aFieldSObject);
-    return aStorable;
+    return Build(aFieldSObject);
   }catch(std::exception& exc){
     INFOS("Follow exception was occured :\n"<<exc.what());
   }catch(...){
@@ -514,6 +1146,7 @@ Create(SALOME_MED::FIELD_ptr theField)
 }
 
 
+//---------------------------------------------------------------
 VISU::Storable*
 VISU::Result_i::
 Restore(SALOMEDS::SObject_ptr theSObject,
@@ -543,7 +1176,7 @@ Restore(SALOMEDS::SObject_ptr theSObject,
       SALOMEDS::StudyBuilder_var aStudyBuilder = myStudyDocument->NewBuilder();
       SALOMEDS::Driver_var aDriver = SALOMEDS::Driver::_narrow(aEngComp);
       aStudyBuilder->LoadWith(aCompRefSObj, aDriver);
-      if (strcmp(aDataType, "MED") == 0) {
+      if (strcmp(aDataType, "MED") == 0){
         // create field or MED converter
         CORBA::Object_var aMedObject = VISU::SObjectToObject(aTargetRefSObj);
         SALOME_MED::FIELD_var aField = SALOME_MED::FIELD::_narrow(aMedObject);
@@ -551,8 +1184,8 @@ Restore(SALOMEDS::SObject_ptr theSObject,
           myInput = CreateMEDFieldConvertor(aField);
         else
           myInput = CreateMEDConvertor(aTargetRefSObj);
-      }
-      else
+       myInput->Build();
+      }else
        throw std::runtime_error("GetInput - There is no convertor for the aDataType !!!");
     } else {
       myFileInfo.setFile(thePrefix.c_str());
@@ -607,6 +1240,7 @@ Restore(SALOMEDS::SObject_ptr theSObject,
       }
       if(MYDEBUG) MESSAGE("VISU::Result_i::Restore - mySourceId = " << mySourceId);
       myInput = CreateConvertor(myFileInfo.filePath().latin1());
+      myInput->Build();
       QString aComment;
       aComment.sprintf("myComment=%s;myType=%d;myFileName=%s;myInitFileName=%s",
                       GetComment(), VISU::TRESULT, myFileInfo.filePath().latin1(),
@@ -629,21 +1263,91 @@ Restore(SALOMEDS::SObject_ptr theSObject,
   return NULL;
 }
 
-VISU::Result_i::TInput* VISU::Result_i::GetInput() {
+//---------------------------------------------------------------
+VISU::Result_i::TInput* 
+VISU::Result_i
+::GetInput() 
+{
   return myInput;
 }
 
-void VISU::Result_i::ToStream(std::ostringstream& theStr){
+//---------------------------------------------------------------
+CORBA::Boolean 
+VISU::Result_i
+::IsDone() 
+{
+  return 
+    myIsEntitiesDone && 
+    (myIsBuildFields? myIsFieldsDone: true) &&
+    (myIsBuildMinMax? myIsMinMaxDone: true) &&
+    (myIsBuildGroups? myIsGroupsDone: true);
+}
+
+CORBA::Boolean 
+VISU::Result_i
+::IsEntitiesDone() 
+{
+  return myIsEntitiesDone;
+}
+
+void
+VISU::Result_i
+::SetBuildFields(CORBA::Boolean theIsBuildFields, 
+                CORBA::Boolean theIsCalculateMinMax)
+{
+  myIsBuildFields = theIsBuildFields;
+  if(theIsBuildFields)
+    myIsBuildMinMax = theIsCalculateMinMax;
+  else
+    myIsBuildMinMax = false;
+}
+
+void
+VISU::Result_i
+::SetBuildGroups(CORBA::Boolean theIsBuildGroups)
+{
+  myIsBuildGroups = theIsBuildGroups;
+}
+
+CORBA::Boolean 
+VISU::Result_i
+::IsFieldsDone() 
+{
+  return myIsFieldsDone;
+}
+
+CORBA::Boolean 
+VISU::Result_i
+::IsGroupsDone() 
+{
+  return myIsGroupsDone;
+}
+
+CORBA::Boolean 
+VISU::Result_i
+::IsMinMaxDone() 
+{
+  return myIsMinMaxDone;
+}
+
+//---------------------------------------------------------------
+void 
+VISU::Result_i
+::ToStream(std::ostringstream& theStr)
+{
   if(MYDEBUG) MESSAGE(GetComment());
   Storable::DataToStream(theStr,"myName",myName.c_str());
   Storable::DataToStream(theStr,"myInitFileName",myInitFileName.c_str());
   Storable::DataToStream(theStr,"myCreationId",myCreationId);
 }
 
+
+//---------------------------------------------------------------
 VISU::Storable*
-VISU::Result_i::Restore(SALOMEDS::SObject_ptr theSObject,
-                       const string& thePrefix,
-                       const Storable::TRestoringMap& theMap)
+VISU::Result_i
+::Restore(SALOMEDS::SObject_ptr theSObject,
+         const string& thePrefix,
+         const Storable::TRestoringMap& theMap)
 {
   SALOMEDS::Study_var aStudy = theSObject->GetStudy();
 
@@ -659,25 +1363,55 @@ VISU::Result_i::Restore(SALOMEDS::SObject_ptr theSObject,
   return pResult->Restore(theSObject,theMap,thePrefix);
 }
 
-string VISU::Result_i::GetRefFatherEntry() {
-  //return QAD_Application::getDesktop()->getActiveStudy()->getActiveStudyFrame()->entry();
+
+//---------------------------------------------------------------
+string 
+VISU::Result_i
+::GetRefFatherEntry() 
+{
   return "";
 }
 
-string VISU::Result_i::GetEntry(){
+string
+VISU::Result_i
+::GetEntry()
+{
   CORBA::String_var anEntry = mySObject->GetID();
   return string(anEntry);
 }
 
-const SALOMEDS::SObject_var& VISU::Result_i::GetSObject() const { return mySObject;}
-const SALOMEDS::Study_var& VISU::Result_i::GetStudyDocument() const { return myStudyDocument;}
-const SALOMEDS::SComponent_var& VISU::Result_i::GetSComponent() const { return mySComponent;}
-std::string VISU::Result_i::GetEntry(const std::string& theComment)
+const SALOMEDS::SObject_var& 
+VISU::Result_i
+::GetSObject() const 
+{ 
+  return mySObject;
+}
+
+const SALOMEDS::Study_var& 
+VISU::Result_i
+::GetStudyDocument() const 
+{ 
+  return myStudyDocument;
+}
+
+const SALOMEDS::SComponent_var& 
+VISU::Result_i
+::GetSComponent() const
+{
+  return mySComponent;
+}
+
+std::string 
+VISU::Result_i
+::GetEntry(const std::string& theComment)
 {
   return FindEntryWithComment(myStudyDocument,GetEntry().c_str(),theComment.c_str());
 }
 
-VISU::Result_i::~Result_i()
+
+//---------------------------------------------------------------
+VISU::Result_i
+::~Result_i()
 {
   MESSAGE("Result_i::~Result_i() - this = "<<this);
   if (mySourceId == eRestoredFile) {
@@ -721,9 +1455,12 @@ const vector< float >* Result_i::GetAxisInfo(const string& theMeshName,
       MESSAGE("No mesh named " << theMeshName );
       return components;
     }
-    VISU_Convertor::TOutput* vtkMesh = myInput->GetMeshOnEntity (theMeshName,
-                                                                 CELL_ENTITY);
-    if ( !vtkMesh || vtkMesh->GetNumberOfCells() == 0 ) {
+
+    VISU::PIDMapper anIDMapper = myInput->GetMeshOnEntity(theMeshName,
+                                                         CELL_ENTITY);
+    VISU::TVTKOutput* aMesh = anIDMapper->GetVTKOutput();
+
+    if ( !aMesh || aMesh->GetNumberOfCells() == 0 ) {
       MESSAGE( "No cells in the mesh: " << theMeshName );
       return components;
     }
@@ -734,9 +1471,9 @@ const vector< float >* Result_i::GetAxisInfo(const string& theMeshName,
     gp_Vec axDirs[ nbAxes ];
     float minSize[3] = { FLT_MAX, FLT_MAX, FLT_MAX };
     bool axesComputed = false;
-    for ( vtkIdType iCell = 0; iCell < vtkMesh->GetNumberOfCells(); ++iCell )
+    for ( vtkIdType iCell = 0; iCell < aMesh->GetNumberOfCells(); ++iCell )
     {
-      vtkCell* cell = vtkMesh->GetCell( iCell );
+      vtkCell* cell = aMesh->GetCell( iCell );
       int nbPnt = cell->GetNumberOfPoints();
       if ( nbPnt != 8 )
         continue;
@@ -784,8 +1521,8 @@ const vector< float >* Result_i::GetAxisInfo(const string& theMeshName,
     // on axis direction; define bnd box
     set< float > comps[ 3 ];
     Bnd_Box box;
-    vtkPoints * points = vtkMesh->GetPoints();
-    vtkIdType iP, nbP = vtkMesh->GetNumberOfPoints();
+    vtkPoints * points = aMesh->GetPoints();
+    vtkIdType iP, nbP = aMesh->GetNumberOfPoints();
     for ( iP = 0; iP < nbP; ++iP )
     {
       float* coo = points->GetPoint( iP );
index beb1e55868d11c9dea680efaf25933d1a95b3de8..ee903de6aafb7f295de17dd07032c7f7d1e65bf2 100644 (file)
 #include "VISUConfig.hh"
 #include "SALOME_GenericObj_i.hh"
 
-#include <gp_Dir.hxx>
+#include <boost/signals/trackable.hpp>
+#include <boost/signals/signal0.hpp>
 
+#include <gp_Dir.hxx>
 #include <vector>
 
 class VISU_Convertor;
 
-namespace VISU{
+namespace VISU
+{
+  //----------------------------------------------------------------------------
+  class MinMaxCunsomer: public virtual boost::bsignals::trackable
+  {
+  protected:
+    bool myMinMaxIsInitilized;
+    MinMaxCunsomer();
+
+  public:
+    virtual
+    bool
+    IsMinMaxInitilized();
+
+    virtual
+    void
+    UpdateMinMax();
+  };
+
+
+  //----------------------------------------------------------------------------
   class Result_i : public virtual POA_VISU::Result,
                    public virtual RemovableObject_i,
                   public virtual SALOME::GenericObj_i
@@ -50,7 +72,8 @@ namespace VISU{
 
     Result_i(SALOMEDS::Study_ptr theStudy,
             const ESourceId& theSourceId,
-            const ECreationId& theCreationId);
+            const ECreationId& theCreationId,
+            CORBA::Boolean theIsBuildImmediately = true);
 
     virtual ~Result_i();
     virtual void RemoveFromStudy();
@@ -58,6 +81,27 @@ namespace VISU{
     virtual VISU::VISUType GetType() { return VISU::TRESULT;}
     virtual CORBA::Boolean BuildAll();
 
+    virtual CORBA::Boolean Build(CORBA::Boolean theIsBuildAll,
+                                CORBA::Boolean theIsAtOnce);
+    virtual CORBA::Boolean IsDone();
+
+    virtual CORBA::Boolean IsEntitiesDone();
+
+    virtual void SetBuildFields(CORBA::Boolean theIsBuildFields, 
+                               CORBA::Boolean theIsCalculateMinMax);
+    virtual CORBA::Boolean IsFieldsDone();
+
+    virtual void SetBuildGroups(CORBA::Boolean theIsBuildGroups);
+    virtual CORBA::Boolean IsGroupsDone();
+
+    virtual CORBA::Boolean IsMinMaxDone();
+
+    virtual 
+    void
+    MinMaxConnect(MinMaxCunsomer* theMinMaxCunsomer);
+
+    typedef boost::signal0<void> TUpdateMinMaxSignal;
+
     typedef VISU_Convertor TInput;
 
   private:
@@ -65,12 +109,29 @@ namespace VISU{
     ECreationId myCreationId;
 
     TInput *myInput;
-    CORBA::Boolean myIsDone;
     std::string myName, myInitFileName;
     QFileInfo myFileInfo;
 
   protected:
-    virtual Storable* Build(SALOMEDS::SObject_ptr theSObject = SALOMEDS::SObject::_nil()) ;
+    virtual Storable* Build(SALOMEDS::SObject_ptr theSObject,
+                           CORBA::Boolean theIsAtOnce = true) ;
+    virtual Storable* BuildAll(SALOMEDS::SObject_ptr theSObject) ;
+
+    _PTR(Study) myStudy;
+    CORBA::Boolean myIsBuildImmediately;
+
+    CORBA::Boolean myIsEntitiesDone;
+    CORBA::Boolean myIsFieldsDone;
+    CORBA::Boolean myIsGroupsDone;
+    CORBA::Boolean myIsMinMaxDone;
+
+    CORBA::Boolean myIsBuildFields;
+    CORBA::Boolean myIsBuildGroups;
+
+    CORBA::Boolean myIsBuildMinMax;
+    TUpdateMinMaxSignal myUpdateMinMaxSignal;
+
+    CORBA::Boolean myIsAllDone;
 
   public:
     virtual int IsPossible();
index ee0d28ed304908bc0b6edb4c59f08abee6cd548c..19bdd8dab31163858924ebdc0938cf4ea1906f39 100644 (file)
@@ -29,8 +29,9 @@
 #include "VISU_Result_i.hh"
 #include "VISU_ViewManager_i.hh"
 
-#include "VISU_ScalarMapPL.hxx"
 #include "VISU_ScalarMapAct.h"
+#include "VISU_ScalarMapPL.hxx"
+#include "VISU_Convertor.hxx"
 
 #include "SUIT_ResourceMgr.h"
 
@@ -48,8 +49,14 @@ static int MYDEBUG = 0;
 
 static int INCMEMORY = 4;
 
-int VISU::ScalarMap_i::IsPossible(Result_i* theResult, const char* theMeshName, VISU::Entity theEntity,
-                                 const char* theFieldName, int theIteration, int isMemoryCheck)
+
+//============================================================================
+int
+VISU::ScalarMap_i
+::IsPossible(Result_i* theResult, 
+            const char* theMeshName, 
+            VISU::Entity theEntity,
+            const char* theFieldName, int theIteration, int isMemoryCheck)
 {
   try{
     float aSize = INCMEMORY*
@@ -68,166 +75,95 @@ int VISU::ScalarMap_i::IsPossible(Result_i* theResult, const char* theMeshName,
   return 0;
 }
 
-int VISU::ScalarMap_i::myNbPresent = 0;
-QString VISU::ScalarMap_i::GenerateName() { return VISU::GenerateName("ScalarMap",myNbPresent++);}
+//----------------------------------------------------------------------------
+int
+VISU::ScalarMap_i
+::myNbPresent = 0;
+
+QString
+VISU::ScalarMap_i
+::GenerateName() 
+{ 
+  return VISU::GenerateName("ScalarMap",myNbPresent++);
+}
+
+const string
+VISU::ScalarMap_i
+::myComment = "SCALARMAP";
+
+const char* 
+VISU::ScalarMap_i
+::GetComment() const { 
+  return myComment.c_str();
+}
+
 
-const string VISU::ScalarMap_i::myComment = "SCALARMAP";
-const char* VISU::ScalarMap_i::GetComment() const { return myComment.c_str();}
+//----------------------------------------------------------------------------
 VISU::ScalarMap_i::
 ScalarMap_i(Result_i* theResult,
            bool theAddToStudy) :
   PrsObject_i(theResult->GetStudyDocument()),
   Prs3d_i(theResult,theAddToStudy),
-  myScalarMapPL(NULL)
-{
-}
-
+  ColoredPrs3d_i(theResult,theAddToStudy)
+{}
 
 VISU::ScalarMap_i::
 ScalarMap_i(Result_i* theResult,
            SALOMEDS::SObject_ptr theSObject) :
   PrsObject_i(theResult->GetStudyDocument()),
   Prs3d_i(theResult,theSObject),
-  myScalarMapPL(NULL)
-{
-}
+  ColoredPrs3d_i(theResult,theSObject)
+{}
 
+VISU::ScalarMap_i
+::~ScalarMap_i()
+{}
 
-void VISU::ScalarMap_i::RemoveFromStudy()
-{
-  VISU::DeleteActors(this);
-  VISU::RemoveFromStudy(mySObject,false);
-}
 
-
-void VISU::ScalarMap_i::SameAs(const Prs3d_i* theOrigin)
+//----------------------------------------------------------------------------
+void
+VISU::ScalarMap_i
+::SameAs(const Prs3d_i* theOrigin)
 {
-  DoHook();
-  VISU::Prs3d_i::SameAs(theOrigin);
-
-  const ScalarMap_i* aConstScalarMap = dynamic_cast<const ScalarMap_i*>(theOrigin);
-  if (!aConstScalarMap) return;
-
-  ScalarMap_i* aScalarMap = const_cast<ScalarMap_i*>(aConstScalarMap);
-  myField = aScalarMap->GetField();
-  myMeshName = myField->myMeshName;
-  myEntity = myField->myEntity;
-  myIteration = aScalarMap->GetIteration();
-  myFieldName = aScalarMap->GetFieldName();
-
-  SetScalarMode(aScalarMap->GetScalarMode());
-
-  SetRange(aScalarMap->GetMin(), aScalarMap->GetMax());
-  myIsFixedRange = aScalarMap->IsRangeFixed();
-
-  SetScaling(aScalarMap->GetScaling());
-
-  SetBarOrientation(aScalarMap->GetBarOrientation());
-  SetPosition(aScalarMap->GetPosX(), aScalarMap->GetPosY());
-  SetSize(aScalarMap->GetWidth(), aScalarMap->GetHeight());
-  SetNbColors(aScalarMap->GetNbColors());
-  SetLabels(aScalarMap->GetLabels());
-  SetTitle(aScalarMap->GetTitle());
-
-  SetBoldTitle(aScalarMap->IsBoldTitle());
-  SetItalicTitle(aScalarMap->IsItalicTitle());
-  SetShadowTitle(aScalarMap->IsShadowTitle());
-  SetTitFontType(aScalarMap->GetTitFontType());
-  float r,g,b;
-  aScalarMap->GetTitleColor(&r,&g,&b);
-  SetTitleColor(r,g,b);
-
-  SetBoldLabel(aScalarMap->IsBoldLabel());
-  SetItalicLabel(aScalarMap->IsItalicLabel());
-  SetShadowLabel(aScalarMap->IsShadowLabel());
-  SetLblFontType(aScalarMap->GetLblFontType());
-  aScalarMap->GetLabelColor(&r,&g,&b);
-  SetLabelColor(r,g,b);
-
-  Build(-1);
-  Update();
-}
+  TSuperClass::SameAs(theOrigin);
 
-void VISU::ScalarMap_i::SameAsParams (const ScalarMap_i* theOrigin)
-{
-  int time = GetIteration();
-  SameAs(theOrigin);
-  myIteration = time;
+  if(const ScalarMap_i* aPrs3d = dynamic_cast<const ScalarMap_i*>(theOrigin)){
+    ScalarMap_i* anOrigin = const_cast<ScalarMap_i*>(aPrs3d);
+    SetRange(anOrigin->GetMin(), anOrigin->GetMax());
+    myIsFixedRange = anOrigin->IsRangeFixed();
 
-  //??Build(true);
-  Build(-1);
-  Update();
+    SetScaling(anOrigin->GetScaling());
+    
+    Update();
+  }
 }
 
 
+//----------------------------------------------------------------------------
 /**
  * Creates Scalar Map and initialises it from resources
  */
-VISU::Storable* VISU::ScalarMap_i::Create(const char* theMeshName, VISU::Entity theEntity,
-                                         const char* theFieldName, int theIteration)
+VISU::Storable* 
+VISU::ScalarMap_i
+::Create(const char* theMeshName, 
+        VISU::Entity theEntity,
+        const char* theFieldName, 
+        int theIteration)
 {
-  DoHook();
+  TSuperClass::Create(theMeshName,theEntity,theFieldName,theIteration);
 
   SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr();
 
-  int aScalarMode = aResourceMgr->integerValue("VISU", "scalar_bar_mode", 0);
-  SetScalarMode(aScalarMode);
-
-  // Orientation
-  int orient = aResourceMgr->integerValue("VISU", "scalar_bar_orientation", 0);
-  if (orient == 1)
-    myOrientation = VISU::ScalarMap::HORIZONTAL;
-  else
-    myOrientation = VISU::ScalarMap::VERTICAL;
-
-  // Scalar Bar origin
-  QString propertyName = QString( "scalar_bar_%1_" ).arg( orient == 0 ? "vertical" : "horizontal" );
-
-  float aXorigin = (myOrientation == VISU::ScalarMap::VERTICAL) ? 0.01 : 0.2;
-  aXorigin = aResourceMgr->doubleValue("VISU", propertyName + "x", aXorigin);
-  myPosition[0] = aXorigin;
-
-  float aYorigin = (myOrientation == VISU::ScalarMap::VERTICAL) ? 0.1 : 0.012;
-  aYorigin = aResourceMgr->doubleValue("VISU", propertyName + "y", aYorigin);
-  myPosition[1] = aYorigin;
-
-  // Scalar Bar size
-  myWidth = (myOrientation == VISU::ScalarMap::VERTICAL)? 0.1 : 0.6;
-  myWidth = aResourceMgr->doubleValue("VISU", propertyName + "width", myWidth);
-
-  myHeight = (myOrientation == VISU::ScalarMap::VERTICAL)? 0.8:0.12;
-  myHeight = aResourceMgr->doubleValue("VISU", propertyName + "height", myHeight);
+  // Scalar Range
+  int aRangeType = aResourceMgr->integerValue("VISU" , "scalar_range_type", 0);
+  myIsFixedRange = (aRangeType == 1) ? true : false;
 
-  // scalar bar default position
-  bool anIsArrangeBar = aResourceMgr->booleanValue("VISU", "scalar_bars_default_position", 0);
-  int aPlace = 1;
-  if (anIsArrangeBar){
-    aPlace = aResourceMgr->integerValue("VISU", "scalar_bar_position_num",0);
+  if(myIsFixedRange){
+    float aMin = aResourceMgr->doubleValue("VISU", "scalar_range_min", 0);
+    float aMax = aResourceMgr->doubleValue("VISU", "scalar_range_max", 0);
+    SetRange(aMin,aMax);
   }
-  if(myOrientation == VISU::ScalarMap::HORIZONTAL){
-    myPosition[1] += myHeight*(aPlace-1);
-  } else {
-    myPosition[0] += myWidth*(aPlace-1);
-  }
-
-  
-  // Nb of Colors
-  int aNumberOfColors = aResourceMgr->integerValue( "VISU", "scalar_bar_num_colors", 64 );
-  SetNbColors(aNumberOfColors);
-
-  // Nb of Labels
-  myNumberOfLabels = aResourceMgr->integerValue( "VISU", "scalar_bar_num_labels", 5 );
-
-  // Scalar Range
-  int rangeType = aResourceMgr->integerValue("VISU" , "scalar_range_type", 0);
-  myIsFixedRange = (rangeType == 1) ? true : false;
-
-  if (myIsFixedRange)
-    {
-      float aMin = aResourceMgr->doubleValue("VISU", "scalar_range_min", 0);
-      float aMax = aResourceMgr->doubleValue("VISU", "scalar_range_max", 0);
-      SetRange(aMin,aMax);
-    }
 
   bool isLog = aResourceMgr->booleanValue("VISU", "scalar_bar_logarithmic", false);
 
@@ -236,280 +172,143 @@ VISU::Storable* VISU::ScalarMap_i::Create(const char* theMeshName, VISU::Entity
   else
     SetScaling(VISU::LINEAR);
 
-  // Fonts properties definition
-  myIsBoldTitle = myIsItalicTitle = myIsShadowTitle = true;
-  myTitFontType = VTK_ARIAL;
-
-  if ( aResourceMgr->hasValue( "VISU", "scalar_bar_title_font" ) )
-    {
-      QFont f = aResourceMgr->fontValue( "VISU", "scalar_bar_title_font" );
-
-      if ( f.family() == "Arial" )
-       myTitFontType = VTK_ARIAL;
-      else if ( f.family() == "Courier" )
-       myTitFontType = VTK_COURIER;
-      else if ( f.family() == "Times" )
-       myTitFontType = VTK_TIMES;
-
-      myIsBoldTitle   = f.bold();
-      myIsItalicTitle = f.italic();
-      myIsShadowTitle =  f.underline();
-    }
-
-  QColor aTextColor = aResourceMgr->colorValue( "VISU", "scalar_bar_title_color", QColor( 255, 255, 255 ) );
-
-  myTitleColor[0] = aTextColor.red()   / 255;
-  myTitleColor[1] = aTextColor.green() / 255;
-  myTitleColor[2] = aTextColor.blue()  / 255;
-
-  ///
-
-  myIsBoldLabel = myIsItalicLabel = myIsShadowLabel = true;
-  myLblFontType = VTK_ARIAL;
-
-  if ( aResourceMgr->hasValue( "VISU", "scalar_bar_label_font" ) )
-    {
-      QFont f = aResourceMgr->fontValue( "VISU", "scalar_bar_label_font" );
-
-      if ( f.family() == "Arial" )
-       myLblFontType = VTK_ARIAL;
-      else if ( f.family() == "Courier" )
-       myLblFontType = VTK_COURIER;
-      else if ( f.family() == "Times" )
-       myLblFontType = VTK_TIMES;
-
-      myIsBoldLabel   = f.bold();
-      myIsItalicLabel = f.italic();
-      myIsShadowLabel =  f.underline();
-    }
-
-  QColor aLabelColor = aResourceMgr->colorValue( "VISU", "scalar_bar_label_color", QColor( 255, 255, 255 ) );
-
-  myLabelColor[0] = aLabelColor.red()   / 255;
-  myLabelColor[1] = aLabelColor.green() / 255;
-  myLabelColor[2] = aLabelColor.blue()  / 255;
-
-
-  myMeshName = theMeshName;
-  myEntity = (VISU::TEntity)theEntity;
-  myFieldName =theFieldName;
-  myIteration = theIteration;
-
-  return Build(false);
+  return this;
 }
 
-
-VISU::Storable* VISU::ScalarMap_i::Restore(const Storable::TRestoringMap& theMap)
+VISU::Storable* 
+VISU::ScalarMap_i
+::Restore(const Storable::TRestoringMap& theMap)
 {
-  DoHook();
-  myMeshName = VISU::Storable::FindValue(theMap,"myMeshName").latin1();
-  myEntity = (VISU::TEntity)VISU::Storable::FindValue(theMap,"myEntity").toInt();
-  myFieldName = VISU::Storable::FindValue(theMap,"myFieldName").latin1();
-  myIteration = VISU::Storable::FindValue(theMap,"myIteration").toInt();
+  TSuperClass::Restore(theMap);
 
-  SetScalarMode(VISU::Storable::FindValue(theMap,"myScalarMode").toInt());
   SetScaling(VISU::Scaling(VISU::Storable::FindValue(theMap,"myScaling").toInt()));
+
   float aMin = VISU::Storable::FindValue(theMap,"myScalarRange[0]").toDouble();
   float aMax = VISU::Storable::FindValue(theMap,"myScalarRange[1]").toDouble();
   SetRange(aMin,aMax);
+
   myIsFixedRange = VISU::Storable::FindValue(theMap,"myIsFixedRange").toInt();
 
-  myTitle = VISU::Storable::FindValue(theMap,"myTitle").latin1();
-  myOrientation = (VISU::ScalarMap::Orientation)VISU::Storable::FindValue(theMap,"myOrientation").toInt();
-  SetNbColors(VISU::Storable::FindValue(theMap,"myNumberOfColors").toInt());
-  myNumberOfLabels = VISU::Storable::FindValue(theMap,"myNumberOfLabels").toInt();
-  myPosition[0] = VISU::Storable::FindValue(theMap,"myPosition[0]").toDouble();
-  myPosition[1] = VISU::Storable::FindValue(theMap,"myPosition[1]").toDouble();
-  myWidth = VISU::Storable::FindValue(theMap,"myWidth").toDouble();
-  myHeight = VISU::Storable::FindValue(theMap,"myHeight").toDouble();
-
-  myTitFontType = VISU::Storable::FindValue(theMap,"myTitFontType").toInt();
-  myIsBoldTitle = VISU::Storable::FindValue(theMap,"myIsBoldTitle").toInt();
-  myIsItalicTitle = VISU::Storable::FindValue(theMap,"myIsItalicTitle").toInt();
-  myIsShadowTitle = VISU::Storable::FindValue(theMap,"myIsShadowTitle").toInt();
-  myTitleColor[0] = VISU::Storable::FindValue(theMap,"myTitleColor[0]").toFloat();
-  myTitleColor[1] = VISU::Storable::FindValue(theMap,"myTitleColor[1]").toFloat();
-  myTitleColor[2] = VISU::Storable::FindValue(theMap,"myTitleColor[2]").toFloat();
-
-  myLblFontType = VISU::Storable::FindValue(theMap,"myLblFontType").toInt();
-  myIsBoldLabel = VISU::Storable::FindValue(theMap,"myIsBoldLabel").toInt();
-  myIsItalicLabel = VISU::Storable::FindValue(theMap,"myIsItalicLabel").toInt();
-  myIsShadowLabel = VISU::Storable::FindValue(theMap,"myIsShadowLabel").toInt();
-  myLabelColor[0] = VISU::Storable::FindValue(theMap,"myLabelColor[0]").toFloat();
-  myLabelColor[1] = VISU::Storable::FindValue(theMap,"myLabelColor[1]").toFloat();
-  myLabelColor[2] = VISU::Storable::FindValue(theMap,"myLabelColor[2]").toFloat();
-
-  Prs3d_i::Restore(theMap);
-  myAddToStudy = false; //SRN Added 21/06/2003 SAL2983: to avoid addition of the new ScalarMap to study.
-  return Build(true);
+  return this;
 }
 
+void 
+VISU::ScalarMap_i
+::ToStream(std::ostringstream& theStr)
+{
+  TSuperClass::ToStream(theStr);
 
-void VISU::ScalarMap_i::ToStream(std::ostringstream& theStr){
-  Prs3d_i::ToStream(theStr);
-
-  Storable::DataToStream( theStr, "myMeshName",       myMeshName.c_str() );
-  Storable::DataToStream( theStr, "myEntity",         myEntity );
-  Storable::DataToStream( theStr, "myFieldName",      myFieldName.c_str() );
-  Storable::DataToStream( theStr, "myIteration",      myIteration );
-
-  Storable::DataToStream( theStr, "myScalarMode",     int(GetScalarMode()) );
   Storable::DataToStream( theStr, "myScalarRange[0]", GetMin() );
   Storable::DataToStream( theStr, "myScalarRange[1]", GetMax() );
   Storable::DataToStream( theStr, "myIsFixedRange",   myIsFixedRange );
   Storable::DataToStream( theStr, "myScaling",        GetScaling() );
-
-  Storable::DataToStream( theStr, "myTitle",          myTitle.c_str() );
-  Storable::DataToStream( theStr, "myOrientation",    myOrientation );
-  Storable::DataToStream( theStr, "myNumberOfColors", int(GetNbColors()) );
-  Storable::DataToStream( theStr, "myNumberOfLabels", myNumberOfLabels );
-  Storable::DataToStream( theStr, "myPosition[0]",    myPosition[0] );
-  Storable::DataToStream( theStr, "myPosition[1]",    myPosition[1] );
-  Storable::DataToStream( theStr, "myWidth",          myWidth );
-  Storable::DataToStream( theStr, "myHeight",         myHeight );
-
-  Storable::DataToStream( theStr, "myTitFontType",    myTitFontType );
-  Storable::DataToStream( theStr, "myIsBoldTitle",    myIsBoldTitle );
-  Storable::DataToStream( theStr, "myIsItalicTitle",  myIsItalicTitle );
-  Storable::DataToStream( theStr, "myIsShadowTitle",  myIsShadowTitle );
-  Storable::DataToStream( theStr, "myTitleColor[0]",  myTitleColor[0] );
-  Storable::DataToStream( theStr, "myTitleColor[1]",  myTitleColor[1] );
-  Storable::DataToStream( theStr, "myTitleColor[2]",  myTitleColor[2] );
-
-  Storable::DataToStream( theStr, "myLblFontType",    myLblFontType );
-  Storable::DataToStream( theStr, "myIsBoldLabel",    myIsBoldLabel );
-  Storable::DataToStream( theStr, "myIsItalicLabel",  myIsItalicLabel );
-  Storable::DataToStream( theStr, "myIsShadowLabel",  myIsShadowLabel );
-  Storable::DataToStream( theStr, "myLabelColor[0]",  myLabelColor[0] );
-  Storable::DataToStream( theStr, "myLabelColor[1]",  myLabelColor[1] );
-  Storable::DataToStream( theStr, "myLabelColor[2]",  myLabelColor[2] );
 }
 
 
-CORBA::Long VISU::ScalarMap_i::GetScalarMode(){
-  return myScalarMapPL->GetScalarMode();
-}
-void VISU::ScalarMap_i::SetScalarMode(CORBA::Long theScalarMode) {
-  myScalarMapPL->SetScalarMode(theScalarMode);
+//----------------------------------------------------------------------------
+void
+VISU::ScalarMap_i
+::SetBarOrientation(VISU::ScalarMap::Orientation theOrientation)
+{
+  TSuperClass::SetBarOrientation(theOrientation);
 }
 
+VISU::ScalarMap::Orientation 
+VISU::ScalarMap_i
+::GetBarOrientation() 
+{
+  return TSuperClass::GetBarOrientation();
+}
 
-VISU::Scaling VISU::ScalarMap_i::GetScaling(){
+VISU::Scaling 
+VISU::ScalarMap_i
+::GetScaling()
+{
   return VISU::Scaling(myScalarMapPL->GetScaling());
 }
-void VISU::ScalarMap_i::SetScaling(VISU::Scaling theScaling){
+
+void
+VISU::ScalarMap_i
+::SetScaling(VISU::Scaling theScaling)
+{
   myScalarMapPL->SetScaling(theScaling);
 }
 
-
-void VISU::ScalarMap_i::SetRange(CORBA::Double theMin, CORBA::Double theMax){
-  if(theMin > theMax) return;
+void
+VISU::ScalarMap_i
+::SetRange(CORBA::Double theMin, CORBA::Double theMax)
+{
+  if(theMin > theMax) 
+    return;
   float aScalarRange[2] = {theMin, theMax};
   myScalarMapPL->SetScalarRange(aScalarRange);
   myIsFixedRange = true;
 }
 
-CORBA::Double VISU::ScalarMap_i::GetMin(){
-  return myScalarMapPL->GetScalarRange()[0];
-}
-
-CORBA::Double VISU::ScalarMap_i::GetMax(){
-  return myScalarMapPL->GetScalarRange()[1];
-}
-
 
-void VISU::ScalarMap_i::SetNbColors(CORBA::Long theNbColors){
-  myScalarMapPL->SetNbColors(theNbColors);
-}
-
-CORBA::Long VISU::ScalarMap_i::GetNbColors(){
-  return myScalarMapPL->GetNbColors();
-}
+//----------------------------------------------------------------------------
+void 
+VISU::ScalarMap_i
+::DoSetInput(Result_i* theResult)
+{
+  VISU::Result_i::TInput* anInput = theResult->GetInput();
+  if(!anInput)
+    throw std::runtime_error("Mesh_i::Build - theResult->GetInput() == NULL !!!");
 
+  myField = anInput->GetField(myMeshName,myEntity,myFieldName);
+  if(!myField) 
+    throw std::runtime_error("There is no Field with the parameters !!!");
 
-VISU::ScalarMap_i::~ScalarMap_i(){}
+  VISU::PIDMapper anIDMapper =
+    anInput->GetTimeStampOnMesh(myMeshName,myEntity,myFieldName,myIteration);
 
+  if(!anIDMapper) 
+    throw std::runtime_error("There is no TimeStamp with the parameters !!!");
 
-VISU::Storable* VISU::ScalarMap_i::Build(int theRestoring){
-  if(MYDEBUG)
-    MESSAGE("ScalarMap_i::Build - "<<myFieldName<<"; theRestoring = "<<theRestoring);
-  SALOMEDS::StudyBuilder_var aStudyBuilder = myStudy->NewBuilder();
-  if(myAddToStudy) aStudyBuilder->NewCommand();  // There is a transaction
-  try{
-    DoSetInput(myResult);
-    QString aComment;
-    myName = "NoName";
-    if(theRestoring <= 0){
-      if(theRestoring == 0) myScalarMapPL->Init();
-      if(!myIsFixedRange) myScalarMapPL->SetSourceRange();
-      const VISU::TValField& aValField = myField->myValField;
-      const VISU::PValForTime aValForTime = aValField.find(myIteration)->second;
-      aComment.sprintf("%s %s",myFieldName.c_str(),VISU_Convertor::GenerateName(aValForTime->myTime).c_str());
-      if (theRestoring == 0) myTitle = aComment.simplifyWhiteSpace().latin1();
-    }
-    if(myAddToStudy){
-      myName = GenerateName().latin1();
-      aComment.sprintf("myComment=TIMESTAMP;myType=%d;myMeshName=%s;myEntityId=%d;myFieldName=%s;myTimeStampId=%d;myNumComponent=%d",
-                      VISU::TTIMESTAMP,myMeshName.c_str(),myEntity,myFieldName.c_str(),myIteration,myField->myNbComp);
-      string aResultEntry = myResult->GetEntry();
-      string aRefFatherEntry = myResult->GetRefFatherEntry();
-      string anEntry = myResult->GetEntry(aComment.latin1());
-      if(anEntry == "") throw std::runtime_error("There is no Entry for binding the presentation !!!");
-      aComment.sprintf("myComment=%s;myMeshName=%s;myEntityId=%d;myFieldName=%s;myTimeStampId=%d;myNumComponent=%d",
-                      GetComment(),myMeshName.c_str(),myEntity,myFieldName.c_str(),myIteration,myField->myNbComp);
-      CORBA::String_var anIOR = GetID();
-      CreateAttributes(myStudy,anEntry.c_str(),aRefFatherEntry.c_str(),anIOR,myName.c_str(),"",aComment.latin1(),true);
-      mySObject = myStudy->FindObjectIOR(anIOR);
-    }
-  }catch(std::exception& exc){
-    INFOS("Follow exception was occured :\n"<<exc.what());
-    return NULL;
-  }catch(...){
-    INFOS("Unknown exception was occured!");
-    return NULL;
-  }
-  if(myAddToStudy) aStudyBuilder->CommitCommand();
-  return this;
+  myScalarMapPL->SetIDMapper(anIDMapper);
+  myScalarMapPL->Init();
+  myScalarMapPL->Build();
 }
 
-
-void VISU::ScalarMap_i::DoSetInput(Result_i* theResult){
-  if(theResult->GetInput() == NULL)
-    throw std::runtime_error("Mesh_i::Build - theResult->GetInput() == NULL !!!");
-  myField = theResult->GetInput()->GetField(myMeshName,myEntity,myFieldName);
-  if(myField == NULL) 
-    throw std::runtime_error("There is no Field with the parameters !!!");
-  VISU_Convertor::TOutput *anOutput =
-    theResult->GetInput()->GetTimeStampOnMesh(myMeshName,myEntity,myFieldName,myIteration);
-  if(anOutput == NULL) 
-    throw std::runtime_error("There is no TimeStamp with the parameters !!!");
-  myScalarMapPL->SetInput(anOutput);
-  myScalarMapPL->Build();
+void
+VISU::ScalarMap_i
+::Update() 
+{
+  TSuperClass::Update();
 }
 
 
-void VISU::ScalarMap_i::DoHook(){
-  if(MYDEBUG)  MESSAGE("ScalarMap_i::DoHook() - "<<myPipeLine);
-  if(!myPipeLine) {
-    myPipeLine = VISU_ScalarMapPL::New();
-    myPipeLine->GetMapper()->SetScalarVisibility(1);
-  }
-  myScalarMapPL = dynamic_cast<VISU_ScalarMapPL*>(myPipeLine);
+//----------------------------------------------------------------------------
+void
+VISU::ScalarMap_i
+::SetMapScale(double theMapScale)
+{
+  myScalarMapPL->SetMapScale(theMapScale);
 }
 
-void VISU::ScalarMap_i::Update() {
-  VISU::Prs3d_i::Update();
+bool
+VISU::ScalarMap_i
+::IsRangeFixed() 
+{ 
+  return myIsFixedRange; 
 }
 
-void VISU::ScalarMap_i::SetMapScale(double theMapScale){
-  myScalarMapPL->SetMapScale(theMapScale);
+void
+VISU::ScalarMap_i
+::SetSourceRange()
+{
+  myScalarMapPL->SetSourceRange();
+  myIsFixedRange = false;
 }
 
-VISU_Actor* VISU::ScalarMap_i::CreateActor(const Handle(SALOME_InteractiveObject)& theIO)
+//----------------------------------------------------------------------------
+VISU_Actor* 
+VISU::ScalarMap_i
+::CreateActor(const Handle(SALOME_InteractiveObject)& theIO)
 {
   VISU_ScalarMapAct* anActor = VISU_ScalarMapAct::New();
   try{
-    VISU::Prs3d_i::CreateActor(anActor,theIO);
+    TSuperClass::CreateActor(anActor,theIO);
     anActor->SetBarVisibility(true);
     anActor->SetRepresentation(2);
     SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr();
@@ -523,9 +322,11 @@ VISU_Actor* VISU::ScalarMap_i::CreateActor(const Handle(SALOME_InteractiveObject
   return anActor;
 }
 
-void VISU::ScalarMap_i::UpdateActor(VISU_Actor* theActor) {
+void
+VISU::ScalarMap_i
+::UpdateActor(VISU_Actor* theActor) 
+{
   if(VISU_ScalarMapAct* anActor = dynamic_cast<VISU_ScalarMapAct*>(theActor)){
-    VISU::Prs3d_i::UpdateActor(theActor);
     VISU_ScalarBarActor *aScalarBar = anActor->GetScalarBar();
     aScalarBar->SetLookupTable(myScalarMapPL->GetBarTable());
     aScalarBar->SetTitle(myTitle.c_str());
@@ -552,10 +353,5 @@ void VISU::ScalarMap_i::UpdateActor(VISU_Actor* theActor) {
 
     aScalarBar->Modified();
   }
-}
-
-
-void VISU::ScalarMap_i::SetSourceRange(){
-  myScalarMapPL->SetSourceRange();
-  myIsFixedRange = false;
+  TSuperClass::UpdateActor(theActor);
 }
index a1b3f0a5d4835ede996521de4e3b4638513169f0..8506e46317bcd2a08f0f7dd7a795def55c4b8d44 100644 (file)
 #ifndef VISU_ScalarMap_i_HeaderFile
 #define VISU_ScalarMap_i_HeaderFile
 
-#include "VISU_Prs3d_i.hh"
+#include "VISU_ColoredPrs3d_i.hh"
 
-class VISU_ScalarMapPL;
 
-namespace VISU{
+namespace VISU
+{
+  //============================================================================
   class ScalarMap_i : public virtual POA_VISU::ScalarMap,
-                     public virtual Prs3d_i
+                     public virtual ColoredPrs3d_i
   {
     static int myNbPresent;
     ScalarMap_i();
     ScalarMap_i(const ScalarMap_i&);
 
   public:
+    //----------------------------------------------------------------------------
+    typedef ColoredPrs3d_i TSuperClass;
+
     explicit
     ScalarMap_i(Result_i* theResult,
                bool theAddToStudy);
     explicit
     ScalarMap_i(Result_i* theResult,
                SALOMEDS::SObject_ptr theSObject);
-    virtual void SameAs(const Prs3d_i* theOrigin);
-    virtual ~ScalarMap_i();
-    virtual void RemoveFromStudy();
-
-    virtual VISU::VISUType GetType() { return VISU::TSCALARMAP;};
-
-    virtual CORBA::Long GetScalarMode();
-    virtual void SetScalarMode(CORBA::Long theScalarMode);
-
-    virtual VISU::Scaling GetScaling();
-    virtual void SetScaling(VISU::Scaling theScaling);
-
-    virtual void SetRange(CORBA::Double theMin, CORBA::Double theMax);
-    virtual CORBA::Double GetMin();
-    virtual CORBA::Double GetMax();
-
-    virtual void SetNbColors(CORBA::Long theNbColors);
-    virtual CORBA::Long GetNbColors();
-
-    virtual void SetBarOrientation(VISU::ScalarMap::Orientation theOrientation){
-      myOrientation = theOrientation;
+    virtual
+    ~ScalarMap_i();
+
+    virtual
+    VISU::VISUType 
+    GetType() 
+    { 
+      return VISU::TSCALARMAP;
     }
-    virtual VISU::ScalarMap::Orientation GetBarOrientation() { return myOrientation;}
-
-    virtual void SetPosition(CORBA::Double X, CORBA::Double Y) { myPosition[0] = X; myPosition[1] = Y;}
-    virtual CORBA::Double GetPosX() { return myPosition[0];}
-    virtual CORBA::Double GetPosY() { return myPosition[1];}
-
-    virtual void SetSize(CORBA::Double theWidth, CORBA::Double theHeight) {
-      myWidth = theWidth; myHeight = theHeight;
-    }
-    virtual CORBA::Double GetWidth() { return myWidth;}
-    virtual CORBA::Double GetHeight() { return myHeight;}
-
-    virtual void SetLabels(CORBA::Long theNbLabels) { myNumberOfLabels = theNbLabels;}
-    virtual CORBA::Long GetLabels() { return myNumberOfLabels;}
 
-    virtual void SetTitle(const char* theName) { myTitle = theName;}
-    virtual char* GetTitle() { return CORBA::string_dup(myTitle.c_str());}
+    virtual 
+    VISU::Scaling 
+    GetScaling();
 
-    virtual bool IsBoldTitle() { return myIsBoldTitle;}
-    virtual void SetBoldTitle(bool isBold) { myIsBoldTitle = isBold;}
+    virtual
+    void
+    SetScaling(VISU::Scaling theScaling);
 
-    virtual bool IsItalicTitle() { return myIsItalicTitle;}
-    virtual void SetItalicTitle(bool isItalic) { myIsItalicTitle = isItalic;}
+    virtual
+    void
+    SetRange(CORBA::Double theMin, CORBA::Double theMax);
 
-    virtual bool IsShadowTitle() { return myIsShadowTitle;}
-    virtual void SetShadowTitle(bool isShadow) { myIsShadowTitle = isShadow;}
+    // To provide backward compatibility
+    virtual
+    void
+    SetBarOrientation(VISU::ScalarMap::Orientation theOrientation);
 
-    virtual int GetTitFontType() { return myTitFontType;}
-    virtual void SetTitFontType(int theType) { myTitFontType = theType;}
-
-    virtual void GetTitleColor(float* theR, float* theG, float* theB)
-    {*theR = myTitleColor[0]; *theG = myTitleColor[1]; *theB = myTitleColor[2];}
-    virtual void SetTitleColor(float theR, float theG, float theB)
-    {myTitleColor[0] = theR; myTitleColor[1] = theG; myTitleColor[2] = theB; }
-
-    /////
-    virtual bool IsBoldLabel() { return myIsBoldLabel;}
-    virtual void SetBoldLabel(bool isBold) { myIsBoldLabel = isBold;}
-
-    virtual bool IsItalicLabel() { return myIsItalicLabel;}
-    virtual void SetItalicLabel(bool isItalic) { myIsItalicLabel = isItalic;}
-
-    virtual bool IsShadowLabel() { return myIsShadowLabel;}
-    virtual void SetShadowLabel(bool isShadow) {myIsShadowLabel = isShadow;}
-
-    virtual int GetLblFontType() { return myLblFontType;}
-    virtual void SetLblFontType(int theType) { myLblFontType = theType;}
-
-    virtual void GetLabelColor(float* theR, float* theG, float* theB)
-    {*theR = myLabelColor[0]; *theG = myLabelColor[1]; *theB = myLabelColor[2];}
-    virtual void SetLabelColor(float theR, float theG, float theB)
-    {myLabelColor[0] = theR; myLabelColor[1] = theG; myLabelColor[2] = theB; }
+    virtual 
+    VISU::ScalarMap::Orientation 
+    GetBarOrientation();
 
     typedef VISU::ScalarMap TInterface;
-    VISU_ScalarMapPL* GetScalarMapPL(){ return myScalarMapPL;}
-
-    /*!
-     *  \brief Works like SameAs() method, but keep myIteration value unchanged.
-     *
-     *  Is used in VISU_TimeAnimation class implementation.
-     */
-    void SameAsParams (const ScalarMap_i* theOrigin);
 
   protected:
-    Storable* Build(int theRestoring);
-    virtual void DoSetInput(Result_i* theResult);
-    virtual void DoHook();
-
-    VISU_ScalarMapPL* myScalarMapPL;
-    PField myField;
-
-    // std::string myMeshName; move it to Prs3d_i
-    TEntity myEntity;
-    std::string myFieldName;
-    int myIteration;
-
-    bool myIsFixedRange;
-
-    std::string myTitle;
-    int myNumberOfLabels;
-    float myPosition[2], myWidth, myHeight;
-    VISU::ScalarMap::Orientation myOrientation;
-
-    //Font management
-    bool myIsBoldTitle;
-    bool myIsItalicTitle;
-    bool myIsShadowTitle;
-    int  myTitFontType;
-    float myTitleColor[3];
-
-    bool myIsBoldLabel;
-    bool myIsItalicLabel;
-    bool myIsShadowLabel;
-    int  myLblFontType;
-    float myLabelColor[3];
+    virtual 
+    void
+    DoSetInput(Result_i* theResult);
 
   public:
-    static int IsPossible(Result_i* theResult, const char* theMeshName, VISU::Entity theEntity,
-                         const char* theFieldName, int theIteration, int isMemoryCheck = true);
-    virtual Storable* Create(const char* theMeshName, VISU::Entity theEntity,
-                            const char* theFieldName, int theIteration);
+    static
+    int
+    IsPossible(Result_i* theResult, 
+              const char* theMeshName, 
+              VISU::Entity theEntity,
+              const char* theFieldName, 
+              int theIteration, 
+              int isMemoryCheck = true);
+    virtual
+    Storable* 
+    Create(const char* theMeshName, 
+          VISU::Entity theEntity,
+          const char* theFieldName, 
+          int theIteration);
+
+    virtual 
+    void
+    ToStream(std::ostringstream& theStr);
 
-    const std::string& GetMeshName() const { return myMeshName;}
-    VISU::Entity GetEntity() const { return VISU::Entity(myEntity);}
-    const string& GetFieldName() const { return myFieldName;}
-    //int GetIteration() const { return myIteration;}
+    static const std::string myComment;
 
-    virtual void ToStream(std::ostringstream& theStr);
+    virtual
+    const char* 
+    GetComment() const;
 
-    static const std::string myComment;
-    virtual const char* GetComment() const;
-    virtual QString GenerateName();
+    virtual
+    QString
+    GenerateName();
+
+    virtual 
+    Storable* 
+    Restore(const Storable::TRestoringMap& theMap);
 
-    virtual Storable* Restore(const Storable::TRestoringMap& theMap);
+    static 
+    Storable* 
+    Restore(SALOMEDS::SObject_ptr theSObject,
+           const std::string& thePrefix, 
+           const Storable::TRestoringMap& theMap);
 
-    static Storable* Restore(SALOMEDS::SObject_ptr theSObject,
-                            const std::string& thePrefix, const Storable::TRestoringMap& theMap);
+    virtual
+    void
+    Update() ;
 
-    virtual void Update() ;
-    virtual void SetMapScale(double theMapScale = 1.0);
+    virtual
+    void
+    SetMapScale(double theMapScale = 1.0);
 
-    const VISU::PField GetField() const { return myField;}
+    virtual
+    bool
+    IsRangeFixed();
 
-    virtual bool IsRangeFixed() { return myIsFixedRange; }
-    virtual void SetSourceRange();
+    virtual 
+    void
+    SetSourceRange();
 
-    virtual int GetIteration() { return myIteration; }
+    virtual 
+    void
+    SameAs(const Prs3d_i* theOrigin);
 
-    virtual VISU_Actor* CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
 
-    virtual void UpdateActor(VISU_Actor* theActor) ;
+    virtual
+    void
+    UpdateActor(VISU_Actor* theActor);
   };
 }
 
index 418d20cbc0b2f49c56a6f10e1de9514f51dc1d30..fbeeb75f5c204a386db9f79602741464f6536c6b 100644 (file)
 //  Author : Alexey PETROV
 //  Module : VISU
 
-#include "VISU_StreamLinesPL.hxx"
-#include "VISU_Result_i.hh"
 #include "VISU_StreamLines_i.hh"
+#include "VISU_Result_i.hh"
+
 #include "VISU_Actor.h"
+#include "VISU_StreamLinesPL.hxx"
+#include "VISU_Convertor.hxx"
 
 #include <vtkDataSetMapper.h>
 #include <vtkAppendFilter.h>
@@ -46,10 +48,13 @@ int VISU::StreamLines_i::IsPossible(Result_i* theResult, const char* theMeshName
                                    const char* theFieldName, int theIteration, int isMemoryCheck)
 {
   try{
-    if(!VISU::ScalarMap_i::IsPossible(theResult,theMeshName,theEntity,theFieldName,theIteration,false)) return 0;
-    VISU_Convertor::TOutput *anOutput = 
+    if(!VISU::ScalarMap_i::IsPossible(theResult,theMeshName,theEntity,theFieldName,theIteration,false)) 
+      return 0;
+
+    VISU::PIDMapper anIDMapper = 
       theResult->GetInput()->GetTimeStampOnMesh(theMeshName,VISU::TEntity(theEntity),theFieldName,theIteration);
-    bool aResult = VISU_StreamLinesPL::IsPossible(anOutput);
+    VISU::TVTKOutput* aDataSet = anIDMapper->GetVTKOutput();
+    bool aResult = VISU_StreamLinesPL::IsPossible(aDataSet);
     MESSAGE("StreamLines_i::IsPossible - aResult = "<<aResult);
     return aResult;
   }catch(std::exception& exc){
@@ -74,6 +79,7 @@ StreamLines_i(Result_i* theResult,
              bool theAddToStudy) :
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theAddToStudy),
+  ColoredPrs3d_i(theResult,theAddToStudy),
   ScalarMap_i(theResult,theAddToStudy),
   DeformedShape_i(theResult,theAddToStudy),
   myStreamLinesPL(NULL),
@@ -87,6 +93,7 @@ StreamLines_i(Result_i* theResult,
              SALOMEDS::SObject_ptr theSObject) :
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theSObject),
+  ColoredPrs3d_i(theResult,theSObject),
   ScalarMap_i(theResult,theSObject),
   DeformedShape_i(theResult,theSObject),
   myStreamLinesPL(NULL),
@@ -97,11 +104,11 @@ StreamLines_i(Result_i* theResult,
 
 void VISU::StreamLines_i::SameAs(const Prs3d_i* theOrigin)
 {
-  VISU::DeformedShape_i::SameAs(theOrigin);
+  TSuperClass::SameAs(theOrigin);
 
-  if (const StreamLines_i* aConstStreamLines = dynamic_cast<const StreamLines_i*>(theOrigin)) {
-    StreamLines_i* aStreamLines = const_cast<StreamLines_i*>(aConstStreamLines);
-    SetSource(aStreamLines->GetSource());
+  if(const StreamLines_i* aPrs3d = dynamic_cast<const StreamLines_i*>(theOrigin)) {
+    StreamLines_i* anOrigin = const_cast<StreamLines_i*>(aPrs3d);
+    SetSource(anOrigin->GetSource());
   }
 }
 
@@ -115,8 +122,7 @@ VISU::Storable* VISU::StreamLines_i::Create(const char* theMeshName, VISU::Entit
 
 VISU::Storable* VISU::StreamLines_i::Restore(const Storable::TRestoringMap& theMap)
 {
-  DoHook();
-  VISU::Storable* aStorable = DeformedShape_i::Restore(theMap);
+  TSuperClass::Restore(theMap);
 
   double anIntegrationStep = VISU::Storable::FindValue(theMap,"myIntegrationStep").toDouble();
   double aPropagationTime = VISU::Storable::FindValue(theMap,"myPropagationTime").toDouble();
@@ -131,7 +137,7 @@ VISU::Storable* VISU::StreamLines_i::Restore(const Storable::TRestoringMap& theM
            VISU::StreamLines::Direction(aDirection));
   mySourceEntry = VISU::Storable::FindValue(theMap,"mySourceEntry").latin1();
 
-  return aStorable;
+  return this;
 }
 
 
@@ -259,9 +265,15 @@ void VISU::StreamLines_i::Update() {
 }
 
 
-VISU_Actor* VISU::StreamLines_i::CreateActor(const Handle(SALOME_InteractiveObject)& theIO) 
+VISU_Actor* 
+VISU::StreamLines_i
+::CreateActor(const Handle(SALOME_InteractiveObject)& theIO) 
 {
-  return VISU::DeformedShape_i::CreateActor(theIO);
+  if(VISU_Actor* anActor = VISU::DeformedShape_i::CreateActor(theIO)){
+    anActor->SetVTKMapping(true);
+    return anActor;
+  }
+  return NULL;
 }
 
 
index a5a1a2530d940be47d3ecfb9bd3a759e0b0f6a38..2c5c4fef6f5a24e247ee5431d5899a23d2e1967f 100644 (file)
@@ -93,7 +93,9 @@ namespace VISU{
 
     virtual void Update();
 
-    virtual VISU_Actor* CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+    virtual 
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
 
     virtual void UpdateActor(VISU_Actor* theActor);
 
index c16e1f87b066ffce5b4975356b8dad8761fcdd27..ff511dbad7ae73c9c57269acc5f67068d6a652db 100644 (file)
@@ -21,6 +21,7 @@
 #include "VISU_CutLines_i.hh"
 #include "VISU_Vectors_i.hh"
 #include "VISU_StreamLines_i.hh"
+#include "VISU_GaussPoints_i.hh"
 #include "VISU_ViewManager_i.hh"
 #include "VISU_View_i.hh"
 
@@ -48,7 +49,7 @@
 using namespace std;
 
 
-//************************************************************************
+//------------------------------------------------------------------------
 VISU_TimeAnimation::VISU_TimeAnimation (_PTR(Study) theStudy,
                                         VISU::View3D_ptr theView3D)
 {
@@ -77,16 +78,21 @@ VISU_TimeAnimation::VISU_TimeAnimation (_PTR(Study) theStudy,
 }
 
 
-//************************************************************************
+//------------------------------------------------------------------------
 VISU_TimeAnimation::~VISU_TimeAnimation()
 {
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
+    return;
+  }
+
   for (int i = 0; i < getNbFields(); i++) {
     clearData(myFieldsLst[i]);
   }
 }
 
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::addField (_PTR(SObject) theField)
 {
   FieldData aNewData;
@@ -109,7 +115,7 @@ void VISU_TimeAnimation::addField (_PTR(SObject) theField)
   }
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::addField (SALOMEDS::SObject_ptr theField)
 {
   SALOMEDS::SObject_var theFieldDup = SALOMEDS::SObject::_duplicate(theField);
@@ -118,18 +124,18 @@ void VISU_TimeAnimation::addField (SALOMEDS::SObject_ptr theField)
 }
 
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::clearData(FieldData& theData) {
-  if( !myView )
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
     return;
-
+  }
   theData.myTiming.clear();
   vtkRenderer* aRen = myView->getRenderer();
   if (!theData.myActors.empty()) {
     for (int i = 0, iEnd = theData.myActors.size(); i < iEnd; i++) {
       if (theData.myActors[i] != 0) {
        theData.myActors[i]->RemoveFromRender(aRen);
-       theData.myActors[i]->Delete();
       }
     }
     theData.myActors.clear();
@@ -146,146 +152,122 @@ void VISU_TimeAnimation::clearData(FieldData& theData) {
 }
 
 
-//************************************************************************
+namespace
+{
+  //------------------------------------------------------------------------
+  template<class TPrs3d>
+  void
+  GeneratePresentations(_PTR(Study) theStudy,
+                       FieldData& theData,
+                       VISU::Result_i* theResult,
+                       bool theIsRangeDefined,
+                       CORBA::Double theMinVal,
+                       CORBA::Double theMaxVal)
+  {
+    double aMin = VTK_LARGE_FLOAT, aMax = -VTK_LARGE_FLOAT;
+    _PTR(ChildIterator) anIter = theStudy->NewChildIterator(theData.myField);
+    anIter->Next(); // First is reference on support
+
+    long aFrameId = 0;
+    for(; anIter->More(); anIter->Next()){
+      if (aFrameId == theData.myNbTimes) {
+       MESSAGE("There are extra timestamps in field");
+       return;
+      }
+      _PTR(SObject) aTimeStamp = anIter->Value();
+      if(!aTimeStamp) 
+       continue;
+
+      theData.myTiming[aFrameId] = VISU_TimeAnimation::getTimeValue(aTimeStamp);
+      if (theIsRangeDefined) {
+       if (theData.myTiming[aFrameId] < theMinVal) 
+         continue;
+       if (theData.myTiming[aFrameId] > theMaxVal) 
+         break;
+      }
+
+      VISU::Storable::TRestoringMap aTimeMap = VISU_TimeAnimation::getMapOfValue(aTimeStamp);
+      QString aMeshName = VISU::Storable::FindValue(aTimeMap,"myMeshName");
+      VISU::Entity anEntity = (VISU::Entity) VISU::Storable::FindValue(aTimeMap,"myEntityId").toInt();
+      QString aFieldName = VISU::Storable::FindValue(aTimeMap,"myFieldName");
+      int aTimeStampId = VISU::Storable::FindValue(aTimeMap,"myTimeStampId").toInt();
+      
+      TPrs3d* aPresent = new TPrs3d(theResult, false);
+      aPresent->Create(aMeshName.latin1(), anEntity,
+                      aFieldName.latin1(), aTimeStampId);
+      theData.myPrs[aFrameId++] = aPresent;
+
+      aMin = std::min(aPresent->GetMin(),aMin);
+      aMax = std::min(aPresent->GetMax(),aMax);
+    }
+    theData.myNbFrames = aFrameId;
+
+    if (theData.myPrsType != VISU::TGAUSSPOINTS){
+      int aRangeType = VISU::GetResourceMgr()->integerValue("VISU" , "scalar_range_type", 0);
+      if( aRangeType != 1 ){
+       for(long aFrameId = 0; aFrameId < theData.myNbFrames; aFrameId++) {
+         if (VISU::ScalarMap_i* aPrs = dynamic_cast<VISU::ScalarMap_i*>(theData.myPrs[aFrameId])){
+           aPrs->SetRange(aMin, aMax);
+           aPrs->SetOffset(theData.myOffset);
+         }
+       }
+      }
+      if (theData.myPrsType == VISU::TISOSURFACE)
+       for (long aFrameId = 0; aFrameId < theData.myNbFrames; aFrameId++)
+         if (VISU::IsoSurfaces_i* aPrs = dynamic_cast<VISU::IsoSurfaces_i*>(theData.myPrs[aFrameId]))
+           aPrs->SetSubRange(aMin, aMax);
+    }
+  }
+}
+  
 void VISU_TimeAnimation::generatePresentations(CORBA::Long theFieldNum) {
   FieldData& aData = myFieldsLst[theFieldNum];
 
   // Delete previous presentations
   clearData(aData);
 
-  VISU::Result_i* pResult = createPresent(aData.myField);
+  VISU::Result_i* aResult = createPresent(aData.myField);
   VISU::Storable::TRestoringMap aMap = getMapOfValue(aData.myField);
   aData.myNbFrames = aData.myNbTimes;
-    //VISU::Storable::FindValue(aMap,"myNbTimeStamps").toLong();
+  //VISU::Storable::FindValue(aMap,"myNbTimeStamps").toLong();
 
   aData.myPrs.resize(aData.myNbTimes,NULL);
   aData.myTiming.resize(aData.myNbTimes);
 
-  _PTR(ChildIterator) anIter = myStudy->NewChildIterator(aData.myField);
-  _PTR(SObject) aTimeStamp;
-  anIter->Next(); // First is reference on support
-  long i = 0;
-  double aMin = VTK_LARGE_FLOAT, aMax = -VTK_LARGE_FLOAT;
-  for (; anIter->More(); anIter->Next()) {
-    if (i == aData.myNbTimes) {
-      MESSAGE("There are extra timestamps in field");
-      return;
-    }
-    aTimeStamp = anIter->Value();
-    if (!aTimeStamp) continue;
-
-    aData.myTiming[i] = getTimeValue(aTimeStamp);
-    if (isRangeDefined()) {
-      if (aData.myTiming[i] < myMinVal) continue;
-      if (aData.myTiming[i] > myMaxVal) break;
-    }
-
-    VISU::Storable::TRestoringMap aTimeMap = getMapOfValue(aTimeStamp);
-    QString aMeshName = VISU::Storable::FindValue(aTimeMap,"myMeshName");
-    VISU::Entity anEntity = (VISU::Entity) VISU::Storable::FindValue(aTimeMap,"myEntityId").toInt();
-    QString aFieldName = VISU::Storable::FindValue(aTimeMap,"myFieldName");
-    int aTimeStampId = VISU::Storable::FindValue(aTimeMap,"myTimeStampId").toInt();
-
-    switch (aData.myPrsType) {
-    case VISU::TSCALARMAP: // ScalarMap
-      {
-       VISU::ScalarMap_i* aPresent = new VISU::ScalarMap_i(pResult, false);
-       aPresent->Create(aMeshName.latin1(), anEntity,
-                        aFieldName.latin1(), aTimeStampId);
-       //VISU::ScalarMap_var aTmp = aPresent->_this();
-       //aPresent->_remove_ref();
-       aData.myPrs[i] = aPresent;
-      }
-      break;
-
-    case VISU::TISOSURFACE: // Iso Surfaces
-      {
-       VISU::IsoSurfaces_i* aPresent = new VISU::IsoSurfaces_i(pResult, false);
-       aPresent->Create(aMeshName.latin1(), anEntity,
-                        aFieldName.latin1(), aTimeStampId);
-       //VISU::IsoSurfaces_var aTmp = aPresent->_this();
-       //aPresent->_remove_ref();
-       aData.myPrs[i] = aPresent;
-      }
-      break;
-
-    case VISU::TCUTPLANES: // Cut Planes
-      {
-       VISU::CutPlanes_i* aPresent = new VISU::CutPlanes_i(pResult, false);
-       aPresent->Create(aMeshName.latin1(), anEntity,
-                        aFieldName.latin1(), aTimeStampId);
-       //VISU::CutPlanes_var aTmp = aPresent->_this();
-       //aPresent->_remove_ref();
-       aData.myPrs[i] = aPresent;
-      }
-      break;
-
-    case VISU::TPLOT3D: // Plot3d
-      {
-       VISU::Plot3D_i* aPresent = new VISU::Plot3D_i (pResult, false);
-       aPresent->Create(aMeshName.latin1(), anEntity,
-                        aFieldName.latin1(), aTimeStampId);
-       aData.myPrs[i] = aPresent;
-      }
-      break;
-
-    case VISU::TDEFORMEDSHAPE: // Deformed Shape
-      {
-       VISU::DeformedShape_i* aPresent = new VISU::DeformedShape_i(pResult, false);
-       aPresent->Create(aMeshName.latin1(), anEntity,
-                        aFieldName.latin1(), aTimeStampId);
-       //VISU::DeformedShape_var aTmp = aPresent->_this();
-       //aPresent->_remove_ref();
-       aData.myPrs[i] = aPresent;
-      }
-      break;
-
-    case VISU::TVECTORS: // Vectors
-      {
-       VISU::Vectors_i* aPresent = new VISU::Vectors_i(pResult, false);
-       aPresent->Create(aMeshName.latin1(), anEntity,
-                        aFieldName.latin1(), aTimeStampId);
-       //VISU::Vectors_var aTmp = aPresent->_this();
-       //aPresent->_remove_ref();
-       aData.myPrs[i] = aPresent;
-      }
-      break;
-
-    case VISU::TSTREAMLINES: // Stream Lines
-      {
-       VISU::StreamLines_i* aPresent = new VISU::StreamLines_i(pResult, false);
-       aPresent->Create(aMeshName.latin1(), anEntity,
-                        aFieldName.latin1(), aTimeStampId);
-       //VISU::StreamLines_var aTmp = aPresent->_this();
-       //aPresent->_remove_ref();
-       aData.myPrs[i] = aPresent;
-      }
-      break;
-    default:
-      MESSAGE("Not implemented for this presentation type: " << aData.myPrsType);
-      return;
-    }
-    if (aData.myPrs[i]->GetMin() < aMin) aMin = aData.myPrs[i]->GetMin();
-    if (aData.myPrs[i]->GetMax() > aMax) aMax = aData.myPrs[i]->GetMax();
-    i++;
-  }
-  aData.myNbFrames = i;
-
-  int rangeType = VISU::GetResourceMgr()->integerValue("VISU" , "scalar_range_type", 0);
-  if ( rangeType != 1 ) {
-    for (i = 0; i < aData.myNbFrames; i++) {
-      aData.myPrs[i]->SetRange(aMin, aMax);
-      aData.myPrs[i]->SetOffset(aData.myOffset);
-    }
-    if (aData.myPrsType == VISU::TISOSURFACE)
-      for (i = 0; i < aData.myNbFrames; i++)
-       if (VISU::IsoSurfaces_i* aPrs = dynamic_cast<VISU::IsoSurfaces_i*>(aData.myPrs[i]))
-          aPrs->SetSubRange(aMin, aMax);
+  using namespace VISU;
+  switch (aData.myPrsType) {
+  case VISU::TSCALARMAP: // ScalarMap
+    GeneratePresentations<ScalarMap_i>(myStudy,aData,aResult,isRangeDefined(),myMinVal,myMaxVal);
+    break;
+  case VISU::TISOSURFACE: // Iso Surfaces
+    GeneratePresentations<IsoSurfaces_i>(myStudy,aData,aResult,isRangeDefined(),myMinVal,myMaxVal);
+    break;
+  case VISU::TCUTPLANES: // Cut Planes
+    GeneratePresentations<CutPlanes_i>(myStudy,aData,aResult,isRangeDefined(),myMinVal,myMaxVal);
+    break;
+  case VISU::TPLOT3D: // Plot3d
+    GeneratePresentations<Plot3D_i>(myStudy,aData,aResult,isRangeDefined(),myMinVal,myMaxVal);
+    break;
+  case VISU::TDEFORMEDSHAPE: // Deformed Shape
+    GeneratePresentations<DeformedShape_i>(myStudy,aData,aResult,isRangeDefined(),myMinVal,myMaxVal);
+    break;
+  case VISU::TVECTORS: // Vectors
+    GeneratePresentations<Vectors_i>(myStudy,aData,aResult,isRangeDefined(),myMinVal,myMaxVal);
+    break;
+  case VISU::TSTREAMLINES: // Stream Lines
+    GeneratePresentations<StreamLines_i>(myStudy,aData,aResult,isRangeDefined(),myMinVal,myMaxVal);
+    break;
+  case VISU::TGAUSSPOINTS: // Gauss Points
+    GeneratePresentations<GaussPoints_i>(myStudy,aData,aResult,isRangeDefined(),myMinVal,myMaxVal);
+    break;
+  default:
+    MESSAGE("Not implemented for this presentation type: " << aData.myPrsType);
+    return;
   }
 }
 
 
-//************************************************************************
+//------------------------------------------------------------------------
 CORBA::Boolean VISU_TimeAnimation::generateFrames() {
   if (!myView) {
     MESSAGE("Viewer is not defined for animation");
@@ -324,7 +306,7 @@ CORBA::Boolean VISU_TimeAnimation::generateFrames() {
   return aNoError;
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::clearView() {
   if (!myView) {
     MESSAGE("Viewer is not defined for animation");
@@ -337,7 +319,6 @@ void VISU_TimeAnimation::clearView() {
       for (int i = 0, iEnd = aData.myActors.size(); i < iEnd; i++) {
        if (aData.myActors[i] != 0) {
          aData.myActors[i]->RemoveFromRender(aRen);
-         aData.myActors[i]->Delete();
        }
       }
       aData.myActors.clear();
@@ -346,12 +327,12 @@ void VISU_TimeAnimation::clearView() {
   VISU::RepaintView(myView);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::stopAnimation() {
   myIsActive = false;
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::startAnimation() {
   if (!myIsActive) {
     myIsActive = true;
@@ -359,11 +340,12 @@ void VISU_TimeAnimation::startAnimation() {
   }
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::nextFrame() {
-  if( !myView )
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
     return;
-
+  }
   stopAnimation();
   if (myFrame < (myFieldsLst[0].myNbFrames-1)) {
     int i;
@@ -381,10 +363,12 @@ void VISU_TimeAnimation::nextFrame() {
   }
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::prevFrame() {
-  if( !myView )
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
     return;
+  }
   stopAnimation();
   if (myFrame > 0) {
     int i;
@@ -402,11 +386,12 @@ void VISU_TimeAnimation::prevFrame() {
   }
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::firstFrame() {
-  if( !myView )
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
     return;
-
+  }
   stopAnimation();
   int i;
   for (i = 0; i < getNbFields(); i++)
@@ -424,11 +409,12 @@ void VISU_TimeAnimation::firstFrame() {
   }
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::lastFrame() {
-  if( !myView )
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
     return;
-
+  }
   stopAnimation();
   int i;
   for (i = 0; i < getNbFields(); i++)
@@ -445,10 +431,14 @@ void VISU_TimeAnimation::lastFrame() {
 }
 
 
-//************************************************************************
+//------------------------------------------------------------------------
 // For Batchmode using
 void VISU_TimeAnimation::gotoFrame(CORBA::Long theFrame) {
-  if ((theFrame < 0) || (theFrame > (getNbFrames()-1)) || !myView )
+  if (!myView) {
+    MESSAGE("Viewer is not defined for animation");
+    return;
+  }
+  if ((theFrame < 0) || (theFrame > (getNbFrames()-1)))
     return;
   stopAnimation();
   qApp->lock();
@@ -471,23 +461,23 @@ void VISU_TimeAnimation::gotoFrame(CORBA::Long theFrame) {
 }
 
 
-//************************************************************************
-VISU::ScalarMap_ptr VISU_TimeAnimation::getPresentation(CORBA::Long theField, CORBA::Long theFrame) {
+//------------------------------------------------------------------------
+VISU::ColoredPrs3d_ptr VISU_TimeAnimation::getPresentation(CORBA::Long theField, CORBA::Long theFrame) {
   if ((theField > getNbFields()) || (theField < 0))
-    return VISU::ScalarMap::_nil();
+    return VISU::ColoredPrs3d::_nil();
   if ((theFrame < 0) || (theFrame > (myFieldsLst[theField].myNbFrames - 1)))
-    return VISU::ScalarMap::_nil();
+    return VISU::ColoredPrs3d::_nil();
   return myFieldsLst[theField].myPrs[theFrame]->_this();
 }
 
 
-//************************************************************************
+//------------------------------------------------------------------------
 CORBA::Long VISU_TimeAnimation::getNbFrames() {
   return (getNbFields() > 0)? myFieldsLst[0].myNbFrames : 0;
 }
 
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::run()
 {
   if (!myView) {
@@ -543,6 +533,11 @@ void VISU_TimeAnimation::run()
     qApp->lock();
 
     if (isDumping) {
+      // We must unlock mutex for some time before grabbing to allow view updating
+      qApp->unlock();
+      msleep(100);
+      qApp->lock();
+
       QPixmap px = QPixmap::grabWindow(myView->winId());
       QString aFile(myDumpPath);
       QString aName = QString("%1").arg(myFieldsLst[0].myTiming[myFrame]);
@@ -572,7 +567,7 @@ void VISU_TimeAnimation::run()
   QThread::exit();
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 VISU::Result_i* VISU_TimeAnimation::createPresent (_PTR(SObject) theField)
 {
   _PTR(SObject) aSObj = theField->GetFather();
@@ -583,7 +578,7 @@ VISU::Result_i* VISU_TimeAnimation::createPresent (_PTR(SObject) theField)
   return dynamic_cast<VISU::Result_i*>(VISU::GetServant(anObject).in());
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 VISU::Storable::TRestoringMap VISU_TimeAnimation::getMapOfValue (_PTR(SObject) theSObject)
 {
   VISU::Storable::TRestoringMap aMap;
@@ -599,7 +594,7 @@ VISU::Storable::TRestoringMap VISU_TimeAnimation::getMapOfValue (_PTR(SObject) t
   return aMap;
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 double VISU_TimeAnimation::getTimeValue (_PTR(SObject) theTimeStamp)
 {
   _PTR(GenericAttribute) anAttr;
@@ -615,7 +610,7 @@ double VISU_TimeAnimation::getTimeValue (_PTR(SObject) theTimeStamp)
   return -1.0;
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::setSpeed(CORBA::Long theSpeed)
 {
   mySpeed = (theSpeed<1)? 1 : theSpeed;
@@ -641,7 +636,7 @@ QString VISU_TimeAnimation::GenerateName()
   return VISU::GenerateName("Animation", myNBAnimations++);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 std::string GetPresentationComment (VISU::VISUType thePrsType)
 {
   std::string aPrsCmt;
@@ -667,6 +662,9 @@ std::string GetPresentationComment (VISU::VISUType thePrsType)
   case VISU::TSTREAMLINES:
     aPrsCmt = VISU::StreamLines_i::myComment;
     break;
+  case VISU::TGAUSSPOINTS:
+    aPrsCmt = VISU::GaussPoints_i::myComment;
+    break;
   default:
     aPrsCmt = "Unknown presentation";
     break;
@@ -674,7 +672,7 @@ std::string GetPresentationComment (VISU::VISUType thePrsType)
   return aPrsCmt;
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 SALOMEDS::SObject_ptr VISU_TimeAnimation::publishInStudy()
 {
   if (myStudy->GetProperties()->IsLocked())
@@ -714,7 +712,7 @@ SALOMEDS::SObject_ptr VISU_TimeAnimation::publishInStudy()
   return VISU::GetSObject(aAnimSObject);
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::saveAnimation()
 {
   if (myStudy->GetProperties()->IsLocked()) return;
@@ -775,7 +773,7 @@ void VISU_TimeAnimation::saveAnimation()
   aStudyBuilder->CommitCommand();
 }
 
-//************************************************************************
+//------------------------------------------------------------------------
 void VISU_TimeAnimation::restoreFromStudy(SALOMEDS::SObject_ptr theField)
 {
   _PTR(SObject) aAnimSObject = VISU::GetClientSObject(theField, myStudy);
@@ -831,6 +829,8 @@ void VISU_TimeAnimation::restoreFromStudy(_PTR(SObject) theField)
       aData.myPrsType = VISU::TVECTORS;
     else if (strName == VISU::StreamLines_i::myComment.c_str())
       aData.myPrsType = VISU::TSTREAMLINES;
+    else if (strName == VISU::GaussPoints_i::myComment.c_str())
+      aData.myPrsType = VISU::TGAUSSPOINTS;
     else
       continue;
     generatePresentations(getNbFields()-1);
@@ -997,7 +997,7 @@ CORBA::Long VISU_TimeAnimation_i::getCurrentFrame()
   return myAnim->getCurrentFrame();
 }
 
-VISU::ScalarMap_ptr VISU_TimeAnimation_i::getPresentation
+VISU::ColoredPrs3d_ptr VISU_TimeAnimation_i::getPresentation
                     (CORBA::Long theField, CORBA::Long theFrame)
 {
   return myAnim->getPresentation(theField,theFrame);
index f6496cc5b32ce7b50362e0c61651a646c458ab7d..315415c80c20d44cadd54595cb05df77fb10f2c0 100644 (file)
@@ -22,7 +22,7 @@ class VISU_Actor;
 
 namespace VISU{
   class Result_i;
-  class ScalarMap_i;
+  class ColoredPrs3d_i;
 }
 
 struct FieldData
@@ -31,7 +31,7 @@ struct FieldData
   _PTR(SObject) myField; // field label
   long myNbTimes;        // number of Timestamps
   long myNbFrames;       // number of created Frames
-  std::vector<VISU::ScalarMap_i*> myPrs;     // Presentations
+  std::vector<VISU::ColoredPrs3d_i*> myPrs;     // Presentations
   std::vector<VISU_Actor*> myActors;         // Actors
   std::vector<double> myTiming;              // time values
   float myOffset[3];
@@ -80,7 +80,7 @@ class VISU_TimeAnimation: public QObject, public QThread
   CORBA::Boolean isRunning() { return myIsActive; }
   CORBA::Long getCurrentFrame() { return myFrame; }
 
-  VISU::ScalarMap_ptr getPresentation(CORBA::Long theField, CORBA::Long theFrame);
+  VISU::ColoredPrs3d_ptr getPresentation(CORBA::Long theField, CORBA::Long theFrame);
 
   void setPresentationType(CORBA::Long theFieldNum, VISU::VISUType theType)
     { myFieldsLst[theFieldNum].myPrsType = theType; }
@@ -188,7 +188,7 @@ public:
   virtual CORBA::Boolean isRunning();
   virtual CORBA::Long getCurrentFrame();
 
-  virtual VISU::ScalarMap_ptr getPresentation(CORBA::Long theField, CORBA::Long theFrame);
+  virtual VISU::ColoredPrs3d_ptr getPresentation(CORBA::Long theField, CORBA::Long theFrame);
 
   virtual void setPresentationType(CORBA::Long theFieldNum, VISU::VISUType theType);
   virtual VISU::VISUType getPresentationType(CORBA::Long theFieldNum);
index 3fb107803770b0e5b742a2d0f017ab2cc7aee42c..0a93d9fab6d212c75b491cb9a2d4badd204a67b8 100644 (file)
 //  Author : Alexey PETROV
 //  Module : VISU
 
-#include "VISU_VectorsPL.hxx"
-#include "VISU_Result_i.hh"
 #include "VISU_Vectors_i.hh"
+#include "VISU_Result_i.hh"
+
 #include "VISU_VectorsAct.h"
+#include "VISU_VectorsPL.hxx"
+#include "VISU_Convertor.hxx"
 
 using namespace VISU;
 using namespace std;
@@ -74,6 +76,7 @@ Vectors_i(Result_i* theResult,
          bool theAddToStudy) :
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theAddToStudy),
+  ColoredPrs3d_i(theResult,theAddToStudy),
   ScalarMap_i(theResult,theAddToStudy),
   DeformedShape_i(theResult,theAddToStudy),
   myVectorsPL(NULL)
@@ -86,6 +89,7 @@ Vectors_i(Result_i* theResult,
          SALOMEDS::SObject_ptr theSObject) :
   PrsObject_i(theResult->GetStudyDocument()), 
   Prs3d_i(theResult,theSObject),
+  ColoredPrs3d_i(theResult,theSObject),
   ScalarMap_i(theResult,theSObject),
   DeformedShape_i(theResult,theSObject),
   myVectorsPL(NULL)
@@ -95,11 +99,11 @@ Vectors_i(Result_i* theResult,
 
 void VISU::Vectors_i::SameAs(const VISU::Prs3d_i* theOrigin)
 {
-  VISU::DeformedShape_i::SameAs(theOrigin);
+  TSuperClass::SameAs(theOrigin);
 
-  if (const VISU::Vectors_i* aConstVec = dynamic_cast<const VISU::Vectors_i*>(theOrigin)) {
-    VISU::Vectors_i* aVectors = const_cast<VISU::Vectors_i*>(aConstVec);
-    SetLineWidth(aVectors->GetLineWidth());
+  if(const Vectors_i* aPrs3d = dynamic_cast<const Vectors_i*>(theOrigin)){
+    Vectors_i* anOrigin = const_cast<Vectors_i*>(aPrs3d);
+    SetLineWidth(anOrigin->GetLineWidth());
   }
 }
 
@@ -114,12 +118,13 @@ VISU::Storable* VISU::Vectors_i::Create(const char* theMeshName, VISU::Entity th
 
 VISU::Storable* VISU::Vectors_i::Restore(const Storable::TRestoringMap& theMap)
 {
-  DoHook();
+  TSuperClass::Restore(theMap);
+
   SetGlyphType(VISU::Vectors::GlyphType(VISU::Storable::FindValue(theMap,"myTypeGlyph").toInt()));
   SetGlyphPos(VISU::Vectors::GlyphPos(VISU::Storable::FindValue(theMap,"myPosGlyph").toInt()));
   SetLineWidth(VISU::Storable::FindValue(theMap,"myLineWidth").toDouble());
 
-  return DeformedShape_i::Restore(theMap);
+  return this;
 }
 
 
@@ -171,6 +176,7 @@ void VISU::Vectors_i::DoHook(){
 
 VISU_PipeLine* VISU::Vectors_i::GetPipeLine(){
   VISU_PipeLine* aPipeLine = VISU_VectorsPL::New();
+  aPipeLine->SetIDMapper(myPipeLine->GetIDMapper());
   aPipeLine->ShallowCopy(myPipeLine);
   aPipeLine->Update();
   return aPipeLine;
@@ -182,6 +188,7 @@ VISU_Actor* VISU::Vectors_i::CreateActor(const Handle(SALOME_InteractiveObject)&
   VISU_VectorsAct* anActor = VISU_VectorsAct::New();
   try{
     VISU::Prs3d_i::CreateActor(anActor,theIO);
+    anActor->SetVTKMapping(true);
     anActor->SetBarVisibility(true);
     anActor->GetProperty()->SetColor(myColor.R,myColor.G,myColor.B);
     anActor->GetProperty()->SetLineWidth(GetLineWidth());
index 7c167ae063642ec4358af29460ef34b39d702deb..d74c25edad368e9d65f555f85de4ba2153721ec5 100644 (file)
@@ -83,7 +83,9 @@ namespace VISU{
     virtual const char* GetComment() const;
     virtual QString GenerateName();
 
-    virtual VISU_Actor* CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+    virtual
+    VISU_Actor* 
+    CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
 
     virtual void UpdateActor(VISU_Actor* theActor) ;
   };
index 670656c113ab52ab78744550d10481dd711906b6..c86ac5d8cd41b7aa83fbb1c2ed9cf0794ddebd8d 100644 (file)
@@ -36,7 +36,6 @@
 #include "SUIT_ViewWindow.h"
 #include "SUIT_ViewManager.h"
 
-#include "SVTK_RenderWindow.h"
 #include "SVTK_ViewWindow.h"
 #include "SVTK_ViewModel.h"
 #include "SPlot2d_Curve.h"
@@ -128,11 +127,11 @@ namespace VISU {
 
   struct TCurrentViewEvent: public SALOME_Event
   {
-    const SalomeApp_Application* myApplication;
+    SalomeApp_Application* myApplication;
     typedef VISU::View_ptr TResult;
     TResult myResult;
 
-    TCurrentViewEvent(const SalomeApp_Application* theApplication):
+    TCurrentViewEvent(SalomeApp_Application* theApplication):
       myApplication(theApplication),
       myResult(VISU::View::_nil())
     {}
@@ -141,16 +140,9 @@ namespace VISU {
     void
     Execute()
     {
-      //if (SUIT_ViewManager *aViewManager = myApplication->activeViewManager()) {
-      //  if (aViewManager->getType() == "VTKViewer") {
-      //    if (SUIT_ViewWindow *aViewWindow = aViewManager->getActiveView()) {
-           VISU::View3D_i* pView =
-             new View3D_i ((SalomeApp_Application*)myApplication);
-           if (pView->Create(0))
-             myResult = pView->_this();
-      //    }
-      //  }
-      //}
+      VISU::View3D_i* aView = new View3D_i (myApplication);
+      if (aView->Create(0))
+       myResult = aView->_this();
     }
   };
 
@@ -284,7 +276,7 @@ namespace VISU {
   {
     SVTK_ViewWindow* vf = GetViewWindow(theViewWindow);
     vf->getRenderer()->ResetCameraClippingRange();
-    vf->getRenderWindow()->getRenderWindow()->Render();
+    vf->getRenderWindow()->Render();
   }
 
   VISU_Actor* UpdateViewer (SUIT_ViewWindow* theStudyFrame, int theDisplaing, Prs3d_i* thePrs)
@@ -300,7 +292,7 @@ namespace VISU {
       if(anActor->IsA("VISU_Actor")){
        anVISUActor = VISU_Actor::SafeDownCast(anActor);
        if (thePrs == anVISUActor->GetPrs3d()) {
-         aResActor = anVISUActor->GetParent();
+         aResActor = anVISUActor;
          if(theDisplaing < eErase)
            aResActor->VisibilityOn();
          else
@@ -461,7 +453,7 @@ namespace VISU {
     while (vtkActor *anActor = anActColl->GetNextActor())
       if (VISU_Actor* anVISUActor = dynamic_cast<VISU_Actor*>(anActor))
        if (thePrs3d == anVISUActor->GetPrs3d())
-         return anVISUActor->GetParent();
+         return anVISUActor;
     return NULL;
   }
 
@@ -693,13 +685,12 @@ namespace VISU {
            for (; !anActor && aVTKActor; aVTKActor = anActColl->GetNextActor()) {
               if (VISU_Actor* anVISUActor = dynamic_cast<VISU_Actor*>(aVTKActor)) {
                if (thePrs == anVISUActor->GetPrs3d()) {
-                 anActor = anVISUActor->GetParent();
+                 anActor = anVISUActor;
                 }
               }
             }
             if (anActor) {
              vw->RemoveActor(anActor);
-             anActor->Delete();
             }
           }
         }
index 5e25633f695eaba4eadde928af0cd301f44c5db2..43224cd7a5f76e20ff75030ad128125699f7b9d0 100644 (file)
@@ -46,7 +46,6 @@
 
 #include "SVTK_ViewWindow.h"
 #include "SVTK_ViewModel.h"
-#include "SVTK_RenderWindow.h"
 
 #include "SPlot2d_ViewModel.h"
 #include "Plot2d_ViewFrame.h"
@@ -1335,7 +1334,7 @@ namespace VISU {
                    const int mode,
                    const double xMin, const double xMax,
                    const double yMin, const double yMax):
-      myView(theView),
+      myView(theView), 
       myMode(mode),
       myXMin(xMin),myXMax(xMax),
       myYMin(yMin),myYMax(yMax)
@@ -1352,7 +1351,7 @@ namespace VISU {
     const double myYMax;
     Plot2d_ViewFrame* myView;
   };
-
+  
   void XYPlot_i::FitXRange(const CORBA::Double xMin,const CORBA::Double xMax)
   {
     const CORBA::Long mode = 1;
@@ -1375,7 +1374,7 @@ namespace VISU {
     const CORBA::Long mode = 0;
     ProcessVoidEvent(new TFitRangeEvent(myView,mode,xMin,xMax,yMin,yMax));
   }
-
+  
   void XYPlot_i::GetFitRanges(double& xMin, double& xMax, double& yMin, double& yMax)
   {
     double y2Min,y2Max;
@@ -1485,14 +1484,17 @@ namespace VISU {
 
   struct TCreateView3dEvent: public SALOME_Event
   {
+    SalomeApp_Application *myApplication;
     View3D_i * myView3D;
     int        myNew;
 
     typedef SUIT_ViewWindow* TResult;
     TResult myResult;
 
-    TCreateView3dEvent (View3D_i * theView3D,
+    TCreateView3dEvent (SalomeApp_Application *theApplication,
+                       View3D_i * theView3D,
                        const int  theNew):
+      myApplication(theApplication),
       myView3D(theView3D),
       myNew(theNew),
       myResult(NULL)
@@ -1502,35 +1504,41 @@ namespace VISU {
     void
     Execute()
     {
-      if (!myView3D->myApplication)
+      if (!myApplication)
        return;
 
-      SUIT_ViewManager * aViewMgr =
-       myView3D->myApplication->getViewManager(SVTK_Viewer::Type(), false);
-
-      if (aViewMgr) {
-       if (myNew) {
-         myResult = aViewMgr->createViewWindow();
-       } else {
-         myResult = aViewMgr->getActiveView();
+      if(myNew){
+       if(SUIT_ViewManager* aViewManager = myApplication->getViewManager(SVTK_Viewer::Type(),false)){
+         myResult = aViewManager->createViewWindow();
+         myView3D->myViewManager = aViewManager;
+       }else{
+         if(SUIT_ViewManager* aViewManager = myApplication->getViewManager(SVTK_Viewer::Type(),true)){
+           myResult = aViewManager->getActiveView();
+           myView3D->myViewManager = aViewManager;
+         }
        }
-      } else {
-       if (myNew) {
-         aViewMgr = myView3D->myApplication->getViewManager(SVTK_Viewer::Type(), true);
-         myResult = aViewMgr->getActiveView();
-       } else {
-         return; // there are no current 3D view
+      }else{
+       if(SUIT_ViewManager* aViewManager = myApplication->activeViewManager()){
+         if(SUIT_ViewWindow* aView = aViewManager->getActiveView()){
+           if(SVTK_ViewWindow* aViewWindow = dynamic_cast<SVTK_ViewWindow*>(aView)){
+             myView3D->myViewManager = aViewManager;
+             myResult = aViewManager->getActiveView();
+           }
+         }
+       }else{
+         if(SUIT_ViewManager* aViewManager = myApplication->getViewManager(SVTK_Viewer::Type(),false)){
+           myView3D->myViewManager = aViewManager;
+           myResult = aViewManager->getActiveView();
+         }
        }
       }
-
-      myView3D->myViewManager = aViewMgr;
     }
   };
 
   Storable* View3D_i::Create (int theNew)
   {
     if (MYDEBUG) MESSAGE("View3D_i::Create");
-    SUIT_ViewWindow* aVW = ProcessEvent(new TCreateView3dEvent(this, theNew));
+    SUIT_ViewWindow* aVW = ProcessEvent(new TCreateView3dEvent(myApplication, this, theNew));
     if (aVW) {
       SetViewWindow(aVW);
       return this;
@@ -1731,8 +1739,9 @@ namespace VISU {
     SetViewUp(theViewWindow,aViewUp);
     SetFocalPoint(theViewWindow,aFocalPnt);
     SetParallelScale(theViewWindow,aParallelScale);
-    SVTK_ViewWindow* aViewWindow = VISU::GetViewWindow(theViewWindow);
-    aViewWindow->SetScale(aScaleFactor);
+    ScaleView(theViewWindow,VISU::View3D::XAxis,aScaleFactor[0]);
+    ScaleView(theViewWindow,VISU::View3D::YAxis,aScaleFactor[1]);
+    ScaleView(theViewWindow,VISU::View3D::ZAxis,aScaleFactor[2]);
   }
 
 
index 30d837a181124299b26f248e6f55bf150af74aed..93d34b31e95746a29069fcde1a1e5ced7a66586c 100644 (file)
@@ -51,7 +51,10 @@ EXPORT_SHAREDPYSCRIPTS = VISU_shared_modules.py
 LIB_CLIENT_IDL =
 
 CPPFLAGS += -ftemplate-depth-32 $(PYTHON_INCLUDES) $(HDF5_INCLUDES) $(QT_INCLUDES) \
-       $(VTK_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome $(BOOST_CPPFLAGS)
+       $(VTK_INCLUDES) -I${KERNEL_ROOT_DIR}/include/salome \
+       -I${MED_ROOT_DIR}/include/salome \
+       $(BOOST_CPPFLAGS)
+
 LDFLAGS += $(PYTHON_LIBS) -lVisuConvertor -lVisuPipeLine
 
 @CONCLUDE@
index 1a499def1fdd5915a4e75281bf0bca59e717905f..ddad586a1833a5bfcdb3421275d6f1b47cf6f82a 100644 (file)
@@ -48,8 +48,9 @@ ScalarMap::ScalarMap(Convertor* theConvertor, const char* theMeshName, int theEn
   : myScalarMap(NULL)
 {
   if(VISU_Convertor* aConvertor = theConvertor->GetImpl()){
-    vtkUnstructuredGrid* aDataSet = 
+    VISU::PIDMapper anIDMapper = 
       aConvertor->GetTimeStampOnMesh(theMeshName,VISU::TEntity(theEntity),theFieldName,theIteration);
+    VISU::TVTKOutput* aDataSet = anIDMapper->GetVTKOutput();
     if(aDataSet){
       myScalarMap = VISU_ScalarMapPL::New();
       myScalarMap->SetInput(aDataSet);
diff --git a/src/VVTK/Makefile.in b/src/VVTK/Makefile.in
new file mode 100755 (executable)
index 0000000..66b4865
--- /dev/null
@@ -0,0 +1,80 @@
+#  File   : Makefile.in
+#  Author : Alexander Solovyov(OCN)
+#  Module : VVTK
+# $Header: 
+
+top_srcdir=@top_srcdir@
+top_builddir=../..
+srcdir=@srcdir@
+VPATH=.:@srcdir@
+
+
+@COMMENCE@
+
+# header files
+EXPORT_HEADERS = \
+       VVTK.h \
+       VVTK_ViewManager.h \
+       VVTK_ViewModel.h \
+       VVTK_InteractorStyle.h \
+       VVTK_PickingDlg.h \
+       VVTK_SegmentationCursorDlg.h \
+       VVTK_PrimitiveBox.h \
+       VVTK_SizeBox.h \
+       VVTK_ViewWindow.h \
+       VVTK_MainWindow.h \
+       VVTK_ImageWriter.h \
+       VVTK_ImageWriterMgr.h \
+       VVTK_RecorderDlg.h \
+       VVTK_Recorder.h
+
+# Libraries targets
+LIB = libVVTK.la
+
+LIB_SRC = \
+       VVTK_ViewManager.cxx \
+       VVTK_ViewModel.cxx \
+       VVTK_InteractorStyle.cxx \
+       VVTK_PickingDlg.cxx \
+       VVTK_SegmentationCursorDlg.cxx \
+       VVTK_PrimitiveBox.cxx \
+       VVTK_SizeBox.cxx \
+       VVTK_ViewWindow.cxx \
+       VVTK_Renderer.cxx \
+       VVTK_MainWindow.cxx \
+       VVTK_ImageWriter.cxx \
+       VVTK_ImageWriterMgr.cxx \
+       VVTK_RecorderDlg.cxx \
+       VVTK_Recorder.cxx
+
+LIB_MOC = \
+       VVTK_ViewWindow.h \
+       VVTK_ViewModel.h \
+       VVTK_ViewManager.h \
+       VVTK_PickingDlg.h \
+       VVTK_SegmentationCursorDlg.h \
+       VVTK_RecorderDlg.h \
+       VVTK_PrimitiveBox.h \
+       VVTK_SizeBox.h \
+       VVTK_MainWindow.h 
+
+CPPFLAGS += \
+       $(QT_INCLUDES) \
+       $(OCC_INCLUDES) \
+       $(VTK_INCLUDES) \
+       $(BOOST_CPPFLAGS) \
+       -I$(KERNEL_ROOT_DIR)/include/salome \
+       -I$(GUI_ROOT_DIR)/include/salome \
+       -I${MED_ROOT_DIR}/include/salome
+
+LDFLAGS += \
+       $(QT_MT_LIBS) \
+       $(OCC_LIBS) \
+       $(VTK_LIBS) \
+       -L$(KERNEL_ROOT_DIR)/lib/salome \
+       -L$(GUI_ROOT_DIR)/lib/salome
+
+LIBS+= -lsuit -lCAM -lSalomeObject -lSVTK -lOpUtil
+
+
+@CONCLUDE@
diff --git a/src/VVTK/VVTK.h b/src/VVTK/VVTK.h
new file mode 100755 (executable)
index 0000000..d6dd064
--- /dev/null
@@ -0,0 +1,13 @@
+#ifdef WNT
+#ifdef SVTK_EXPORTS
+#define VVTK_EXPORT __declspec(dllexport)
+#else
+#define VVTK_EXPORT __declspec(dllimport)
+#endif
+#else
+#define VVTK_EXPORT
+#endif
+
+#if defined WNT
+#pragma warning ( disable: 4251 )
+#endif
diff --git a/src/VVTK/VVTK_ImageWriter.cxx b/src/VVTK/VVTK_ImageWriter.cxx
new file mode 100755 (executable)
index 0000000..9d04759
--- /dev/null
@@ -0,0 +1,112 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop\r
+//\r
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS \r
+// \r
+//  This library is free software; you can redistribute it and/or \r
+//  modify it under the terms of the GNU Lesser General Public \r
+//  License as published by the Free Software Foundation; either \r
+//  version 2.1 of the License. \r
+// \r
+//  This library is distributed in the hope that it will be useful, \r
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of \r
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU \r
+//  Lesser General Public License for more details. \r
+// \r
+//  You should have received a copy of the GNU Lesser General Public \r
+//  License along with this library; if not, write to the Free Software \r
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA \r
+// \r
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org \r
+//\r
+//\r
+//\r
+//  File   :\r
+//  Author :\r
+//  Module :\r
+//  $Header$\r
+\r
+#include "VVTK_ImageWriter.h"\r
+\r
+#include <qsemaphore.h>\r
+\r
+#include <vtkImageData.h>\r
+#include <vtkImageClip.h>\r
+#include <vtkJPEGWriter.h>\r
+#include <vtkSmartPointer.h>\r
+\r
+#ifdef _DEBUG_\r
+static int MYDEBUG = 0;\r
+#else\r
+static int MYDEBUG = 0;\r
+#endif\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+VVTK_ImageWriter\r
+::VVTK_ImageWriter(QSemaphore* theSemaphore,\r
+                  vtkImageData* theImageData,\r
+                  const std::string& theName,\r
+                  int theProgressive,\r
+                  int theQuality):\r
+  mySemaphore(theSemaphore),\r
+  myImageData(theImageData),\r
+  myName(theName),\r
+  myProgressive(theProgressive),\r
+  myQuality(theQuality),\r
+  myConstraint16Flag(true)\r
+{}\r
+\r
+//----------------------------------------------------------------------------\r
+VVTK_ImageWriter\r
+::~VVTK_ImageWriter()\r
+{\r
+  if(MYDEBUG) cout<<"VVTK_ImageWriter::~VVTK_ImageWriter - this = "<<this<<endl;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_ImageWriter\r
+::run()\r
+{\r
+  vtkJPEGWriter *aWriter = vtkJPEGWriter::New();\r
+  vtkImageData *anImageData = myImageData;\r
+  vtkSmartPointer<vtkImageClip> anImageClip;\r
+  //\r
+  if(myConstraint16Flag){ \r
+    int uExtent[6];\r
+    myImageData->GetUpdateExtent(uExtent);\r
+    unsigned int width = uExtent[1] - uExtent[0] + 1;\r
+    unsigned int height = uExtent[3] - uExtent[2] + 1;\r
+    width = (width / 16) * 16;\r
+    height= (height / 16) * 16;\r
+    uExtent[1] = uExtent[0] + width - 1;\r
+    uExtent[3] = uExtent[2] + height - 1;\r
+    //\r
+    anImageClip = vtkImageClip::New();\r
+    anImageClip->Delete();\r
+\r
+    anImageClip->SetInput(myImageData);\r
+    anImageClip->SetOutputWholeExtent(uExtent);\r
+    anImageClip->ClipDataOn();\r
+    anImageData = anImageClip->GetOutput();\r
+  }\r
+  //\r
+  aWriter->WriteToMemoryOff();\r
+  aWriter->SetFileName(myName.c_str());\r
+  aWriter->SetQuality(myQuality);\r
+  aWriter->SetProgressive(myProgressive);\r
+  aWriter->SetInput(anImageData);\r
+  aWriter->Write();\r
+\r
+  aWriter->Delete();\r
+  myImageData->Delete();\r
+\r
+  if(MYDEBUG) cout<<"VVTK_ImageWriter::run "<<\r
+               "- this = "<<this<<\r
+               "; total = "<<mySemaphore->total()<<\r
+               "; available = "<<mySemaphore->available()<<endl;\r
+  *mySemaphore -= 1;\r
+}\r
+\r
diff --git a/src/VVTK/VVTK_ImageWriter.h b/src/VVTK/VVTK_ImageWriter.h
new file mode 100755 (executable)
index 0000000..341fc0d
--- /dev/null
@@ -0,0 +1,64 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop\r
+//\r
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS \r
+// \r
+//  This library is free software; you can redistribute it and/or \r
+//  modify it under the terms of the GNU Lesser General Public \r
+//  License as published by the Free Software Foundation; either \r
+//  version 2.1 of the License. \r
+// \r
+//  This library is distributed in the hope that it will be useful, \r
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of \r
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU \r
+//  Lesser General Public License for more details. \r
+// \r
+//  You should have received a copy of the GNU Lesser General Public \r
+//  License along with this library; if not, write to the Free Software \r
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA \r
+// \r
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org \r
+//\r
+//\r
+//\r
+//  File   :\r
+//  Author :\r
+//  Module :\r
+//  $Header$\r
+\r
+\r
+#ifndef _VVTK_ImageWriter_Header_File_\r
+#define _VVTK_ImageWriter_Header_File_\r
+\r
+#include <qthread.h>\r
+#include <string>\r
+\r
+class vtkImageData;\r
+class QSemaphore;\r
+\r
+\r
+class VVTK_ImageWriter : public QThread \r
+{\r
+public:\r
+  VVTK_ImageWriter(QSemaphore* theSemaphore,\r
+                  vtkImageData* theImageData,\r
+                  const std::string& theName,\r
+                  int theProgressive,\r
+                  int theQuality);\r
+\r
+  ~VVTK_ImageWriter();\r
+\r
+ protected:\r
+  virtual\r
+  void\r
+  run();\r
+  \r
+ protected:\r
+  QSemaphore* mySemaphore;\r
+  vtkImageData *myImageData;\r
+  std::string myName;\r
+  int   myProgressive;\r
+  int   myQuality;\r
+  bool  myConstraint16Flag;\r
+};\r
+#endif\r
diff --git a/src/VVTK/VVTK_ImageWriterMgr.cxx b/src/VVTK/VVTK_ImageWriterMgr.cxx
new file mode 100755 (executable)
index 0000000..bc9d364
--- /dev/null
@@ -0,0 +1,105 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop\r
+//\r
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS \r
+// \r
+//  This library is free software; you can redistribute it and/or \r
+//  modify it under the terms of the GNU Lesser General Public \r
+//  License as published by the Free Software Foundation; either \r
+//  version 2.1 of the License. \r
+// \r
+//  This library is distributed in the hope that it will be useful, \r
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of \r
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU \r
+//  Lesser General Public License for more details. \r
+// \r
+//  You should have received a copy of the GNU Lesser General Public \r
+//  License along with this library; if not, write to the Free Software \r
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA \r
+// \r
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org \r
+//\r
+//\r
+//\r
+//  File   :\r
+//  Author :\r
+//  Module :\r
+//  $Header$\r
+\r
+#include "VVTK_ImageWriterMgr.h"\r
+#include "VVTK_ImageWriter.h"\r
+\r
+#include <vtkImageData.h>\r
+\r
+#include <qsemaphore.h>\r
+\r
+#include <limits>\r
+\r
+\r
+#ifdef _DEBUG_\r
+static int MYDEBUG = 0;\r
+#else\r
+static int MYDEBUG = 0;\r
+#endif\r
+\r
+//----------------------------------------------------------------------------\r
+VVTK_ImageWriterMgr\r
+::VVTK_ImageWriterMgr()\r
+{\r
+  int aMax = std::numeric_limits<int>::max() / 2;\r
+  mySemaphore = new QSemaphore(aMax);\r
+  *mySemaphore += aMax;\r
+  if(MYDEBUG) cout<<"VVTK_ImageWriterMgr::VVTK_ImageWriterMgr "<<\r
+               "- total = "<<mySemaphore->total()<<\r
+               "; available = "<<mySemaphore->available()<<endl;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+VVTK_ImageWriterMgr\r
+::~VVTK_ImageWriterMgr()\r
+{\r
+  Stop();\r
+  delete mySemaphore;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_ImageWriterMgr\r
+::StartImageWriter(vtkImageData *theImageData,\r
+                  const std::string& theName,\r
+                  const int theProgressive,\r
+                  const int theQuality)\r
+{\r
+  VVTK_ImageWriter *anImageWriter = \r
+    new VVTK_ImageWriter(mySemaphore,\r
+                        theImageData,\r
+                        theName,\r
+                        theProgressive,\r
+                        theQuality);\r
+  myThreads.push_back(anImageWriter);\r
+\r
+  anImageWriter->start();\r
+\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_ImageWriterMgr\r
+::Stop()\r
+{\r
+  if(MYDEBUG) cout<<"VVTK_ImageWriterMgr::Stop "<<\r
+               "- total = "<<mySemaphore->total()<<\r
+               "; available = "<<mySemaphore->available()<<endl;\r
+  if(MYDEBUG) cout<<"VVTK_ImageWriterMgr::Stop - *mySemaphore += "<<myThreads.size()<<endl;\r
+  *mySemaphore += myThreads.size();\r
+\r
+  for(size_t anId = 0, anEnd = myThreads.size(); anId < anEnd; anId++){\r
+    VVTK_ImageWriter* anImageWriter = myThreads[anId];\r
+    anImageWriter->wait();\r
+    delete anImageWriter;\r
+  }\r
+  myThreads.clear();\r
+}\r
diff --git a/src/VVTK/VVTK_ImageWriterMgr.h b/src/VVTK/VVTK_ImageWriterMgr.h
new file mode 100755 (executable)
index 0000000..81ca97f
--- /dev/null
@@ -0,0 +1,65 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop\r
+//\r
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS \r
+// \r
+//  This library is free software; you can redistribute it and/or \r
+//  modify it under the terms of the GNU Lesser General Public \r
+//  License as published by the Free Software Foundation; either \r
+//  version 2.1 of the License. \r
+// \r
+//  This library is distributed in the hope that it will be useful, \r
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of \r
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU \r
+//  Lesser General Public License for more details. \r
+// \r
+//  You should have received a copy of the GNU Lesser General Public \r
+//  License along with this library; if not, write to the Free Software \r
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA \r
+// \r
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org \r
+//\r
+//\r
+//\r
+//  File   :\r
+//  Author :\r
+//  Module :\r
+//  $Header$\r
+\r
+#ifndef _VVTK_ImageWriterMgr_Header_File_\r
+#define _VVTK_ImageWriterMgr_Header_File_\r
+\r
+#include <string>\r
+#include <vector>\r
+\r
+class QString;\r
+class vtkImageData;\r
+class VVTK_ImageWriter;\r
+class QSemaphore;\r
+\r
+class VVTK_ImageWriterMgr\r
+{\r
+ public:\r
+  VVTK_ImageWriterMgr();\r
+  ~VVTK_ImageWriterMgr();\r
+  \r
+  void\r
+  StartImageWriter(vtkImageData *theImageData,\r
+                  const std::string& theName,\r
+                  const int theProgressive,\r
+                  const int theQuality);\r
+\r
+  void\r
+  Stop();\r
+\r
+  typedef std::vector<VVTK_ImageWriter*> TWriterThreads;\r
+\r
+ protected:\r
+  TWriterThreads myThreads;\r
+\r
+  QSemaphore* mySemaphore;\r
+};\r
+\r
+\r
+#endif\r
+\r
diff --git a/src/VVTK/VVTK_InteractorStyle.cxx b/src/VVTK/VVTK_InteractorStyle.cxx
new file mode 100644 (file)
index 0000000..dd365c3
--- /dev/null
@@ -0,0 +1,294 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   : VVTK_InteractorStyle.cxx
+//  Author : Christophe ATTANASIO
+//  Module : SALOME
+//  $Header$
+
+
+#include "VVTK_InteractorStyle.h"
+#include "VISU_GaussPtsSettings.h"
+#include "SVTK_Selector.h"
+#include "VISU_Event.h" 
+
+#include <vtkObjectFactory.h>
+#include <vtkRenderWindowInteractor.h>
+#include <vtkCallbackCommand.h>
+#include <vtkCommand.h>
+#include <vtkRenderer.h>
+#include <vtkCamera.h>
+
+
+//----------------------------------------------------------------------------
+vtkStandardNewMacro(VVTK_InteractorStyle);
+//----------------------------------------------------------------------------
+
+VVTK_InteractorStyle
+::VVTK_InteractorStyle():
+  myIsMidButtonDown( false ),
+  myIsLeftButtonDown( false ),
+  mySMDecreaseMagnificationBtn(10),
+  mySMIncreaseMagnificationBtn(11)
+{
+}
+
+//----------------------------------------------------------------------------
+VVTK_InteractorStyle
+::~VVTK_InteractorStyle() 
+{
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::OnLeftButtonDown(int ctrl, int shift, 
+                  int x, int y) 
+{
+  myIsLeftButtonDown = true;
+
+  if (this->HasObserver(vtkCommand::LeftButtonPressEvent)) {
+    this->InvokeEvent(vtkCommand::LeftButtonPressEvent,NULL);
+    return;
+  }
+  this->FindPokedRenderer(x, y);
+  if (this->CurrentRenderer == NULL) {
+    return;
+  }
+  myShiftState = shift;
+  // finishing current viewer operation
+  if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) {
+    onFinishOperation();
+    startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE);
+  }
+  myOtherPoint = myPoint = QPoint(x, y);
+  if (ForcedState != VTK_INTERACTOR_STYLE_CAMERA_NONE) {
+    startOperation(ForcedState);
+  } 
+  else {
+    if (!(ctrl||shift)){
+      if (myIsMidButtonDown){
+       startOperation(VTK_INTERACTOR_STYLE_CAMERA_ZOOM);
+      }
+      else{
+       startOperation(VTK_INTERACTOR_STYLE_CAMERA_ROTATE);
+      }
+    }
+  }
+  return;
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::OnMiddleButtonDown(int ctrl,
+                    int shift, 
+                    int x, int y) 
+{
+  myIsMidButtonDown = true;
+
+  if (this->HasObserver(vtkCommand::MiddleButtonPressEvent))  {
+    this->InvokeEvent(vtkCommand::MiddleButtonPressEvent,NULL);
+    return;
+  }
+  this->FindPokedRenderer(x, y);
+  if (this->CurrentRenderer == NULL)    {
+    return;
+  }
+  myShiftState = shift;
+  // finishing current viewer operation
+  if (State != VTK_INTERACTOR_STYLE_CAMERA_NONE) {
+    onFinishOperation();
+    startOperation(VTK_INTERACTOR_STYLE_CAMERA_NONE);
+  }
+  myOtherPoint = myPoint = QPoint(x, y);
+  if (ForcedState != VTK_INTERACTOR_STYLE_CAMERA_NONE) {
+    startOperation(ForcedState);
+  }
+  else {
+    if (!(ctrl||shift)){
+      if ( myIsLeftButtonDown ){
+       startOperation(VTK_INTERACTOR_STYLE_CAMERA_ZOOM);
+      }
+      else{
+       startOperation(VTK_INTERACTOR_STYLE_CAMERA_PAN);
+      }
+    }
+  }
+}
+
+//----------------------------------------------------------------------------
+void 
+VVTK_InteractorStyle
+::OnLeftButtonUp(int ctrl, int shift, int x, int y)
+{
+  myIsLeftButtonDown = false;
+  SVTK_InteractorStyle::OnLeftButtonUp( ctrl, shift, x, y );
+
+  if ( myIsMidButtonDown )
+    OnMiddleButtonDown( ctrl, shift, x, y );
+}
+
+//----------------------------------------------------------------------------
+void  
+VVTK_InteractorStyle
+::OnMiddleButtonUp(int ctrl, int shift, int x, int y)
+{
+  myIsMidButtonDown = false;
+  SVTK_InteractorStyle::OnMiddleButtonUp( ctrl, shift, x, y );
+
+  if ( myIsLeftButtonDown )
+    OnLeftButtonDown( ctrl, shift, x, y );
+}
+//----------------------------------------------------------------------------
+void  VVTK_InteractorStyle::onFinishOperation()
+{
+  Superclass::onFinishOperation();
+}
+
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::SetInteractor( vtkRenderWindowInteractor* theInteractor )
+{
+  // register EventCallbackCommand as observer of standard events (keypress, mousemove, etc)
+  Superclass::SetInteractor( theInteractor );
+  if(theInteractor){ 
+    theInteractor->AddObserver( VISU::SetSMDecreaseMagnificationEvent, EventCallbackCommand, Priority );
+    theInteractor->AddObserver( VISU::SetSMIncreaseMagnificationEvent, EventCallbackCommand, Priority );
+  }
+}
+
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::ProcessEvents( vtkObject* object,
+                unsigned long event,
+                void* clientData, 
+                void* callData )
+{
+  if ( clientData ) {
+    vtkObject* anObject = reinterpret_cast<vtkObject*>( clientData );
+    VVTK_InteractorStyle* self = dynamic_cast<VVTK_InteractorStyle*>( anObject );
+    if( self ){
+      switch ( event ) {
+      case VISU::SetSMDecreaseMagnificationEvent:
+       self->mySMDecreaseMagnificationBtn = *((int*)callData);
+       return;
+      case VISU::SetSMIncreaseMagnificationEvent:
+       self->mySMIncreaseMagnificationBtn = *((int*)callData);
+       return;
+      }
+    }
+  }
+
+  Superclass::ProcessEvents( object, event, clientData, callData );
+}
+
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::onSpaceMouseButton( int button )
+{
+  if( mySMDecreaseMagnificationBtn == button )    
+    DecreaseGaussPointMagnification();
+  if( mySMIncreaseMagnificationBtn == button )    
+    IncreaseGaussPointMagnification();
+
+  Superclass::onSpaceMouseButton( button );
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::DecreaseGaussPointMagnification()
+{
+  Interactor->InvokeEvent(VISU::SetSMDecreaseMagnificationEvent,NULL);
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_InteractorStyle
+::IncreaseGaussPointMagnification()
+{
+  Interactor->InvokeEvent(VISU::SetSMIncreaseMagnificationEvent,NULL);
+}
+//============================================================================
+//
+//  Controllers
+//
+vtkStandardNewMacro(VVTK_ControllerIncrement);
+//----------------------------------------------------------------------------
+VVTK_ControllerIncrement::VVTK_ControllerIncrement()
+{
+  myIncrement=10;
+}
+//----------------------------------------------------------------------------
+VVTK_ControllerIncrement::~VVTK_ControllerIncrement()
+{
+}
+//----------------------------------------------------------------------------
+int VVTK_ControllerIncrement::Increase()
+{
+  myIncrement*=2;
+  return myIncrement;
+}
+//----------------------------------------------------------------------------
+int VVTK_ControllerIncrement::Decrease()
+{
+  myIncrement/=2;
+  if (!myIncrement){
+    myIncrement=1;
+  }
+  return myIncrement;
+}
+//
+vtkStandardNewMacro(VVTK_ControllerOnKeyDown);
+//----------------------------------------------------------------------------
+VVTK_ControllerOnKeyDown::VVTK_ControllerOnKeyDown()
+{
+}
+//----------------------------------------------------------------------------
+VVTK_ControllerOnKeyDown::~VVTK_ControllerOnKeyDown()
+{
+}
+//----------------------------------------------------------------------------
+bool VVTK_ControllerOnKeyDown::OnKeyDown(vtkInteractorStyle* theIS)
+{
+  SVTK_InteractorStyle *pIS=dynamic_cast<SVTK_InteractorStyle *>(theIS);
+  if (pIS){
+    if(pIS->GetSelector()->SelectionMode()==GaussPointSelection){
+      char key = pIS->GetInteractor()->GetKeyCode();
+      //
+      if (key == 'S') {
+       pIS->ActionPicking();
+       return false;
+      }
+    }
+  }
+  return Superclass::OnKeyDown(theIS);
+}
diff --git a/src/VVTK/VVTK_InteractorStyle.h b/src/VVTK/VVTK_InteractorStyle.h
new file mode 100644 (file)
index 0000000..9e33bfa
--- /dev/null
@@ -0,0 +1,149 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   : VVTK_InteractorStyle.h
+//  Author : Christophe ATTANASIO
+//  Module : SALOME
+//  $Header$
+
+#ifndef __VVTK_InteractorStyle_h
+#define __VVTK_InteractorStyle_h
+
+
+#include "VVTK.h"
+
+#include "SVTK_InteractorStyle.h"
+//
+//-------------------------------------------
+//! Control the value of increment in new style of interaction.
+/*!
+  This class controls of value of increment,
+  for pan/rotate/zoom operations in new style 
+  of interaction
+*/
+class VVTK_ControllerIncrement : public SVTK_ControllerIncrement {
+ public:
+  vtkTypeMacro(VVTK_ControllerIncrement,SVTK_ControllerIncrement);
+  static VVTK_ControllerIncrement* New();
+  
+  //! Increace the increment value by multiplying on 2
+  virtual int Increase();
+
+  //! Decreace the increment value by division on 2
+  virtual int Decrease();
+  
+ protected:
+  VVTK_ControllerIncrement();
+  virtual ~VVTK_ControllerIncrement();
+  //
+ private:
+  VVTK_ControllerIncrement(const VVTK_ControllerIncrement&);  //Not implemented
+  void operator=(const VVTK_ControllerIncrement&);  //Not implemented
+};
+//
+//-------------------------------------------
+//! Control the behaviour of KeyDown event in new style of interaction.
+/*!
+  This class controls of behaviour of of KeyDown event
+  in new style of interaction.
+*/
+class VVTK_ControllerOnKeyDown : public SVTK_ControllerOnKeyDown{
+ public:
+  vtkTypeMacro(VVTK_ControllerOnKeyDown, SVTK_ControllerOnKeyDown);
+  static VVTK_ControllerOnKeyDown* New();
+
+  //! Provides the action on event 
+  virtual bool OnKeyDown(vtkInteractorStyle* );
+
+ protected:
+  VVTK_ControllerOnKeyDown();
+  virtual ~VVTK_ControllerOnKeyDown();
+  
+ private:
+  VVTK_ControllerOnKeyDown(const VVTK_ControllerOnKeyDown&);//Not implemented
+  void operator=(const VVTK_ControllerOnKeyDown&);          //Not implemented
+};
+
+
+//! Introduce new style of interaction (keyboard free)
+class VVTK_EXPORT VVTK_InteractorStyle : public SVTK_InteractorStyle
+{
+ public:
+  static VVTK_InteractorStyle *New();
+  vtkTypeMacro(VVTK_InteractorStyle,SVTK_InteractorStyle);
+
+  //! Redefined from SVTK_InteractorStyle::SetInteractor in order to add an observer (callback) for custorm event (space mouse event)
+  virtual
+  void
+  SetInteractor( vtkRenderWindowInteractor* );
+  
+ protected:
+  VVTK_InteractorStyle();
+  ~VVTK_InteractorStyle();
+
+  VVTK_InteractorStyle(const VVTK_InteractorStyle&); // Not implemented
+  void operator=(const VVTK_InteractorStyle&); // Not implemented
+
+  // Generic event bindings must be overridden in subclasses
+
+  //! Redefine SVTK_InteractorStyle::OnLeftButtonDown
+  virtual void OnLeftButtonDown(int ctrl, int shift, int x, int y);
+
+  //! Redefine SVTK_InteractorStyle::OnMiddleButtonDown
+  virtual void OnMiddleButtonDown(int ctrl, int shift, int x, int y);
+
+  //! Redefine SVTK_InteractorStyle::OnLeftButtonUp
+  virtual void OnLeftButtonUp(int ctrl, int shift, int x, int y);
+
+  //! Redefine SVTK_InteractorStyle::OnMiddleButtonUp
+  virtual void OnMiddleButtonUp(int ctrl, int shift, int x, int y);
+
+  //! Redefine SVTK_InteractorStyle::onFinishOperation
+  virtual void onFinishOperation();
+
+  //! Main process VTK event method
+  static 
+  void
+  ProcessEvents(vtkObject* object, 
+               unsigned long event,
+               void* clientData, 
+               void* callData );
+
+  //! Redefine SVTK_InteractorStyle::onSpaceMouseButton
+  virtual void onSpaceMouseButton( int button );
+  
+  //! To decrease magnification of the Gauss Points
+  void DecreaseGaussPointMagnification();
+
+  //! To increase magnification of the Gauss Points
+  void IncreaseGaussPointMagnification();
+
+  //! SpaceMouse short cuts
+  int mySMDecreaseMagnificationBtn;
+  int mySMIncreaseMagnificationBtn;
+  
+  bool myIsMidButtonDown;
+  bool myIsLeftButtonDown;
+};
+
+#endif
diff --git a/src/VVTK/VVTK_MainWindow.cxx b/src/VVTK/VVTK_MainWindow.cxx
new file mode 100644 (file)
index 0000000..de0ebfd
--- /dev/null
@@ -0,0 +1,537 @@
+//  SALOME OBJECT : implementation of interactive object visualization for OCC and VTK viewers
+//
+//  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   : 
+//  Author : 
+//  Module : 
+//  $Header$
+
+#include "VVTK_MainWindow.h"
+#include "VVTK_InteractorStyle.h"
+#include "VVTK_Recorder.h"
+#include "VVTK_RecorderDlg.h"
+#include "VISU_WidgetCtrl.hxx"
+#include "VISU_GaussPtsAct.h"
+#include "VISU_Event.h" 
+
+#include "SVTK_RenderWindowInteractor.h"
+#include "VVTK_Renderer.h"
+#include "VVTK_PickingDlg.h"
+#include "VVTK_SegmentationCursorDlg.h"
+
+#include "SUIT_Application.h"
+#include "SUIT_Session.h"
+#include "SUIT_Tools.h"
+#include "SUIT_ViewWindow.h"
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_ToolButton.h"
+#include "SUIT_Accel.h"
+#include "QtxAction.h"
+
+#include <qimage.h>
+#include <qtoolbar.h>
+#include <qsplitter.h>
+#include <qfiledialog.h>
+#include <qapplication.h>
+
+//----------------------------------------------------------------------------
+VVTK_MainWindow
+::VVTK_MainWindow(QWidget* theParent, 
+                 const char* theName,
+                 SUIT_ResourceMgr* theResourceMgr,
+                 SUIT_ViewWindow* theViewWindow):
+  SVTK_MainWindow(theParent,theName,theResourceMgr,theViewWindow),
+  myInteractorStyle(VVTK_InteractorStyle::New()),
+  myControllerIncrement(VVTK_ControllerIncrement::New()),
+  myControllerOnKeyDown(VVTK_ControllerOnKeyDown::New())
+{
+  myInteractorStyle->SetControllerIncrement(myControllerIncrement.GetPointer());
+  myControllerIncrement->Delete();
+
+  myInteractorStyle->SetControllerOnKeyDown(myControllerOnKeyDown.GetPointer());
+  myControllerOnKeyDown->Delete();
+
+  myInteractorStyle->Delete();
+
+  moveDockWindow(myToolBar,Qt::DockLeft);
+  myActionsMap[NonIsometric]->removeFrom(myToolBar);
+
+  // Recording
+  myRecordingToolBar = new QToolBar(this);
+  myRecordingToolBar->setCloseMode(QDockWindow::Undocked);
+  myRecordingToolBar->setLabel(tr("LBL_TOOLBAR_LABEL"));
+  moveDockWindow(myRecordingToolBar,Qt::DockLeft);
+
+  myStartAction = new QtxAction(tr("MNU_VVTK_RECORDING_START"), 
+                               theResourceMgr->loadPixmap( "VISU", tr( "ICON_VVTK_RECORDING_START" ) ),
+                               tr( "MNU_VVTK_RECORDING_START" ), 0, this);
+  myStartAction->setStatusTip(tr("DSC_VVTK_RECORDING_START"));
+  myStartAction->addTo( myRecordingToolBar );
+  connect( myStartAction, SIGNAL( activated() ), this, SLOT( OnStartRecording() ) );
+
+  myPlayAction = new QtxAction(tr("MNU_VVTK_RECORDING_PLAY"), 
+                              theResourceMgr->loadPixmap( "VISU", tr( "ICON_VVTK_RECORDING_PLAY" ) ),
+                              tr( "MNU_VVTK_RECORDING_PLAY" ), 0, this);
+  myPlayAction->setStatusTip(tr("DSC_VVTK_RECORDING_PLAY"));
+  myPlayAction->setEnabled( false );
+  myPlayAction->addTo( myRecordingToolBar );
+  connect( myPlayAction, SIGNAL( activated() ), this, SLOT( OnPlayRecording() ) );
+
+  myPauseAction = new QtxAction(tr("MNU_VVTK_RECORDING_PAUSE"), 
+                               theResourceMgr->loadPixmap( "VISU", tr( "ICON_VVTK_RECORDING_PAUSE" ) ),
+                               tr( "MNU_VVTK_RECORDING_PAUSE" ), 0, this);
+  myPauseAction->setStatusTip(tr("DSC_VVTK_RECORDING_PAUSE"));
+  myPauseAction->setEnabled( false );
+  myPauseAction->addTo( myRecordingToolBar );
+  connect( myPauseAction, SIGNAL( activated() ), this, SLOT( OnPauseRecording() ) );
+
+  myStopAction = new QtxAction(tr("MNU_VVTK_RECORDING_STOP"), 
+                              theResourceMgr->loadPixmap( "VISU", tr( "ICON_VVTK_RECORDING_STOP" ) ),
+                              tr( "MNU_VVTK_RECORDING_STOP" ), 0, this);
+  myStopAction->setStatusTip(tr("DSC_VVTK_RECORDING_STOP"));
+  myStopAction->setEnabled( false );
+  myStopAction->addTo( myRecordingToolBar );
+  connect( myStopAction, SIGNAL( activated() ), this, SLOT( OnStopRecording() ) );
+  
+  myRecorder = VVTK_Recorder::New();
+  myRecorder->CheckExistAVIMaker();
+  if(myRecorder->ErrorStatus())
+    myRecordingToolBar->setEnabled(false);
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_MainWindow
+::Initialize(SVTK_RenderWindowInteractor* theInteractor)
+{ 
+  vtkInteractorStyle* aStyle = theInteractor->GetInteractorStyle();
+  if(SVTK_InteractorStyle *anInteractorStyle = dynamic_cast<SVTK_InteractorStyle*>(aStyle)){
+    anInteractorStyle->SetControllerIncrement(myControllerIncrement.GetPointer());
+    anInteractorStyle->SetControllerOnKeyDown(myControllerOnKeyDown.GetPointer());
+  }
+
+  myRecorder->SetNbFPS(17.3);
+  myRecorder->SetQuality(100);
+  myRecorder->SetProgressiveMode(true);
+  myRecorder->SetUseSkippedFrames(true);
+  myRecorder->SetRenderWindow(theInteractor->getRenderWindow());
+
+  disconnect( myActionsMap[ DumpId ], SIGNAL( activated() ),
+             myViewWindow, SLOT( onDumpView() ) );
+
+  connect( myActionsMap[ DumpId ], SIGNAL( activated() ),
+          this, SLOT( onDumpView() ) );
+
+  SVTK_MainWindow::Initialize(theInteractor);
+}
+
+VVTK_MainWindow::~VVTK_MainWindow()
+{
+  if(myRecorder)
+    myRecorder->Delete();
+}
+
+//----------------------------------------------------------------------------
+void VVTK_MainWindow::onDumpView()
+{
+  SUIT_Application* app = SUIT_Session::session()->activeApplication();
+  QString fileName = app->getFileName( false, QString::null,
+                                      tr( "TLT_IMAGE_FILES" ),
+                                      tr( "TLT_DUMP_VIEW" ), 0 );
+  if( fileName.isEmpty() )
+    return;
+
+  QImage img = dumpView();
+  if( img.isNull() )
+    return; 
+
+  QString fmt = SUIT_Tools::extension( fileName ).upper();
+  if( fmt.isEmpty() )
+    fmt = QString( "BMP" ); // default format
+  else if( fmt == "JPG" )
+    fmt = "JPEG";
+
+  QApplication::setOverrideCursor( Qt::waitCursor );
+  bool res = img.save( fileName, fmt.latin1() );
+  QApplication::restoreOverrideCursor();
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_MainWindow
+::OnInteractorStyleSwitch(bool theIsGaussStyleOn)
+{
+  if ( theIsGaussStyleOn )
+    this->PushInteractorStyle(myInteractorStyle.GetPointer());
+  else
+    this->PopInteractorStyle();
+}
+
+//----------------------------------------------------------------------------
+void VVTK_MainWindow::OnStartRecording()
+{
+  VVTK_RecorderDlg* aRecorderDlg = new VVTK_RecorderDlg( this, myRecorder );
+
+  if( !aRecorderDlg->exec() )
+    return;
+
+  myStartAction->setEnabled( false );
+  myPlayAction->setEnabled( false );
+  myPauseAction->setEnabled( true );
+  myStopAction->setEnabled( true );
+
+  myRecorder->Record();
+}
+
+//----------------------------------------------------------------------------
+void VVTK_MainWindow::OnPlayRecording()
+{
+  myStartAction->setEnabled( false );
+  myPlayAction->setEnabled( false );
+  myPauseAction->setEnabled( true );
+  myStopAction->setEnabled( true );
+  //
+  myRecorder->Pause();
+}
+
+//----------------------------------------------------------------------------
+void VVTK_MainWindow::OnPauseRecording()
+{
+  myStartAction->setEnabled( false );
+  myPlayAction->setEnabled( true );
+  myPauseAction->setEnabled( false );
+  myStopAction->setEnabled( true );
+  //
+  myRecorder->Pause();
+}
+
+//----------------------------------------------------------------------------
+void VVTK_MainWindow::OnStopRecording()
+{
+  myStartAction->setEnabled( true );
+  myPlayAction->setEnabled( false );
+  myPauseAction->setEnabled( false );
+  myStopAction->setEnabled( false );
+  //
+  myRecorder->Stop();
+}
+
+//----------------------------------------------------------------------------
+int 
+convertAction( const int accelAction );
+
+void 
+VVTK_MainWindow
+::action( const int accelAction  )
+{
+  if ( accelAction == SUIT_Accel::ZoomFit )
+    onFitAll();
+  else {
+    int anEvent = convertAction( accelAction );
+    InvokeEvent( anEvent, 0 );
+  }
+}
+
+//----------------------------------------------------------------------------
+VVTK_MainWindow1
+::VVTK_MainWindow1(QSplitter* theParent, 
+                 const char* theName,
+                 SUIT_ResourceMgr* theResourceMgr,
+                 SUIT_ViewWindow* theViewWindow):
+  VVTK_MainWindow(theParent,theName,theResourceMgr,theViewWindow),
+  myStyleSwitchAction(NULL),
+  mySplitter(theParent),
+  myPickingDlg(NULL)
+{
+  myPtsToolBar = new QToolBar(this);
+  myPtsToolBar->setCloseMode(QDockWindow::Undocked);
+  myPtsToolBar->setLabel(tr("LBL_TOOLBAR_LABEL"));
+  moveDockWindow(myPtsToolBar,Qt::DockLeft);
+
+  QPixmap aPixmap;
+  QtxAction* anAction;
+
+  aPixmap = theResourceMgr->loadPixmap( "VISU", tr( "ICON_VVTK_INTERACTOR_STYLE_SWITCH" ) );
+  anAction = new QtxAction(tr("MNU_VVTK_INTERACTOR_STYLE_SWITCH"), 
+                          aPixmap,
+                          tr( "MNU_VVTK_INTERACTOR_STYLE_SWITCH" ), 
+                          0, 
+                          this, 
+                          "VVTK/SVTK StyleSwitch", 
+                          true);
+  anAction->setToggleAction(true);
+  anAction->setStatusTip(tr("DSC_VVTK_INTERACTOR_STYLE_SWITCH"));
+
+  anAction->addTo( myPtsToolBar );
+  myStyleSwitchAction = anAction;
+
+  if( theResourceMgr->integerValue( "VISU", "mouse_behaviour", true ) == 1 )
+    myStyleSwitchAction->toggle();
+
+  aPixmap = theResourceMgr->loadPixmap("VISU",tr("ICON_VVTK_SELECTION_MODE_SWITCH"));
+  myPickingAction = new QtxAction(tr("MNU_VVTK_SELECTION_MODE_SWITCH"), 
+                                 aPixmap,
+                                 tr( "MNU_VVTK_SELECTION_MODE_SWITCH" ), 
+                                 0, 
+                                 this, 
+                                 "VVTK/SVTK SelectionSwitch", 
+                                 true);
+  myPickingAction->setToggleAction(true);
+  myPickingAction->setStatusTip(tr("DSC_VVTK_SELECTION_MODE_SWITCH"));
+  myPickingAction->addTo( myPtsToolBar );
+  connect(myPickingAction, SIGNAL(toggled(bool)), this, SLOT(OnSelectionModeSwitch(bool)));
+
+  myPickingDlg = new VVTK_PickingDlg( this, "PickingDlg" );
+  myPickingDlg->SetAction( myPickingAction );
+
+  // Plane/Sphere Segmentation
+  aPixmap = theResourceMgr->loadPixmap("VISU",tr("ICON_VVTK_PLANE_SEGMENTATION_SWITCH"));
+  myPlaneSegmentationAction = new QtxAction(tr("MNU_VVTK_PLANE_SEGMENTATION_SWITCH"), 
+                                           aPixmap,
+                                           tr( "MNU_VVTK_PLANE_SEGMENTATION_SWITCH" ), 
+                                           0, 
+                                           this, 
+                                           "VVTK/SVTK PlaneSegmentationSwitch", 
+                                           true);
+  myPlaneSegmentationAction->setToggleAction(true);
+  myPlaneSegmentationAction->setStatusTip(tr("DSC_VVTK_PLANE_SEGMENTATION_SWITCH"));
+  //myPlaneSegmentationAction->addTo( myPtsToolBar );
+  connect( myPlaneSegmentationAction, SIGNAL( activated() ), this, SLOT( OnSegmentationSwitch() ) );
+
+  aPixmap = theResourceMgr->loadPixmap("VISU",tr("ICON_VVTK_SPHERE_SEGMENTATION_SWITCH"));
+  mySphereSegmentationAction = new QtxAction(tr("MNU_VVTK_SPHERE_SEGMENTATION_SWITCH"), 
+                                            aPixmap,
+                                            tr( "MNU_VVTK_SPHERE_SEGMENTATION_SWITCH" ), 
+                                            0, 
+                                            this, 
+                                            "VVTK/SVTK SphereSegmentationSwitch", 
+                                            true);
+  mySphereSegmentationAction->setToggleAction(true);
+  mySphereSegmentationAction->setStatusTip(tr("DSC_VVTK_SPHERE_SEGMENTATION_SWITCH"));
+  //mySphereSegmentationAction->addTo( myPtsToolBar );
+  connect( mySphereSegmentationAction, SIGNAL( activated() ), this, SLOT( OnSegmentationSwitch() ) );
+
+  mySegmentationCursorDlg = new VVTK_SegmentationCursorDlg( this, "SegmentationCursorDlg" );
+  mySegmentationCursorDlg->SetPlaneAction( myPlaneSegmentationAction );
+  mySegmentationCursorDlg->SetSphereAction( mySphereSegmentationAction );
+  connect( mySegmentationCursorDlg, SIGNAL( scgClose() ), this, SLOT( OnSegmentationSwitch() ) );
+
+  SUIT_ToolButton* aSegmentationButton = new SUIT_ToolButton( myPtsToolBar );
+  aSegmentationButton->AddAction( myPlaneSegmentationAction );
+  aSegmentationButton->AddAction( mySphereSegmentationAction );
+}
+
+void
+VVTK_MainWindow1
+::Initialize(SVTK_RenderWindowInteractor* theInteractor,
+            VVTK_Renderer1* theRenderer)
+{
+  myRenderer = theRenderer;
+  VVTK_MainWindow::Initialize(theInteractor);
+
+  if( myStyleSwitchAction->isOn() )
+    PushInteractorStyle(myInteractorStyle.GetPointer());
+  connect(myStyleSwitchAction, SIGNAL(toggled(bool)), this, SLOT(OnInteractorStyleSwitch(bool)));
+
+  mySegmentationCursorDlg->SetWidgetCtrl( theRenderer->GetWidgetCtrl() );
+  mySegmentationCursorDlg->SetInteractor( theInteractor );
+
+  connect( theInteractor, SIGNAL( selectionChanged() ), SLOT( OnSelectionChanged() ) );
+  myPickingDlg->SetInteractor( theInteractor );
+}
+
+VVTK_MainWindow1
+::~VVTK_MainWindow1()
+{}
+
+//----------------------------------------------------------------------------
+VVTK_MainWindow2*
+VVTK_MainWindow1
+::CreateMainWindow2(QWidget* theParent, 
+                   const char* theName,
+                   SUIT_ResourceMgr* theResourceMgr,
+                   SUIT_ViewWindow* theViewWindow)
+{
+  myMainWindow2 = new VVTK_MainWindow2(theParent,
+                                      theName,
+                                      theResourceMgr,
+                                      theViewWindow,
+                                      myStyleSwitchAction);
+  return myMainWindow2;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VVTK_MainWindow1
+::OnSelectionModeSwitch(bool theIsSelectionOn)
+{
+  Selection_Mode aSelectionMode = SelectionMode();
+  if(theIsSelectionOn && aSelectionMode != GaussPointSelection)
+    SetSelectionMode(GaussPointSelection);
+  else if(!theIsSelectionOn && aSelectionMode == GaussPointSelection)
+    SetSelectionMode(ActorSelection);
+
+  if( theIsSelectionOn )
+  {
+    myPickingDlg->Update();
+    myPickingDlg->show();
+  }
+  else
+    myPickingDlg->hide();
+}
+
+void
+VVTK_MainWindow1
+::OnSelectionChanged()
+{
+  Selection_Mode aSelectionMode = SelectionMode();
+  if(myPickingAction->isOn() && aSelectionMode != GaussPointSelection)
+    myPickingAction->setOn(false);
+  else if(!myPickingAction->isOn() && aSelectionMode == GaussPointSelection)
+    myPickingAction->setOn(true);
+}
+
+
+//----------------------------------------------------------------------------
+VISU_WidgetCtrl* 
+VVTK_MainWindow1
+::GetWidgetCtrl()
+{
+  return myRenderer->GetWidgetCtrl();
+}
+
+VISU_InsideCursorSettings* 
+VVTK_MainWindow1
+::GetInsideCursorSettings()
+{
+  return mySegmentationCursorDlg->GetInsideCursorSettings();
+}
+
+VISU_OutsideCursorSettings* 
+VVTK_MainWindow1
+::GetOutsideCursorSettings()
+{
+  return mySegmentationCursorDlg->GetOutsideCursorSettings();
+}
+
+VISU_PickingSettings* 
+VVTK_MainWindow1
+::GetPickingSettings()
+{
+  return myPickingDlg->GetPickingSettings();
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_MainWindow1
+::SetPlanesSegementation(bool theIsOn)
+{
+  myPlaneSegmentationAction->setOn( theIsOn );
+  OnSegmentationSwitch(myPlaneSegmentationAction);
+}
+
+void
+VVTK_MainWindow1
+::SetSphereSegementation(bool theIsOn)
+{
+  mySphereSegmentationAction->setOn( theIsOn );
+  OnSegmentationSwitch(mySphereSegmentationAction);
+}
+
+void
+VVTK_MainWindow1
+::OnSegmentationSwitch(QtxAction* theAction)
+{
+  bool anIsSegmentationOn = myPlaneSegmentationAction->isOn() ||
+    mySphereSegmentationAction->isOn();
+
+  if( !theAction )
+    return;
+  
+  VISU_WidgetCtrl *aWidgetCtrl = myRenderer->GetWidgetCtrl();
+  
+  if (anIsSegmentationOn) {
+    int anIndex = (theAction == myPlaneSegmentationAction) ? 0 : 1;
+    aWidgetCtrl->SetActiveIndex(anIndex);
+  }
+  aWidgetCtrl->SetEnabled(anIsSegmentationOn);
+
+  if( theAction == myPlaneSegmentationAction && anIsSegmentationOn )
+    mySphereSegmentationAction->setOn( false );
+  else if( theAction == mySphereSegmentationAction && anIsSegmentationOn )
+    myPlaneSegmentationAction->setOn( false );
+
+  if( anIsSegmentationOn )
+  {
+    myMainWindow2->show();
+    mySegmentationCursorDlg->SetIsPlaneSegmentation( theAction == myPlaneSegmentationAction );
+    mySegmentationCursorDlg->UpdateSegmentation();
+    mySegmentationCursorDlg->UpdateInsideGaussPoints();
+    mySegmentationCursorDlg->UpdateOutsideGaussPoints();
+    mySegmentationCursorDlg->show();
+  }
+  else
+  {
+    myMainWindow2->hide();
+    mySegmentationCursorDlg->hide();
+  }
+}
+
+void
+VVTK_MainWindow1
+::OnSegmentationSwitch()
+{
+  QtxAction* anAction = ( QtxAction* )sender();
+  OnSegmentationSwitch(anAction);
+}
+
+
+//----------------------------------------------------------------------------
+VVTK_MainWindow2
+::VVTK_MainWindow2(QWidget* theParent, 
+                  const char* theName,
+                  SUIT_ResourceMgr* theResourceMgr,
+                  SUIT_ViewWindow* theViewWindow,
+                  QtxAction* theStyleSwitchAction):
+  VVTK_MainWindow(theParent,theName,theResourceMgr,theViewWindow),
+  myStyleSwitchAction(theStyleSwitchAction)
+{}
+
+VVTK_MainWindow2
+::~VVTK_MainWindow2()
+{}
+
+
+//----------------------------------------------------------------------------
+void
+VVTK_MainWindow2
+::Initialize(SVTK_RenderWindowInteractor* theInteractor)
+{
+  VVTK_MainWindow::Initialize(theInteractor);
+
+  if( myStyleSwitchAction->isOn() )
+    PushInteractorStyle(myInteractorStyle.GetPointer());
+  connect(myStyleSwitchAction, SIGNAL(toggled(bool)), this, SLOT(OnInteractorStyleSwitch(bool)));
+}
+
diff --git a/src/VVTK/VVTK_MainWindow.h b/src/VVTK/VVTK_MainWindow.h
new file mode 100644 (file)
index 0000000..1d0b0bc
--- /dev/null
@@ -0,0 +1,222 @@
+#ifndef VVTK_MAINWINDOW_H
+#define VVTK_MAINWINDOW_H
+
+#ifdef WIN32
+#pragma warning( disable:4251 )
+#endif
+
+#include "VVTK.h"
+#include "SVTK_MainWindow.h"
+
+class QSplitter;
+
+class VISU_WidgetCtrl;
+class VVTK_SegmentationCursorDlg;
+class VISU_InsideCursorSettings;
+class VISU_OutsideCursorSettings;
+class VISU_PickingSettings;
+class VVTK_InteractorStyle;
+class VVTK_ControllerIncrement;
+class VVTK_ControllerOnKeyDown;
+class VVTK_PickingDlg;
+class VVTK_MainWindow2;
+class VVTK_Renderer1;
+class VVTK_Renderer2;
+class VVTK_Recorder;
+
+//----------------------------------------------------------------------------
+//! Customize SVTK_MainWindow to provide VVTK functionality
+class VVTK_EXPORT VVTK_MainWindow: public SVTK_MainWindow
+{
+  Q_OBJECT;
+
+public:
+  //! Construct instance of the class
+  VVTK_MainWindow(QWidget* theParent, 
+                 const char* theName,
+                 SUIT_ResourceMgr* theResourceMgr,
+                 SUIT_ViewWindow* theViewWindow);
+
+  //! Reimplement SVTK_MainWindow::Initialize
+  virtual
+  void
+  Initialize(SVTK_RenderWindowInteractor* theInteractor);
+
+  //! Destroy instance of the class
+  virtual
+  ~VVTK_MainWindow();
+
+ public slots:
+
+  virtual
+  void
+  onDumpView();
+
+   //! To change active interactor style at run-time
+  virtual
+  void
+  OnInteractorStyleSwitch(bool theIsGaussStyleOn); 
+
+  virtual 
+  void
+  action( const int );
+
+  virtual
+  void
+  OnStartRecording();
+
+  virtual
+  void
+  OnPlayRecording();
+
+  virtual
+  void
+  OnPauseRecording();
+
+  virtual
+  void
+  OnStopRecording();
+
+ protected:
+  vtkSmartPointer<VVTK_InteractorStyle> myInteractorStyle;
+  vtkSmartPointer<VVTK_ControllerIncrement> myControllerIncrement;
+  vtkSmartPointer<VVTK_ControllerOnKeyDown> myControllerOnKeyDown; 
+
+  QToolBar* myRecordingToolBar;
+  QtxAction* myStartAction;
+  QtxAction* myPlayAction;
+  QtxAction* myPauseAction;
+  QtxAction* myStopAction;
+
+  VVTK_Recorder *myRecorder;
+};
+
+
+//----------------------------------------------------------------------------
+//! Extend VVTK_MainWindow to implement functionality for base view
+class VVTK_EXPORT VVTK_MainWindow1: public VVTK_MainWindow
+{
+  Q_OBJECT;
+
+public:
+  //! Construct instance of the class
+  VVTK_MainWindow1(QSplitter* theParent, 
+                  const char* theName,
+                  SUIT_ResourceMgr* theResourceMgr,
+                  SUIT_ViewWindow* theViewWindow);
+
+  //! Reimplement VVTK_MainWindow::Initialize
+  virtual
+  void
+  Initialize(SVTK_RenderWindowInteractor* theInteractor,
+            VVTK_Renderer1* theRenderer);
+
+  //! Destroy instance of the class
+  virtual
+  ~VVTK_MainWindow1();
+
+  //! Create instance of the segmented VVTK_MainWindow
+  /*!
+    The two views (VVTK_MainWindow1 and VVTK_MainWindow2) should change its behaviour in the same time.
+    So, it is necessary to synhronize them through sharing some common pointers.
+  */
+  VVTK_MainWindow2*
+  CreateMainWindow2(QWidget* theParent, 
+                   const char* theName,
+                   SUIT_ResourceMgr* theResourceMgr,
+                   SUIT_ViewWindow* theViewWindow);
+
+  VISU_WidgetCtrl*  GetWidgetCtrl();
+
+  void
+  SetPlanesSegementation(bool theIsOn);
+
+  void
+  SetSphereSegementation(bool theIsOn);
+
+  VISU_InsideCursorSettings*
+  GetInsideCursorSettings();
+
+  //! Get contained VISU_OutsideCursorSettings
+  VISU_OutsideCursorSettings*
+  GetOutsideCursorSettings();
+
+  //! Get contained VISU_PickingSettings
+  VISU_PickingSettings* 
+  GetPickingSettings();
+
+ public slots:
+  //! To activate/ deactivate the segementation cursor at run-time
+  void
+  OnSegmentationSwitch();//bool theIsSegmentationOn); 
+
+  void
+  OnSegmentationSwitch(QtxAction* theAction);//bool theIsSegmentationOn); 
+
+   //! To change active selection mode at run-time
+  virtual
+  void
+  OnSelectionModeSwitch(bool theIsSelectionOn); 
+
+   //! To adjust to the current selection mode
+  virtual
+  void
+  OnSelectionChanged(); 
+
+ protected:
+  VVTK_Renderer1* myRenderer; //!< Keeps extended version of SVTK_Renderer
+
+  VVTK_MainWindow2* myMainWindow2; //!< Refer to segmented view
+
+  QtxAction* myStyleSwitchAction; //!< Action for switch interactor style
+  QToolBar* myPtsToolBar; //!< Additional tool bar
+
+  //! To implement show/hide segmented view on acttivate/ deactivate segementation cursor
+  QSplitter* mySplitter; 
+
+  QtxAction* myPickingAction; //!< Action for switch selection mode
+  QtxAction* myPlaneSegmentationAction; //!< Action for switch segmentation mode to plane
+  QtxAction* mySphereSegmentationAction; //!< Action for switch segmentation mode to sphere
+
+  //! Keep reference to VVTK_SegmentationCursorDlg
+  VVTK_SegmentationCursorDlg* mySegmentationCursorDlg; 
+  VVTK_PickingDlg* myPickingDlg; //!< Keep reference to VVTK_PickingDlg
+};
+
+
+//----------------------------------------------------------------------------
+//! Extend VVTK_MainWindow to implement functionality for segmented view
+class VVTK_EXPORT VVTK_MainWindow2: public VVTK_MainWindow
+{
+  Q_OBJECT;
+
+  friend class VVTK_MainWindow1;
+
+  //! Construct instance of the class
+  VVTK_MainWindow2(QWidget* theParent, 
+                  const char* theName,
+                  SUIT_ResourceMgr* theResourceMgr,
+                  SUIT_ViewWindow* theViewWindow,
+                  QtxAction* theStyleSwitchAction);
+public:
+  //! Destroy instance of the class
+  virtual
+  ~VVTK_MainWindow2();
+
+  //! Reimplement SVTK_MainWindow::Initialize
+  virtual
+  void
+  Initialize(SVTK_RenderWindowInteractor* theInteractor);
+
+ protected:
+  // Refer to the VVTK_MainWindow1::myStyleSwitchAction instance
+  QtxAction* myStyleSwitchAction; 
+
+};
+
+
+#ifdef WIN32
+#pragma warning( default:4251 )
+#endif
+
+#endif
diff --git a/src/VVTK/VVTK_PickingDlg.cxx b/src/VVTK/VVTK_PickingDlg.cxx
new file mode 100644 (file)
index 0000000..06e1dab
--- /dev/null
@@ -0,0 +1,378 @@
+//  VISU VISUGUI : GUI of VISU component
+//
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : VVTK_PickingDlg.cxx
+//  Author : Oleg Uvarov
+//  Module : VISU
+
+#include "VVTK_PickingDlg.h"
+
+#include "VISU_GaussPtsAct.h"
+#include "VISU_GaussPtsSettings.h"
+
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Session.h"
+
+#include "SVTK_RenderWindowInteractor.h"
+
+#include <vtkActorCollection.h>
+#include <vtkCallbackCommand.h>
+#include <vtkObjectFactory.h>
+#include <vtkRenderer.h>
+#include <vtkGenericRenderWindowInteractor.h>
+#include <vtkSmartPointer.h>
+
+#include "utilities.h"
+
+#include <qcheckbox.h>
+#include <qcolordialog.h>
+#include <qcombobox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qpushbutton.h>
+#include <qvbox.h>
+
+#include "QtxAction.h"
+#include "QtxDblSpinBox.h"
+#include "QtxIntSpinBox.h"
+
+using namespace std;
+
+VVTK_PickingDlg::VVTK_PickingDlg( QWidget* parent, const char* name )
+  :QDialog( parent, name, false, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
+   myEventCallbackCommand( vtkCallbackCommand::New() ),
+   myPickingSettings( VISU_PickingSettings::New() )
+{
+  myPriority = 0.0;
+  myEventCallbackCommand->Delete();
+  myEventCallbackCommand->SetClientData(this); 
+  myEventCallbackCommand->SetCallback(VVTK_PickingDlg::ProcessEvents);
+
+  SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+
+  setCaption( tr( "PICKING_DLG_TITLE" ) );
+  setSizeGripEnabled(TRUE);
+
+  QVBoxLayout* TopLayout = new QVBoxLayout( this );
+  TopLayout->setSpacing(6);
+  TopLayout->setMargin(11);
+
+  QVBox* aBox = new QVBox( this );
+  aBox->setMargin(0);
+  aBox->setSpacing(6);
+
+  // Cursor
+  QGroupBox* CursorGroup = new QGroupBox( tr( "CURSOR_TITLE" ), aBox, "CursorGroup" );
+  CursorGroup->setColumnLayout(0, Qt::Vertical );
+  CursorGroup->layout()->setSpacing( 0 );
+  CursorGroup->layout()->setMargin( 0 );
+
+  QGridLayout* CursorGroupLayout = new QGridLayout (CursorGroup->layout());
+  CursorGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  CursorGroupLayout->setSpacing(6);
+  CursorGroupLayout->setMargin(11);
+
+  QLabel* CursorSizeLabel = new QLabel( tr( "CURSOR_SIZE" ), CursorGroup );
+  myCursorSizeSpinBox = new QtxDblSpinBox( 0, 1, 0.1, CursorGroup );
+  myCursorSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  QLabel* PyramidHeightLabel = new QLabel( tr( "PYRAMID_HEIGHT" ), CursorGroup );
+  double aHeightMin=1.e-7;
+  double aHeightMax=10.;
+  double aHeightStep=0.1;
+  myPyramidHeightSpinBox = new QtxDblSpinBox(aHeightMin, aHeightMax, aHeightStep, CursorGroup );
+  myPyramidHeightSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  
+  QLabel* SelectionColorLabel = new QLabel( tr( "SELECTION_COLOR" ), CursorGroup );
+  mySelectionColorButton = new QPushButton( CursorGroup );
+  mySelectionColorButton->setPaletteBackgroundColor( Qt::blue );
+  mySelectionColorButton->setPaletteForegroundColor( Qt::blue );
+  connect( mySelectionColorButton, SIGNAL( clicked() ), this, SLOT( onColorButtonPressed() ) );
+
+  CursorGroupLayout->addWidget( CursorSizeLabel, 0, 0 );
+  CursorGroupLayout->addWidget( myCursorSizeSpinBox, 0, 1 );
+  CursorGroupLayout->addWidget( PyramidHeightLabel, 1, 0 );
+  CursorGroupLayout->addWidget( myPyramidHeightSpinBox, 1, 1 );
+  CursorGroupLayout->addWidget( SelectionColorLabel, 2, 0 );
+  CursorGroupLayout->addWidget( mySelectionColorButton, 2, 1 );
+
+  // Tolerance
+  QGroupBox* ToleranceGroup = new QGroupBox( tr( "TOLERANCE_TITLE" ), aBox, "ToleranceGroup" );
+  ToleranceGroup->setColumnLayout(0, Qt::Vertical );
+  ToleranceGroup->layout()->setSpacing( 0 );
+  ToleranceGroup->layout()->setMargin( 0 );
+
+  QGridLayout* ToleranceGroupLayout = new QGridLayout (ToleranceGroup->layout());
+  ToleranceGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  ToleranceGroupLayout->setSpacing(6);
+  ToleranceGroupLayout->setMargin(11);
+
+  QLabel* PointToleranceLabel = new QLabel( tr( "POINT_TOLERANCE" ), ToleranceGroup );
+  myPointToleranceSpinBox = new QtxDblSpinBox( 0.001, 10.0, 0.01, ToleranceGroup );
+  myPointToleranceSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  ToleranceGroupLayout->addWidget( PointToleranceLabel, 0, 0 );
+  ToleranceGroupLayout->addWidget( myPointToleranceSpinBox, 0, 1 );
+
+  // Information window
+  QGroupBox* InfoWindowGroup = new QGroupBox( tr( "INFO_WINDOW_TITLE" ), aBox, "InfoWindowGroup" );
+  InfoWindowGroup->setColumnLayout(0, Qt::Vertical );
+  InfoWindowGroup->layout()->setSpacing( 0 );
+  InfoWindowGroup->layout()->setMargin( 0 );
+
+  QGridLayout* InfoWindowGroupLayout = new QGridLayout (InfoWindowGroup->layout());
+  InfoWindowGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  InfoWindowGroupLayout->setSpacing(6);
+  InfoWindowGroupLayout->setMargin(11);
+
+  QLabel* TransparencyLabel = new QLabel( tr( "TRANSPARENCY" ), InfoWindowGroup );
+  myTransparencySpinBox = new QtxIntSpinBox( 0, 100, 10, InfoWindowGroup );
+  myTransparencySpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  InfoWindowGroupLayout->addWidget( TransparencyLabel, 0, 0 );
+  InfoWindowGroupLayout->addWidget( myTransparencySpinBox, 0, 1 );
+
+  QLabel* PositionLabel = new QLabel( tr( "POSITION" ), InfoWindowGroup );
+  myPositionComboBox = new QComboBox( InfoWindowGroup );
+  myPositionComboBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  myPositionComboBox->insertItem( tr( "BELOW_POINT" ) );
+  myPositionComboBox->insertItem( tr( "TOP_LEFT_CORNER" ) );
+
+  InfoWindowGroupLayout->addWidget( TransparencyLabel, 0, 0 );
+  InfoWindowGroupLayout->addWidget( myTransparencySpinBox, 0, 1 );
+  InfoWindowGroupLayout->addWidget( PositionLabel, 1, 0 );
+  InfoWindowGroupLayout->addWidget( myPositionComboBox, 1, 1 );
+
+  // Movement of the camera
+  QGroupBox* CameraGroup = new QGroupBox( tr( "CAMERA_TITLE" ), aBox, "CameraGroup" );
+  CameraGroup->setColumnLayout(0, Qt::Vertical );
+  CameraGroup->layout()->setSpacing( 0 );
+  CameraGroup->layout()->setMargin( 0 );
+
+  QGridLayout* CameraGroupLayout = new QGridLayout (CameraGroup->layout());
+  CameraGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  CameraGroupLayout->setSpacing(6);
+  CameraGroupLayout->setMargin(11);
+
+  QLabel* ZoomFactorLabel = new QLabel( tr( "ZOOM_FACTOR" ), CameraGroup );
+  myZoomFactorSpinBox = new QtxDblSpinBox( 0.1, 10.0, 0.1, CameraGroup );
+  myZoomFactorSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  QLabel* StepNumberLabel = new QLabel( tr( "STEP_NUMBER" ), CameraGroup );
+  myStepNumberSpinBox = new QtxIntSpinBox( 1, 100, 1, CameraGroup );
+  myStepNumberSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  CameraGroupLayout->addWidget( ZoomFactorLabel, 0, 0 );
+  CameraGroupLayout->addWidget( myZoomFactorSpinBox, 0, 1 );
+  CameraGroupLayout->addWidget( StepNumberLabel, 1, 0 );
+  CameraGroupLayout->addWidget( myStepNumberSpinBox, 1, 1 );
+
+  // Display parent mesh element
+  QGroupBox* ParentMeshGroup = new QGroupBox( tr( "PARENT_MESH_TITLE" ), aBox, "ParentMeshGroup" );
+  ParentMeshGroup->setColumnLayout(0, Qt::Vertical );
+  ParentMeshGroup->layout()->setSpacing( 0 );
+  ParentMeshGroup->layout()->setMargin( 0 );
+
+  QGridLayout* ParentMeshGroupLayout = new QGridLayout (ParentMeshGroup->layout());
+  ParentMeshGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
+  ParentMeshGroupLayout->setSpacing(6);
+  ParentMeshGroupLayout->setMargin(11);
+
+  myDisplayParentMeshCheckBox = new QCheckBox( tr( "DISPLAY_PARENT_MESH" ), ParentMeshGroup );
+  ParentMeshGroupLayout->addWidget( myDisplayParentMeshCheckBox, 0, 0 );
+
+  // Common buttons ===========================================================
+  QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" );
+  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* buttonApply = new QPushButton( tr( "&Apply" ), GroupButtons, "buttonApply" );
+  buttonApply->setAutoDefault( TRUE );
+  buttonApply->setDefault( TRUE );
+  GroupButtonsLayout->addWidget( buttonApply, 0, 0 );
+  GroupButtonsLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 );
+
+  QPushButton* buttonClose = new QPushButton( tr( "&Close" ) , GroupButtons, "buttonClose" );
+  buttonClose->setAutoDefault( TRUE );
+  GroupButtonsLayout->addWidget( buttonClose, 0, 2 );
+
+  TopLayout->addWidget( aBox );
+  TopLayout->addWidget( GroupButtons );
+
+  connect( buttonApply, SIGNAL( clicked() ), this, SLOT( onClickApply() ) );
+  connect( buttonClose, SIGNAL( clicked() ), this, SLOT( onClickClose() ) );
+}
+
+VVTK_PickingDlg::~VVTK_PickingDlg()
+{
+}
+
+void VVTK_PickingDlg::AddActor( VISU_GaussPtsAct* theActor )
+{
+  theActor->SetPickingSettings( myPickingSettings.GetPointer() );
+}
+
+void VVTK_PickingDlg::RemoveActor( VISU_GaussPtsAct* theActor )
+{
+  theActor->SetPickingSettings( NULL );
+}
+
+void VVTK_PickingDlg::Update()
+{
+  float aCursorSize = 0.5;
+  float aPyramidHeight = 10.0;
+  float aPointTolerance = 0.1;
+  QColor aColor = Qt::yellow;
+  int anInfoWindowTransparency = 50;
+  int anInfoWindowPosition = VISU_PickingSettings::BelowPoint;
+  float aZoomFactor = 1.5;
+  int aStepNumber = 10;
+  bool aDisplayParentMesh = false;
+
+  if( !myPickingSettings->GetInitial() )
+  {
+    myCursorSizeSpinBox->setValue( myPickingSettings->GetCursorSize() );
+    myPyramidHeightSpinBox->setValue( myPickingSettings->GetPyramidHeight() );
+    myPointToleranceSpinBox->setValue( myPickingSettings->GetPointTolerance() );
+    myTransparencySpinBox->setValue( int(myPickingSettings->GetInfoWindowTransparency() * 100.0) );
+    myPositionComboBox->setCurrentItem( myPickingSettings->GetInfoWindowPosition() );
+    myZoomFactorSpinBox->setValue( myPickingSettings->GetZoomFactor() );
+    myStepNumberSpinBox->setValue( myPickingSettings->GetStepNumber() );
+    myDisplayParentMeshCheckBox->setChecked( myPickingSettings->GetDisplayParentMesh() );
+
+    float* aColor = myPickingSettings->GetColor();
+    mySelectionColorButton->setPaletteBackgroundColor( QColor( ( int )( aColor[0] * 255.0 ),
+                                                              ( int )( aColor[1] * 255.0 ),
+                                                              ( int )( aColor[2] * 255.0 ) ) );
+
+    return;
+  }
+
+  SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+
+  aCursorSize = aResourceMgr->doubleValue( "VISU", "picking_cursor_size", aCursorSize );
+  myCursorSizeSpinBox->setValue( aCursorSize );
+
+  aPyramidHeight = aResourceMgr->doubleValue( "VISU", "picking_pyramid_height", aPyramidHeight );
+  myPyramidHeightSpinBox->setValue( aPyramidHeight );
+
+  aPointTolerance = aResourceMgr->doubleValue( "VISU", "picking_point_tolerance", aPointTolerance );
+  myPointToleranceSpinBox->setValue( aPointTolerance );
+
+  aColor = aResourceMgr->colorValue( "VISU", "picking_selection_color", aColor );
+  mySelectionColorButton->setPaletteBackgroundColor( aColor );
+
+  anInfoWindowTransparency = aResourceMgr->integerValue( "VISU", "picking_transparency", anInfoWindowTransparency );
+  myTransparencySpinBox->setValue( anInfoWindowTransparency );
+
+  anInfoWindowPosition = aResourceMgr->integerValue( "VISU", "picking_position", anInfoWindowPosition );
+  myPositionComboBox->setCurrentItem( anInfoWindowPosition );
+
+  aZoomFactor = aResourceMgr->doubleValue( "VISU", "picking_zoom_factor", aZoomFactor );
+  myZoomFactorSpinBox->setValue( aZoomFactor );
+
+  aStepNumber = aResourceMgr->integerValue( "VISU", "picking_step_number", aStepNumber );
+  myStepNumberSpinBox->setValue( aStepNumber );
+
+  aDisplayParentMesh = aResourceMgr->booleanValue( "VISU", "picking_display_parent_mesh", aDisplayParentMesh );
+  myDisplayParentMeshCheckBox->setChecked( aDisplayParentMesh );
+
+  onClickApply();
+}
+
+
+VISU_PickingSettings* 
+VVTK_PickingDlg
+::GetPickingSettings()
+{
+  return myPickingSettings.GetPointer();
+}
+
+void VVTK_PickingDlg::SetInteractor( SVTK_RenderWindowInteractor* theInteractor )
+{
+  myInteractor = theInteractor;
+
+  theInteractor->GetDevice()->AddObserver(vtkCommand::KeyPressEvent, 
+                                         myEventCallbackCommand.GetPointer(), 
+                                         myPriority);
+}
+
+
+void VVTK_PickingDlg::ProcessEvents(vtkObject* vtkNotUsed(theObject), 
+                                   unsigned long theEvent,
+                                   void* theClientData, 
+                                   void* vtkNotUsed(theCallData))
+{
+  VVTK_PickingDlg* self = reinterpret_cast<VVTK_PickingDlg*>(theClientData);
+
+  switch(theEvent){
+  case vtkCommand::KeyPressEvent:
+    self->KeyPressed();
+    break;
+  }
+}
+
+void VVTK_PickingDlg::KeyPressed()
+{
+  if( myInteractor->GetDevice()->GetKeyCode() == 'P' )
+  {
+    bool aDisplayParentMesh = !myPickingSettings->GetDisplayParentMesh();
+    myPickingSettings->SetDisplayParentMesh( aDisplayParentMesh );
+
+    myDisplayParentMeshCheckBox->setChecked( aDisplayParentMesh );
+
+    myPickingSettings->InvokeEvent(VISU::UpdatePickingSettingsEvent,NULL);
+  }
+}
+
+void VVTK_PickingDlg::onClickApply()
+{
+  myPickingSettings->SetInitial( false );
+
+  myPickingSettings->SetCursorSize( myCursorSizeSpinBox->value() );
+  myPickingSettings->SetPyramidHeight( myPyramidHeightSpinBox->value() );
+  myPickingSettings->SetPointTolerance( myPointToleranceSpinBox->value() );
+  myPickingSettings->SetInfoWindowTransparency( myTransparencySpinBox->value() / 100.0 );
+  myPickingSettings->SetInfoWindowPosition( myPositionComboBox->currentItem() );
+  myPickingSettings->SetZoomFactor( myZoomFactorSpinBox->value() );
+  myPickingSettings->SetStepNumber( myStepNumberSpinBox->value() );
+  myPickingSettings->SetDisplayParentMesh( myDisplayParentMeshCheckBox->isChecked() );
+
+  QColor aButtonColor = mySelectionColorButton->paletteBackgroundColor();
+  float aColor[3];
+  aColor[0] = aButtonColor.red() / 255.0;
+  aColor[1] = aButtonColor.green() / 255.0;
+  aColor[2] = aButtonColor.blue() / 255.0;
+  myPickingSettings->SetColor( aColor );
+
+  myPickingSettings->InvokeEvent(VISU::UpdatePickingSettingsEvent,NULL);
+}
+
+void VVTK_PickingDlg::onClickClose()
+{
+  myAction->setOn( false );
+  reject();
+}
+
+void VVTK_PickingDlg::done( int r )
+{
+  myAction->setOn( false );
+  QDialog::done( r );
+}
+
+void VVTK_PickingDlg::onColorButtonPressed()
+{
+  QColor aColor = QColorDialog::getColor( mySelectionColorButton->paletteBackgroundColor(), this );
+  if( aColor.isValid() )
+    mySelectionColorButton->setPaletteBackgroundColor( aColor );
+}
diff --git a/src/VVTK/VVTK_PickingDlg.h b/src/VVTK/VVTK_PickingDlg.h
new file mode 100644 (file)
index 0000000..72d3a4e
--- /dev/null
@@ -0,0 +1,100 @@
+//  VISU VISUGUI : GUI of VISU component
+//
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : VVTK_PickingDlg.h
+//  Author : Oleg Uvarov
+//  Module : VISU
+
+#ifndef VVTK_PICKINGDLG_H
+#define VVTK_PICKINGDLG_H
+
+#include <qdialog.h>
+
+#include <vtkObject.h>
+#include <vtkSmartPointer.h>
+
+class vtkActorCollection;
+class vtkCallbackCommand;
+class vtkImageData;
+
+class QLabel;
+class QComboBox;
+class QCheckBox;
+class QPushButton;
+
+class QtxAction;
+class QtxDblSpinBox;
+class QtxIntSpinBox;
+
+class VISU_GaussPtsAct;
+class VISU_PickingSettings;
+
+class SVTK_RenderWindowInteractor;
+
+//! Picking Dialog.
+/*!
+ * Uses for set up picking preferenses and apply
+ * them to all actors in the current renderer.
+ */
+class VVTK_PickingDlg : public QDialog
+{
+  Q_OBJECT
+
+public:
+  VVTK_PickingDlg( QWidget* parent = 0, const char* name = 0 );
+  ~VVTK_PickingDlg();
+
+  //! Used to switch toggle state of the Picking action.
+  void             SetAction( QtxAction* theAction ) { myAction = theAction; }
+
+  //! Make an actor to listen the event of Update Picking Settings event.
+  void             AddActor( VISU_GaussPtsAct* );
+  void             RemoveActor( VISU_GaussPtsAct* );
+
+  //! Update dialog contents.
+  void             Update();
+
+  VISU_PickingSettings* GetPickingSettings();
+
+  void             SetInteractor( SVTK_RenderWindowInteractor* );
+
+protected slots:
+  virtual void     done( int );
+
+  void             onClickApply();
+  void             onClickClose();
+
+  void             onColorButtonPressed();
+
+private:
+  static void      ProcessEvents(vtkObject* theObject, 
+                                unsigned long theEvent,
+                                void* theClientData, 
+                                void* theCallData);
+
+  void             KeyPressed();
+
+private:
+  QtxDblSpinBox*   myCursorSizeSpinBox;
+  QtxDblSpinBox*   myPyramidHeightSpinBox;
+  QPushButton*     mySelectionColorButton;
+  QtxDblSpinBox*   myPointToleranceSpinBox;
+  QtxIntSpinBox*   myTransparencySpinBox;
+  QComboBox*       myPositionComboBox;
+  QtxDblSpinBox*   myZoomFactorSpinBox;
+  QtxIntSpinBox*   myStepNumberSpinBox;
+  QCheckBox*       myDisplayParentMeshCheckBox;
+
+  QtxAction*       myAction;
+  vtkSmartPointer<VISU_PickingSettings> myPickingSettings;
+
+  SVTK_RenderWindowInteractor* myInteractor;
+
+  float            myPriority;
+  vtkSmartPointer<vtkCallbackCommand> myEventCallbackCommand;
+};
+
+#endif
diff --git a/src/VVTK/VVTK_PrimitiveBox.cxx b/src/VVTK/VVTK_PrimitiveBox.cxx
new file mode 100644 (file)
index 0000000..84ef52b
--- /dev/null
@@ -0,0 +1,358 @@
+//  VISU VISUGUI : GUI of VISU 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   : VVTK_PrimitiveBox.cxx
+//  Author : Oleg UVAROV
+//  Module : VISU
+
+#include "VVTK_PrimitiveBox.h"
+
+#include "VISU_OpenGLPointSpriteMapper.hxx"
+
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Session.h"
+
+#include "QtxDblSpinBox.h"
+#include "QtxIntSpinBox.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+#include <qpushbutton.h>
+#include <qfiledialog.h>
+
+#include <iostream.h>
+
+using namespace std;
+
+VVTK_PrimitiveBox::VVTK_PrimitiveBox( QWidget* parent ) :
+  QGroupBox( parent )
+{
+  SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+
+  setTitle( tr( "PRIMITIVE_TITLE" ) );
+  setColumnLayout(0, Qt::Vertical );
+  layout()->setSpacing( 0 );
+  layout()->setMargin( 0 );
+
+  QGridLayout* aLayout = new QGridLayout( layout() );
+  aLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  aLayout->setSpacing(6);
+  aLayout->setMargin(11);
+
+  myPrimitiveType = VISU_OpenGLPointSpriteMapper::PointSprite;
+
+  QString aRootDir = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/";
+  myMainTexture = aRootDir + "sprite_texture.bmp";
+  myAlphaTexture = aRootDir + "sprite_alpha.bmp";
+
+  // Primitive Type
+  QButtonGroup* aPrimitiveTypeGroup = new QButtonGroup( 3, Qt::Horizontal, this, "PrimitiveTypeGroup" );
+  aPrimitiveTypeGroup->setMinimumWidth( 450 );
+  aPrimitiveTypeGroup->setRadioButtonExclusive( true );
+  aPrimitiveTypeGroup->setFrameStyle( QFrame::NoFrame );
+  aPrimitiveTypeGroup->layout()->setMargin( 0 );
+
+  myPointSpriteButton = new QRadioButton( tr( "POINT_SPRITE" ), aPrimitiveTypeGroup );
+  myOpenGLPointButton = new QRadioButton( tr( "OPENGL_POINT" ), aPrimitiveTypeGroup );
+  myGeomSphereButton = new QRadioButton( tr( "GEOMETRICAL_SPHERE" ), aPrimitiveTypeGroup );
+
+  aLayout->addMultiCellWidget( aPrimitiveTypeGroup, 0, 0, 0, 2 );
+
+  // Clamp ( Point Sprite & OpenGL Point )
+  myClampLabel = new QLabel( tr( "CLAMP" ), this );
+  myClampSpinBox = new QtxDblSpinBox( 1.0, 512.0, 1.0, this );
+  myClampSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  aLayout->addWidget( myClampLabel, 1, 0 );
+  aLayout->addMultiCellWidget( myClampSpinBox, 1, 1, 1, 2 );
+
+  // Main Texture ( Point Sprite )
+  myMainTextureLabel = new QLabel( tr( "MAIN_TEXTURE" ), this );
+  myMainTextureLineEdit = new QLineEdit( this );
+  myMainTextureButton = new QPushButton( this );
+  myMainTextureButton->setAutoDefault( false );
+  myMainTextureButton->setPixmap( aResourceMgr->loadPixmap( "VISU", tr( "ICON_LOAD_TEXTURE" ) ) );
+  connect( myMainTextureButton, SIGNAL( clicked() ), this, SLOT( onBrowseMainTexture() ) );
+
+  aLayout->addWidget( myMainTextureLabel, 2, 0 );
+  aLayout->addWidget( myMainTextureLineEdit, 2, 1 );
+  aLayout->addWidget( myMainTextureButton, 2, 2 );
+
+  // Alpha Texture ( Point Sprite )
+  myAlphaTextureLabel = new QLabel( tr( "ALPHA_TEXTURE" ), this );
+  myAlphaTextureLineEdit = new QLineEdit( this );
+  myAlphaTextureButton = new QPushButton( this );
+  myAlphaTextureButton->setAutoDefault( false );
+  myAlphaTextureButton->setPixmap( aResourceMgr->loadPixmap( "VISU", tr( "ICON_LOAD_TEXTURE" ) ) );
+  connect( myAlphaTextureButton, SIGNAL( clicked() ), this, SLOT( onBrowseAlphaTexture() ) );
+
+  aLayout->addWidget( myAlphaTextureLabel, 3, 0 );
+  aLayout->addWidget( myAlphaTextureLineEdit, 3, 1 );
+  aLayout->addWidget( myAlphaTextureButton, 3, 2 );
+
+  // Alpha Threshold ( Point Sprite )
+  myAlphaThresholdLabel = new QLabel( tr( "ALPHA_THRESHOLD" ), this );
+  myAlphaThresholdSpinBox = new QtxDblSpinBox( 0.0, 1.0, 0.1, this );
+  myAlphaThresholdSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  aLayout->addWidget( myAlphaThresholdLabel, 4, 0 );
+  aLayout->addMultiCellWidget( myAlphaThresholdSpinBox, 4, 4, 1, 2 );
+
+  // Resolution ( Geometrical Sphere )
+  myResolutionLabel = new QLabel( tr( "RESOLUTION" ), this );
+  myResolutionSpinBox = new QtxIntSpinBox( 3, 100, 1, this );
+  myResolutionSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  connect( myResolutionSpinBox, SIGNAL( valueChanged( int ) ), this, SLOT( onResolutionChanged( int ) ) );
+
+  aLayout->addWidget( myResolutionLabel, 1, 0 );
+  aLayout->addMultiCellWidget( myResolutionSpinBox, 1, 1, 1, 2 );
+
+  // Number of faces ( Geometrical Sphere )
+  myFaceNumberLabel = new QLabel( tr( "FACE_NUMBER" ), this );
+  myFaceNumberLineEdit = new QLineEdit( this );
+  myFaceNumberLineEdit->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myFaceNumberLineEdit->setEnabled( false );
+  //myFaceNumberLineEdit->setReadOnly( true );
+
+  aLayout->addWidget( myFaceNumberLabel, 2, 0 );
+  aLayout->addMultiCellWidget( myFaceNumberLineEdit, 2, 2, 1, 2 );
+
+  // Notification ( Geometrical Sphere )
+  myFaceLimitLabel = new QLabel( tr( "FACE_LIMIT" ), this );
+  myFaceLimitSpinBox = new QtxIntSpinBox( 10, 1000000, 10, this );
+  myFaceLimitSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  aLayout->addWidget( myFaceLimitLabel, 3, 0 );
+  aLayout->addMultiCellWidget( myFaceLimitSpinBox, 3, 3, 1, 2 );
+
+  connect( myPointSpriteButton, SIGNAL( clicked() ), this, SLOT( onTogglePointSprite() ) );
+  connect( myOpenGLPointButton, SIGNAL( clicked() ), this, SLOT( onToggleOpenGLPoint() ) );
+  connect( myGeomSphereButton,  SIGNAL( clicked() ), this, SLOT( onToggleGeomSphere() ) );
+}
+
+void VVTK_PrimitiveBox::onTogglePointSprite()
+{
+  myPrimitiveType = VISU_OpenGLPointSpriteMapper::PointSprite;
+
+  myClampLabel->show();
+  myClampSpinBox->show();
+
+  myMainTextureLabel->show();
+  myMainTextureLineEdit->show();
+  myMainTextureButton->show();
+
+  myAlphaTextureLabel->show();
+  myAlphaTextureLineEdit->show();
+  myAlphaTextureButton->show();
+
+  myAlphaThresholdLabel->show();
+  myAlphaThresholdSpinBox->show();
+
+  myResolutionLabel->hide();
+  myResolutionSpinBox->hide();
+
+  myFaceNumberLabel->hide();
+  myFaceNumberLineEdit->hide();
+
+  myFaceLimitLabel->hide();
+  myFaceLimitSpinBox->hide();
+}
+
+void VVTK_PrimitiveBox::onToggleOpenGLPoint()
+{
+  myPrimitiveType = VISU_OpenGLPointSpriteMapper::OpenGLPoint;
+
+  myClampLabel->show();
+  myClampSpinBox->show();
+
+  myMainTextureLabel->hide();
+  myMainTextureLineEdit->hide();
+  myMainTextureButton->hide();
+
+  myAlphaTextureLabel->hide();
+  myAlphaTextureLineEdit->hide();
+  myAlphaTextureButton->hide();
+
+  myAlphaThresholdLabel->hide();
+  myAlphaThresholdSpinBox->hide();
+
+  myResolutionLabel->hide();
+  myResolutionSpinBox->hide();
+
+  myFaceNumberLabel->hide();
+  myFaceNumberLineEdit->hide();
+
+  myFaceLimitLabel->hide();
+  myFaceLimitSpinBox->hide();
+}
+
+void VVTK_PrimitiveBox::onToggleGeomSphere()
+{
+  myPrimitiveType = VISU_OpenGLPointSpriteMapper::GeomSphere;
+
+  myClampLabel->hide();
+  myClampSpinBox->hide();
+
+  myMainTextureLabel->hide();
+  myMainTextureLineEdit->hide();
+  myMainTextureButton->hide();
+
+  myAlphaTextureLabel->hide();
+  myAlphaTextureLineEdit->hide();
+  myAlphaTextureButton->hide();
+
+  myAlphaThresholdLabel->hide();
+  myAlphaThresholdSpinBox->hide();
+
+  myResolutionLabel->show();
+  myResolutionSpinBox->show();
+
+  myFaceNumberLabel->show();
+  myFaceNumberLineEdit->show();
+
+  myFaceLimitLabel->show();
+  myFaceLimitSpinBox->show();
+}
+
+void VVTK_PrimitiveBox::onResolutionChanged( int theResolution )
+{
+  setFaceNumber( 2 * theResolution * ( theResolution - 2 ) );
+}
+
+void VVTK_PrimitiveBox::setPrimitiveType( int theType )
+{
+  myPrimitiveType = theType;
+
+  switch( myPrimitiveType )
+  {
+    case VISU_OpenGLPointSpriteMapper::PointSprite :
+      myPointSpriteButton->setChecked( true );
+      onTogglePointSprite();
+      break;
+    case VISU_OpenGLPointSpriteMapper::OpenGLPoint :
+      myOpenGLPointButton->setChecked( true );
+      onToggleOpenGLPoint();
+      break;
+    case VISU_OpenGLPointSpriteMapper::GeomSphere :
+      myGeomSphereButton->setChecked( true );
+      onToggleGeomSphere();
+      break;
+    default : break;
+  }
+}
+
+float VVTK_PrimitiveBox::getClamp() const
+{
+  return myClampSpinBox->value();
+}
+
+void VVTK_PrimitiveBox::setClamp( float theClamp )
+{
+  myClampSpinBox->setValue( theClamp );
+}
+
+void VVTK_PrimitiveBox::setClampMaximum( float theClampMaximum )
+{
+  myClampSpinBox->setMaxValue( theClampMaximum );
+}
+
+void VVTK_PrimitiveBox::setMainTexture( const QString& theMainTexture )
+{
+  myMainTexture = theMainTexture;
+  myMainTextureLineEdit->setText( theMainTexture.section( '/', -1 ) );
+}
+
+void VVTK_PrimitiveBox::setAlphaTexture( const QString& theAlphaTexture )
+{
+  myAlphaTexture = theAlphaTexture;
+  myAlphaTextureLineEdit->setText( theAlphaTexture.section( '/', -1 ) );
+}
+
+float VVTK_PrimitiveBox::getAlphaThreshold() const
+{
+  return myAlphaThresholdSpinBox->value();
+}
+
+void VVTK_PrimitiveBox::setAlphaThreshold( float theAlphaThreshold )
+{
+  myAlphaThresholdSpinBox->setValue( theAlphaThreshold );
+}
+
+int VVTK_PrimitiveBox::getResolution() const
+{
+  return myResolutionSpinBox->value();
+}
+
+void VVTK_PrimitiveBox::setResolution( int theResolution )
+{
+  myResolutionSpinBox->setValue( theResolution );
+}
+
+int VVTK_PrimitiveBox::getFaceNumber() const
+{
+  int aResolution = getResolution();
+  return 2 * aResolution * ( aResolution - 2 );
+  //return myFaceNumberLineEdit->text().toInt();
+}
+
+void VVTK_PrimitiveBox::setFaceNumber( int theFaceNumber )
+{
+  myFaceNumberLineEdit->setText( QString::number( theFaceNumber ) );
+}
+
+int VVTK_PrimitiveBox::getFaceLimit() const
+{
+  return myFaceLimitSpinBox->value();
+}
+
+void VVTK_PrimitiveBox::setFaceLimit( int theFaceLimit )
+{
+  myFaceLimitSpinBox->setValue( theFaceLimit );
+}
+
+void VVTK_PrimitiveBox::onBrowseMainTexture()
+{
+  QString aRootDir = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/";
+  QString aFileName = QFileDialog::getOpenFileName( aRootDir, "Bitmap (*.bmp *.jpg *.png)", this );
+
+  if( aFileName.isNull() )
+    return;
+
+  myMainTexture = aFileName;
+  myMainTextureLineEdit->setText( aFileName.section( '/', -1 ) );
+}
+
+void VVTK_PrimitiveBox::onBrowseAlphaTexture()
+{
+  QString aRootDir = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/";
+  QString aFileName = QFileDialog::getOpenFileName( aRootDir, "Bitmap (*.bmp *.jpg *.png)", this );
+
+  if( aFileName.isNull() )
+    return;
+
+  myAlphaTexture = aFileName;
+  myAlphaTextureLineEdit->setText( aFileName.section( '/', -1 ) );
+}
diff --git a/src/VVTK/VVTK_PrimitiveBox.h b/src/VVTK/VVTK_PrimitiveBox.h
new file mode 100644 (file)
index 0000000..a6b8a0a
--- /dev/null
@@ -0,0 +1,121 @@
+//  VISU VISUGUI : GUI of VISU 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   : VVTK_PrimitiveBox.h
+//  Author : Oleg UVAROV
+//  Module : VISU
+
+#ifndef VVTK_PRIMITIVEBOX_H
+#define VVTK_PRIMITIVEBOX_H
+
+#include <qgroupbox.h>
+
+class QLabel;
+class QLineEdit;
+class QPushButton;
+class QRadioButton;
+
+class QtxDblSpinBox;
+class QtxIntSpinBox;
+
+class VVTK_PrimitiveBox : public QGroupBox
+{
+  Q_OBJECT
+
+public:
+  VVTK_PrimitiveBox( QWidget* );
+  ~VVTK_PrimitiveBox() {}
+
+public:
+  int                      getPrimitiveType() const { return myPrimitiveType; }
+  void                     setPrimitiveType( int );
+
+  float                    getClamp() const;
+  void                     setClamp( float );
+  void                     setClampMaximum( float );
+
+  QString                  getMainTexture() const { return myMainTexture; }
+  void                     setMainTexture( const QString& );
+
+  QString                  getAlphaTexture() const { return myAlphaTexture; }
+  void                     setAlphaTexture( const QString& );
+
+  float                    getAlphaThreshold() const;
+  void                     setAlphaThreshold( float );
+
+  int                      getResolution() const;
+  void                     setResolution( int );
+
+  int                      getFaceNumber() const;
+  void                     setFaceNumber( int );
+
+  int                      getFaceLimit() const;
+  void                     setFaceLimit( int );
+
+protected slots:
+  void                     onTogglePointSprite();
+  void                     onToggleOpenGLPoint();
+  void                     onToggleGeomSphere();
+
+  void                     onBrowseMainTexture();
+  void                     onBrowseAlphaTexture();
+
+  void                     onResolutionChanged( int );
+
+private:
+  int                      myPrimitiveType;
+
+  QRadioButton*            myPointSpriteButton;
+  QRadioButton*            myOpenGLPointButton;
+  QRadioButton*            myGeomSphereButton;
+
+  QString                  myMainTexture;
+  QString                  myAlphaTexture;
+
+  QLabel*                  myClampLabel;
+  QtxDblSpinBox*           myClampSpinBox;
+
+  QLabel*                  myMainTextureLabel;
+  QLineEdit*               myMainTextureLineEdit;
+  QPushButton*             myMainTextureButton;
+
+  QLabel*                  myAlphaTextureLabel;
+  QLineEdit*               myAlphaTextureLineEdit;
+  QPushButton*             myAlphaTextureButton;
+
+  QLabel*                  myAlphaThresholdLabel;
+  QtxDblSpinBox*           myAlphaThresholdSpinBox;
+
+  QLabel*                  myResolutionLabel;
+  QtxIntSpinBox*           myResolutionSpinBox;
+
+  QLabel*                  myFaceNumberLabel;
+  QLineEdit*               myFaceNumberLineEdit;
+
+  QLabel*                  myFaceLimitLabel;
+  QtxIntSpinBox*           myFaceLimitSpinBox;
+};
+
+
+
+#endif
diff --git a/src/VVTK/VVTK_Recorder.cxx b/src/VVTK/VVTK_Recorder.cxx
new file mode 100755 (executable)
index 0000000..e9c734e
--- /dev/null
@@ -0,0 +1,464 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop\r
+//\r
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS \r
+// \r
+//  This library is free software; you can redistribute it and/or \r
+//  modify it under the terms of the GNU Lesser General Public \r
+//  License as published by the Free Software Foundation; either \r
+//  version 2.1 of the License. \r
+// \r
+//  This library is distributed in the hope that it will be useful, \r
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of \r
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU \r
+//  Lesser General Public License for more details. \r
+// \r
+//  You should have received a copy of the GNU Lesser General Public \r
+//  License along with this library; if not, write to the Free Software \r
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA \r
+// \r
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org \r
+//\r
+//\r
+//\r
+//  File   :\r
+//  Author :\r
+//  Module :\r
+//  $Header$\r
+\r
+#include "VVTK_Recorder.h"\r
+\r
+#include "VVTK_ImageWriter.h"\r
+#include "VVTK_ImageWriterMgr.h"\r
+\r
+#include <vtkObjectFactory.h>\r
+#include <vtkObject.h>\r
+#include <vtkCallbackCommand.h>\r
+#include <vtkRenderWindow.h>\r
+#include <vtkTimerLog.h>\r
+#include <vtkWindowToImageFilter.h>\r
+#include <vtkJPEGWriter.h>\r
+#include <vtkImageData.h>\r
+\r
+#include <sstream>\r
+#include <iomanip>\r
+#include <iostream>\r
+\r
+#include <unistd.h>\r
+#include <qapplication.h>\r
+#include <qfileinfo.h>\r
+\r
+#include "utilities.h"\r
+\r
+#ifdef _DEBUG_\r
+static int MYDEBUG = 0;\r
+#else\r
+static int MYDEBUG = 0;\r
+#endif\r
+\r
+\r
+namespace\r
+{\r
+  //----------------------------------------------------------------------------\r
+  inline\r
+  void\r
+  GetNameJPEG(const std::string& thePreffix,  \r
+             const int theIndex,\r
+             std::string& theName)\r
+  {\r
+    using namespace std;\r
+    ostringstream aStream;\r
+    aStream<<thePreffix<<"_"<<setw(6)<<setfill('0')<<theIndex<<".jpeg";\r
+    theName = aStream.str();\r
+  }\r
+}\r
+\r
+//----------------------------------------------------------------------------\r
+vtkCxxRevisionMacro(VVTK_Recorder,"$Revision$");\r
+vtkStandardNewMacro(VVTK_Recorder);\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+VVTK_Recorder\r
+::VVTK_Recorder():\r
+  myRenderWindow(NULL),\r
+  myState(VVTK_Recorder_Stop),\r
+  myNbFPS(5.5),\r
+  myQuality(100),\r
+  myProgressiveMode(true),\r
+  myUseSkippedFrames(true),\r
+  myErrorStatus(0),\r
+  myCommand(vtkCallbackCommand::New()),\r
+  myPriority(0.0),\r
+  myTimeStart(0.0),\r
+  myFrameIndex(0),\r
+  myPaused(0),\r
+  myFilter(vtkWindowToImageFilter::New()),\r
+  myWriterMgr(new VVTK_ImageWriterMgr),\r
+  myNbWrittenFrames(0),\r
+  myNameAVIMaker("jpeg2yuv")\r
+{\r
+  myCommand->SetClientData(this); \r
+  myCommand->SetCallback(VVTK_Recorder::ProcessEvents);\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+VVTK_Recorder\r
+::~VVTK_Recorder()\r
+{\r
+  myCommand->Delete();\r
+  myFilter->Delete();\r
+  delete myWriterMgr;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::CheckExistAVIMaker()\r
+{\r
+  myErrorStatus = 0;\r
+  using namespace std;\r
+  ostringstream aStream;\r
+  aStream<<"which "<<myNameAVIMaker<<" >& /dev/null";\r
+  std::string anAVIMakeCheck = aStream.str();\r
+  int iErr = system(anAVIMakeCheck.c_str());\r
+  if(iErr != 0)\r
+    myErrorStatus = 127;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::SetName(const char* theName)\r
+{\r
+  myName = theName;\r
+}\r
+\r
+const char* \r
+VVTK_Recorder::Name() const\r
+{\r
+  return myName.c_str();\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::SetNbFPS(const double theNbFPS)\r
+{\r
+  myNbFPS = theNbFPS;\r
+}\r
+\r
+double\r
+VVTK_Recorder\r
+::NbFPS() const\r
+{\r
+  return myNbFPS;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::SetQuality(int theQuality)\r
+{\r
+  myQuality = theQuality;\r
+}\r
+\r
+int\r
+VVTK_Recorder\r
+::GetQuality() const\r
+{\r
+  return myQuality;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void \r
+VVTK_Recorder\r
+::SetRenderWindow(vtkRenderWindow* theRenderWindow)\r
+{\r
+  myRenderWindow = theRenderWindow;\r
+}\r
+\r
+vtkRenderWindow* \r
+VVTK_Recorder\r
+::RenderWindow()\r
+{\r
+  return myRenderWindow;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::SetProgressiveMode(bool theProgressiveMode)\r
+{\r
+  myProgressiveMode = theProgressiveMode;\r
+}\r
+\r
+bool\r
+VVTK_Recorder\r
+::GetProgressiveMode() const\r
+{\r
+  return myProgressiveMode;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::SetUseSkippedFrames(bool theUseSkippedFrames)\r
+{\r
+  myUseSkippedFrames = theUseSkippedFrames;\r
+}\r
+\r
+bool\r
+VVTK_Recorder\r
+::UseSkippedFrames() const\r
+{\r
+  return myUseSkippedFrames;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+int\r
+VVTK_Recorder\r
+::ErrorStatus() const\r
+{\r
+  return myErrorStatus;\r
+}\r
+\r
+int\r
+VVTK_Recorder\r
+::State() const\r
+{\r
+  return myState;\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::ProcessEvents(vtkObject* vtkNotUsed(theObject), \r
+               unsigned long theEvent,\r
+               void* theClientData, \r
+               void* vtkNotUsed(theCallData))\r
+{\r
+  if(vtkObject* anObj = reinterpret_cast<vtkObject*>(theClientData)){ \r
+    if(VVTK_Recorder* aSelf = dynamic_cast<VVTK_Recorder*>(anObj)){\r
+      if(theEvent==vtkCommand::EndEvent){\r
+       if(aSelf->State() == VVTK_Recorder::VVTK_Recorder_Record){\r
+         aSelf->DoRecord();\r
+       }\r
+      }\r
+    }\r
+  }\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::Record()\r
+{\r
+  if(myState == VVTK_Recorder_Stop){\r
+    if(myRenderWindow){\r
+      myState = VVTK_Recorder_Record;\r
+      myFilter->SetInput(myRenderWindow);\r
+      myFrameIndex = -1;\r
+      myNbWrittenFrames = 0;\r
+      myRenderWindow->RemoveObserver(myCommand);\r
+      myRenderWindow->AddObserver(vtkCommand::EndEvent,\r
+                                  myCommand,\r
+                                  myPriority);\r
+      myRenderWindow->Render();\r
+    }\r
+  }\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::Stop()\r
+{\r
+  QApplication::setOverrideCursor( Qt::waitCursor );\r
+\r
+  if(myState == VVTK_Recorder_Record){ \r
+    if(!myPaused)\r
+      DoRecord();\r
+\r
+    myWriterMgr->Stop();\r
+\r
+    if(myUseSkippedFrames)\r
+      AddSkippedFrames();\r
+\r
+    myFrameIndexes.clear();\r
+\r
+    MakeFileAVI();\r
+  }\r
+  myState = VVTK_Recorder_Stop;\r
+  myPaused = 0;\r
+\r
+  QApplication::restoreOverrideCursor();\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::Pause()\r
+{\r
+  myPaused = myPaused ? 0 : 1;\r
+  if(myPaused && !myFrameIndexes.empty()){\r
+    size_t aLastId = myFrameIndexes.size() - 1;\r
+    myFrameIndexes[aLastId] *= -1;\r
+  }\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::DoRecord()\r
+{\r
+  if(myPaused)\r
+    return;\r
+\r
+  if(myFrameIndex < 0){\r
+    myFrameIndex = 0;\r
+    myTimeStart = vtkTimerLog::GetCurrentTime();\r
+  }else{\r
+    double aTimeNow = vtkTimerLog::GetCurrentTime();\r
+    double aDelta = aTimeNow - myTimeStart;\r
+    if(aDelta < 0.0)\r
+      return;\r
+\r
+    int aFrameIndex = int(aDelta*myNbFPS);\r
+    if(aFrameIndex == myFrameIndex)\r
+      return;\r
+\r
+    myFrameIndex = aFrameIndex;\r
+  }\r
+\r
+  myFrameIndexes.push_back(myFrameIndex);\r
+  if(MYDEBUG) cout<<"VVTK_Recorder::DoRecord - myFrameIndex = "<<myFrameIndex<<endl;\r
+\r
+  myRenderWindow->RemoveObserver(myCommand);\r
+  myFilter->Modified();\r
+\r
+  std::string aName;\r
+  GetNameJPEG(myName,myFrameIndex,aName);\r
+\r
+  PreWrite();\r
+\r
+  vtkImageData *anImageData = vtkImageData::New(); \r
+  anImageData->DeepCopy(myFilter->GetOutput());\r
+\r
+  myWriterMgr->StartImageWriter(anImageData,aName,myProgressiveMode,myQuality);\r
+  myNbWrittenFrames++;\r
+\r
+  myRenderWindow->AddObserver(vtkCommand::EndEvent,\r
+                              myCommand,\r
+                              myPriority);\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::PreWrite()\r
+{\r
+  vtkImageData *anImageData = myFilter->GetOutput();\r
+  //\r
+  if(!anImageData){\r
+    myErrorStatus = 20;\r
+    return;\r
+  }\r
+  anImageData->UpdateInformation();\r
+  int *anExtent = anImageData->GetWholeExtent();\r
+  anImageData->SetUpdateExtent(anExtent[0], anExtent[1],\r
+                              anExtent[2], anExtent[3],\r
+                              0,0);\r
+  anImageData->UpdateData();\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::AddSkippedFrames()\r
+{\r
+  myErrorStatus = 0;\r
+\r
+  if(myFrameIndexes.size() < 2)\r
+    return;\r
+\r
+  size_t anId = 0, anEnd = myFrameIndexes.size() - 1;\r
+  for(; anId < anEnd; anId++){\r
+    int aStartIndex = myFrameIndexes[anId];\r
+    if(aStartIndex < 0)\r
+      continue;\r
+\r
+    int aFinishIndex = abs(myFrameIndexes[anId + 1]);\r
+    if(aStartIndex + 1 == aFinishIndex)\r
+      continue;\r
+\r
+    std::string anInitialName;\r
+    std::ostringstream aStream;\r
+    GetNameJPEG(myName,aStartIndex,anInitialName);\r
+    for(int anIndex = aStartIndex + 1; anIndex < aFinishIndex; anIndex++){\r
+      myNbWrittenFrames++;\r
+      std::string anCurrentName;\r
+      GetNameJPEG(myName,anIndex,anCurrentName);\r
+      aStream<<"ln -s "<< anInitialName<<" "<<anCurrentName<<";";\r
+      if(anIndex + 1 < aFinishIndex)\r
+       aStream<<" \\";\r
+      aStream<<endl;\r
+    }\r
+    std::string aString(aStream.str());\r
+    system(aString.c_str());\r
+    if(MYDEBUG) cout<<"VVTK_Recorder::AddSkippedFrames - "<<aString<<endl;\r
+  }\r
+}\r
+\r
+\r
+//----------------------------------------------------------------------------\r
+void\r
+VVTK_Recorder\r
+::MakeFileAVI()\r
+{\r
+  myErrorStatus = 0;\r
+  std::ostringstream aStream;\r
+  aStream<<myNameAVIMaker<<\r
+    " -I p"<<\r
+    " -v 0"<<\r
+    //" -f "<<int(myNbFPS)<<" "<<\r
+    " -f "<<myNbFPS<<" "<<\r
+    " -n "<<myNbWrittenFrames<<" "<<\r
+    " -j "<<myName<<"_\%06d.jpeg "<<\r
+    "| yuv2lav"<<\r
+    " -o "<<myName;\r
+   \r
+  std::string aString(aStream.str());\r
+  myErrorStatus = system(aString.c_str());\r
+\r
+  if(MYDEBUG) cout<<"VVTK_Recorder::MakeFileAVI - "<<aString<<endl;\r
+\r
+  QFileInfo aFileInfo(myName);\r
+  QString aDirPath = aFileInfo.dirPath(TRUE);\r
+  QString aBaseName = aFileInfo.fileName();\r
+  QString aCommand = \r
+    QString("(cd ") + aDirPath + \r
+    "; ls " +\r
+    " | egrep '" + aBaseName + "_[0-9]*.jpeg'" +\r
+    " | xargs rm " +\r
+    ")";\r
+\r
+  if(MYDEBUG) cout<<"VVTK_Recorder::MakeFileAVI - "<<aCommand.latin1()<<endl;\r
+  system(aCommand.latin1());\r
+}\r
diff --git a/src/VVTK/VVTK_Recorder.h b/src/VVTK/VVTK_Recorder.h
new file mode 100755 (executable)
index 0000000..82d39c2
--- /dev/null
@@ -0,0 +1,166 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop\r
+//\r
+//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS \r
+// \r
+//  This library is free software; you can redistribute it and/or \r
+//  modify it under the terms of the GNU Lesser General Public \r
+//  License as published by the Free Software Foundation; either \r
+//  version 2.1 of the License. \r
+// \r
+//  This library is distributed in the hope that it will be useful, \r
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of \r
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU \r
+//  Lesser General Public License for more details. \r
+// \r
+//  You should have received a copy of the GNU Lesser General Public \r
+//  License along with this library; if not, write to the Free Software \r
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA \r
+// \r
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org \r
+//\r
+//\r
+//\r
+//  File   : \r
+//  Author : \r
+//  Module : SALOME\r
+//  $Header$\r
+\r
+#ifndef _VVTK_Recorder_Header_File_\r
+#define _VVTK_Recorder_Header_File_\r
+\r
+#include <list>\r
+#include <string>\r
+#include <vector>\r
+\r
+#include <vtkObject.h>\r
+\r
+class vtkRenderWindow;\r
+class vtkCallbackCommand;\r
+class vtkWindowToImageFilter;\r
+class VVTK_ImageWriterMgr;\r
+//\r
+class VVTK_Recorder : public vtkObject \r
+{\r
+ protected:\r
+  enum State {\r
+    VVTK_Recorder_Unknown=0,\r
+    VVTK_Recorder_Record,\r
+    VVTK_Recorder_Stop\r
+  };\r
+  \r
+ public:\r
+  static VVTK_Recorder *New();\r
+  vtkTypeRevisionMacro(VVTK_Recorder,vtkObject);\r
+\r
+  void\r
+  SetRenderWindow(vtkRenderWindow* theRenderWindow);\r
+\r
+  vtkRenderWindow* \r
+  RenderWindow();\r
+\r
+  void \r
+  SetName(const char *theName);\r
+\r
+  const char* \r
+  Name() const;\r
+\r
+  void\r
+  SetNbFPS(const double theNbFPS);\r
+\r
+  double\r
+  NbFPS() const;\r
+\r
+  void\r
+  SetQuality(int theQuality);\r
+\r
+  int\r
+  GetQuality() const;\r
+\r
+  void\r
+  SetProgressiveMode(bool theProgressiveMode);\r
+\r
+  bool\r
+  GetProgressiveMode() const;\r
+\r
+  void\r
+  SetUseSkippedFrames(bool theUseSkippedFrames);\r
+\r
+  bool\r
+  UseSkippedFrames() const;\r
+\r
+  void\r
+  Record();\r
+\r
+  void\r
+  Pause();\r
+\r
+  void\r
+  Stop();\r
+\r
+  int\r
+  State() const;\r
+\r
+  int  \r
+  ErrorStatus() const;\r
+\r
+  void\r
+  CheckExistAVIMaker();\r
+\r
+protected :\r
+  VVTK_Recorder();\r
+\r
+  ~VVTK_Recorder();\r
+\r
+  void\r
+  DoRecord();\r
+\r
+  void\r
+  MakeFileAVI();\r
+\r
+  void\r
+  AddSkippedFrames();\r
+\r
+  void\r
+  PreWrite();\r
+\r
+  static\r
+  void\r
+  ProcessEvents(vtkObject* theObject, \r
+               unsigned long theEvent,\r
+               void* theClientData, \r
+               void* theCallData);\r
+\r
+protected :\r
+  int myState;\r
+  int myPaused;\r
+  int myErrorStatus;\r
+\r
+  float myPriority;\r
+  double myTimeStart;\r
+\r
+  int myFrameIndex;\r
+  int myNbWrittenFrames;\r
+\r
+  double myNbFPS;\r
+  int myQuality;\r
+  bool myProgressiveMode;\r
+\r
+  typedef std::vector<int> TFrameIndexes;\r
+  TFrameIndexes myFrameIndexes;\r
+  bool myUseSkippedFrames;\r
+\r
+  std::string myName;\r
+  std::string myNameAVIMaker;\r
+\r
+  vtkCallbackCommand *myCommand;\r
+  vtkRenderWindow *myRenderWindow;\r
+  vtkWindowToImageFilter *myFilter;\r
+  VVTK_ImageWriterMgr *myWriterMgr;\r
+\r
+\r
+private:\r
+  VVTK_Recorder(const VVTK_Recorder&);  //Not implemented\r
+  void operator=(const VVTK_Recorder&); //Not implemented\r
+};\r
+#endif\r
diff --git a/src/VVTK/VVTK_RecorderDlg.cxx b/src/VVTK/VVTK_RecorderDlg.cxx
new file mode 100644 (file)
index 0000000..b188c99
--- /dev/null
@@ -0,0 +1,183 @@
+//  VISU VISUGUI : GUI of VISU 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   : VVTK_RecorderDlg.cxx
+//  Author : Oleg UVAROV
+//  Module : VISU
+
+#include "VVTK_RecorderDlg.h"
+#include "VVTK_Recorder.h"
+
+#include "SUIT_FileDlg.h"
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Session.h"
+
+#include "QtxDblSpinBox.h"
+#include "QtxIntSpinBox.h"
+
+#include <qcheckbox.h>
+#include <qcombobox.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+
+/*!
+ * Constructor
+ */
+VVTK_RecorderDlg::VVTK_RecorderDlg( QWidget* theParent, VVTK_Recorder* theRecorder ):
+  QDialog( theParent, "VVTK_RecorderDlg", false ),
+  myRecorder( theRecorder )
+{
+  setCaption( tr( "DLG_RECORDER_TITLE" ) );
+
+  SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+
+  QVBoxLayout* aTopLayout = new QVBoxLayout( this );
+  aTopLayout->setSpacing( 6 );
+  aTopLayout->setMargin( 6 );
+  aTopLayout->setAutoAdd( true );
+
+  // Settings
+  QGroupBox* mySettingsBox = new QGroupBox( tr( "SETTINGS" ), this );
+  mySettingsBox->setColumnLayout( 0, Qt::Vertical );
+  mySettingsBox->layout()->setSpacing( 0 );
+  mySettingsBox->layout()->setMargin( 0 );
+
+  QGridLayout* aSettingsLayout = new QGridLayout( mySettingsBox->layout() );
+  aSettingsLayout->setSpacing( 6 );
+  aSettingsLayout->setMargin( 11 );
+
+  QLabel* aFileNameLabel = new QLabel( tr( "FILE_NAME" ), mySettingsBox );
+  myFileNameLineEdit = new QLineEdit( mySettingsBox );
+  myFileNameLineEdit->setMinimumWidth( 250 );
+  myFileNameLineEdit->setReadOnly( true );
+  /*
+  QPushButton* aFileNameButton = new QPushButton( mySettingsBox );
+  aFileNameButton->setAutoDefault( false );
+  aFileNameButton->setPixmap( aResourceMgr->loadPixmap( "VISU", tr( "ICON_LOAD_TEXTURE" ) ) );
+  connect( aFileNameButton, SIGNAL( clicked() ), this, SLOT( onBrowseFile() ) );
+  */
+  QLabel* aRecordingModeLabel = new QLabel( tr( "RECORDING_MODE" ), mySettingsBox );
+  myRecordingModeComboBox = new QComboBox( mySettingsBox );
+  myRecordingModeComboBox->insertItem( tr( "SKIPPED_FRAMES" ) );
+  myRecordingModeComboBox->insertItem( tr( "ALL_DISLPAYED_FRAMES" ) );
+  myRecordingModeComboBox->setCurrentItem( aResourceMgr->integerValue( "VISU", "recorder_mode", 1 ) );
+
+  QLabel* aFPSLabel = new QLabel( tr( "FPS" ), mySettingsBox );
+  myFPSSpinBox = new QtxDblSpinBox( 0.1, 100.0, 1.0, mySettingsBox );
+  myFPSSpinBox->setValue( aResourceMgr->doubleValue( "VISU", "recorder_fps", 10.0 ) );
+
+  QLabel* aQualityLabel = new QLabel( tr( "QUALITY" ), mySettingsBox );
+  myQualitySpinBox = new QtxIntSpinBox( 1, 100, 1, mySettingsBox );
+  myQualitySpinBox->setValue( aResourceMgr->integerValue( "VISU", "recorder_quality", 80 ) );
+
+  myProgressiveCheckBox = new QCheckBox( tr( "PROGRESSIVE" ), mySettingsBox );
+  myProgressiveCheckBox->setChecked( aResourceMgr->booleanValue( "VISU", "recorder_progressive", false ) );
+
+  aSettingsLayout->addWidget( aFileNameLabel, 0, 0 );
+  aSettingsLayout->addMultiCellWidget( myFileNameLineEdit, 1, 1, 0, 1 );
+  //aSettingsLayout->addWidget( aFileNameButton, 1, 2 );
+  aSettingsLayout->addWidget( aRecordingModeLabel, 2, 0 );
+  aSettingsLayout->addWidget( myRecordingModeComboBox, 2, 1 );
+  aSettingsLayout->addWidget( aFPSLabel, 3, 0 );
+  aSettingsLayout->addWidget( myFPSSpinBox, 3, 1 );
+  aSettingsLayout->addWidget( aQualityLabel, 4, 0 );
+  aSettingsLayout->addWidget( myQualitySpinBox, 4, 1 );
+  aSettingsLayout->addWidget( myProgressiveCheckBox, 5, 0 );
+
+  // Start / Close
+  QGroupBox* CommonGroup = new QGroupBox( this );
+  CommonGroup->setColumnLayout(0, Qt::Vertical );
+  CommonGroup->layout()->setSpacing( 0 );
+  CommonGroup->layout()->setMargin( 0 );
+  QGridLayout* CommonGroupLayout = new QGridLayout( CommonGroup->layout() );
+  CommonGroupLayout->setAlignment( Qt::AlignTop );
+  CommonGroupLayout->setSpacing( 6 );
+  CommonGroupLayout->setMargin( 11 );
+
+  QPushButton* aStartButton = new QPushButton( tr( "START" ), CommonGroup );
+  aStartButton->setAutoDefault( true );
+  aStartButton->setDefault( true );
+  CommonGroupLayout->addWidget( aStartButton, 0, 0 );
+  CommonGroupLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 );
+
+  QPushButton* aCloseButton = new QPushButton( tr( "CLOSE" ), CommonGroup );
+  aCloseButton->setAutoDefault( true );
+  CommonGroupLayout->addWidget( aCloseButton, 0, 2 );
+
+  connect( aStartButton, SIGNAL( clicked() ), this, SLOT( onStart() ) );
+  connect( aCloseButton, SIGNAL( clicked() ), this, SLOT( onClose() ) );
+}
+
+VVTK_RecorderDlg::~VVTK_RecorderDlg()
+{
+}
+
+void VVTK_RecorderDlg::show()
+{
+  if( onBrowseFile() )
+    QWidget::show();
+}
+
+void VVTK_RecorderDlg::onStart()
+{
+  if( myFileName.isNull() )
+    return;
+
+  myRecorder->SetName( myFileName.latin1() );
+
+  myRecorder->SetUseSkippedFrames( myRecordingModeComboBox->currentItem() == 0 );
+  myRecorder->SetNbFPS( myFPSSpinBox->value() );
+  myRecorder->SetQuality( myQualitySpinBox->value() );
+  myRecorder->SetProgressiveMode( myProgressiveCheckBox->isChecked() );
+
+  accept();
+
+}
+
+void VVTK_RecorderDlg::onClose()
+{
+  reject();
+}
+
+bool VVTK_RecorderDlg::onBrowseFile()
+{
+  QString aRootDir = QString( getenv( "VISU_ROOT_DIR") );
+
+  QStringList aFilter;
+  aFilter.append( tr( "FLT_AVI_FILES" ) );
+  aFilter.append( tr( "FLT_ALL_FILES" ) );
+
+  QString aFileName = SUIT_FileDlg::getFileName( this, getenv( "HOME" ), aFilter,
+                                                tr( "FILE_NAME" ), false );
+
+  if( aFileName.isNull() )
+    return false;
+
+  myFileName = aFileName;
+  myFileNameLineEdit->setText( aFileName.section( '/', -1 ) );
+
+  return true;
+}
diff --git a/src/VVTK/VVTK_RecorderDlg.h b/src/VVTK/VVTK_RecorderDlg.h
new file mode 100644 (file)
index 0000000..f46ef1b
--- /dev/null
@@ -0,0 +1,80 @@
+//  VISU VISUGUI : GUI of VISU 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   : VVTK_RecorderDlg.h
+//  Author : Oleg UVAROV
+//  Module : VISU
+//  $Header$
+
+#ifndef VVTK_RECORDERDLG_H
+#define VVTK_RECORDERDLG_H
+
+#include <qdatetime.h>
+#include <qdialog.h>
+
+class QCheckBox;
+class QComboBox;
+class QGroupBox;
+class QLCDNumber;
+class QLineEdit;
+class QPushButton;
+class QTimer;
+
+class QtxDblSpinBox;
+class QtxIntSpinBox;
+
+class VVTK_Recorder;
+
+//! Recorder Dialog.
+class VVTK_RecorderDlg : public QDialog
+{
+  Q_OBJECT
+
+public:
+  VVTK_RecorderDlg( QWidget*, VVTK_Recorder* );
+  ~VVTK_RecorderDlg();
+
+  virtual void     show();
+
+  QString          fileName() const { return myFileName; }
+
+protected slots:
+  void             onStart();
+  void             onClose();
+
+  bool             onBrowseFile();
+
+private:
+  VVTK_Recorder*   myRecorder;
+  QString          myFileName;
+
+  QLineEdit*       myFileNameLineEdit;
+
+  QComboBox*       myRecordingModeComboBox;
+  QtxDblSpinBox*   myFPSSpinBox;
+  QtxIntSpinBox*   myQualitySpinBox;
+  QCheckBox*       myProgressiveCheckBox;
+
+};
+
+#endif
diff --git a/src/VVTK/VVTK_Renderer.cxx b/src/VVTK/VVTK_Renderer.cxx
new file mode 100644 (file)
index 0000000..484eff9
--- /dev/null
@@ -0,0 +1,432 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   :
+//  Author :
+//  Module :
+//  $Header$
+
+#include "VVTK_Renderer.h"
+
+#include "VISU_GaussPtsAct.h"
+#include "VISU_GaussPointsPL.hxx"
+#include "VISU_WidgetCtrl.hxx"
+#include "VISU_PlanesWidget.hxx"
+#include "VISU_SphereWidget.hxx"
+
+#include <vtkObjectFactory.h>
+#include <vtkProperty.h>
+#include <vtkPointPicker.h>
+
+#include <vtkRenderWindowInteractor.h>
+#include <vtkCallbackCommand.h>
+#include <vtkCommand.h>
+#include <vtkPlane.h>
+
+#include <vtkPropCollection.h>
+#include <vtkProp.h>
+#include <vtkActor.h>
+#include <vtkMapper.h>
+#include <vtkPolyDataMapper.h>
+#include <vtkPolyData.h>
+#include <vtkTextMapper.h>
+#include <vtkTextActor.h> 
+#include <vtkTextProperty.h>
+#include <vtkRenderer.h>
+
+#include <vtkPropCollection.h>
+#include <vtkProp.h>
+#include <vtkActor.h>
+#include <vtkMapper.h>
+#include <vtkPolyDataMapper.h>
+#include <vtkPolyData.h>
+#include <vtkTextMapper.h>
+#include <vtkTextActor.h> 
+#include <vtkTextProperty.h>
+#include <vtkRenderer.h>
+
+#include "utilities.h"
+
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+#else
+static int MYDEBUG = 0;
+#endif
+
+//======================================================================
+class VISU_FPSActor : public vtkTextActor 
+{
+public:
+  vtkTypeMacro( VISU_FPSActor, vtkTextActor);
+  static
+  VISU_FPSActor* 
+  New();
+
+  virtual
+  int
+  RenderOpaqueGeometry(vtkViewport *theViewport);
+};
+
+//======================================================================
+vtkStandardNewMacro(VISU_FPSActor);
+
+//======================================================================
+// function: RenderOpaqueGeometry
+// purpose :
+//======================================================================
+int
+VISU_FPSActor
+::RenderOpaqueGeometry(vtkViewport *theViewport) 
+{
+  // It's impossible to render opaque geometry of text actor
+  // if the size of the viewport is less than 1.0
+  int *size = theViewport->GetSize();
+  if( size[0] <= 1.0 || size[1] <= 1.0 )
+    return 1;
+
+  if(vtkRenderer *aRenderer = dynamic_cast<vtkRenderer*>(theViewport)){
+    static float aTol = 1.e-6;
+    float aLastRenderTimeInSeconds = aRenderer->GetLastRenderTimeInSeconds();
+    if(aLastRenderTimeInSeconds > aTol){
+      size_t aNumberOfCells = 0;
+      if(vtkActorCollection *anActorCollection = aRenderer->GetActors()){
+       anActorCollection->InitTraversal();
+       while(vtkActor *anActor = anActorCollection->GetNextActor()){
+         if(anActor->GetVisibility()){
+           if(SALOME_Actor *aSActor = dynamic_cast<SALOME_Actor*>(anActor)){
+             if(vtkMapper *aMapper = aSActor->GetMapper()){
+               if(vtkDataSet *aDataSet = aMapper->GetInput()){
+                 aNumberOfCells += aDataSet->GetNumberOfCells();
+               }
+             }
+           }
+         }
+       }
+      }
+      std::ostringstream aStr;
+      float aFPS = 1.0 / aLastRenderTimeInSeconds;
+      aStr<<"FPS: "<<aFPS<<"; NumberOfCells: "<<aNumberOfCells;
+      std::string anInput = aStr.str();
+      SetInput(anInput.c_str());
+      return Superclass::RenderOpaqueGeometry(theViewport);
+    }
+  }
+  return 1;
+}
+
+//----------------------------------------------------------------------------
+vtkStandardNewMacro(VVTK_Renderer);
+
+//----------------------------------------------------------------------------
+VVTK_Renderer
+::VVTK_Renderer():
+  myFPSActor(VISU_FPSActor::New()),
+  myInsideCursorSettings(NULL),
+  myPickingSettings(NULL),
+  myGaussPointPicker(vtkPointPicker::New()),
+  myGaussPreHighlightProperty(vtkProperty::New()),
+  myGaussHighlightProperty(vtkProperty::New())
+{
+  if(MYDEBUG) INFOS("VVTK_Renderer() - "<<this);
+
+  myFPSActor->Delete();
+
+  vtkTextMapper* aTextMapper = vtkTextMapper::New();
+  vtkTextProperty *aTextProperty = aTextMapper->GetTextProperty();
+  aTextProperty->SetJustificationToRight();
+  aTextProperty->SetVerticalJustificationToTop();
+  aTextProperty->SetFontSize(10);
+
+  myFPSActor->SetPickable(false); 
+  myFPSActor->ScaledTextOff();
+  myFPSActor->SetAlignmentPoint(8);
+  myFPSActor->SetPosition2 (1., 1.);
+  myFPSActor->SetMapper(aTextMapper);
+  aTextMapper->Delete();
+
+  GetDevice()->AddActor2D(myFPSActor.GetPointer());
+
+  myGaussPointPicker->Delete();
+
+  myGaussPreHighlightProperty->Delete();
+  myGaussPreHighlightProperty->SetColor(0,1,1);
+
+  myGaussHighlightProperty->Delete();
+  myGaussHighlightProperty->SetColor(1,1,0);
+
+}
+
+VVTK_Renderer
+::~VVTK_Renderer()
+{
+  if(MYDEBUG) INFOS("~VVTK_Renderer() - "<<this);
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_Renderer
+::AddActor(VTKViewer_Actor* theActor)
+{
+  Superclass::AddActor(theActor);
+  if(VISU_GaussPtsAct* anActor = dynamic_cast<VISU_GaussPtsAct*>(theActor)){
+    anActor->SetPointPicker(myGaussPointPicker.GetPointer());
+    anActor->SetPreHighlightProperty(myGaussPreHighlightProperty.GetPointer());
+    anActor->SetHighlightProperty(myGaussHighlightProperty.GetPointer());
+
+    anActor->SetInsideCursorSettings(myInsideCursorSettings);
+    anActor->SetPickingSettings(myPickingSettings);
+  }
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_Renderer
+::RemoveActor(VTKViewer_Actor* theActor)
+{
+  Superclass::RemoveActor(theActor);
+  if(VISU_GaussPtsAct* anActor = dynamic_cast<VISU_GaussPtsAct*>(theActor)){
+    anActor->SetPointPicker(NULL);
+    anActor->SetPreHighlightProperty(NULL);
+    anActor->SetHighlightProperty(NULL);
+
+    anActor->SetInsideCursorSettings(NULL);
+    anActor->SetPickingSettings(NULL);
+  }
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_Renderer
+::SetInsideCursorSettings(VISU_InsideCursorSettings* theInsideCursorSettings)
+{
+  myInsideCursorSettings = theInsideCursorSettings;
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_Renderer
+::SetPickingSettings(VISU_PickingSettings* thePickingSettings)
+{
+  myPickingSettings = thePickingSettings;
+}
+
+
+//----------------------------------------------------------------------------
+vtkStandardNewMacro(VVTK_Renderer1);
+
+//----------------------------------------------------------------------------
+VVTK_Renderer1::VVTK_Renderer1():
+  //myImplicitFunctionWidget(VISU_ImplicitFunctionWidget::New()),
+  myWidgetCtrl(VISU_WidgetCtrl::New()),
+  myOutsideCursorSettings(NULL)
+{
+  if(MYDEBUG) INFOS("VVTK_Renderer1() - "<<this);
+
+  //myImplicitFunctionWidget->SetPlaceFactor(1.1);
+  myWidgetCtrl->SetPlaceFactor(1.1);
+  //
+  VISU_PlanesWidget *pPlanesWidget=myWidgetCtrl->GetPlanesWidget();
+  pPlanesWidget->SetOutlineTranslation(false);
+  vtkProperty* aSelectedPlaneProperty = pPlanesWidget->GetSelectedPlaneProperty();
+  vtkProperty* aPlaneProperty = pPlanesWidget->GetPlaneProperty();
+  aPlaneProperty->SetOpacity(aSelectedPlaneProperty->GetOpacity()*1.5);
+  //
+  myWidgetCtrl->Delete();
+}
+
+VVTK_Renderer1
+::~VVTK_Renderer1()
+{
+  if(MYDEBUG) INFOS("~VVTK_Renderer1() - "<<this);
+  myWidgetCtrl->SetInteractor(NULL);
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_Renderer1
+::AddActor(VTKViewer_Actor* theActor)
+{
+  Superclass::AddActor(theActor);
+  if(VISU_GaussPtsAct1* anActor = dynamic_cast<VISU_GaussPtsAct1*>(theActor)){
+    anActor->SetWidgetCtrl(GetWidgetCtrl());
+    anActor->SetOutsideCursorSettings(myOutsideCursorSettings);
+    AdjustWidgetCtrl();
+  }
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_Renderer1
+::RemoveActor(VTKViewer_Actor* theActor)
+{
+  Superclass::RemoveActor(theActor);
+  if(VISU_GaussPtsAct1* anActor = dynamic_cast<VISU_GaussPtsAct1*>(theActor)){
+    anActor->SetWidgetCtrl(NULL);
+    anActor->SetOutsideCursorSettings(NULL);
+    AdjustWidgetCtrl();
+  }
+}
+//----------------------------------------------------------------------------
+void VVTK_Renderer1::AdjustWidgetCtrl()
+{
+  if(SVTK_Renderer::OnAdjustActors()){
+    VISU_PlanesWidget *pPlanesWidget=myWidgetCtrl->GetPlanesWidget();
+    pPlanesWidget->InitialPlaceWidget(myBndBox);
+    pPlanesWidget->SetOrigin(0.5*(myBndBox[1] + myBndBox[0]),
+                            0.5*(myBndBox[3] + myBndBox[2]),
+                            0.5*(myBndBox[5] + myBndBox[4]));
+    //
+    VISU_SphereWidget *pSphereWidget=myWidgetCtrl->GetSphereWidget();
+    pSphereWidget->SetCenter(0.5*(myBndBox[1] + myBndBox[0]),
+                            0.5*(myBndBox[3] + myBndBox[2]),
+                            0.5*(myBndBox[5] + myBndBox[4]));
+    float dX, dXmin=1.e20;
+    for (int i=0; i<3; ++i) {
+      dX=myBndBox[2*i+1]-myBndBox[2*i];
+      if (dX<dXmin){
+       dXmin=dX;
+      }
+    }
+    pSphereWidget->SetRadius(dXmin);
+  }
+}
+//----------------------------------------------------------------------------
+void 
+VVTK_Renderer1
+::Initialize(vtkRenderWindowInteractor* theInteractor,
+            SVTK_Selector* theSelector)
+{
+  SVTK_Renderer::Initialize(theInteractor,theSelector);
+  myWidgetCtrl->SetInteractor(theInteractor);
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_Renderer1
+::SetOutsideCursorSettings(VISU_OutsideCursorSettings* theOutsideCursorSettings)
+{
+  myOutsideCursorSettings = theOutsideCursorSettings;
+}
+
+//----------------------------------------------------------------------------
+VISU_WidgetCtrl* VVTK_Renderer1::GetWidgetCtrl()
+{
+  return myWidgetCtrl.GetPointer();
+}
+
+//----------------------------------------------------------------------------
+bool
+VVTK_Renderer1
+::OnAdjustActors()
+{
+  return SVTK_Renderer::OnAdjustActors();
+}
+
+
+//----------------------------------------------------------------------------
+vtkStandardNewMacro(VVTK_Renderer2);
+
+//----------------------------------------------------------------------------
+VVTK_Renderer2
+::VVTK_Renderer2():
+  myEventCallbackCommand(vtkCallbackCommand::New())
+{
+  if(MYDEBUG) INFOS("VVTK_Renderer2() - "<<this);
+  myEventCallbackCommand->Delete();
+
+  myPriority = 0.0;
+  myEventCallbackCommand->SetClientData(this); 
+  myEventCallbackCommand->SetCallback(VVTK_Renderer2::ProcessEvents);
+}
+
+VVTK_Renderer2
+::~VVTK_Renderer2()
+{
+  if(MYDEBUG) INFOS("~VVTK_Renderer2() - "<<this);
+}
+
+//----------------------------------------------------------------------------
+void VVTK_Renderer2::SetWidgetCtrl(VISU_WidgetCtrl* theWidgetCtrl)
+{
+  theWidgetCtrl->AddObserver(vtkCommand::EndInteractionEvent, 
+                            myEventCallbackCommand.GetPointer(), 
+                            myPriority);
+  theWidgetCtrl->AddObserver(vtkCommand::EnableEvent, 
+                            myEventCallbackCommand.GetPointer(), 
+                            myPriority);
+  theWidgetCtrl->AddObserver(vtkCommand::DisableEvent, 
+                            myEventCallbackCommand.GetPointer(), 
+                            myPriority);
+  myWidgetCtrl = theWidgetCtrl;
+}
+
+void 
+VVTK_Renderer2
+::ProcessEvents(vtkObject* vtkNotUsed(theObject), 
+               unsigned long theEvent,
+               void* theClientData, 
+               void* vtkNotUsed(theCallData))
+{
+  VVTK_Renderer2* self = reinterpret_cast<VVTK_Renderer2*>(theClientData);
+
+  switch(theEvent){
+  case vtkCommand::EnableEvent:
+  case vtkCommand::EndInteractionEvent:
+    self->OnEndInteractionEvent();  
+    break;
+  }
+}
+
+void
+VVTK_Renderer2
+::OnEndInteractionEvent()
+{
+  AdjustActors();
+  myInteractor->Render();
+}
+
+
+//----------------------------------------------------------------------------
+void VVTK_Renderer2::AddActor(VTKViewer_Actor* theActor)
+{
+  if(VISU_GaussPtsAct1* anActor = dynamic_cast<VISU_GaussPtsAct1*>(theActor)){
+    if(VISU::TGaussPtsActorFactory* aFactory = anActor->GetGaussPtsFactory()){
+      if(VISU_GaussPtsAct2* anActor2 = aFactory->CloneActor(anActor)){
+       anActor2->SetWidgetCtrl(myWidgetCtrl);
+       Superclass::AddActor(anActor2);
+      }
+    }
+  }
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_Renderer2
+::RemoveActor(VTKViewer_Actor* theActor)
+{
+  using namespace VISU;  
+  if(VISU_GaussPtsAct2* anActor = dynamic_cast<VISU_GaussPtsAct2*>(theActor)){
+    anActor->SetWidgetCtrl(NULL);
+    Superclass::RemoveActor(theActor);
+  }
+}
diff --git a/src/VVTK/VVTK_Renderer.h b/src/VVTK/VVTK_Renderer.h
new file mode 100644 (file)
index 0000000..1f56688
--- /dev/null
@@ -0,0 +1,179 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   : 
+//  Author : 
+//  Module : SALOME
+//  $Header$
+
+#ifndef VVTK_Renderer_h
+#define VVTK_Renderer_h
+
+#include "VVTK.h"
+
+#include "SVTK_Renderer.h"
+
+class VISU_WidgetCtrl;
+class VISU_InsideCursorSettings;
+class VISU_OutsideCursorSettings;
+class VISU_PickingSettings;
+class VISU_FPSActor;
+
+class vtkPointPicker;
+class vtkImplicitFunction;
+
+//----------------------------------------------------------------------------
+//! To customize SVTK_Renderer according to VVTK functionality
+class VVTK_EXPORT VVTK_Renderer : public SVTK_Renderer
+{
+ public:
+  vtkTypeMacro(VVTK_Renderer,SVTK_Renderer);
+  static VVTK_Renderer* New();
+
+  //! Reimplement SVTK_Renderer::AddActor
+  /*!
+    Perform an additional action - apply picking settings on the published VISU_GaussPtsAct actors
+  */
+  virtual
+  void 
+  AddActor(VTKViewer_Actor* theActor);
+
+  //! Reimplement SVTK_Renderer::RemoveActor (remove additional settings)
+  virtual
+  void 
+  RemoveActor(VTKViewer_Actor* theActor);
+
+  //! To set VISU_PickingSettings to share them among all VISU_GaussPtsAct actors published into the view 
+  void
+  SetInsideCursorSettings(VISU_InsideCursorSettings* theInsideCursorSettings);
+
+  void
+  SetPickingSettings(VISU_PickingSettings* thePickingSettings);
+
+ protected:
+  VVTK_Renderer();
+  ~VVTK_Renderer();
+
+  VISU_PickingSettings* myPickingSettings; //! Keeps reference of the VISU_PickingSettings
+  VISU_InsideCursorSettings* myInsideCursorSettings; //! Keeps reference of the VISU_InsideCursorSettings
+  vtkSmartPointer<VISU_FPSActor> myFPSActor; //!< To show FPS of the rendering at run-time
+
+  vtkSmartPointer<vtkPointPicker> myGaussPointPicker;
+  vtkSmartPointer<vtkProperty>    myGaussPreHighlightProperty;
+  vtkSmartPointer<vtkProperty>    myGaussHighlightProperty;
+};
+
+
+//----------------------------------------------------------------------------
+//! To extend VVTK_Renderer to implement base view functionality
+class VVTK_EXPORT VVTK_Renderer1 : public VVTK_Renderer
+{
+ public:
+  vtkTypeMacro(VVTK_Renderer1,VVTK_Renderer);
+  static VVTK_Renderer1* New();
+
+  //! Reimplement SVTK_Renderer::Initialize
+  virtual
+  void 
+  Initialize(vtkRenderWindowInteractor* theInteractor,
+            SVTK_Selector* theSelector);
+
+  //! Reimplement VVTK_Renderer::AddActor to apply to the actor additional settings
+  virtual
+  void 
+  AddActor(VTKViewer_Actor* theActor);
+
+  //! Reimplement VVTK_Renderer::RemoveActor
+  virtual
+  void 
+  RemoveActor(VTKViewer_Actor* theActor);
+
+  //! To set VISU_PickingSettings to share them among all VISU_GaussPtsAct1 actors published into the view 
+  void
+  SetOutsideCursorSettings(VISU_OutsideCursorSettings* theOutsideCursorSettings);
+
+  VISU_WidgetCtrl*  GetWidgetCtrl();
+
+ protected:
+  VVTK_Renderer1();
+  ~VVTK_Renderer1();
+
+  //! Reimplement VVTK_Renderer::OnAdjustActors
+  virtual
+  bool
+  OnAdjustActors();
+
+  void AdjustWidgetCtrl();
+
+  vtkSmartPointer<VISU_WidgetCtrl> myWidgetCtrl;
+  VISU_OutsideCursorSettings* myOutsideCursorSettings;
+  vtkSmartPointer<VISU_FPSActor> myTextActor;
+};
+
+
+//----------------------------------------------------------------------------
+class VVTK_EXPORT VVTK_Renderer2 : public VVTK_Renderer
+{
+ public:
+  vtkTypeMacro(VVTK_Renderer2,VVTK_Renderer);
+  static VVTK_Renderer2* New();
+
+  //! Reimplement VVTK_Renderer::AddActor to apply to the actor additional settings
+  virtual
+  void 
+  AddActor(VTKViewer_Actor* theActor);
+
+  //! Reimplement VVTK_Renderer::RemoveActor
+  virtual
+  void 
+  RemoveActor(VTKViewer_Actor* theActor);
+
+  void SetWidgetCtrl(VISU_WidgetCtrl* theWidgetCtrl);
+
+  //! To handle vtkCommand::EndInteractionEvent to redraw the view
+  void
+  OnEndInteractionEvent();
+
+ protected:
+  VVTK_Renderer2();
+  ~VVTK_Renderer2();
+
+  //! Main process VTK event method
+  static
+  void
+  ProcessEvents(vtkObject* theObject, 
+               unsigned long theEvent,
+               void* theClientData, 
+               void* theCallData);
+
+  //! Used to process VTK events
+  vtkSmartPointer<vtkCallbackCommand> myEventCallbackCommand;
+
+  //! Priority at which events are processed
+  float myPriority;
+
+  VISU_WidgetCtrl* myWidgetCtrl;
+};
+
+
+#endif
diff --git a/src/VVTK/VVTK_SegmentationCursorDlg.cxx b/src/VVTK/VVTK_SegmentationCursorDlg.cxx
new file mode 100644 (file)
index 0000000..63487fe
--- /dev/null
@@ -0,0 +1,839 @@
+//  VISU VISUGUI : GUI of VISU component
+//
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : VVTK_SegmentationCursorDlg.cxx
+//  Author : Oleg Uvarov
+//  Module : VISU
+
+#include "VVTK_SegmentationCursorDlg.h"
+#include "VVTK_PrimitiveBox.h"
+#include "VVTK_SizeBox.h"
+
+#include "VISU_GaussPtsAct.h"
+#include "VISU_GaussPtsSettings.h"
+
+#include "VISU_WidgetCtrl.hxx"
+#include "VISU_PlanesWidget.hxx"
+#include "VISU_SphereWidget.hxx"
+
+#include "VISU_GaussPointsPL.hxx"
+#include "VISU_OpenGLPointSpriteMapper.hxx"
+
+#include "SUIT_MessageBox.h"
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Session.h"
+
+#include "SVTK_RenderWindowInteractor.h"
+
+#include <vtkActorCollection.h>
+#include <vtkCallbackCommand.h>
+#include <vtkObjectFactory.h>
+#include <vtkRenderer.h>
+#include <vtkRenderWindowInteractor.h>
+#include <vtkSmartPointer.h>
+#include <vtkImageData.h>
+
+#include "utilities.h"
+
+#include <qbuttongroup.h>
+#include <qcolordialog.h>
+#include <qfiledialog.h>
+#include <qgroupbox.h>
+#include <qlabel.h>
+#include <qlayout.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qradiobutton.h>
+#include <qtabwidget.h>
+#include <qvbox.h>
+
+#include "QtxAction.h"
+#include "QtxDblSpinBox.h"
+#include "QtxIntSpinBox.h"
+
+using namespace std;
+
+
+//----------------------------------------------------------------
+namespace VISU
+{
+  inline
+  QString
+  Image2VTI(const QString& theImageFileName)
+  {
+    QFileInfo aFileInfo(theImageFileName);
+    QString aFormat = aFileInfo.extension(FALSE);
+    QString aVTIName = QString("/tmp/") + getenv("USER")  + "-" + aFileInfo.baseName(TRUE) + ".vti";
+    QString aCommand = QString( "VISU_img2vti " ) + aFormat + " " +  theImageFileName + " " + aVTIName;
+
+    if(system( aCommand.latin1() ) == 0)
+      return aVTIName;
+
+    return QString::null;
+  }
+
+  inline
+  void
+  RemoveFile(const QString& theFileName)
+  {
+    if( !theFileName.isNull() ){
+      QString aCommand = QString( "rm -fr " ) + theFileName;
+      system( aCommand.latin1() );
+    }
+  }
+  
+  
+  TTextureValue
+  GetTexture(const QString& theMainTexture, 
+            const QString& theAlphaTexture)
+  {
+    typedef std::pair<std::string,std::string> TTextureKey;
+    typedef std::map<TTextureKey,TTextureValue> TTextureMap;
+    
+    static TTextureMap aTextureMap;
+    
+    TTextureValue aTextureValue;
+    TTextureKey aTextureKey(theMainTexture,theAlphaTexture);
+    TTextureMap::const_iterator anIter = aTextureMap.find(aTextureKey);
+    if(anIter != aTextureMap.end()){
+      aTextureValue = anIter->second;
+    }else{
+      QString aMainTextureVTI = Image2VTI(theMainTexture);
+      QString anAlphaTextureVTI = Image2VTI(theAlphaTexture);
+      
+      if( !aMainTextureVTI.isNull() && !anAlphaTextureVTI.isNull() ){
+       aTextureValue =
+         VISU_GaussPointsPL::MakeTexture( aMainTextureVTI.latin1(), 
+                                          anAlphaTextureVTI.latin1());
+
+       if( aTextureValue.GetPointer() )
+         aTextureMap[aTextureKey] = aTextureValue;
+      }
+
+      RemoveFile(aMainTextureVTI);
+      RemoveFile(anAlphaTextureVTI);
+    }
+
+    return aTextureValue;
+  }
+}
+
+
+//----------------------------------------------------------------
+VVTK_SegmentationCursorDlg::VVTK_SegmentationCursorDlg( QWidget* parent, const char* name )
+  :QDialog( parent, name, false, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu ),
+   myEventCallbackCommand( vtkCallbackCommand::New() ),
+   myInsideCursorSettings( VISU_InsideCursorSettings::New() ),
+   myOutsideCursorSettings( VISU_OutsideCursorSettings::New() ),
+   myIsPlaneSegmentation( true ),
+   myWidgetCtrl(NULL),
+   myInteractor(NULL)
+{
+  myPriority = 0.0;
+  myEventCallbackCommand->Delete();
+  myEventCallbackCommand->SetClientData(this); 
+  myEventCallbackCommand->SetCallback(VVTK_SegmentationCursorDlg::ProcessEvents);
+
+  myInsideCursorSettings->AddObserver(VISU::UpdateFromSettingsEvent, 
+                                     myEventCallbackCommand.GetPointer(), 
+                                     myPriority);
+
+  SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+
+  setCaption( tr( "SEGMENTATION_CURSOR_DLG_TITLE" ) );
+  setSizeGripEnabled(TRUE);
+
+  QVBoxLayout* TopLayout = new QVBoxLayout( this );
+  TopLayout->setSpacing(6);
+  TopLayout->setMargin(11);
+
+  myTabBox = new QTabWidget( this );
+
+  // Segmentation cursor pane
+  mySegmentationCursorBox = new QVBox( this );
+  mySegmentationCursorBox->setMargin(11);
+  mySegmentationCursorBox->setSpacing(6);
+  mySegmentationCursorBox->layout()->setAlignment(Qt::AlignTop);
+
+  // Origin
+  myOriginGroup = new QGroupBox( tr( "ORIGIN_TITLE" ), mySegmentationCursorBox, "OriginGroup" );
+  myOriginGroup->setColumnLayout( 0, Qt::Vertical );
+  myOriginGroup->layout()->setSpacing( 0 );
+  myOriginGroup->layout()->setMargin( 0 );
+
+  QGridLayout* OriginGroupLayout = new QGridLayout( myOriginGroup->layout() );
+  OriginGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  OriginGroupLayout->setSpacing(6);
+  OriginGroupLayout->setMargin(11);
+
+  QLabel* XOriginLabel = new QLabel( tr( "ORIGIN_X" ), myOriginGroup );
+  myXOriginSpinBox = new QtxDblSpinBox( -1000.0, 1000.0, 0.1, myOriginGroup );
+  myXOriginSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myXOriginSpinBox->setMinimumWidth( 100 );
+  myXOriginSpinBox->setValue( 0.0 );
+
+  QLabel* YOriginLabel = new QLabel( tr( "ORIGIN_Y" ), myOriginGroup );
+  myYOriginSpinBox = new QtxDblSpinBox( -1000.0, 1000.0, 0.1, myOriginGroup );
+  myYOriginSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myYOriginSpinBox->setMinimumWidth( 100 );
+  myYOriginSpinBox->setValue( 0.0 );
+
+  QLabel* ZOriginLabel = new QLabel( tr( "ORIGIN_Z" ), myOriginGroup );
+  myZOriginSpinBox = new QtxDblSpinBox( -1000.0, 1000.0, 0.1, myOriginGroup );
+  myZOriginSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myZOriginSpinBox->setMinimumWidth( 100 );
+  myZOriginSpinBox->setValue( 0.0 );
+
+  OriginGroupLayout->addWidget(   XOriginLabel,   0, 0 );
+  OriginGroupLayout->addWidget( myXOriginSpinBox, 0, 1 );
+  OriginGroupLayout->addWidget(   YOriginLabel,   0, 2 );
+  OriginGroupLayout->addWidget( myYOriginSpinBox, 0, 3 );
+  OriginGroupLayout->addWidget(   ZOriginLabel,   0, 4 );
+  OriginGroupLayout->addWidget( myZOriginSpinBox, 0, 5 );
+
+  // Direction ( Plane Segmentation )
+  myDirectionGroup = new QGroupBox( tr( "DIRECTION_TITLE" ), mySegmentationCursorBox, "DirectionGroup" );
+  myDirectionGroup->setColumnLayout( 0, Qt::Vertical );
+  myDirectionGroup->layout()->setSpacing( 0 );
+  myDirectionGroup->layout()->setMargin( 0 );
+
+  QGridLayout* DirectionGroupLayout = new QGridLayout( myDirectionGroup->layout() );
+  DirectionGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  DirectionGroupLayout->setSpacing(6);
+  DirectionGroupLayout->setMargin(11);
+
+  QLabel* DXDirectionLabel = new QLabel( tr( "DIRECTION_DX" ), myDirectionGroup );
+  myDXDirectionSpinBox = new QtxDblSpinBox( -1.0, 1.0, 0.1, myDirectionGroup );
+  myDXDirectionSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myDXDirectionSpinBox->setMinimumWidth( 100 );
+  myDXDirectionSpinBox->setValue( 0.0 );
+
+  QLabel* DYDirectionLabel = new QLabel( tr( "DIRECTION_DY" ), myDirectionGroup );
+  myDYDirectionSpinBox = new QtxDblSpinBox( -1.0, 1.0, 0.1, myDirectionGroup );
+  myDYDirectionSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myDYDirectionSpinBox->setMinimumWidth( 100 );
+  myDYDirectionSpinBox->setValue( 0.0 );
+
+  QLabel* DZDirectionLabel = new QLabel( tr( "DIRECTION_DZ" ), myDirectionGroup );
+  myDZDirectionSpinBox = new QtxDblSpinBox( -1.0, 1.0, 0.1, myDirectionGroup );
+  myDZDirectionSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myDZDirectionSpinBox->setMinimumWidth( 100 );
+  myDZDirectionSpinBox->setValue( 1.0 );
+
+  DirectionGroupLayout->addWidget(   DXDirectionLabel,   0, 0 );
+  DirectionGroupLayout->addWidget( myDXDirectionSpinBox, 0, 1 );
+  DirectionGroupLayout->addWidget(   DYDirectionLabel,   0, 2 );
+  DirectionGroupLayout->addWidget( myDYDirectionSpinBox, 0, 3 );
+  DirectionGroupLayout->addWidget(   DZDirectionLabel,   0, 4 );
+  DirectionGroupLayout->addWidget( myDZDirectionSpinBox, 0, 5 );
+
+  // Depth ( Plane Segmentation )
+  myDepthGroup = new QGroupBox( tr( "DEPTH_TITLE" ), mySegmentationCursorBox, "DepthGroup" );
+  myDepthGroup->setColumnLayout( 0, Qt::Vertical );
+  myDepthGroup->layout()->setSpacing( 0 );
+  myDepthGroup->layout()->setMargin( 0 );
+
+  QGridLayout* DepthGroupLayout = new QGridLayout( myDepthGroup->layout() );
+  DepthGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  DepthGroupLayout->setSpacing(6);
+  DepthGroupLayout->setMargin(11);
+
+  QLabel* DepthLabel = new QLabel( tr( "DEPTH" ), myDepthGroup );
+  myDepthSpinBox = new QtxDblSpinBox( 0.0, VTK_LARGE_FLOAT, 0.1, myDepthGroup );
+  myDepthSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myDepthSpinBox->setMinimumWidth( 100 );
+  myDepthSpinBox->setValue( 1.0 );
+
+  DepthGroupLayout->addWidget(   DepthLabel,   0, 0 );
+  DepthGroupLayout->addWidget( myDepthSpinBox, 0, 1 );
+
+  // Radius ( Sphere Segmentation )
+  myRadiusGroup = new QGroupBox( tr( "RADIUS_TITLE" ), mySegmentationCursorBox, "RadiusGroup" );
+  myRadiusGroup->setColumnLayout( 0, Qt::Vertical );
+  myRadiusGroup->layout()->setSpacing( 0 );
+  myRadiusGroup->layout()->setMargin( 0 );
+
+  QGridLayout* RadiusGroupLayout = new QGridLayout( myRadiusGroup->layout() );
+  RadiusGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  RadiusGroupLayout->setSpacing(6);
+  RadiusGroupLayout->setMargin(11);
+
+  QLabel* RadiusLabel = new QLabel( tr( "RADIUS" ),myRadiusGroup  );
+  myRadiusSpinBox = new QtxDblSpinBox( 0.0, 1000.0, 1.0,myRadiusGroup  );
+  myRadiusSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myRadiusSpinBox->setMinimumWidth( 100 );
+  myRadiusSpinBox->setValue( 100.0 );
+
+  QLabel* RatioLabel = new QLabel( tr( "RATIO" ), myRadiusGroup );
+  myRatioSpinBox = new QtxDblSpinBox( 0.1, 10.0, 0.1,myRadiusGroup  );
+  myRatioSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+  myRatioSpinBox->setMinimumWidth( 100 );
+  myRatioSpinBox->setValue( 2.0 );
+
+  RadiusGroupLayout->addWidget( RadiusLabel,     0, 0 );
+  RadiusGroupLayout->addWidget( myRadiusSpinBox, 0, 1 );
+  RadiusGroupLayout->addWidget( RatioLabel,      0, 2 );
+  RadiusGroupLayout->addWidget( myRatioSpinBox,  0, 3 );
+
+
+  myTabBox->addTab( mySegmentationCursorBox, tr( "SEGMENTATION_CURSOR_TAB" ) );
+
+
+  // Gauss points pane
+  myGaussPointsBox = new QVBox( this );
+  myGaussPointsBox->setMargin(11);
+  myGaussPointsBox->setSpacing(6);
+
+  // Inside Gauss points
+  QGroupBox* anInsideGroup = new QGroupBox( tr( "INSIDE_GAUSS_POINTS" ), myGaussPointsBox );
+  anInsideGroup->setColumnLayout( 0, Qt::Vertical );
+  anInsideGroup->layout()->setSpacing( 0 );
+  anInsideGroup->layout()->setMargin( 0 );
+
+  QGridLayout* anInsideGroupLayout = new QGridLayout( anInsideGroup->layout() );
+  anInsideGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  anInsideGroupLayout->setSpacing(6);
+  anInsideGroupLayout->setMargin(11);
+
+  // Primitive
+  myInsidePrimitiveBox = new VVTK_PrimitiveBox( anInsideGroup );
+
+  // Size
+  myInsideSizeBox = new VVTK_SizeBox( anInsideGroup );
+  myInsideSizeBox->setType( VVTK_SizeBox::Inside );
+
+  anInsideGroupLayout->addWidget( myInsidePrimitiveBox, 0, 0 );
+  anInsideGroupLayout->addWidget( myInsideSizeBox, 1, 0 );
+
+  // Outside Gauss points
+  QGroupBox* anOutsideGroup = new QGroupBox( tr( "OUTSIDE_GAUSS_POINTS" ), myGaussPointsBox );
+  anOutsideGroup->setColumnLayout( 0, Qt::Vertical );
+  anOutsideGroup->layout()->setSpacing( 0 );
+  anOutsideGroup->layout()->setMargin( 0 );
+
+  QGridLayout* anOutsideGroupLayout = new QGridLayout( anOutsideGroup->layout() );
+  anOutsideGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  anOutsideGroupLayout->setSpacing(6);
+  anOutsideGroupLayout->setMargin(11);
+
+  // Primitive
+  myOutsidePrimitiveBox = new VVTK_PrimitiveBox( anOutsideGroup );
+
+  // Size
+  myOutsideSizeBox = new VVTK_SizeBox( anOutsideGroup );
+  myOutsideSizeBox->setType( VVTK_SizeBox::Outside );
+
+  anOutsideGroupLayout->addWidget( myOutsidePrimitiveBox, 0, 0 );
+  anOutsideGroupLayout->addWidget( myOutsideSizeBox, 1, 0 );
+
+
+  // Magnification
+  QGroupBox* MagnificationGroup = new QGroupBox ( tr( "MAGNIFICATION_TITLE" ), myGaussPointsBox, "MagnificationGroup" );
+  MagnificationGroup->setColumnLayout(0, Qt::Vertical );
+  MagnificationGroup->layout()->setSpacing( 0 );
+  MagnificationGroup->layout()->setMargin( 0 );
+
+  QGridLayout* MagnificationGroupLayout = new QGridLayout (MagnificationGroup->layout());
+  MagnificationGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  MagnificationGroupLayout->setSpacing(6);
+  MagnificationGroupLayout->setMargin(11);
+
+  myMagnificationLabel = new QLabel( tr( "MAGNIFICATION" ), MagnificationGroup );
+  myMagnificationSpinBox = new QtxIntSpinBox( 1, 10000, 10, MagnificationGroup );
+  myMagnificationSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  MagnificationGroupLayout->addWidget( myMagnificationLabel, 0, 0 );
+  MagnificationGroupLayout->addWidget( myMagnificationSpinBox, 0, 1 );
+
+  // Increment
+  myIncrementLabel = new QLabel( tr( "INCREMENT" ), MagnificationGroup );
+  myIncrementSpinBox = new QtxDblSpinBox( 0.01, 10, 0.1, MagnificationGroup );
+  myIncrementSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  MagnificationGroupLayout->addWidget( myIncrementLabel, 0, 2 );
+  MagnificationGroupLayout->addWidget( myIncrementSpinBox, 0, 3 );
+
+
+  myTabBox->addTab( myGaussPointsBox, tr( "GAUSS_POINTS_TAB" ) );
+  myTabBox->showPage( myGaussPointsBox );
+
+
+  // Common buttons ===========================================================
+  QGroupBox* GroupButtons = new QGroupBox( this, "GroupButtons" );
+  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* buttonApply = new QPushButton( tr( "&Apply" ), GroupButtons, "buttonApply" );
+  buttonApply->setAutoDefault( TRUE );
+  buttonApply->setDefault( TRUE );
+  GroupButtonsLayout->addWidget( buttonApply, 0, 0 );
+  GroupButtonsLayout->addItem( new QSpacerItem( 5, 5, QSizePolicy::Expanding, QSizePolicy::Minimum ), 0, 1 );
+
+  QPushButton* buttonClose = new QPushButton( tr( "&Close" ) , GroupButtons, "buttonClose" );
+  buttonClose->setAutoDefault( TRUE );
+  GroupButtonsLayout->addWidget( buttonClose, 0, 2 );
+
+  TopLayout->addWidget( myTabBox );
+  TopLayout->addWidget( GroupButtons );
+
+  connect( buttonApply, SIGNAL( clicked() ), this, SLOT( onClickApply() ) );
+  connect( buttonClose, SIGNAL( clicked() ), this, SLOT( onClickClose() ) );
+}
+
+VVTK_SegmentationCursorDlg::~VVTK_SegmentationCursorDlg()
+{
+  SetWidgetCtrl(NULL);
+}
+
+float VVTK_SegmentationCursorDlg::getMagnification() const
+{
+  return myMagnificationSpinBox->value() / 100.0;
+}
+
+void VVTK_SegmentationCursorDlg::setMagnification( float theMagnification )
+{
+  myMagnificationSpinBox->setValue( ( int )( theMagnification * 100 ) );
+}
+
+float VVTK_SegmentationCursorDlg::getIncrement() const
+{
+  return myIncrementSpinBox->value();
+}
+
+void VVTK_SegmentationCursorDlg::setIncrement( float theIncrement )
+{
+  myIncrementSpinBox->setValue( theIncrement );
+}
+
+
+void VVTK_SegmentationCursorDlg::SetWidgetCtrl( VISU_WidgetCtrl* theWidgetCtrl )
+{
+  if(myWidgetCtrl == theWidgetCtrl)
+    return;
+
+  if(myWidgetCtrl)
+    myWidgetCtrl->RemoveObserver(myEventCallbackCommand.GetPointer());
+
+  myWidgetCtrl = theWidgetCtrl;
+
+  if(theWidgetCtrl)
+    theWidgetCtrl->AddObserver(vtkCommand::EndInteractionEvent, 
+                              myEventCallbackCommand.GetPointer(), 
+                              myPriority);
+}
+
+void VVTK_SegmentationCursorDlg::ProcessEvents(vtkObject* vtkNotUsed(theObject), 
+                                              unsigned long theEvent,
+                                              void* theClientData, 
+                                              void* vtkNotUsed(theCallData))
+{
+  VVTK_SegmentationCursorDlg* self = reinterpret_cast<VVTK_SegmentationCursorDlg*>(theClientData);
+
+  switch(theEvent){
+  case vtkCommand::EndInteractionEvent:
+    self->UpdateSegmentation();
+    break;
+  case VISU::UpdateFromSettingsEvent:
+    self->GetOutsideCursorSettings()->SetMagnification( self->GetInsideCursorSettings()->GetMagnification() );
+    self->GetOutsideCursorSettings()->SetIncrement( self->GetInsideCursorSettings()->GetIncrement() );
+
+    self->UpdateInsideGaussPoints();
+    self->UpdateOutsideGaussPoints();
+
+    self->GetInsideCursorSettings()->InvokeEvent(VISU::UpdateInsideSettingsEvent,NULL);
+    self->GetOutsideCursorSettings()->InvokeEvent(VISU::UpdateOutsideSettingsEvent,NULL);
+    break;
+  }
+}
+
+void VVTK_SegmentationCursorDlg::UpdateSegmentation()
+{
+  if( myIsPlaneSegmentation )
+  {
+    myDirectionGroup->show();
+    myDepthGroup->show();
+    myRadiusGroup->hide();
+
+    VISU_PlanesWidget *pPlanesWidget=myWidgetCtrl->GetPlanesWidget();
+    float origin[3];
+    pPlanesWidget->GetOrigin( origin );
+    myXOriginSpinBox->setValue( origin[0] );
+    myYOriginSpinBox->setValue( origin[1] );
+    myZOriginSpinBox->setValue( origin[2] );
+
+    float normal[3];
+    pPlanesWidget->GetNormal( normal );
+    myDXDirectionSpinBox->setValue( normal[0] );
+    myDYDirectionSpinBox->setValue( normal[1] );
+    myDZDirectionSpinBox->setValue( normal[2] );
+
+    myDepthSpinBox->setValue( pPlanesWidget->Distance() );
+  }
+  else
+  {
+    myDirectionGroup->hide();
+    myDepthGroup->hide();
+    myRadiusGroup->show();
+    
+    VISU_SphereWidget *pSphereWidget=myWidgetCtrl->GetSphereWidget();
+    float origin[3], aRadius;
+    pSphereWidget->GetCenter(origin);
+    myXOriginSpinBox->setValue( origin[0] );
+    myYOriginSpinBox->setValue( origin[1] );
+    myZOriginSpinBox->setValue( origin[2] );
+    aRadius=pSphereWidget->GetRadius();
+    myRadiusSpinBox->setValue(aRadius);
+    myRatioSpinBox->setValue(pSphereWidget->GetRatio());
+  }
+}
+
+void VVTK_SegmentationCursorDlg::UpdateInsideGaussPoints()
+{
+  int aPrimitiveType = VISU_OpenGLPointSpriteMapper::PointSprite;
+  float aClamp = 200.0;
+  QString aMainTexture = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/sprite_texture.bmp";
+  QString anAlphaTexture = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/sprite_alpha.bmp";
+  float anAlphaThreshold = 0.1;
+  int aResolution = 8;
+  int aMinSize = 3;
+  int aMaxSize = 33;
+  int aMagnification = 100;
+  float anIncrement = 2.0;
+
+  if( !myInsideCursorSettings->GetInitial() )
+  {
+    myInsidePrimitiveBox->setPrimitiveType( myInsideCursorSettings->GetPrimitiveType() );
+    myInsidePrimitiveBox->setClamp( myInsideCursorSettings->GetClamp() );
+    myInsidePrimitiveBox->setMainTexture( myInsideMainTexture );
+    myInsidePrimitiveBox->setAlphaTexture( myInsideAlphaTexture );
+    myInsidePrimitiveBox->setAlphaThreshold( myInsideCursorSettings->GetAlphaThreshold() );
+    myInsidePrimitiveBox->setResolution( myInsideCursorSettings->GetResolution() );
+
+    myInsideSizeBox->setMinSize( myInsideCursorSettings->GetMinSize() );
+    myInsideSizeBox->setMaxSize( myInsideCursorSettings->GetMaxSize() );
+
+    this->setMagnification( myInsideCursorSettings->GetMagnification() );
+    this->setIncrement( myInsideCursorSettings->GetIncrement() );
+
+    return;
+  }
+
+  SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+
+  aPrimitiveType = aResourceMgr->integerValue( "VISU", "inside_point_sprite_primitive_type", aPrimitiveType );
+  myInsidePrimitiveBox->setPrimitiveType( aPrimitiveType );
+
+  aClamp = aResourceMgr->doubleValue( "VISU", "inside_point_sprite_clamp", aClamp );
+  myInsidePrimitiveBox->setClamp( aClamp );
+
+  aMainTexture = aResourceMgr->stringValue( "VISU", "inside_point_sprite_main_texture", aMainTexture );
+  myInsidePrimitiveBox->setMainTexture( aMainTexture );
+
+  anAlphaTexture = aResourceMgr->stringValue( "VISU", "inside_point_sprite_alpha_texture", anAlphaTexture );
+  myInsidePrimitiveBox->setAlphaTexture( anAlphaTexture );
+
+  anAlphaThreshold = aResourceMgr->doubleValue( "VISU", "inside_point_sprite_alpha_threshold", anAlphaThreshold );
+  myInsidePrimitiveBox->setAlphaThreshold( anAlphaThreshold );
+
+  aResolution = aResourceMgr->integerValue( "VISU", "inside_geom_sphere_resolution", aResolution );
+  myInsidePrimitiveBox->setResolution( aResolution );
+
+  aMinSize = aResourceMgr->integerValue( "VISU", "inside_point_sprite_min_size", aMinSize );
+  myInsideSizeBox->setMinSize( aMinSize / 100.0 );
+
+  aMaxSize = aResourceMgr->integerValue( "VISU", "inside_point_sprite_max_size", aMaxSize );
+  myInsideSizeBox->setMaxSize( aMaxSize / 100.0 );
+
+  aMagnification = aResourceMgr->integerValue( "VISU", "inside_point_sprite_magnification", aMagnification );
+  this->setMagnification( aMagnification / 100.0 );
+
+  anIncrement = aResourceMgr->doubleValue( "VISU", "inside_point_sprite_increment", anIncrement );
+  this->setIncrement( anIncrement );
+
+  myInsidePrimitiveBox->setFaceLimit( 50000 );
+
+  ApplyInsideGaussPoints();
+}
+
+void VVTK_SegmentationCursorDlg::UpdateOutsideGaussPoints()
+{
+  float aClamp = 256.0;
+  int aPrimitiveType = VISU_OpenGLPointSpriteMapper::PointSprite;
+  QString aMainTexture = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/sprite_texture.bmp";
+  QString anAlphaTexture = QString( getenv( "VISU_ROOT_DIR") ) + "/share/salome/resources/sprite_alpha.bmp";
+  float anAlphaThreshold = 0.1;
+  int aResolution = 8;
+  int aSize = 25;
+  bool aUniform = false;
+  QColor aColor = Qt::blue;
+
+  if( !myOutsideCursorSettings->GetInitial() )
+  {
+    myOutsidePrimitiveBox->setPrimitiveType( myOutsideCursorSettings->GetPrimitiveType() );
+    myOutsidePrimitiveBox->setClamp( myOutsideCursorSettings->GetClamp() );
+    myOutsidePrimitiveBox->setMainTexture( myOutsideMainTexture );
+    myOutsidePrimitiveBox->setAlphaTexture( myOutsideAlphaTexture );
+    myOutsidePrimitiveBox->setAlphaThreshold( myOutsideCursorSettings->GetAlphaThreshold() );
+    myOutsidePrimitiveBox->setResolution( myOutsideCursorSettings->GetResolution() );
+
+    myOutsideSizeBox->setOutsideSize( myOutsideCursorSettings->GetSize() );
+    myOutsideSizeBox->setUniform( myOutsideCursorSettings->GetUniform() );
+
+    float* aColor = myOutsideCursorSettings->GetColor();
+    myOutsideSizeBox->setColor( QColor( ( int )( aColor[0] * 255.0 ),
+                                       ( int )( aColor[1] * 255.0 ),
+                                       ( int )( aColor[2] * 255.0 ) ) );
+
+    return;
+  }
+
+  SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+
+  aPrimitiveType = aResourceMgr->integerValue( "VISU", "outside_point_sprite_primitive_type", aPrimitiveType );
+  myOutsidePrimitiveBox->setPrimitiveType( aPrimitiveType );
+
+  aClamp = aResourceMgr->doubleValue( "VISU", "outside_point_sprite_clamp", aClamp );
+  myOutsidePrimitiveBox->setClamp( aClamp );
+
+  aMainTexture = aResourceMgr->stringValue( "VISU", "outside_point_sprite_main_texture", aMainTexture );
+  myOutsidePrimitiveBox->setMainTexture( aMainTexture );
+
+  anAlphaTexture = aResourceMgr->stringValue( "VISU", "outside_point_sprite_alpha_texture", anAlphaTexture );
+  myOutsidePrimitiveBox->setAlphaTexture( anAlphaTexture );
+
+  anAlphaThreshold = aResourceMgr->doubleValue( "VISU", "outside_point_sprite_alpha_threshold", anAlphaThreshold );
+  myOutsidePrimitiveBox->setAlphaThreshold( anAlphaThreshold );
+
+  aResolution = aResourceMgr->integerValue( "VISU", "outside_geom_sphere_resolution", aResolution );
+  myOutsidePrimitiveBox->setResolution( aResolution );
+
+  aSize = aResourceMgr->integerValue( "VISU", "outside_point_sprite_size", aSize );
+  myOutsideSizeBox->setOutsideSize( aSize / 100.0 );
+
+  aUniform = aResourceMgr->booleanValue( "VISU", "outside_point_sprite_uniform", aUniform );
+  myOutsideSizeBox->setUniform( aUniform );
+
+  aColor = aResourceMgr->colorValue( "VISU", "outside_point_sprite_color", aColor );
+  myOutsideSizeBox->setColor( aColor );
+
+  myOutsidePrimitiveBox->setFaceLimit( 50000 );
+
+  ApplyOutsideGaussPoints();
+}
+
+VISU_InsideCursorSettings* VVTK_SegmentationCursorDlg::GetInsideCursorSettings()
+{
+  return myInsideCursorSettings.GetPointer();
+}
+
+VISU_OutsideCursorSettings* VVTK_SegmentationCursorDlg::GetOutsideCursorSettings()
+{
+  return myOutsideCursorSettings.GetPointer();
+}
+
+VISU::TTextureValue 
+VVTK_SegmentationCursorDlg
+::MakeImageData( bool theInside,
+                const QString& theMainTexture, 
+                const QString& theAlphaTexture )
+{
+  if( theInside )
+  {
+    bool updateMainTexture = myInsideMainTexture != theMainTexture;
+    bool updateAlphaTexture = myInsideAlphaTexture != theAlphaTexture;
+    if( !updateMainTexture && !updateAlphaTexture )
+      return 0;
+
+    myInsideMainTexture = theMainTexture;
+    myInsideAlphaTexture = theAlphaTexture;
+  }
+  else
+  {
+    bool updateMainTexture = myOutsideMainTexture != theMainTexture;
+    bool updateAlphaTexture = myOutsideAlphaTexture != theAlphaTexture;
+    if( !updateMainTexture && !updateAlphaTexture )
+      return 0;
+
+    myOutsideMainTexture = theMainTexture;
+    myOutsideAlphaTexture = theAlphaTexture;
+  }
+
+  return VISU::GetTexture( theMainTexture.latin1(), 
+                          theAlphaTexture.latin1());
+}
+
+void VVTK_SegmentationCursorDlg::onClickApply()
+{
+  if( myTabBox->currentPage() == mySegmentationCursorBox )
+    ApplySegmentationCursor();
+  else
+  {
+    QString aWarning = "The number of faces needed to perform the 'Geometrical Sphere' primitive\n";
+    aWarning.append( "presentation might be too important to ensure an acceptable frame rate.\n\n" );
+    aWarning.append( "Can you please confirm that you want to continue anyway?" );
+    bool toApply = CheckNumberOfFaces() ||
+      SUIT_MessageBox::warn2( this, tr( "Warning" ), aWarning,
+                             tr( "&OK" ), tr( "&Cancel" ), 0, 1, 1 ) == 0;
+
+    if( toApply )
+    {
+      ApplyInsideGaussPoints();
+      ApplyOutsideGaussPoints();
+    }
+  }
+}
+
+void VVTK_SegmentationCursorDlg::ApplySegmentationCursor()
+{
+  if( myIsPlaneSegmentation )
+  {
+    VISU_PlanesWidget *pPlanesWidget=myWidgetCtrl->GetPlanesWidget();
+    float origin[3];
+    origin[0] = myXOriginSpinBox->value();
+    origin[1] = myYOriginSpinBox->value();
+    origin[2] = myZOriginSpinBox->value();
+    pPlanesWidget->SetOrigin( origin );
+
+    float normal[3];
+    normal[0] = myDXDirectionSpinBox->value();
+    normal[1] = myDYDirectionSpinBox->value();
+    normal[2] = myDZDirectionSpinBox->value();
+    
+    if( normal[0] == 0.0 && normal[1] == 0.0 && normal[2] == 0.0 )
+    {
+      normal[2] = 1.0;
+      myDZDirectionSpinBox->setValue( 1.0 );
+    }
+    pPlanesWidget->SetNormal( normal );
+
+    pPlanesWidget->SetDistance( myDepthSpinBox->value() );
+    
+    myWidgetCtrl->InvokeEvent(vtkCommand::EndInteractionEvent,NULL);
+    myWidgetCtrl->GetInteractor()->Render();
+  }
+  else
+  {
+    VISU_SphereWidget *pSphereWidget=myWidgetCtrl->GetSphereWidget();
+    float origin[3], aRadius;
+    origin[0] = myXOriginSpinBox->value();
+    origin[1] = myYOriginSpinBox->value();
+    origin[2] = myZOriginSpinBox->value();
+    pSphereWidget->SetCenter(origin);
+    
+    aRadius=myRadiusSpinBox->value();
+    pSphereWidget->SetRadius(aRadius);
+
+    pSphereWidget->SetRatio(myRatioSpinBox->value());
+
+    myWidgetCtrl->InvokeEvent(vtkCommand::EndInteractionEvent,NULL);
+    myWidgetCtrl->GetInteractor()->Render();
+  }
+}
+
+void VVTK_SegmentationCursorDlg::ApplyInsideGaussPoints()
+{
+  QString anInsideMainTexture = myInsidePrimitiveBox->getMainTexture();
+  QString anInsideAlphaTexture = myInsidePrimitiveBox->getAlphaTexture();
+  VISU::TTextureValue aTexture = MakeImageData( true, anInsideMainTexture, anInsideAlphaTexture );
+
+  if( aTexture.GetPointer() )
+    myInsideCursorSettings->SetTexture( aTexture.GetPointer() );
+
+  myInsideCursorSettings->SetInitial( false );
+  myInsideCursorSettings->SetPrimitiveType( myInsidePrimitiveBox->getPrimitiveType() );
+  myInsideCursorSettings->SetClamp( myInsidePrimitiveBox->getClamp() );
+  myInsideCursorSettings->SetAlphaThreshold( myInsidePrimitiveBox->getAlphaThreshold() );
+  myInsideCursorSettings->SetResolution( myInsidePrimitiveBox->getResolution() );
+
+  myInsideCursorSettings->SetMinSize( myInsideSizeBox->getMinSize() );
+  myInsideCursorSettings->SetMaxSize( myInsideSizeBox->getMaxSize() );
+
+  myInsideCursorSettings->SetMagnification( this->getMagnification() );
+  myInsideCursorSettings->SetIncrement( this->getIncrement() );
+
+  myInsideCursorSettings->InvokeEvent(VISU::UpdateInsideSettingsEvent,NULL);
+}
+
+void VVTK_SegmentationCursorDlg::ApplyOutsideGaussPoints()
+{
+  QString anOutsideMainTexture = myOutsidePrimitiveBox->getMainTexture();
+  QString anOutsideAlphaTexture = myOutsidePrimitiveBox->getAlphaTexture();
+  VISU::TTextureValue aTexture = MakeImageData( false, anOutsideMainTexture, anOutsideAlphaTexture );
+
+  if( aTexture.GetPointer() )
+    myOutsideCursorSettings->SetTexture( aTexture.GetPointer() );
+
+  myOutsideCursorSettings->SetInitial( false );
+  myOutsideCursorSettings->SetPrimitiveType( myOutsidePrimitiveBox->getPrimitiveType() );
+  myOutsideCursorSettings->SetClamp( myOutsidePrimitiveBox->getClamp() );
+  myOutsideCursorSettings->SetAlphaThreshold( myOutsidePrimitiveBox->getAlphaThreshold() );
+  myOutsideCursorSettings->SetResolution( myOutsidePrimitiveBox->getResolution() );
+
+  myOutsideCursorSettings->SetSize( myOutsideSizeBox->getOutsideSize() );
+  myOutsideCursorSettings->SetUniform( myOutsideSizeBox->getUniform() );
+
+  QColor aButtonColor = myOutsideSizeBox->getColor();
+  float aColor[3];
+  aColor[0] = aButtonColor.red() / 255.0;
+  aColor[1] = aButtonColor.green() / 255.0;
+  aColor[2] = aButtonColor.blue() / 255.0;
+  myOutsideCursorSettings->SetColor( aColor );
+
+  myOutsideCursorSettings->SetMagnification( this->getMagnification() );
+  myOutsideCursorSettings->SetIncrement( this->getIncrement() );
+
+  myOutsideCursorSettings->InvokeEvent(VISU::UpdateOutsideSettingsEvent,NULL);
+}
+
+void VVTK_SegmentationCursorDlg::onClickClose()
+{
+  myPlaneAction->setOn( false );
+  mySphereAction->setOn( false );
+
+  emit scgClose();
+
+  reject();
+}
+
+void VVTK_SegmentationCursorDlg::done( int r )
+{
+  myPlaneAction->setOn( false );
+  mySphereAction->setOn( false );
+
+  emit scgClose();
+
+  QDialog::done( r );
+}
+
+bool VVTK_SegmentationCursorDlg::CheckNumberOfFaces()
+{
+  if( !myInteractor )
+    return false;
+
+  vtkRenderer* aRenderer = myInteractor->getRenderer();
+
+  if( !aRenderer )
+    return false;
+
+  int aNumberOfPoints = 0;
+
+  vtkActor* anActor;
+  vtkActorCollection* anActColl = aRenderer->GetActors();
+  for( anActColl->InitTraversal(); ( anActor = anActColl->GetNextActor() ) != NULL; )
+  {
+    if( VISU_GaussPtsAct1* aGaussActor = VISU_GaussPtsAct1::SafeDownCast( anActor ) )
+      aNumberOfPoints += aGaussActor->GetInput()->GetNumberOfCells();
+  }
+  return !( myInsidePrimitiveBox->getPrimitiveType() == VISU_OpenGLPointSpriteMapper::GeomSphere &&
+           aNumberOfPoints * myInsidePrimitiveBox->getFaceNumber() * 2 > myInsidePrimitiveBox->getFaceLimit() ||
+           myOutsidePrimitiveBox->getPrimitiveType() == VISU_OpenGLPointSpriteMapper::GeomSphere &&
+           aNumberOfPoints * myOutsidePrimitiveBox->getFaceNumber() > myOutsidePrimitiveBox->getFaceLimit() );
+}
diff --git a/src/VVTK/VVTK_SegmentationCursorDlg.h b/src/VVTK/VVTK_SegmentationCursorDlg.h
new file mode 100644 (file)
index 0000000..edac216
--- /dev/null
@@ -0,0 +1,182 @@
+//  VISU VISUGUI : GUI of VISU component
+//
+//  Copyright (C) 2003  CEA/DEN, EDF R&D
+//
+//
+//
+//  File   : VVTK_SegmentationCursorDlg.h
+//  Author : Oleg Uvarov
+//  Module : VISU
+
+#ifndef VVTK_SEGMENTATIONCURSORDLG_H
+#define VVTK_SEGMENTATIONCURSORDLG_H
+
+#include <qdialog.h>
+
+#include <vtkObject.h>
+#include <vtkSmartPointer.h>
+
+class vtkActorCollection;
+class vtkCallbackCommand;
+class vtkImageData;
+
+class QLabel;
+class QLineEdit;
+class QPushButton;
+class QRadioButton;
+class QTabWidget;
+class QGroupBox;
+class QVBox;
+
+class QtxAction;
+class QtxDblSpinBox;
+class QtxIntSpinBox;
+
+class VISU_GaussPtsAct1;
+class VISU_InsideCursorSettings;
+class VISU_OutsideCursorSettings;
+class VISU_WidgetCtrl;
+
+class VVTK_PrimitiveBox;
+class VVTK_SizeBox;
+
+class SVTK_RenderWindowInteractor;
+
+namespace VISU
+{
+  typedef vtkSmartPointer<vtkImageData> TTextureValue;
+
+  TTextureValue
+  GetTexture(const QString& theMainTexture, 
+            const QString& theAlphaTexture);
+}
+
+//! Segmentation Cursor Dialog.
+/*!
+ * Uses for set up Segmentation and Outside Cursor Gauss Points preferenses
+ * and apply them to all actors in the current renderer.
+ */
+class VVTK_SegmentationCursorDlg : public QDialog
+{
+  Q_OBJECT
+
+public:
+  VVTK_SegmentationCursorDlg( QWidget* parent = 0, const char* name = 0 );
+  ~VVTK_SegmentationCursorDlg();
+
+  void             SetWidgetCtrl( VISU_WidgetCtrl* );
+  void             SetPlaneAction( QtxAction* theAction ) { myPlaneAction = theAction; }
+  void             SetSphereAction( QtxAction* theAction ) { mySphereAction = theAction; }
+
+  bool             GetIsPlaneSegmentation() const { return myIsPlaneSegmentation; }
+  void             SetIsPlaneSegmentation( bool on ) { myIsPlaneSegmentation = on; }
+
+  //! Update contents of the Segmentation tab.
+  void             UpdateSegmentation();
+  void             UpdateInsideGaussPoints();
+  void             UpdateOutsideGaussPoints();
+
+  //! Update contents of the Outside Cursor tab.
+  void             UpdateOutsideCursor();
+
+  VISU_InsideCursorSettings*  GetInsideCursorSettings();
+  VISU_OutsideCursorSettings* GetOutsideCursorSettings();
+
+  vtkSmartPointer<vtkCallbackCommand> GetEventCallbackCommand() { return myEventCallbackCommand; }
+
+  void             SetInteractor( SVTK_RenderWindowInteractor* theInteractor ) { myInteractor = theInteractor; }
+
+public:
+  float            getMagnification() const;
+  void             setMagnification( float );
+
+  float            getIncrement() const;
+  void             setIncrement( float );
+
+protected:
+  void             ApplySegmentationCursor();
+  void             ApplyInsideGaussPoints();
+  void             ApplyOutsideGaussPoints();
+
+  bool             CheckNumberOfFaces();
+
+  VISU::TTextureValue
+  MakeImageData( bool theInside,
+                const QString& theMainTexture, 
+                const QString& theAlphaTexture );
+
+private:
+  static void      ProcessEvents(vtkObject* theObject, 
+                                unsigned long theEvent,
+                                void* theClientData, 
+                                void* theCallData);
+
+protected slots:
+  virtual void     done( int );
+
+  void             onClickApply();
+  void             onClickClose();
+
+signals:
+  void             scgClose();
+
+private:
+  SVTK_RenderWindowInteractor* myInteractor;
+
+  QTabWidget*      myTabBox;
+
+  // Segmentation cursor
+  QVBox*           mySegmentationCursorBox;
+
+  QGroupBox*       myOriginGroup;
+  QtxDblSpinBox*   myXOriginSpinBox;
+  QtxDblSpinBox*   myYOriginSpinBox;
+  QtxDblSpinBox*   myZOriginSpinBox;
+
+  QGroupBox*       myDirectionGroup;
+  QtxDblSpinBox*   myDXDirectionSpinBox;
+  QtxDblSpinBox*   myDYDirectionSpinBox;
+  QtxDblSpinBox*   myDZDirectionSpinBox;
+
+  QGroupBox*       myDepthGroup;
+  QtxDblSpinBox*   myDepthSpinBox;
+
+  QGroupBox*       myRadiusGroup;
+  QtxDblSpinBox*   myRadiusSpinBox;
+  QtxDblSpinBox*   myRatioSpinBox;
+
+  bool             myIsPlaneSegmentation;
+
+  float            myPriority;
+  vtkSmartPointer<vtkCallbackCommand> myEventCallbackCommand;
+
+  VISU_WidgetCtrl* myWidgetCtrl;
+  QtxAction*       myPlaneAction;
+  QtxAction*       mySphereAction;
+
+  // Gauss Points
+  QVBox*           myGaussPointsBox;
+
+  VVTK_PrimitiveBox* myInsidePrimitiveBox;
+  VVTK_SizeBox*    myInsideSizeBox;
+
+  QString          myInsideMainTexture;
+  QString          myInsideAlphaTexture;
+
+  vtkSmartPointer<VISU_InsideCursorSettings> myInsideCursorSettings;
+
+  VVTK_PrimitiveBox* myOutsidePrimitiveBox;
+  VVTK_SizeBox*    myOutsideSizeBox;
+
+  QString          myOutsideMainTexture;
+  QString          myOutsideAlphaTexture;
+
+  vtkSmartPointer<VISU_OutsideCursorSettings> myOutsideCursorSettings;
+
+  QLabel*          myMagnificationLabel;
+  QtxIntSpinBox*   myMagnificationSpinBox;
+  QLabel*          myIncrementLabel;
+  QtxDblSpinBox*   myIncrementSpinBox;
+};
+
+#endif
diff --git a/src/VVTK/VVTK_SizeBox.cxx b/src/VVTK/VVTK_SizeBox.cxx
new file mode 100644 (file)
index 0000000..654b69a
--- /dev/null
@@ -0,0 +1,350 @@
+//  VISU VISUGUI : GUI of VISU 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   : VVTK_SizeBox.cxx
+//  Author : Oleg UVAROV
+//  Module : VISU
+
+#include "VVTK_SizeBox.h"
+
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Session.h"
+
+#include "QtxDblSpinBox.h"
+#include "QtxIntSpinBox.h"
+
+#include <qlayout.h>
+#include <qlabel.h>
+#include <qlineedit.h>
+#include <qcheckbox.h>
+#include <qgroupbox.h>
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+#include <qpushbutton.h>
+#include <qcolordialog.h>
+
+using namespace std;
+
+VVTK_SizeBox::VVTK_SizeBox( QWidget* parent ) :
+  QVBox( parent )
+{
+  SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr();
+
+  layout()->setSpacing( 0 );
+  layout()->setMargin( 0 );
+
+  // Size
+  QGroupBox* SizeGroup = new QGroupBox ( tr( "SIZE_TITLE" ), this, "SizeGroup" );
+  SizeGroup->setColumnLayout(0, Qt::Vertical );
+  SizeGroup->layout()->setSpacing( 0 );
+  SizeGroup->layout()->setMargin( 0 );
+
+  QGridLayout* SizeGroupLayout = new QGridLayout (SizeGroup->layout());
+  SizeGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+  SizeGroupLayout->setSpacing(6);
+  SizeGroupLayout->setMargin(11);
+
+  // Outside Size
+  myOutsideSizeLabel = new QLabel( tr( "OUTSIDE_SIZE" ), SizeGroup );
+  myOutsideSizeSpinBox = new QtxIntSpinBox( 0, 100, 1, SizeGroup );
+  myOutsideSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  SizeGroupLayout->addWidget( myOutsideSizeLabel, 0, 0 );
+  SizeGroupLayout->addWidget( myOutsideSizeSpinBox, 0, 1 );
+
+  // Geometry Size
+  myGeomSizeLabel = new QLabel( tr( "GEOM_SIZE" ), SizeGroup );
+  myGeomSizeSpinBox = new QtxIntSpinBox( 0, 100, 1, SizeGroup );
+  myGeomSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  SizeGroupLayout->addWidget( myGeomSizeLabel, 0, 0 );
+  SizeGroupLayout->addWidget( myGeomSizeSpinBox, 0, 1 );
+
+  // Min Size
+  myMinSizeLabel = new QLabel( tr( "MIN_SIZE" ), SizeGroup );
+  myMinSizeSpinBox = new QtxIntSpinBox( 0, 100, 1, SizeGroup );
+  myMinSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  SizeGroupLayout->addWidget( myMinSizeLabel, 1, 0 );
+  SizeGroupLayout->addWidget( myMinSizeSpinBox, 1, 1 );
+
+  // Max Size
+  myMaxSizeLabel = new QLabel( tr( "MAX_SIZE" ), SizeGroup );
+  myMaxSizeSpinBox = new QtxIntSpinBox( 0, 100, 1, SizeGroup );
+  myMaxSizeSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  SizeGroupLayout->addWidget( myMaxSizeLabel, 1, 2 );
+  SizeGroupLayout->addWidget( myMaxSizeSpinBox, 1, 3 );
+
+  // Magnification
+  myMagnificationLabel = new QLabel( tr( "MAGNIFICATION" ), SizeGroup );
+  myMagnificationSpinBox = new QtxIntSpinBox( 1, 10000, 10, SizeGroup );
+  myMagnificationSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  SizeGroupLayout->addWidget( myMagnificationLabel, 2, 0 );
+  SizeGroupLayout->addWidget( myMagnificationSpinBox, 2, 1 );
+
+  // Increment
+  myIncrementLabel = new QLabel( tr( "INCREMENT" ), SizeGroup );
+  myIncrementSpinBox = new QtxDblSpinBox( 0.01, 10, 0.1, SizeGroup );
+  myIncrementSpinBox->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
+
+  SizeGroupLayout->addWidget( myIncrementLabel, 2, 2 );
+  SizeGroupLayout->addWidget( myIncrementSpinBox, 2, 3 );
+
+
+  // Color
+  myColorGroup = new QGroupBox ( tr( "COLOR_TITLE" ), this, "ColorGroup" );
+  myColorGroup->setColumnLayout(0, Qt::Vertical );
+  myColorGroup->layout()->setSpacing( 0 );
+  myColorGroup->layout()->setMargin( 0 );
+
+  QGridLayout* ColorGroupLayout = new QGridLayout (myColorGroup->layout());
+  ColorGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignLeft);
+  ColorGroupLayout->setSpacing(6);
+  ColorGroupLayout->setMargin(11);
+
+  myUniformCheckBox = new QCheckBox( tr( "UNIFORM_COLOR" ), myColorGroup );
+
+  myColorLabel = new QLabel( tr( "COLOR" ), myColorGroup );
+  myColorButton = new QPushButton( myColorGroup );
+
+  ColorGroupLayout->addWidget( myUniformCheckBox, 0, 0 );
+  ColorGroupLayout->addWidget( myColorLabel, 0, 1 );
+  ColorGroupLayout->addWidget( myColorButton, 0, 2 );
+
+  connect( myUniformCheckBox, SIGNAL( toggled( bool ) ), myColorButton, SLOT( setEnabled( bool ) ) );
+  connect( myColorButton, SIGNAL( clicked() ), this, SLOT( onColorButtonPressed() ) );
+
+  setType( VVTK_SizeBox::Results );
+}
+
+void VVTK_SizeBox::onToggleResults()
+{
+  myType = VVTK_SizeBox::Results;
+
+  myOutsideSizeLabel->hide();
+  myOutsideSizeSpinBox->hide();
+
+  myGeomSizeLabel->hide();
+  myGeomSizeSpinBox->hide();
+
+  myMinSizeLabel->show();
+  myMinSizeSpinBox->show();
+
+  myMaxSizeLabel->show();
+  myMaxSizeSpinBox->show();
+
+  myMagnificationLabel->show();
+  myMagnificationSpinBox->show();
+
+  myIncrementLabel->show();
+  myIncrementSpinBox->show();
+
+  myColorGroup->hide();
+
+  myUniformCheckBox->hide();
+}
+
+void VVTK_SizeBox::onToggleGeometry()
+{
+  myType = VVTK_SizeBox::Geometry;
+
+  myOutsideSizeLabel->hide();
+  myOutsideSizeSpinBox->hide();
+
+  myGeomSizeLabel->show();
+  myGeomSizeSpinBox->show();
+
+  myMinSizeLabel->hide();
+  myMinSizeSpinBox->hide();
+
+  myMaxSizeLabel->hide();
+  myMaxSizeSpinBox->hide();
+
+  myMagnificationLabel->show();
+  myMagnificationSpinBox->show();
+
+  myIncrementLabel->show();
+  myIncrementSpinBox->show();
+
+  myColorGroup->show();
+
+  myUniformCheckBox->hide();
+}
+
+void VVTK_SizeBox::onToggleInside()
+{
+  myType = VVTK_SizeBox::Inside;
+
+  myOutsideSizeLabel->hide();
+  myOutsideSizeSpinBox->hide();
+
+  myGeomSizeLabel->hide();
+  myGeomSizeSpinBox->hide();
+
+  myMinSizeLabel->show();
+  myMinSizeSpinBox->show();
+
+  myMaxSizeLabel->show();
+  myMaxSizeSpinBox->show();
+
+  myMagnificationLabel->hide();
+  myMagnificationSpinBox->hide();
+
+  myIncrementLabel->hide();
+  myIncrementSpinBox->hide();
+
+  myColorGroup->hide();
+
+  myUniformCheckBox->hide();
+}
+
+void VVTK_SizeBox::onToggleOutside()
+{
+  myType = VVTK_SizeBox::Outside;
+
+  myOutsideSizeLabel->show();
+  myOutsideSizeSpinBox->show();
+
+  myGeomSizeLabel->hide();
+  myGeomSizeSpinBox->hide();
+
+  myMinSizeLabel->hide();
+  myMinSizeSpinBox->hide();
+
+  myMaxSizeLabel->hide();
+  myMaxSizeSpinBox->hide();
+
+  myMagnificationLabel->hide();
+  myMagnificationSpinBox->hide();
+
+  myIncrementLabel->hide();
+  myIncrementSpinBox->hide();
+
+  myColorGroup->show();
+
+  myUniformCheckBox->show();
+}
+
+void VVTK_SizeBox::setType( int theType )
+{
+  myType = theType;
+
+  switch( myType )
+  {
+    case VVTK_SizeBox::Results  : onToggleResults(); break;
+    case VVTK_SizeBox::Geometry : onToggleGeometry(); break;
+    case VVTK_SizeBox::Inside   : onToggleInside();  break;
+    case VVTK_SizeBox::Outside  : onToggleOutside();  break;
+    default : break;
+  }
+}
+
+float VVTK_SizeBox::getOutsideSize() const
+{
+  return myOutsideSizeSpinBox->value() / 100.0;
+}
+
+void VVTK_SizeBox::setOutsideSize( float theOutsideSize )
+{
+  myOutsideSizeSpinBox->setValue( ( int )( theOutsideSize * 100 ) );
+}
+
+float VVTK_SizeBox::getGeomSize() const
+{
+  return myGeomSizeSpinBox->value() / 100.0;
+}
+
+void VVTK_SizeBox::setGeomSize( float theGeomSize )
+{
+  myGeomSizeSpinBox->setValue( ( int )( theGeomSize * 100 ) );
+}
+
+float VVTK_SizeBox::getMinSize() const
+{
+  return myMinSizeSpinBox->value() / 100.0;
+}
+
+void VVTK_SizeBox::setMinSize( float theMinSize )
+{
+  myMinSizeSpinBox->setValue( ( int )( theMinSize * 100 ) );
+}
+
+float VVTK_SizeBox::getMaxSize() const
+{
+  return myMaxSizeSpinBox->value() / 100.0;
+}
+
+void VVTK_SizeBox::setMaxSize( float theMaxSize )
+{
+  myMaxSizeSpinBox->setValue( ( int )( theMaxSize * 100 ) );
+}
+
+float VVTK_SizeBox::getMagnification() const
+{
+  return myMagnificationSpinBox->value() / 100.0;
+}
+
+void VVTK_SizeBox::setMagnification( float theMagnification )
+{
+  myMagnificationSpinBox->setValue( ( int )( theMagnification * 100 ) );
+}
+
+float VVTK_SizeBox::getIncrement() const
+{
+  return myIncrementSpinBox->value();
+}
+
+void VVTK_SizeBox::setIncrement( float theIncrement )
+{
+  myIncrementSpinBox->setValue( theIncrement );
+}
+
+bool VVTK_SizeBox::getUniform() const
+{
+  return myUniformCheckBox->isChecked();
+}
+
+void VVTK_SizeBox::setUniform( bool theUniform )
+{
+  myUniformCheckBox->setChecked( theUniform );
+  myColorButton->setEnabled( theUniform );
+}
+
+QColor VVTK_SizeBox::getColor() const
+{
+  return myColorButton->paletteBackgroundColor();
+}
+
+void VVTK_SizeBox::setColor( const QColor& theColor )
+{
+  myColorButton->setPaletteBackgroundColor( theColor );
+}
+
+void VVTK_SizeBox::onColorButtonPressed()
+{
+  QColor aColor = QColorDialog::getColor( myColorButton->paletteBackgroundColor(), this );
+  if( aColor.isValid() )
+    myColorButton->setPaletteBackgroundColor( aColor );
+}
diff --git a/src/VVTK/VVTK_SizeBox.h b/src/VVTK/VVTK_SizeBox.h
new file mode 100644 (file)
index 0000000..a47f342
--- /dev/null
@@ -0,0 +1,119 @@
+//  VISU VISUGUI : GUI of VISU 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   : VVTK_SizeBox.h
+//  Author : Oleg UVAROV
+//  Module : VISU
+
+#ifndef VVTK_SIZEBOX_H
+#define VVTK_SIZEBOX_H
+
+#include <qvbox.h>
+
+class QLabel;
+class QLineEdit;
+class QPushButton;
+class QCheckBox;
+class QGroupBox;
+
+class QtxDblSpinBox;
+class QtxIntSpinBox;
+
+class VVTK_SizeBox : public QVBox
+{
+  Q_OBJECT
+
+public:
+  enum { Results = 0, Geometry, Inside, Outside };
+
+public:
+  VVTK_SizeBox( QWidget* );
+  ~VVTK_SizeBox() {}
+
+public:
+  int                      getType() const { return myType; }
+  void                     setType( int );
+
+  float                    getOutsideSize() const;
+  void                     setOutsideSize( float );
+
+  float                    getGeomSize() const;
+  void                     setGeomSize( float );
+
+  float                    getMinSize() const;
+  void                     setMinSize( float );
+
+  float                    getMaxSize() const;
+  void                     setMaxSize( float );
+
+  float                    getMagnification() const;
+  void                     setMagnification( float );
+
+  float                    getIncrement() const;
+  void                     setIncrement( float );
+
+  bool                     getUniform() const;
+  void                     setUniform( bool );
+
+  QColor                   getColor() const;
+  void                     setColor( const QColor& );
+
+protected slots:
+  void                     onToggleResults();
+  void                     onToggleGeometry();
+  void                     onToggleInside();
+  void                     onToggleOutside();
+
+  void                     onColorButtonPressed();
+
+private:
+  int                      myType;
+
+  QLabel*                  myOutsideSizeLabel;
+  QtxIntSpinBox*           myOutsideSizeSpinBox;
+
+  QLabel*                  myGeomSizeLabel;
+  QtxIntSpinBox*           myGeomSizeSpinBox;
+
+  QLabel*                  myMinSizeLabel;
+  QtxIntSpinBox*           myMinSizeSpinBox;
+
+  QLabel*                  myMaxSizeLabel;
+  QtxIntSpinBox*           myMaxSizeSpinBox;
+
+  QLabel*                  myMagnificationLabel;
+  QtxIntSpinBox*           myMagnificationSpinBox;
+
+  QLabel*                  myIncrementLabel;
+  QtxDblSpinBox*           myIncrementSpinBox;
+
+  QCheckBox*               myUniformCheckBox;  
+
+  QGroupBox*               myColorGroup;
+  QLabel*                  myColorLabel;
+  QPushButton*             myColorButton;
+};
+
+
+
+#endif
diff --git a/src/VVTK/VVTK_ViewManager.cxx b/src/VVTK/VVTK_ViewManager.cxx
new file mode 100644 (file)
index 0000000..8c3cb03
--- /dev/null
@@ -0,0 +1,26 @@
+#include "VVTK_ViewManager.h"
+#include "VVTK_ViewModel.h"
+
+int VVTK_ViewManager::_VVTKViewMgr_Id = 0;
+
+//***************************************************************
+VVTK_ViewManager
+::VVTK_ViewManager( SUIT_Study* study, 
+                   SUIT_Desktop* theDesktop ) 
+: SUIT_ViewManager( study, theDesktop )
+{
+  myId = ++_VVTKViewMgr_Id;
+  setViewModel( new VVTK_Viewer() );
+}
+
+//***************************************************************
+VVTK_ViewManager::~VVTK_ViewManager()
+{
+}
+
+//***************************************************************
+void VVTK_ViewManager::setViewName(SUIT_ViewWindow* theView)
+{
+  int aPos = myViews.find(theView);
+  theView->setCaption( tr( "VTK_VIEW_TITLE" ).arg( myId ).arg( aPos + 1 ) );
+}
diff --git a/src/VVTK/VVTK_ViewManager.h b/src/VVTK/VVTK_ViewManager.h
new file mode 100644 (file)
index 0000000..101fa58
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef VVTK_VIEWMANAGER_H
+#define VVTK_VIEWMANAGER_H
+
+#include "SUIT_ViewManager.h"
+#include "VVTK.h"
+
+class SUIT_Desktop;
+
+//! Extend SUIT_ViewManager to deal with VVTK_Viewer
+class VVTK_EXPORT VVTK_ViewManager : public SUIT_ViewManager
+{
+  Q_OBJECT;
+public:
+  //! Construct the view manager
+  VVTK_ViewManager( SUIT_Study* study, SUIT_Desktop* );
+
+  //! Destroy the view manager
+  virtual ~VVTK_ViewManager();
+
+protected:
+  void setViewName( SUIT_ViewWindow* theView );
+
+private:
+  int               myId;
+  static  int       _VVTKViewMgr_Id;
+};
+
+#endif
diff --git a/src/VVTK/VVTK_ViewModel.cxx b/src/VVTK/VVTK_ViewModel.cxx
new file mode 100644 (file)
index 0000000..e377881
--- /dev/null
@@ -0,0 +1,208 @@
+#include <qpopupmenu.h>
+#include <qcolordialog.h>
+
+#include "VVTK_ViewModel.h"
+#include "VVTK_ViewWindow.h"
+
+#include "SVTK_View.h"
+#include "SVTK_MainWindow.h"
+#include "SVTK_RenderWindowInteractor.h"
+
+#include "VTKViewer_ViewModel.h"
+
+//==========================================================
+VVTK_Viewer
+::VVTK_Viewer()
+{
+  myTrihedronSize = 105;
+}
+
+VVTK_Viewer
+::~VVTK_Viewer() 
+{}
+
+
+//==========================================================
+void
+VVTK_Viewer
+::setViewManager(SUIT_ViewManager* theViewManager)
+{
+  SUIT_ViewModel::setViewManager(theViewManager);
+
+  if ( !theViewManager )
+    return;
+
+  connect(theViewManager, SIGNAL(mousePress(SUIT_ViewWindow*, QMouseEvent*)), 
+          this, SLOT(onMousePress(SUIT_ViewWindow*, QMouseEvent*)));
+  
+  connect(theViewManager, SIGNAL(mouseMove(SUIT_ViewWindow*, QMouseEvent*)), 
+          this, SLOT(onMouseMove(SUIT_ViewWindow*, QMouseEvent*)));
+  
+  connect(theViewManager, SIGNAL(mouseRelease(SUIT_ViewWindow*, QMouseEvent*)), 
+          this, SLOT(onMouseRelease(SUIT_ViewWindow*, QMouseEvent*)));
+}
+
+
+//==========================================================
+SUIT_ViewWindow* 
+VVTK_Viewer
+::createView( SUIT_Desktop* theDesktop )
+{
+  TViewWindow* aViewWindow = new TViewWindow(theDesktop);
+  aViewWindow->Initialize(this);
+    
+  aViewWindow->setBackgroundColor( backgroundColor() );
+  aViewWindow->SetTrihedronSize( trihedronSize() );
+
+  return aViewWindow;
+}
+
+
+//==========================================================
+void
+VVTK_Viewer
+::contextMenuPopup( QPopupMenu* thePopup )
+{
+  thePopup->insertItem( VTKViewer_Viewer::tr( "MEN_DUMP_VIEW" ), this, SLOT( onDumpView() ) );
+  thePopup->insertItem( VTKViewer_Viewer::tr( "MEN_CHANGE_BACKGROUD" ), this, SLOT( onChangeBgColor() ) );
+
+  thePopup->insertSeparator();
+
+  if(TViewWindow* aView = dynamic_cast<TViewWindow*>(myViewManager->getActiveView())){
+    if ( !aView->getMainWindow()->getToolBar()->isVisible() ){
+      thePopup->insertItem( VTKViewer_Viewer::tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) );
+    }
+  }
+}
+
+
+//==========================================================
+void 
+VVTK_Viewer
+::Repaint()
+{
+  QPtrVector<SUIT_ViewWindow> aViews = myViewManager->getViews();
+  for(int i = 0, iEnd = aViews.size(); i < iEnd; i++){
+    if(TViewWindow* aView = dynamic_cast<TViewWindow*>(aViews.at(i))){
+      aView->getMainWindow()->Repaint();
+    }
+  }
+}
+
+
+//==========================================================
+bool
+VVTK_Viewer
+::isVisible( const Handle(SALOME_InteractiveObject)& io )
+{
+  QPtrVector<SUIT_ViewWindow> aViews = myViewManager->getViews();
+  for(int i = 0, iEnd = aViews.size(); i < iEnd; i++)
+    if(SUIT_ViewWindow* aViewWindow = aViews.at(i))
+      if(TViewWindow* aView = dynamic_cast<TViewWindow*>(aViewWindow))
+       if(!aView->getView()->isVisible( io ))
+         return false;
+
+  return true;
+}
+
+
+//==========================================================
+void
+VVTK_Viewer
+::onMousePress(SUIT_ViewWindow* vw, QMouseEvent* event)
+{}
+
+void 
+VVTK_Viewer
+::onMouseMove(SUIT_ViewWindow* vw, QMouseEvent* event)
+{}
+
+void 
+VVTK_Viewer
+::onMouseRelease(SUIT_ViewWindow* vw, QMouseEvent* event)
+{}
+
+
+//==========================================================
+QColor
+VVTK_Viewer
+::backgroundColor() const
+{
+  return myBgColor;
+}
+
+void
+VVTK_Viewer
+::setBackgroundColor( const QColor& theColor )
+{
+  if ( !theColor.isValid() )
+    return;
+
+  QPtrVector<SUIT_ViewWindow> aViews = myViewManager->getViews();
+  for(int i = 0, iEnd = aViews.size(); i < iEnd; i++){
+    if(SUIT_ViewWindow* aViewWindow = aViews.at(i)){
+      if(TViewWindow* aView = dynamic_cast<TViewWindow*>(aViewWindow)){
+       aView->setBackgroundColor(theColor);
+      }
+    }
+  }
+
+  myBgColor = theColor;
+}
+
+//==========================================================
+int
+VVTK_Viewer
+::trihedronSize() const
+{
+  return myTrihedronSize;
+}
+
+void 
+VVTK_Viewer
+::setTrihedronSize( const int theSize )
+{
+  myTrihedronSize = theSize;
+  if(SUIT_ViewManager* aViewManager = getViewManager()){
+    QPtrVector<SUIT_ViewWindow> aViews = aViewManager->getViews();
+    for ( int i = 0; i < aViews.count(); i++ ){
+      if(TViewWindow* aView = dynamic_cast<TViewWindow*>(aViews.at( i ))){
+       aView->getMainWindow()->SetTrihedronSize( theSize );
+      }
+    }
+  }
+}
+
+//==========================================================
+void 
+VVTK_Viewer
+::onDumpView()
+{
+  if(SUIT_ViewWindow* aView = myViewManager->getActiveView())
+    aView->onDumpView();
+}
+
+//==========================================================
+void
+VVTK_Viewer
+::onChangeBgColor()
+{
+  if(SUIT_ViewWindow* aView = myViewManager->getActiveView()){
+    QColor aColor = QColorDialog::getColor( backgroundColor(), aView);
+    setBackgroundColor(aColor);
+  }
+}
+
+//==========================================================
+void
+VVTK_Viewer
+::onShowToolbar() 
+{
+  QPtrVector<SUIT_ViewWindow> aViews = myViewManager->getViews();
+  for(int i = 0, iEnd = aViews.size(); i < iEnd; i++){
+    if(TViewWindow* aView = dynamic_cast<TViewWindow*>(aViews.at(i))){
+      aView->getMainWindow()->getToolBar()->show();
+    }
+  }
+}
+
diff --git a/src/VVTK/VVTK_ViewModel.h b/src/VVTK/VVTK_ViewModel.h
new file mode 100644 (file)
index 0000000..0846edc
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef VVTK_VIEWMODEL_H
+#define VVTK_VIEWMODEL_H
+
+#include <qcolor.h>
+
+#include "VVTK.h"
+#include "SVTK_ViewModelBase.h"
+
+#include "SALOME_Prs.h"
+#include "SALOME_InteractiveObject.hxx"
+
+class VVTK_ViewWindow;
+
+//! Extends two interfaces #SVTK_ViewModelBase and #SALOME_View 
+class VVTK_EXPORT VVTK_Viewer : public SVTK_ViewModelBase, public SALOME_View
+{
+  Q_OBJECT;
+
+public:
+  typedef VVTK_ViewWindow TViewWindow;
+  static QString Type() { return "VVTK"; }
+
+  VVTK_Viewer();
+  virtual ~VVTK_Viewer();
+
+  //! Redefine SUIT_ViewModel::createView
+  virtual SUIT_ViewWindow* createView(SUIT_Desktop*);
+
+  //! Redefine SUIT_ViewModel::setViewManager
+  virtual void setViewManager(SUIT_ViewManager* theViewManager);
+  //! Redefine SUIT_ViewModel::contextMenuPopup
+  virtual void contextMenuPopup( QPopupMenu* );
+  //! See SUIT_ViewModel::getType
+  virtual QString getType() const { return Type(); }
+
+  //! Redefine SALOME_View::Repaint
+  virtual void Repaint();
+
+  //! Redefine SALOME_View::isVisible
+  virtual bool isVisible( const Handle(SALOME_InteractiveObject)& );
+
+  //! Get background color of the viewer
+  QColor backgroundColor() const;
+
+  //! Set background color to the viewer
+  void   setBackgroundColor( const QColor& );
+
+  //! Get size of trihedron of the viewer (see SVTK_Renderer::SetTrihedronSize)
+  int    trihedronSize() const;
+
+  //! Set size of trihedron of the viewer (see SVTK_Renderer::SetTrihedronSize)
+  void   setTrihedronSize( const int );
+
+protected slots:
+  void onMousePress(SUIT_ViewWindow*, QMouseEvent*);
+  void onMouseMove(SUIT_ViewWindow*, QMouseEvent*);
+  void onMouseRelease(SUIT_ViewWindow*, QMouseEvent*);
+
+  void onDumpView();
+  void onShowToolbar();
+  void onChangeBgColor();
+
+private:
+  QColor myBgColor;
+  int    myTrihedronSize;
+  bool   mySelectionEnabled;
+  bool   myMultiSelectionEnabled;
+};
+
+#endif
diff --git a/src/VVTK/VVTK_ViewWindow.cxx b/src/VVTK/VVTK_ViewWindow.cxx
new file mode 100755 (executable)
index 0000000..a181ad6
--- /dev/null
@@ -0,0 +1,297 @@
+//  SALOME VTKViewer : build VTK viewer into Salome desktop
+//
+//  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   : 
+//  Author : 
+//  Module : SALOME
+//  $Header$
+
+#include "VVTK_ViewWindow.h"
+#include "VVTK_ViewModel.h"
+#include "VVTK_MainWindow.h"
+#include "SVTK_View.h"
+
+#include "SUIT_Session.h"
+
+#include "VVTK_Renderer.h"
+#include "SVTK_Selector.h"
+#include "SVTK_InteractorStyle.h"
+#include "SVTK_RenderWindowInteractor.h"
+#include "SVTK_GenericRenderWindowInteractor.h"
+
+#include <qsplitter.h>
+#include <qlayout.h>
+#include <qimage.h>
+
+//----------------------------------------------------------------------------
+VVTK_ViewWindow
+::VVTK_ViewWindow(SUIT_Desktop* theDesktop):
+  SVTK_ViewWindow(theDesktop),
+  myMainWindow1(NULL),
+  myMainWindow2(NULL),
+  myView2(NULL)
+{}
+
+//----------------------------------------------------------------------------
+void VVTK_ViewWindow::Initialize(SVTK_ViewModelBase* theModel)
+{
+  if(SUIT_ResourceMgr* aResourceMgr = SUIT_Session::session()->resourceMgr()){
+    QWidget* aWidget = new QWidget(this);
+    setCentralWidget(aWidget);
+    
+    QBoxLayout* aLayout = new QVBoxLayout(aWidget);
+    aLayout->setAutoAdd(true);
+    QSplitter* aSplitter = new QSplitter(Qt::Vertical,aWidget);
+    //aSplitter->setChildrenCollapsible(true);
+
+    VISU_WidgetCtrl* aWidgetCtrl = NULL;
+    VISU_InsideCursorSettings* anInsideCursorSettings = NULL;
+    VISU_OutsideCursorSettings* anOutsideCursorSettings = NULL;
+    VISU_PickingSettings* aPickingSettings = NULL;
+    SVTK_Selector* aSelector = SVTK_Selector::New();
+    {
+      myMainWindow1 = new VVTK_MainWindow1(aSplitter,
+                                          "VVTK_MainWindow",
+                                          aResourceMgr,
+                                          this);
+
+      anInsideCursorSettings = myMainWindow1->GetInsideCursorSettings();
+      anOutsideCursorSettings = myMainWindow1->GetOutsideCursorSettings();
+      aPickingSettings = myMainWindow1->GetPickingSettings();
+
+      SVTK_RenderWindowInteractor* anIteractor = 
+       new SVTK_RenderWindowInteractor(myMainWindow1,"SVTK_RenderWindowInteractor1");
+      
+      SVTK_GenericRenderWindowInteractor* aDevice = 
+       SVTK_GenericRenderWindowInteractor::New();
+      aDevice->SetRenderWidget(anIteractor);
+      aDevice->SetSelector(aSelector);
+    
+      VVTK_Renderer1* aRenderer = VVTK_Renderer1::New();
+      aRenderer->Initialize(aDevice,aSelector);
+
+      aWidgetCtrl = aRenderer->GetWidgetCtrl();
+
+      aRenderer->SetInsideCursorSettings(anInsideCursorSettings);
+      aRenderer->SetOutsideCursorSettings(anOutsideCursorSettings);
+      aRenderer->SetPickingSettings(aPickingSettings);
+
+      anIteractor->Initialize(aDevice,aRenderer,aSelector);
+
+      SVTK_InteractorStyle* aStyle = SVTK_InteractorStyle::New();
+      anIteractor->PushInteractorStyle(aStyle);
+      aStyle->Delete();
+
+      aDevice->Delete();
+      aRenderer->Delete();
+
+      myMainWindow1->Initialize(anIteractor,aRenderer);
+
+      myView1 = new SVTK_View(myMainWindow1);
+      SVTK_ViewWindow::Initialize(myView1,theModel);
+    }
+    {
+      myMainWindow2 = myMainWindow1->CreateMainWindow2(aSplitter,
+                                                      "VVTK_SegmantationWindow",
+                                                      aResourceMgr,
+                                                      this);
+      SVTK_RenderWindowInteractor* anIteractor = 
+       new SVTK_RenderWindowInteractor(myMainWindow2,"SVTK_RenderWindowInteractor1");
+      
+      SVTK_GenericRenderWindowInteractor* aDevice = 
+       SVTK_GenericRenderWindowInteractor::New();
+      aDevice->SetRenderWidget(anIteractor);
+      aDevice->SetSelector(aSelector);
+    
+      VVTK_Renderer2* aRenderer = VVTK_Renderer2::New();
+      aRenderer->Initialize(aDevice,aSelector);
+      
+      aRenderer->SetWidgetCtrl(aWidgetCtrl);
+      
+      aRenderer->SetInsideCursorSettings(anInsideCursorSettings);
+      aRenderer->SetPickingSettings(aPickingSettings);
+      
+      anIteractor->Initialize(aDevice,aRenderer,aSelector);
+
+      SVTK_InteractorStyle* aStyle = SVTK_InteractorStyle::New();
+      anIteractor->PushInteractorStyle(aStyle);
+      aStyle->Delete();
+
+      aDevice->Delete();
+      aRenderer->Delete();
+
+      myMainWindow2->Initialize(anIteractor);
+      
+      myView2 = new SVTK_View(myMainWindow2);
+      SVTK_ViewWindow::Initialize(myView2,theModel);
+    }
+    aSelector->Delete();
+
+    int h = height() / 2;
+    QValueList<int> aSizes;
+    aSizes.append( h );
+    aSizes.append( h );
+    aSplitter->setSizes( aSizes );
+    myMainWindow2->hide();
+
+    myMainWindow = myMainWindow1;
+    myView = myView1;
+  }
+}
+
+//----------------------------------------------------------------------------
+VVTK_ViewWindow
+::~VVTK_ViewWindow()
+{}
+
+
+//----------------------------------------------------------------------------
+VVTK_MainWindow1* 
+VVTK_ViewWindow
+::getMainWindow1()
+{
+  return myMainWindow1;
+}
+
+VVTK_MainWindow2* 
+VVTK_ViewWindow
+::getMainWindow2()
+{
+  return myMainWindow2;
+}
+
+
+//----------------------------------------------------------------------------
+void
+VVTK_ViewWindow
+::AddActor(VTKViewer_Actor* theActor, 
+          bool theIsUpdate)
+{
+  myMainWindow1->AddActor(theActor,theIsUpdate);
+  myMainWindow2->AddActor(theActor,theIsUpdate);
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_ViewWindow
+::RemoveActor(VTKViewer_Actor* theActor, 
+             bool theIsUpdate)
+{
+  myMainWindow1->RemoveActor(theActor,theIsUpdate);
+  myMainWindow2->RemoveActor(theActor,theIsUpdate);
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_ViewWindow
+::Repaint(bool theUpdateTrihedron)
+{
+  myMainWindow1->Repaint(theUpdateTrihedron);
+  myMainWindow2->Repaint(theUpdateTrihedron);
+}
+
+//----------------------------------------------------------------
+void 
+VVTK_ViewWindow
+::unHighlightAll() 
+{
+  myView1->unHighlightAll();
+  myView2->unHighlightAll();
+}
+
+//----------------------------------------------------------------
+void
+VVTK_ViewWindow
+::highlight(const Handle(SALOME_InteractiveObject)& theIO, 
+           bool theIsHighlight, 
+           bool theIsUpdate ) 
+{
+  myView1->highlight( theIO, theIsHighlight, theIsUpdate );
+  myView2->highlight( theIO, theIsHighlight, theIsUpdate );
+}
+
+//----------------------------------------------------------------
+void
+VVTK_ViewWindow
+::onSelectionChanged()
+{
+  myView1->onSelectionChanged();
+  myView2->onSelectionChanged();
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_ViewWindow
+::onResetView()
+{
+  myMainWindow1->onResetView();
+  myMainWindow2->onResetView();
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_ViewWindow
+::onFitAll()
+{
+  myMainWindow1->onFitAll();
+  myMainWindow2->onFitAll();
+}
+
+//----------------------------------------------------------------------------
+void 
+VVTK_ViewWindow
+::action( const int accelAction  )
+{
+  if(myMainWindow1->hasFocus())
+    myMainWindow1->action(accelAction);
+  if(myMainWindow2->hasFocus())
+    myMainWindow2->action(accelAction);
+}
+
+//----------------------------------------------------------------------------
+QImage
+VVTK_ViewWindow
+::dumpView()
+{
+  if( myMainWindow1->GetInteractor()->hasFocus() )
+    return myMainWindow1->dumpView();
+  
+  if( myMainWindow2->GetInteractor()->hasFocus() )
+    return myMainWindow2->dumpView();
+
+  return QImage();
+}
+
+//----------------------------------------------------------------------------
+void
+VVTK_ViewWindow
+::setBackgroundColor( const QColor& theColor )
+{
+  if( myMainWindow1->GetInteractor()->hasFocus() )
+    myMainWindow1->SetBackgroundColor( theColor );
+  else if( myMainWindow2->GetInteractor()->hasFocus() )
+    myMainWindow2->SetBackgroundColor( theColor );
+  else
+    myMainWindow->SetBackgroundColor( theColor );
+}
+
diff --git a/src/VVTK/VVTK_ViewWindow.h b/src/VVTK/VVTK_ViewWindow.h
new file mode 100755 (executable)
index 0000000..54e4745
--- /dev/null
@@ -0,0 +1,124 @@
+#ifndef VVTK_VIEWWINDOW_H
+#define VVTK_VIEWWINDOW_H
+
+#ifdef WIN32
+#pragma warning( disable:4251 )
+#endif
+
+#include "VVTK.h"
+#include "SVTK_ViewWindow.h"
+
+#include <string>
+
+class VVTK_MainWindow1;
+class VVTK_MainWindow2;
+class SVTK_View;
+
+//----------------------------------------------------------------------------
+//! Customize the SVTK_ViewWindow in order to manage two SVTK_View (base and segmented one)
+class VVTK_EXPORT VVTK_ViewWindow : public SVTK_ViewWindow
+{
+  Q_OBJECT;
+
+public:
+  //! To construct the class
+  VVTK_ViewWindow(SUIT_Desktop* theDesktop);
+
+  //! Destroy
+  virtual
+  ~VVTK_ViewWindow();
+
+  //! To initialize
+  virtual
+  void
+  Initialize(SVTK_ViewModelBase* theModel);
+
+  //----------------------------------------------------------------------------
+  //! Get access to base SVTK_MainWindow
+  VVTK_MainWindow1* 
+  getMainWindow1();
+
+  //! Get access to segmented SVTK_MainWindow
+  VVTK_MainWindow2* 
+  getMainWindow2();
+
+  //----------------------------------------------------------------------------
+  //! Redefine SVTK_ViewWindow::AddActor method
+  /*!
+    This is an entry point for publication the presentation into the viewer.
+    Pointed actor published into the basic MainWindow. If the actor is
+    a Gauss Points one second actor is created from initial actor and 
+    is put into segemented MainWindow.
+  */
+  virtual
+  void
+  AddActor(VTKViewer_Actor* theActor,
+          bool theIsUpdate = false);
+
+  //! Redefine SVTK_ViewWindow::RemoveActor method
+  virtual
+  void
+  RemoveActor(VTKViewer_Actor* theActor,
+             bool theIsUpdate = false);
+
+  //! Redefine SVTK_ViewWindow::Repaint method
+  virtual
+  void
+  Repaint(bool theUpdateTrihedron = true);
+
+  //----------------------------------------------------------------------------
+  /*  interactive object management */
+  //! Redefine SVTK_ViewWindow::highlight method
+  virtual
+  void
+  highlight(const Handle(SALOME_InteractiveObject)& theIO, 
+           bool theIsHighlight = true, 
+           bool theIsUpdate = true);
+
+  //! Redefine SVTK_ViewWindow::unHighlightAll method
+  virtual
+  void
+  unHighlightAll();
+
+  //! Redefine SVTK_ViewWindow::setBackgroundColor method
+  virtual
+  void
+  setBackgroundColor( const QColor& );
+
+  //----------------------------------------------------------------------------
+public slots:
+  //! Redefine SVTK_ViewWindow::onSelectionChanged method
+  virtual
+  void
+  onSelectionChanged();
+
+  //! Redefine SVTK_ViewWindow::onResetView method
+  virtual
+  void
+  onResetView();     
+
+  //! Redefine SVTK_ViewWindow::onFitAll method
+  virtual
+  void 
+  onFitAll();
+
+  //----------------------------------------------------------------------------
+protected:
+  virtual 
+  void
+  action( const int );
+
+  virtual QImage dumpView();
+
+  VVTK_MainWindow1* myMainWindow1; //!< The manage base view
+  SVTK_View* myView1; //!< The manage base view
+
+  VVTK_MainWindow2* myMainWindow2; //!< The manage segmented view
+  SVTK_View* myView2; //!< The manage segmented view
+};
+
+#ifdef WIN32
+#pragma warning( default:4251 )
+#endif
+
+#endif