# BOOST Library
BOOST_CPPFLAGS = @BOOST_CPPFLAGS@
+BOOST_LIBS = @BOOST_LIBS@
# JAVA
--- /dev/null
+<!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">
+<center>
+<center>
+ </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%">
+ </p>
+ </div>
+
+<center>
+<table width="96%">
+ <tbody>
+
+ </tbody>
+</table>
+ <br>
+ <br>
+ <br>
+ </center>
+
+<center><big><a href="gui/VISU/visu.htm">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>
<br>
</center>
-<address> </address>
-
<center><big><a href="gui/VISU/visu.htm">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>
--- /dev/null
+<!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> </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"> </p>\r
+\r
+<p align="center" class="whs13">Fig. 4 : Different display mode for results</p>\r
+\r
+<p align="center" class="whs9"> </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> </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"> </p>\r
+\r
+<p align="center" class="whs13">Fig. 5 : Visualization toolbar</p>\r
+\r
+<p align="center" class="whs9"> </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> </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"> </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"> </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> </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"> </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"> </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
--- /dev/null
+<!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> </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
--- /dev/null
+<!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> </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> </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> </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> </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"> </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"> </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> </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> </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> </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> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 38 : Transformation between 2 cameras</p>\r
+\r
+<p align="center" class="whs2"> </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> </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> </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
--- /dev/null
+<!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>►</B></span> \r
+ <span style="font-weight: bold;"><B>Import \r
+ from file</B></span> <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"> Displays \r
+ a selection file dialog box.</I></span></p>\r
+\r
+<p> </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> </p>\r
+\r
+<p align="center" class="whs5">Fig. 1 : Opening a MED file in Salome</p>\r
+\r
+<p align="center" class="whs3"> </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> </p>\r
+\r
+<p> </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
--- /dev/null
+<!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> </p>\r
+\r
+<p>Then, a contextual popup menu displays possible actions:</p>\r
+\r
+<p> </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> </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> </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
--- /dev/null
+<!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> </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
+ ► 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> </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"> </p>\r
+\r
+<p class="whs4">Fig. 46 : New Gauss Point \r
+ toolbar</p>\r
+\r
+<p> </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> </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> </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> </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
--- /dev/null
+<!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> </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
+ ► 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> </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
+ ► 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> </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"> </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> </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> </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> </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> </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> </p>\r
+\r
+<p> </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
--- /dev/null
+<!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> </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> </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> </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"> </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
--- /dev/null
+<!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> </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
--- /dev/null
+<!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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 3 : Families or Groups item Popup menu</p>\r
+\r
+<p align="center" class="whs2"> </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> <span style="font-weight: bold;"><B>Cell \r
+ Color</B></span></p>\r
+<p class="whs15"> 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> </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> </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> </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> </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> </p>\r
+\r
+<p> </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
--- /dev/null
+<!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> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 51 : PERFECT viewer segmentation</p>\r
+\r
+<p> </p>\r
+\r
+<p class="whs5">Sphere Segmentation</p>\r
+\r
+<p class="whs5"> </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"> </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> </p>\r
+\r
+<p> </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> </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> </p>\r
+\r
+<p class="whs5"> </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> </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> </p>\r
+\r
+<p class="whs5"> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 52 : Segmentation configuration dialog</p>\r
+\r
+<p> </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> </p>\r
+\r
+<p>Parameters are explained as follows:</p>\r
+\r
+<p> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 53 : Understanding segmentation cursor parameters</p>\r
+\r
+<p align="center" class="whs2"> </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> </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> </p>\r
+\r
+<p>The dialog is automatically updated.</p>\r
+\r
+<p> </p>\r
+\r
+<p> </p>\r
+\r
+<p class="whs5">Edition of the segmentation cursor</p>\r
+\r
+<p> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 54 : Sphere Segmentation configuration dialog</p>\r
+\r
+<p align="center" class="whs2"> </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"> </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"> </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"> </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"> </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"> </p>\r
+\r
+<p class="whs6">Parameters are explained as follows:</p>\r
+\r
+<p class="whs6"> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 55 : Understanding segmentation cursor parameters</p>\r
+\r
+<p align="center" class="whs2"> </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> </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> </p>\r
+\r
+<p>The dialog is automatically updated accordingly.</p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<p class="whs13"> </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 & sphere).</p>\r
+\r
+<p class="whs13">Therefore, \r
+ dialogs are made of two parts:</p>\r
+\r
+<p class="whs13"> </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"> </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"> </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> </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"> </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"> </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"> </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"> </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"> </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"> </p>\r
+\r
+<p align="center" class="whs4"> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 59 : Standard color dialog</p>\r
+\r
+<p align="center" class="whs2"> </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> </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"> </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"> </p>\r
+\r
+<p>From left to right, the predefined points of view are:</p>\r
+\r
+<p> </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> </p>\r
+\r
+<p>This toolbar is docked to the frame of the second view.</p>\r
+\r
+<p> </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> </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
--- /dev/null
+<!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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 30 : \91Animation\92 dialog</p>\r
+\r
+<p align="center" class="whs2"> </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> </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> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 31 : \91Setup Animation\92 dialog</p>\r
+\r
+<p align="center" class="whs2"> </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> </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> </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> </p>\r
+\r
+<p> </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
--- /dev/null
+<!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> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 2 : Study browser populated by data loaded from MED \r
+ file</p>\r
+\r
+<p> </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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+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
--- /dev/null
+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
--- /dev/null
+<!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> </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> </p>\r
+\r
+<p>Values are displayed at Gauss points as point sprites in the 3D view.</p>\r
+\r
+<p> </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"> </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) </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) </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs17">Fig. 8 : Point sprite display mode</p>\r
+\r
+<p align="center" class="whs15"> </p>\r
+\r
+<p>Two different scalar bars are displayed simultaneously:</p>\r
+\r
+<p> </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> </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> </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> </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 > 0</p>\r
+<p align="center" class="whs30">blue < 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> </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"> </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> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </p>\r
+\r
+<p align="center" class="whs35"></p>\r
+\r
+<p align="center" class="whs35"> </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"> </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"> </p>\r
+\r
+<p class="whs34"> </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"> </p>\r
+\r
+<p align="center" class="whs36">Fig. 13 : OpenGL points presentations</p>\r
+\r
+<p align="center" class="whs35"> </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"> </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"> </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 [Resolution-2] \r
+ ) and displayed for information purpose to end-user.</p></li>\r
+</ul>\r
+\r
+<p class="whs9"> </p>\r
+\r
+<p align="center" class="whs11"><img src="image87.gif" width="186px" height="175px" border="0" class="img_whs38"> <img src="image88.gif" width="191px" height="175px" border="0" class="img_whs39"></p>\r
+\r
+<p align="center" class="whs11"> </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"> </p>\r
+\r
+<p class="whs41"> <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"> </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"> </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"> </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"> </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"> </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> </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"> </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"> </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> </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"> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs17">Fig. 18 : Scalar bar configuration</p>\r
+\r
+<p align="center" class="whs15"> </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> </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> </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> </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> <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> </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> </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> </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> </li>\r
+</ul>\r
+\r
+<p> </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> </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> </p>\r
+\r
+<p class="whs1"> </p>\r
+\r
+<p class="whs1"> </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"> </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> </p>\r
+\r
+<p>Roughly, the differences between this presentation and the one for results \r
+ at Gauss points are:</p>\r
+\r
+<p> </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> </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> </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"> </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> </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"> </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"> </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"> </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"> </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"> </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"> </p>\r
+\r
+<p align="center" class="whs17"> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs17">Fig. 23 : Standard color dialog</p>\r
+\r
+<p align="center" class="whs15"> </p>\r
+\r
+<p> </p>\r
+\r
+<p class="whs1">Display of a deformed shape</p>\r
+\r
+<p> </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"> </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"> </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"> </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"> </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"> </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"> </p>\r
+\r
+<p align="center" class="whs33">Fig. 25 : Deformed Shape dialog \96 OpenGL primitive</p>\r
+\r
+<p align="center" class="whs32"> </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"> </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"> </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"> </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"> </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"> </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
--- /dev/null
+<!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> </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> </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"> </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"> </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
+ \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> </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> </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> </p>\r
+\r
+<p>i) No point is yet selected (>> 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> </p>\r
+\r
+<p>ii) A point is already selected (>> 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> </p>\r
+\r
+<p> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 48 : Sample of semi-transparent window</p>\r
+\r
+<p align="center" class="whs2"> </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> </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> </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"> </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
--- /dev/null
+<!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> </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
--- /dev/null
+<!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> </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> </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> </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
--- /dev/null
+<?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
--- /dev/null
+// 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 + "> " + 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
--- /dev/null
+|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
--- /dev/null
+\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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<!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> </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
--- /dev/null
+<!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
--- /dev/null
+<!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> </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> </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> </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> </p>\r
+\r
+<p>The storage of the Study document is accessed from:</p>\r
+\r
+<p> </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
+ ► Save or File ► Save As</B></span></p></li>\r
+</ul>\r
+\r
+<p> </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"> </p>\r
+\r
+<p align="center" class="whs6">Fig. 61 : Salome \91File\92 menu</p>\r
+\r
+<p align="center" class="whs4"> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs6">Fig. 62 : Salome \91Save As\92 dialog</p>\r
+\r
+<p align="center" class="whs6"> </p>\r
+\r
+<p> </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
--- /dev/null
+<!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> </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
--- /dev/null
+<!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
--- /dev/null
+<!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> </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 ► Open</B></span></p></li>\r
+</ul>\r
+\r
+<p> </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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 63 : Salome \91Open\92 dialog</p>\r
+\r
+<p align="center" class="whs2"> </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> </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
--- /dev/null
+<!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> </p>\r
+\r
+<p>User can manage the video recording by using the following GUI controls:</p>\r
+\r
+<p> </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 \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"> </p>\r
+\r
+<p align="center" class="whs15">Fig. 32 : Video recording GUI controls</p>\r
+\r
+<p align="center" class="whs7"> </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> </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> </p>\r
+\r
+<p align="center" class="whs15">Fig. 33 : Video recording toolbar states.</p>\r
+\r
+<p align="center" class="whs7"> </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
--- /dev/null
+<!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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs5">Fig. 39 : 3D View popup menu</p>\r
+\r
+<p align="center" class="whs3"> </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> </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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs5">Fig. 40 : Study browser with \91Configurations\92 node</p>\r
+\r
+<p align="center" class="whs3"> </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> </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"> </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> </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"> </p>\r
+\r
+<p align="center" class="whs5">Fig. 41 : \91Config\92 entry popup menu</p>\r
+\r
+<p align="center" class="whs3"> </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> </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
--- /dev/null
+<!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"> </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> 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> </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> </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
--- /dev/null
+<!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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 34 : Mouse buttons convention</p>\r
+\r
+<p align="center" class="whs2"> </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> </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"> 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> </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"> </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"> 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> </p>\r
+\r
+<p class="whs20"> </p>\r
+\r
+<p class="whs20"> </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
--- /dev/null
+<!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> </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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 35 : Spacemouse local co-ordinate system</p>\r
+\r
+<p> </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> </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> </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> </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> </p>\r
+\r
+<p>Buttons of the spacemouse are also used to change the magnification \r
+ for Gauss points:</p>\r
+\r
+<p> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 36 : Spacemouse buttons control</p>\r
+\r
+<p align="center" class="whs2"> </p>\r
+\r
+<p>By default, buttons are defined as follow, but user can change them \r
+ in the preferences:</p>\r
+\r
+<p> </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> </p>\r
+\r
+<p> </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
--- /dev/null
+<!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> </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
+ ► 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> </p>\r
+\r
+<p>All these actions open a dialog box that drives the functionality.</p>\r
+\r
+<p> </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> </p>\r
+\r
+<p align="center" class="whs5">Fig. 44 : Standard Salome picking on a field</p>\r
+\r
+<p align="center" class="whs3"> </p>\r
+\r
+<p>The dialog allows user to graphically select an element and displays \r
+ its corresponding information.</p>\r
+\r
+<p> </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> </p>\r
+\r
+<p align="center" class="whs5">Fig. 45 : Standard Salome picking on a mesh</p>\r
+\r
+<p align="center" class="whs3"> </p>\r
+\r
+<p>Selection is possible on:</p>\r
+\r
+<p> </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> </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> </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> </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
--- /dev/null
+[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
--- /dev/null
+<!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> </p>\r
+\r
+<p>Commands are defined in the \91<span style="font-weight: bold;"><B>Preferences</B></span> \r
+ ► <span style="font-weight: bold;"><B>Post-pro</B></span>\92 menu of the \r
+ VISU module:</p>\r
+\r
+<p> </p>\r
+\r
+<ul type="circle" class="whs2">\r
+ \r
+ <li class=kadov-p><p><span style="font-weight: bold;"><B>Post-pro ► \r
+ Scalar Bar</B></span> <img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> <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 ► \r
+ Sweeping</B></span> <img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> <span style="font-style: italic;"><I>Displays \r
+ a dialog to customize default sweeping parameters</I></span></p></li>\r
+</ul>\r
+\r
+<p> </p>\r
+\r
+<p>New options will be added to refine default mode applicable for results \r
+ at Gauss points:</p>\r
+\r
+<p> </p>\r
+\r
+<ul type="circle" class="whs2">\r
+ \r
+ <li class=kadov-p><p><span style="font-weight: bold;"><B>Post-pro ► \r
+ Gauss Points ► Primitive</B></span> <img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> <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> </p>\r
+\r
+<ul type="circle" class="whs2">\r
+ \r
+ <li class=kadov-p><p><span style="font-weight: bold;"><B>Post-pro ► \r
+ Gauss Points ► Scalar Bar</B></span> <img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> <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
--- /dev/null
+<!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> </p>\r
+\r
+<p>The command is defined in the \91<span style="font-weight: bold;"><B>Preferences \r
+ ► Post-pro</B></span>\92 menu of VISU module:</p>\r
+\r
+<p> </p>\r
+\r
+<p>Click <span style="font-weight: bold;"><B>Post-pro ► 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> </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> </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
--- /dev/null
+<!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> </p>\r
+\r
+<ul type="circle" class="whs2">\r
+ \r
+ <li class=kadov-p><p><span style="font-weight: bold;"><B>Post-pro ► \r
+ Navigation ► Pointer</B></span> <img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> <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> </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"> </p>\r
+\r
+<p align="center" class="whs6">Fig. 42 : Navigation pointers configuration dialog</p>\r
+\r
+<p align="center" class="whs4"> </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> </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> </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> </p>\r
+\r
+<p>Choose<span style="font-weight: bold;"><B> Post-pro ► Navigation \r
+ ► Camera movement </B></span> <img src="purple_right_sm.jpg" x-maintain-ratio="TRUE" width="8px" height="9px" border="0" class="img_whs3"> <span style="font-style: italic;"><I>Displays \r
+ a dialog to customize the displacement between 2 cameras.</I></span></p>\r
+\r
+<p> </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"> </p>\r
+\r
+<p align="center" class="whs6">Fig. 43 : Camera movement configuration dialog</p>\r
+\r
+<p align="center" class="whs4"> </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> </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
--- /dev/null
+<!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> </p>\r
+\r
+<p>Choose <span style="font-weight: bold;"><B>Post-pro ► Gauss Points \r
+ ► Picking</B></span> <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>Displays \r
+ a dialog to customize the picking parameters.</I></span></p>\r
+\r
+<p> </p>\r
+\r
+<p class="whs3">Description \r
+ of the dialog and associated parameters:</p>\r
+\r
+<p> </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> </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"> </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"> </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"> </p>\r
+\r
+<p align="center" class="whs7">Fig. 50 : Picking configuration dialog</p>\r
+\r
+<p align="center" class="whs5"> </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> </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> </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> </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"> </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
--- /dev/null
+<!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> </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> </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> </p>\r
+\r
+<p>The following naming convention for segmentation cursors has been established:</p>\r
+\r
+<p> </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> </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
--- /dev/null
+<!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> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 27 : VISU standard fields presentation popup menu</p>\r
+\r
+<p align="center" class="whs4"> </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"> </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"> </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"> </p>\r
+\r
+<p align="center" class="whs4">Fig. 28 : Results at Gauss point popup menu</p>\r
+\r
+<p align="center" class="whs4"> </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"> </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"> </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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+// 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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+// 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
--- /dev/null
+<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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+<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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+// 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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+<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
--- /dev/null
+<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>>></b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
--- /dev/null
+<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><<</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>>></b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
--- /dev/null
+<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><<</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>>></b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
--- /dev/null
+<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><<</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>>></b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
--- /dev/null
+<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><<</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>>></b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
--- /dev/null
+<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><<</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>>></b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
--- /dev/null
+<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><<</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>>></b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
--- /dev/null
+<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><<</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>>></b></a>\r
+\r
+</body>\r
+\r
+</html>\r
+\r
--- /dev/null
+<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><<</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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
+ <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
--- /dev/null
+<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
+ <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
--- /dev/null
+<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
+ <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
--- /dev/null
+<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
+ <nobr><a href="../general.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+ <nobr><a href="../command_activation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command Activation</a></nobr><br>\r
+ <nobr><a href="../command_result.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command Result</a></nobr><br>\r
+ <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
--- /dev/null
+<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
+ <nobr><a href="../display_meshes_general.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+ <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
+ <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
--- /dev/null
+<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
+ <nobr><a href="../display_results_at_gauss_points_general.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+ <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
+ <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
+ <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
+ <nobr><a href="../animation_function.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Animation function</a></nobr><br>\r
+ <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
--- /dev/null
+<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
+ <nobr><a href="../general_timestamps_animation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+ <nobr><a href="../command_activation_timestamps_animation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command activation</a></nobr><br>\r
+ <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
--- /dev/null
+<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
+ <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
--- /dev/null
+<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
+ <nobr><a href="../general_navigation_within_the_scene.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+ <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
+ <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
+ <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
+ <nobr><a href="../cameras.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Cameras</a></nobr><br>\r
+ <nobr><a href="../managing_configurations.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Managing configurations</a></nobr><br>\r
+ <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
--- /dev/null
+<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
+ <nobr><a href="../picking_general.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+ <nobr><a href="../command_activation_picking.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command activation</a></nobr><br>\r
+ <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
+ <nobr><a href="../command_deactivation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command deactivation</a></nobr><br>\r
+ <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
--- /dev/null
+<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
+ <nobr><a href="../segmentation_general.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> General</a></nobr><br>\r
+ <nobr><a href="../command_activation_segmentation.htm"><img src="../wht_toc3.gif" border="0" align="absmiddle"> Command Activation</a></nobr><br>\r
+ <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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<!-- 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
--- /dev/null
+<!-- 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
--- /dev/null
+<!-- 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
--- /dev/null
+<!-- 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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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, " ");\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
--- /dev/null
+<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> " + 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> " + getDefinitionText() + " <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
--- /dev/null
+// 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
--- /dev/null
+// 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\"> </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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+<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
--- /dev/null
+// 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
--- /dev/null
+<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
--- /dev/null
+// 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
--- /dev/null
+<?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
--- /dev/null
+// 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
--- /dev/null
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<resource>\r
+<item name="Prev" value="<<" />\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=">>" />\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="<<" />\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=">>" />\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
--- /dev/null
+<html>\r
+<head>\r
+<title>About WebHelp </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: 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: WebHelp 5.50\r
+ <br>Generated by: 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
--- /dev/null
+<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
--- /dev/null
+\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
--- /dev/null
+\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
--- /dev/null
+\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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<html>\r
+<head>\r
+<title>Select a Topic </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>   <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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<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
--- /dev/null
+<?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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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\"> <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, """);\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 += " ";\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+" "+sI;\r
+ else\r
+ sButton+=sI+" "+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
--- /dev/null
+<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
--- /dev/null
+// 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+=" "+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\"> "+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
--- /dev/null
+// 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+=" ";\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
--- /dev/null
+// 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]="&";\r
+sReplaceStringsSrc[1]=">";\r
+sReplaceStringsSrc[2]="<";\r
+sReplaceStringsSrc[3]=""";\r
+sReplaceStringsSrc[4]=String.fromCharCode(8364);\r
+sReplaceStringsSrc[5]=" ";\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
--- /dev/null
+// 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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+<?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
--- /dev/null
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<glossary>\r
+\r
+</glossary>
\ No newline at end of file
--- /dev/null
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<index>\r
+\r
+</index>\r
--- /dev/null
+<?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
--- /dev/null
+<?xml version='1.0' encoding='windows-1252' ?>\r
+<toc root="whtdata0.xml">\r
+\r
+</toc>\r
docs:
cp -fr $(srcdir)/VISU ./
+ cp -fr $(srcdir)/GAUSS ./
-find $(PWD) -name CVS -exec rm -rf {} \;
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
<html>\r
<head>\r
-<title>VISU refrence manual</title>\r
+<title>Post-Pro Reference Manual</title>\r
\r
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
<meta name="description" content="WebHelp 5.50">\r
<html>\r
<head>\r
-<title>VISU refrence manual</title>\r
+<title>Post-Pro Reference Manual</title>\r
\r
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
<meta name="description" content="WebHelp 5.50">\r
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>a</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-style:none; border:none; width:774px; height:554px; 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
- 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("../visu.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
-<p><img src="../launchvisu.gif" x-maintain-ratio="TRUE" width="774px" height="554px" border="0" class="img_whs1"></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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>a1</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:774px; height:554px; 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
- 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("../visu.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
-<p><img src="../importmed.gif" x-maintain-ratio="TRUE" width="774px" height="554px" border="0" class="img_whs1"></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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>a2</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:774px; height:554px; 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
- 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("../visu.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
-<p><img src="../createpresent.gif" x-maintain-ratio="TRUE" width="774px" height="554px" border="0" class="img_whs1"></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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>a3</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:774px; height:554px; 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
- 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("../visu.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
-<p><img src="../createfieldprsnt.gif" x-maintain-ratio="TRUE" width="774px" height="554px" border="0" class="img_whs1"></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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>a4</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:843px; height:548px; 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
- 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("../visu.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
-<p><img src="../createtable.gif" x-maintain-ratio="TRUE" width="843px" height="548px" border="0" class="img_whs1"></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
+++ /dev/null
-<!doctype HTML public "-//W3C//DTD HTML 4.0 Frameset//EN">\r
-\r
-<html>\r
-\r
-<head>\r
-<title>a5</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:864px; height:554px; 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
- 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("../visu.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
-<p><img src="../animation.gif" x-maintain-ratio="TRUE" width="864px" height="554px" border="0" class="img_whs1"></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
img_whs3 { border:none; width:30px; height:30px; float:none; border-style:none; }\r
ol.whs4 { list-style:decimal; }\r
p.whs5 { font-family:'Times New Roman' , serif; font-size:12pt; margin-left:40px; }\r
-img_whs6 { border:none; width:340px; height:543px; border-style:none; float:left; }\r
-p.whs7 { font-family:'Times New Roman' , serif; font-style:italic; color:#ff0000; margin-left:40px; }\r
-p.whs8 { font-family:'Times New Roman' , serif; margin-left:40px; font-style:normal; color:#000000; }\r
-img_whs9 { border:none; width:28px; height:26px; float:none; border-style:none; }\r
+p.whs6 { font-family:'Times New Roman' , serif; font-style:italic; color:#ff0000; margin-left:40px; }\r
+p.whs7 { font-family:'Times New Roman' , serif; margin-left:40px; font-style:normal; color:#000000; }\r
+img_whs8 { border:none; width:28px; height:26px; float:none; border-style:none; }\r
+img_whs9 { border:none; width:340px; height:543px; float:none; border-style:none; }\r
p.whs10 { margin-left:40px; }\r
ul.whs11 { list-style:disc; }\r
-p.whs12 { margin-left:24px; }\r
+p.whs12 { margin-left:36px; }\r
p.whs13 { font-family:'Times New Roman' , serif; margin-left:0px; }\r
p.whs14 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:normal; }\r
-p.whs15 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
-p.whs16 { margin-left:0px; }\r
-p.whs17 { margin-left:0px; font-family:'Times New Roman' , serif; }\r
-img_whs18 { border:none; width:574px; height:411px; float:none; border-style:none; }\r
-p.whs19 { margin-left:0px; font-family:'Times New Roman' , serif; background-image:url('../texture_horiz_ltbluebubbles.jpg'); }\r
-img_whs20 { border:none; width:35px; height:37px; float:none; border-style:none; }\r
+p.whs15 { margin-left:0px; }\r
+p.whs16 { margin-left:0px; font-family:'Times New Roman' , serif; }\r
+img_whs17 { border:none; width:574px; height:411px; float:none; border-style:none; }\r
+p.whs18 { margin-left:0px; font-family:'Times New Roman' , serif; background-image:url('../texture_horiz_ltbluebubbles.jpg'); }\r
+img_whs19 { border:none; width:35px; height:37px; float:none; border-style:none; }\r
-->\r
</style><script type="text/javascript" language="JavaScript">\r
<!--\r
var strNSS = "<style type='text/css'>";\r
strNSS += "p.whs13 {margin-left:1pt; }";\r
strNSS += "p.whs14 {margin-left:1pt; }";\r
+ strNSS += "p.whs15 {margin-left:1pt; }";\r
strNSS += "p.whs16 {margin-left:1pt; }";\r
- strNSS += "p.whs17 {margin-left:1pt; }";\r
- strNSS += "p.whs19 {margin-left:1pt; }";\r
+ strNSS += "p.whs18 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
}\r
\r
<p class=TODO\r
style="color: #000000;"><span class=expandtext\r
- style="color: #000000;"><font color=black ><img src="../pics/cutlines.png" x-maintain-ratio="TRUE" width="340px" height="543px" align="left" border="0" class="img_whs6">To create a Cut Lines presentation:</font></span></p>\r
+ style="color: #000000;"><font color=black >To create a \r
+ Cut Lines presentation:</font></span></p>\r
\r
-<p class="whs7"> </p>\r
+<p class="whs6"> </p>\r
\r
-<p class="whs8">- Right-click on one of the time stamps of \r
+<p class="whs7">- Right-click on one of the time stamps of \r
the field in the Object browser and from the pop-up menu choose <span \r
style="font-weight: bold;"><B>Cut Lines, </B></span>or</p>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs7"> </p>\r
\r
-<p class="whs8">- Click on one of the time stamps of the field \r
+<p class="whs7">- Click on one of the time stamps of the field \r
in the Object browser and select from the main menu <span style="font-weight: bold;"><B>Visualization \r
- > Cut Lines</B></span>, or click <img src="../pics/cutlinesicn.jpg" x-maintain-ratio="TRUE" width="28px" height="26px" border="0" class="img_whs9"> icon<span style="font-weight: bold;"> \r
+ > Cut Lines</B></span>, or click <img src="../pics/cutlinesicn.jpg" x-maintain-ratio="TRUE" width="28px" height="26px" border="0" class="img_whs8"> icon<span style="font-weight: bold;"> \r
<B></B></span>in the <span style="font-weight: bold;"><B>Visualization Toolbar.</B></span></p>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs7"> </p>\r
+\r
+<p class="whs7"><span class=expandtext\r
+ style="color: #000000;"><font color=black ><img src="../pics/cutlines.png" x-maintain-ratio="TRUE" width="340px" height="543px" border="0" class="img_whs9"></font></span></p>\r
\r
<p class="whs10"> </p>\r
\r
\r
<ul type="disc" class="whs11">\r
\r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Orientation \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Orientation \r
</B></span>check boxes allow to set the orientation of cut planes in 3D space. \r
You should select two of three axis (XY, YZ, or ZX) in which your planes \r
will be located in 3D space</p></li>\r
\r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Rotations \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Rotations \r
</B></span>of the planes in 3d space around the axes of the selected orientation. \r
(The angle of rotation is set in degrees.) </p></li>\r
\r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Base \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Base \r
plane position: </B></span>position of the base plane. This value can be set \r
by default or entered manually. </p></li>\r
\r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Displacement \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Displacement \r
</B></span>of the plane. This parameter defines position of the base plane \r
in 3d space.</p></li>\r
\r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Show \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Show \r
preview </B></span>check box allows to edit the parameters of the presentation \r
and simultaneously observe the preview of this presentation in the viewer.</p></li>\r
\r
- <li class=kadov-p><p class="whs10"><a name=Table></a> \r
+ <li class=kadov-p><p class="whs12"><a name=Table></a> \r
<span style="font-weight: bold;"><B>Generate Data Table: </B></span>If this check \r
box is marked, Visu will automatically generate a data table on the basis \r
of your Cut Lines presentation. This table will be created in the structure \r
of the study. <span style="font-weight: bold;"><B> </B></span></p></li>\r
\r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Generate \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Generate \r
Curves: </B></span>If this check box is marked, Visu will automatically generate \r
curve lines on the basis of values taken from the generated data table. \r
These curves will be created in the structure of the study and can be \r
\r
<ul type="disc" class="whs11">\r
\r
- <li class=kadov-p><p class="whs15"><span \r
- style="font-weight: bold;"><B>Orientation </B></span>check boxes allow to set \r
- the orientation of cut planes in 3D space. You should select two of three \r
- axis (XY, YZ, or ZX) in which your planes will be located in 3D space</p></li>\r
- \r
- <li class=kadov-p><p class="whs15"><span \r
- style="font-weight: bold;"><B>Rotations </B></span>of the planes in 3d space \r
- around the axes of the selected orientation. (The angle of rotation is \r
- set in degrees.) </p></li>\r
- \r
- <li class=kadov-p><p class="whs15"><span \r
- style="font-weight: bold;"><B>Number of planes</B></span>, which will form your \r
- presentation.</p></li>\r
- \r
- <li class=kadov-p><p class="whs15"><span \r
- style="font-weight: bold;"><B>Position </B></span>of each of the planes relative \r
- to other planes, which form your presentation. This value can be set by \r
- default or entered manually. </p></li>\r
- \r
- <li class=kadov-p><p class="whs15"><span \r
- style="font-weight: bold;"><B>Displacement </B></span>of the planes. This parameter \r
- defines the displacement of the planes into one or another side. </p></li>\r
-</ul>\r
-\r
-<p class="whs15"> </p>\r
-\r
-<p class="whs15"> </p>\r
-\r
-<ul type="disc" class="whs11">\r
- \r
- <li class=kadov-p><p class="whs16"><span style="font-weight: bold;"><B>Scalar \r
+ <li class=kadov-p><p class="whs15"><span style="font-weight: bold;"><B>Scalar \r
Bar </B></span>tab allows to define the parameters of the scalar bar displayed \r
along with this presentation (<a href="scalar_map_presentation.htm#Scalar Bar">see \r
also</a>).</p></li>\r
\r
<p class="whs14"> </p>\r
\r
-<p class="whs17"> </p>\r
+<p class="whs16"> </p>\r
\r
-<p class="whs17">After \r
+<p class="whs16">After \r
you have finished with setting these parameters, click <span style="font-weight: bold;"><B>OK. \r
</B></span>Your presentation with scalar bar will be immediately displayed \r
in the viewer: </p>\r
\r
-<p class="whs17"> </p>\r
+<p class="whs16"> </p>\r
\r
-<p class="whs10"> <img src="../pics/cutlinesprsnt.jpg" x-maintain-ratio="TRUE" width="574px" height="411px" border="0" class="img_whs18"></p>\r
+<p class="whs10"> <img src="../pics/cutlinesprsnt.jpg" x-maintain-ratio="TRUE" width="574px" height="411px" border="0" class="img_whs17"></p>\r
\r
-<p class="whs17"> </p>\r
+<p class="whs16"> </p>\r
\r
-<p class="whs19"><img src="../tip1.gif" x-maintain-ratio="TRUE" width="35px" height="37px" border="0" class="img_whs20"> From <span style="font-weight: bold;"><B>Cut Lines</B></span> presentation \r
+<p class="whs18"><img src="../tip1.gif" x-maintain-ratio="TRUE" width="35px" height="37px" border="0" class="img_whs19"> From <span style="font-weight: bold;"><B>Cut Lines</B></span> presentation \r
you can create a <span style="font-weight: bold;"><B>data table. </B></span>This \r
table will consist of the field scalar values located on each cut line \r
of the constructed presentation (<a href="../creating_tables.htm">see \r
curves</a> and <a href="creating_xy_plot.htm">Creating XY plots</a>). \r
</p>\r
\r
-<p class="whs17"> </p>\r
+<p class="whs16"> </p>\r
\r
-<p class="whs17"> </p>\r
+<p class="whs16"> </p>\r
\r
-<p class="whs17">\r
+<p class="whs16">\r
<a href="javascript:void(0);" onClick="var e; if (parseInt(navigator.appVersion)>=4){e=event;} if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function') PickupDialog_Invoke(e,'','Creating curves','creating_curves.htm','Creating field presentations','creating_field_presentations.htm','Creating tables','../creating_tables.htm','Creating XY plot','creating_xy_plot.htm','Editing field presentations','editing_field_presentations.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
\r
-<p class="whs17"> </p>\r
+<p class="whs16"> </p>\r
\r
<script type="text/javascript" language="JavaScript" title="WebHelpRelatedTopics"><!--\r
if (parseInt(navigator.appVersion) >= 3 && typeof (WritePopupMenuLayer) == "function")\r
h1.whs1 { font-family:'Times New Roman' , serif; }\r
img_whs2 { border:none; float:none; width:30px; height:30px; border-style:none; }\r
p.whs3 { font-family:'Times New Roman' , serif; }\r
-img_whs4 { border:none; width:348px; height:597px; border-style:none; float:left; }\r
-p.whs5 { font-family:'Times New Roman' , serif; font-style:italic; color:#ff0000; margin-left:40px; }\r
-p.whs6 { font-family:'Times New Roman' , serif; margin-left:40px; font-style:normal; color:#000000; }\r
-img_whs7 { border:none; width:26px; height:25px; float:none; border-style:none; }\r
-p.whs8 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:normal; }\r
+p.whs4 { font-family:'Times New Roman' , serif; font-style:italic; color:#ff0000; margin-left:40px; }\r
+p.whs5 { font-family:'Times New Roman' , serif; margin-left:40px; font-style:normal; color:#000000; }\r
+img_whs6 { border:none; width:26px; height:25px; float:none; border-style:none; }\r
+p.whs7 { margin-left:80px; }\r
+img_whs8 { border:none; width:348px; height:597px; float:none; border-style:none; }\r
ul.whs9 { list-style:disc; }\r
p.whs10 { margin-left:24px; }\r
-p.whs11 { margin-left:60px; }\r
-p.whs12 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
+p.whs11 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:normal; }\r
+p.whs12 { margin-left:60px; }\r
p.whs13 { margin-left:40px; }\r
img_whs14 { border:none; width:574px; height:411px; float:none; border-style:none; }\r
p.whs15 { font-family:'Times New Roman' , serif; font-weight:bold; margin-left:0px; }\r
if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
{\r
var strNSS = "<style type='text/css'>";\r
- strNSS += "p.whs8 {margin-left:1pt; }";\r
+ strNSS += "p.whs11 {margin-left:1pt; }";\r
strNSS += "p.whs15 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
<p class="whs3"> </p>\r
\r
<p class=TODO\r
- style="font-family: 'Arial Black', sans-serif;"><span style="font-family: 'Times New Roman', serif;"><img src="../pics/cutplanes.png" x-maintain-ratio="TRUE" width="348px" height="597px" align="left" border="0" class="img_whs4"></span>To create a Cut Planes presentation:</p>\r
+ style="font-family: 'Arial Black', sans-serif;">To create a Cut Planes \r
+ presentation:</p>\r
\r
-<p class="whs5"> </p>\r
+<p class="whs4"> </p>\r
\r
-<p class="whs6">- Right-click on one of the time stamps of \r
+<p class="whs5">- Right-click on one of the time stamps of \r
the field in the Object browser and from the pop-up menu choose <span \r
style="font-weight: bold;"><B>Cut Planes, </B></span>or</p>\r
\r
-<p class="whs6"> </p>\r
+<p class="whs5"> </p>\r
\r
-<p class="whs6">- Click on one of the time stamps of the field \r
+<p class="whs5">- Click on one of the time stamps of the field \r
in the Object browser and select from the main menu <span style="font-weight: bold;"><B>Visualization \r
- > Cut Planes</B></span>, or click <img src="../pics/cutlinesicon.jpg" x-maintain-ratio="TRUE" width="26px" height="25px" border="0" class="img_whs7"> icon<span style="font-weight: bold;"> \r
- <B></B></span>in the <span style="font-weight: bold;"><B>Visualization Toolbar</B></span></p>\r
+ > Cut Planes</B></span>, or click <img src="../pics/cutlinesicon.jpg" x-maintain-ratio="TRUE" width="26px" height="25px" border="0" class="img_whs6"> icon<span style="font-weight: bold;"> \r
+ <B></B></span>in the <span style="font-weight: bold;"><B>Visualization Toolbar.</B></span></p>\r
+\r
+<p class="whs5"> </p>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs7"><img src="../pics/cutplanes.png" x-maintain-ratio="TRUE" width="348px" height="597px" border="0" class="img_whs8"></p>\r
+\r
+<p class="whs7"> </p>\r
\r
<ul type="disc" class="whs9">\r
\r
Planes </B></span>presentation:</p></li>\r
</ul>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs11"> </p>\r
\r
<ul type="disc" class="whs9">\r
\r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Orientation \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Orientation \r
</B></span>check boxes allow to set the orientation of cut planes in 3D space. \r
You should select two of three axis (<span style="font-weight: bold;"><B>XY</B></span>, \r
<span style="font-weight: bold;"><B>YZ</B></span>, or <span style="font-weight: bold;"><B>ZX</B></span>) \r
in which your planes will be located in 3D space</p></li>\r
\r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Rotations \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Rotations \r
</B></span>of the planes in 3d space around the axes of the selected orientation. \r
(The angle of rotation is set in degrees.) </p></li>\r
\r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Number \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Number \r
of planes</B></span>, which will form your presentation.</p></li>\r
\r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Position \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Position \r
</B></span>of each of the planes relative to other planes, which form your \r
presentation. This value can be set by default, entered manually. </p></li>\r
\r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Displacement \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Displacement \r
</B></span>of the planes. This parameter defines the displacement of the planes \r
into one or another side. </p></li>\r
\r
- <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Show \r
+ <li class=kadov-p><p class="whs12"><span style="font-weight: bold;"><B>Show \r
preview </B></span>check box allows to edit the parameters of the presentation \r
and simultaneously observe the preview of this presentation in the viewer.</p></li>\r
</ul>\r
\r
-<p class="whs12"> </p>\r
+<p class="whs11"> </p>\r
\r
-<ul type="disc" class="whs9">\r
- \r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Scalar \r
- Bar </B></span>tab allows to define the parameters of the scalar bar displayed \r
- along with this presentation (<a href="scalar_map_presentation.htm#Scalar Bar">see \r
- also</a>).</p></li>\r
-</ul>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs8">After you have finished with setting \r
+<p class="whs11">After you have finished with setting \r
these parameters, click <span style="font-weight: bold;"><B>OK. </B></span>Your \r
presentation with scalar bar will be immediately displayed in the viewer: \r
</p>\r
\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs8"> </p>\r
-\r
-<p class="whs8"> </p>\r
+<p class="whs11"> </p>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs11"> </p>\r
\r
<p class="whs13"> <img src="../pics/cutplpresent.jpg" x-maintain-ratio="TRUE" width="574px" height="411px" border="0" class="img_whs14"></p>\r
\r
\r
<p class="whs15"> </p>\r
\r
-<p class="whs8">\r
+<p class="whs11">\r
<a href="javascript:void(0);" onClick="var e; if (parseInt(navigator.appVersion)>=4){e=event;} if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function') PickupDialog_Invoke(e,'','Creating field presentations','creating_field_presentations.htm','Editing field presentations','editing_field_presentations.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs11"> </p>\r
\r
<script type="text/javascript" language="JavaScript" title="WebHelpRelatedTopics"><!--\r
if (parseInt(navigator.appVersion) >= 3 && typeof (WritePopupMenuLayer) == "function")\r
<style type="text/css">\r
<!--\r
h1.whs1 { font-family:'Times New Roman' , serif; }\r
-p.whs2 { font-family:'Times New Roman' , serif; font-weight:bold; text-indent:48px; }\r
-p.whs3 { font-family:'Times New Roman' , serif; font-weight:bold; }\r
-img_whs4 { border:none; width:348px; height:533px; border-style:none; float:left; }\r
+p.whs2 { font-weight:bold; }\r
+img_whs3 { border:none; float:none; width:30px; height:30px; border-style:none; }\r
+p.whs4 { font-family:'Times New Roman' , serif; font-weight:bold; }\r
p.whs5 { font-family:'Times New Roman' , serif; font-style:italic; color:#ff0000; margin-left:40px; }\r
p.whs6 { font-family:'Times New Roman' , serif; margin-left:40px; font-style:normal; color:#000000; }\r
img_whs7 { border:none; width:26px; height:26px; float:none; border-style:none; }\r
-ul.whs8 { list-style:disc; }\r
-p.whs9 { margin-left:36px; }\r
-p.whs10 { margin-left:84px; }\r
-p.whs11 { font-family:'Times New Roman' , serif; }\r
-p.whs12 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:normal; }\r
-p.whs13 { margin-left:40px; }\r
-img_whs14 { border:none; border-style:none; width:451px; height:299px; float:none; }\r
+img_whs8 { border:none; width:348px; height:533px; border-style:none; float:none; }\r
+ul.whs9 { list-style:disc; }\r
+p.whs10 { margin-left:36px; }\r
+p.whs11 { margin-left:84px; }\r
+p.whs12 { font-family:'Times New Roman' , serif; }\r
+p.whs13 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:normal; }\r
+p.whs14 { margin-left:40px; }\r
+img_whs15 { border:none; width:451px; height:299px; 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.whs12 {margin-left:1pt; }";\r
+ strNSS += "p.whs13 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
}\r
</script>\r
<h1 class="whs1">Deformed Shape presentation</h1>\r
\r
-<p class="whs2">Deformed Shape <span style="font-weight: normal;">is \r
+<p class="whs2"><img src="../i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs3">Deformed Shape <span style="font-weight: normal;">is \r
a type of field presentation when vector values corresponding to the cells \r
of the mesh are visualized by shifting of these cells. </span></p>\r
\r
-<p class="whs3"> </p>\r
+<p class="whs4"> </p>\r
\r
-<p class=TODO><span style="font-family: 'Times New Roman', serif;"><img src="../pics/deformedshape.png" x-maintain-ratio="TRUE" width="348px" height="533px" align="left" border="0" class="img_whs4"></span>To create a Deformed Shape presentation:</p>\r
+<p class=TODO>To create a Deformed Shape presentation:</p>\r
\r
<p class="whs5"> </p>\r
\r
\r
<p class="whs6"> </p>\r
\r
-<ul type="disc" class="whs8">\r
+<p class="whs6"><img src="../pics/deformedshape.png" x-maintain-ratio="TRUE" width="348px" height="533px" border="0" class="img_whs8"></p>\r
+\r
+<p class="whs6"> </p>\r
+\r
+<p class="whs6"> </p>\r
+\r
+<ul type="disc" class="whs9">\r
\r
- <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Deformed \r
+ <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Deformed \r
Shape</B></span> tab allows to set additional parameters of your <span style="font-weight: bold;"><B>Deformed \r
Shape </B></span>presentation:</p></li>\r
</ul>\r
\r
-<ul type="disc" class="whs8">\r
+<ul type="disc" class="whs9">\r
\r
- <li class=kadov-p><p class="whs10">- <span style="font-weight: bold;"><B>Scale \r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Scale \r
Factor:</B></span> visualization scaling of all vector values applied to the \r
cells of the mesh. </p></li>\r
\r
- <li class=kadov-p><p class="whs10">- <span style="font-weight: bold;"><B>Magnitude \r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Magnitude \r
coloring</B></span> check box: this option allows to color your presentation \r
according the <a href="scalar_map_presentation.htm#Scalar range">scalar \r
range</a> defined in Scalar Bar properties or to display it using only \r
one color (this color is taken by default). <span style="font-weight: bold;"><B> </B></span></p></li>\r
</ul>\r
\r
-<p class="whs11"> </p>\r
+<p class="whs12"> </p>\r
\r
-<ul type="disc" class="whs8">\r
+<ul type="disc" class="whs9">\r
\r
- <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Scalar \r
+ <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Scalar \r
Bar </B></span>tab allows to define the parameters of the scalar bar displayed \r
along with this presentation (<a href="scalar_map_presentation.htm#Scalar Bar">see \r
also</a>).</p></li>\r
</ul>\r
\r
-<p class="whs12"> </p>\r
+<p class="whs13"> </p>\r
\r
-<p class="whs11">After you have finished \r
+<p class="whs12">After you have finished \r
with setting these parameters, click <span style="font-weight: bold;"><B>OK. \r
</B></span>Your presentation with scalar bar will be immediately displayed \r
in the viewer: </p>\r
\r
-<p class="whs11"> </p>\r
+<p class="whs12"> </p>\r
\r
-<p class="whs13"> <img src="../pics/deformedshapesn.png" x-maintain-ratio="TRUE" width="451px" height="299px" border="0" class="img_whs14"></p>\r
+<p class="whs14"> <img src="../pics/deformedshapesn.png" x-maintain-ratio="TRUE" width="451px" height="299px" border="0" class="img_whs15"></p>\r
\r
-<p class="whs11"> </p>\r
+<p class="whs12"> </p>\r
\r
-<p class="whs11">\r
+<p class="whs12">\r
<a href="javascript:void(0);" onClick="var e; if (parseInt(navigator.appVersion)>=4){e=event;} if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function') PickupDialog_Invoke(e,'','Creating field presentations','creating_field_presentations.htm','Editing field presentations','editing_field_presentations.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
\r
-<p class="whs11"> </p>\r
+<p class="whs12"> </p>\r
\r
<script type="text/javascript" language="JavaScript" title="WebHelpRelatedTopics"><!--\r
if (parseInt(navigator.appVersion) >= 3 && typeof (WritePopupMenuLayer) == "function")\r
<h4><span style="font-weight: normal;"><img src="../q_blue.jpg" x-save-file="TRUE" x-save-method="compute-relative" width="30px" height="30px" border="0" class="img_whs1"> </span>HOW TO:</h4>\r
\r
<h4 class="whs2"><img src="../bgbaby.gif" x-maintain-ratio="TRUE" x-save-file="TRUE" x-save-method="compute-relative" width="13px" height="13px" border="0" class="img_whs3"> Create a new study and launch \r
- Post-Pro module <a href="javascript:void(0);" id="a1" style="font-size: 14pt;" onMouseOver="if (parseInt(navigator.appVersion) >= 4 && typeof(BSPSPopupOnMouseOver) == 'function') BSPSPopupOnMouseOver(event);" class="BSSCPopup" onclick="BSSCPopup('a.htm',810,600);return false;"><img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"></a><script type="text/javascript"\r
+ Post-Pro module <img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"><script type="text/javascript"\r
language=JavaScript1.2><!--\r
kadovFilePopupInit('a1');\r
//--></script> \r
<p class="whs5"> </p>\r
\r
<h4 class="whs2"><img src="../bgbaby.gif" x-maintain-ratio="TRUE" x-save-file="TRUE" x-save-method="compute-relative" width="13px" height="13px" border="0" class="img_whs3"> Import a mesh from a MED \r
- file <a href="javascript:void(0);" id="a2" style="font-size: 14pt;" onMouseOver="if (parseInt(navigator.appVersion) >= 4 && typeof(BSPSPopupOnMouseOver) == 'function') BSPSPopupOnMouseOver(event);" class="BSSCPopup" onclick="BSSCPopup('a1.htm',810,600);return false;"><img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"></a><script type="text/javascript"\r
+ file <img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"><script type="text/javascript"\r
language=JavaScript1.2><!--\r
kadovFilePopupInit('a2');\r
//--></script></h4>\r
<p class="whs5"> </p>\r
\r
<h4 class="whs2"><img src="../bgbaby.gif" x-maintain-ratio="TRUE" x-save-file="TRUE" x-save-method="compute-relative" width="13px" height="13px" border="0" class="img_whs3"> Create a presentation of \r
- a submesh and set view parameters <a href="javascript:void(0);" id="a3" style="font-size: 14pt;" onMouseOver="if (parseInt(navigator.appVersion) >= 4 && typeof(BSPSPopupOnMouseOver) == 'function') BSPSPopupOnMouseOver(event);" class="BSSCPopup" onclick="BSSCPopup('a2.htm',810,600);return false;"><img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"></a><script type="text/javascript"\r
+ a submesh and set view parameters <img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"><script type="text/javascript"\r
language=JavaScript1.2><!--\r
kadovFilePopupInit('a3');\r
//--></script></h4>\r
<p class="whs6"> </p>\r
\r
<h4 class="whs2"><img src="../bgbaby.gif" x-maintain-ratio="TRUE" x-save-file="TRUE" x-save-method="compute-relative" width="13px" height="13px" border="0" class="img_whs3"> Create field presentations \r
- and use sweeping <a href="javascript:void(0);" id="a4" style="font-size: 14pt;" onMouseOver="if (parseInt(navigator.appVersion) >= 4 && typeof(BSPSPopupOnMouseOver) == 'function') BSPSPopupOnMouseOver(event);" class="BSSCPopup" onclick="BSSCPopup('a3.htm',810,600);return false;"><img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"></a><script type="text/javascript"\r
+ and use sweeping <img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"><script type="text/javascript"\r
language=JavaScript1.2><!--\r
kadovFilePopupInit('a4');\r
//--></script></h4>\r
\r
<p class="whs5"> </p>\r
\r
-<h4 class="whs2"><img src="../bgbaby.gif" x-maintain-ratio="TRUE" x-save-file="TRUE" x-save-method="compute-relative" width="13px" height="13px" border="0" class="img_whs3"> Animate fields <a href="javascript:void(0);" id="a5" style="font-size: 14pt;" onMouseOver="if (parseInt(navigator.appVersion) >= 4 && typeof(BSPSPopupOnMouseOver) == 'function') BSPSPopupOnMouseOver(event);" class="BSSCPopup" onclick="BSSCPopup('a5.htm',880,600);return false;"><img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"></a><script type="text/javascript"\r
+<h4 class="whs2"><img src="../bgbaby.gif" x-maintain-ratio="TRUE" x-save-file="TRUE" x-save-method="compute-relative" width="13px" height="13px" border="0" class="img_whs3"> Animate fields <img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"><script type="text/javascript"\r
language=JavaScript1.2><!--\r
kadovFilePopupInit('a5');\r
//--></script></h4>\r
<p class="whs5"> </p>\r
\r
<h4 class="whs2"> <img src="../bgbaby.gif" x-maintain-ratio="TRUE" x-save-file="TRUE" x-save-method="compute-relative" width="13px" height="13px" border="0" class="img_whs3"> Import a table from a file and create a 2d plot based on \r
- the data from this table <a href="javascript:void(0);" id="a6" style="font-size: 14pt;" onMouseOver="if (parseInt(navigator.appVersion) >= 4 && typeof(BSPSPopupOnMouseOver) == 'function') BSPSPopupOnMouseOver(event);" class="BSSCPopup" onclick="BSSCPopup('a4.htm',880,600);return false;"><img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"></a><script \r
+ the data from this table <img src="../more.jpg" x-maintain-ratio="TRUE" width="29px" height="29px" border="0" class="img_whs4"><script \r
type="text/javascript"\r
language=JavaScript1.2><!--\r
kadovFilePopupInit('a6');\r
style="font-weight: bold;"> <B></B></span>After it you will see a standard dialog \r
box allowing to search for and choose *.med file:</p>\r
\r
+<p class="whs3"> </p>\r
+\r
<p class="whs2"> <img src="../pics/importfromfile.png" x-maintain-ratio="TRUE" width="453px" height="256px" border="0" class="img_whs4"> </p>\r
\r
<p class="whs2"> </p>\r
h1.whs1 { font-family:'Times New Roman' , serif; }\r
img_whs2 { border:none; width:30px; height:30px; float:none; border-style:none; }\r
p.whs3 { font-family:'Times New Roman' , serif; }\r
-img_whs4 { border:none; width:348px; height:533px; border-style:none; float:left; }\r
-p.whs5 { font-family:'Times New Roman' , serif; font-style:italic; color:#ff0000; margin-left:40px; }\r
-p.whs6 { margin-left:40px; }\r
-img_whs7 { border:none; width:26px; height:27px; float:none; border-style:none; }\r
-p.whs8 { margin-left:0px; }\r
-p.whs9 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:normal; }\r
+p.whs4 { font-family:'Times New Roman' , serif; font-style:italic; color:#ff0000; margin-left:40px; }\r
+p.whs5 { margin-left:40px; }\r
+img_whs6 { border:none; width:26px; height:27px; float:none; border-style:none; }\r
+p.whs7 { margin-left:0px; }\r
+p.whs8 { margin-left:80px; }\r
+img_whs9 { border:none; width:348px; height:533px; border-style:none; float:none; }\r
ul.whs10 { list-style:disc; }\r
p.whs11 { margin-left:24px; }\r
p.whs12 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
if ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion) == 4))\r
{\r
var strNSS = "<style type='text/css'>";\r
- strNSS += "p.whs8 {margin-left:1pt; }";\r
- strNSS += "p.whs9 {margin-left:1pt; }";\r
+ strNSS += "p.whs7 {margin-left:1pt; }";\r
strNSS += "p.whs14 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
<p class="whs3"> </p>\r
\r
<p class=TODO\r
- style="font-family: 'Arial Black', sans-serif;"><span style="font-family: 'Times New Roman', serif;"><img src="../pics/isosurfaces.png" x-maintain-ratio="TRUE" width="348px" height="533px" align="left" border="0" class="img_whs4"></span>To create an Iso Surfaces presentation:</p>\r
+ style="font-family: 'Arial Black', sans-serif;">To create an Iso Surfaces \r
+ presentation:</p>\r
\r
-<p class="whs5"> </p>\r
+<p class="whs4"> </p>\r
\r
-<p class="whs6">- Right-click on one of the time stamps of \r
+<p class="whs5">- Right-click on one of the time stamps of \r
the field in the Object browser and from the pop-up menu choose <span \r
style="font-weight: bold;"><B>Iso Surfaces, </B></span><span>or</span></p>\r
\r
-<p class="whs6"> </p>\r
+<p class="whs5"> </p>\r
\r
-<p class="whs6">- Click on one of the time stamps of the \r
+<p class="whs5">- Click on one of the time stamps of the \r
field in the Object browser and select from the main menu <span style="font-weight: bold;"><B>Visualization \r
- > Iso Surfaces</B></span>, or click <img src="../pics/isosurf.jpg" x-maintain-ratio="TRUE" width="26px" height="27px" border="0" class="img_whs7"> icon<span style="font-weight: bold;"> \r
+ > Iso Surfaces</B></span>, or click <img src="../pics/isosurf.jpg" x-maintain-ratio="TRUE" width="26px" height="27px" border="0" class="img_whs6"> icon<span style="font-weight: bold;"> \r
<B></B></span>in the <span style="font-weight: bold;"><B>Visualization Toolbar</B></span></p>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs7"> </p>\r
\r
-<p class="whs9"> </p>\r
+<p class="whs8"><img src="../pics/isosurfaces.png" x-maintain-ratio="TRUE" width="348px" height="533px" border="0" class="img_whs9"></p>\r
+\r
+<p class="whs8"> </p>\r
\r
<ul type="disc" class="whs10">\r
\r
\r
<p class="whs14"> </p>\r
\r
-<p class="whs6"> <img src="../pics/iso.jpg" x-maintain-ratio="TRUE" width="574px" height="411px" border="0" class="img_whs15"></p>\r
+<p class="whs5"> <img src="../pics/iso.jpg" x-maintain-ratio="TRUE" width="574px" height="411px" border="0" class="img_whs15"></p>\r
\r
<p class="whs14"> </p>\r
\r
img_whs10 { border:none; float:none; width:36px; height:38px; border-style:none; }\r
p.whs11 { font-family:'Times New Roman' , serif; margin-left:40px; }\r
p.whs12 { margin-left:0px; font-family:'Times New Roman' , serif; font-weight:normal; }\r
-img_whs13 { border:none; width:336px; height:501px; border-style:none; float:left; }\r
+img_whs13 { border:none; width:336px; height:501px; border-style:none; float:none; }\r
ul.whs14 { list-style:disc; }\r
p.whs15 { margin-left:36px; }\r
-ol.whs16 { list-style:disc; }\r
-p.whs17 { font-weight:bold; margin-left:24px; }\r
-p.whs18 { font-family:'Times New Roman' , serif; margin-left:40px; font-weight:bold; }\r
-p.whs19 { margin-left:24px; font-weight:normal; }\r
-p.whs20 { margin-left:24px; }\r
-p.whs21 { font-family:'Times New Roman' , serif; margin-left:40px; font-weight:normal; }\r
-p.whs22 { font-weight:bold; margin-left:36px; }\r
-p.whs23 { margin-left:60px; }\r
-p.whs24 { margin-left:0px; }\r
-p.whs25 { font-family:'Times New Roman' , serif; margin-left:0px; }\r
-img_whs26 { border:none; width:308px; height:241px; border-style:none; float:left; }\r
-p.whs27 { margin-left:72px; }\r
-p.whs28 { margin-left:48px; }\r
-img_whs29 { border:none; border-style:none; width:433px; height:303px; float:none; }\r
+p.whs16 { font-weight:bold; margin-left:24px; }\r
+p.whs17 { font-family:'Times New Roman' , serif; margin-left:40px; font-weight:bold; }\r
+p.whs18 { margin-left:24px; font-weight:normal; }\r
+p.whs19 { margin-left:24px; }\r
+p.whs20 { font-family:'Times New Roman' , serif; margin-left:40px; font-weight:normal; }\r
+p.whs21 { font-weight:bold; margin-left:36px; }\r
+p.whs22 { margin-left:60px; }\r
+p.whs23 { margin-left:0px; }\r
+p.whs24 { font-family:'Times New Roman' , serif; margin-left:0px; }\r
+p.whs25 { font-family:'Times New Roman' , serif; margin-left:36px; font-weight:bold; }\r
+p.whs26 { margin-left:120px; }\r
+img_whs27 { border:none; width:308px; height:241px; border-style:none; float:none; }\r
+p.whs28 { margin-left:72px; }\r
+p.whs29 { margin-left:48px; }\r
+img_whs30 { border:none; border-style:none; width:433px; height:303px; float:none; }\r
-->\r
</style><script type="text/javascript" language="JavaScript">\r
<!--\r
strNSS += "p.whs8 {margin-left:1pt; }";\r
strNSS += "p.whs9 {margin-left:1pt; }";\r
strNSS += "p.whs12 {margin-left:1pt; }";\r
+ strNSS += "p.whs23 {margin-left:1pt; }";\r
strNSS += "p.whs24 {margin-left:1pt; }";\r
- strNSS += "p.whs25 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
}\r
\r
<p class="whs11"> </p>\r
\r
-<p class="whs12"> <img src="../pics/scalarbarproperties.png" x-maintain-ratio="TRUE" width="336px" height="501px" align="left" border="0" class="img_whs13"></p>\r
+<p class="whs12"> <img src="../pics/scalarbarproperties.png" x-maintain-ratio="TRUE" width="336px" height="501px" border="0" class="img_whs13"></p>\r
+\r
+<p class="whs12"> </p>\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-P><p class="whs15"><span style="font-weight: bold;"><B>Scalar \r
+ <li class=kadov-p><p class="whs15"><span style="font-weight: bold;"><B>Scalar \r
range parameters:</B></span></p></li>\r
</ul>\r
\r
<p class="whs15"> </p>\r
\r
-<ol type="disc" class="whs16">\r
+<ul type="disc" class="whs14">\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs17">Scalar \r
+ <li class=kadov-p><p class="whs16">Scalar \r
Mode <span style="font-weight: normal;">field: This field allows to choose \r
the mode of transformation of vector values into scalar values for creation \r
of the presentation. It can be module of the vector or one of three components \r
of the vector. (Note: This choose box is relevant only for fields containing \r
vector values, in other cases it will be inactive). </span></p></li>\r
</ul>\r
-</ol>\r
+</ul>\r
\r
-<p class="whs18"> </p>\r
+<p class="whs17"> </p>\r
\r
-<ol type="disc" class="whs16">\r
+<ul type="disc" class="whs14">\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs17">Logarithmic \r
+ <li class=kadov-p><p class="whs16">Logarithmic \r
scaling <span style="font-weight: normal;">check box: You can apply logarithmic \r
scaling to the color scale of the presentation.</span></p></li>\r
</ul>\r
-</ol>\r
+</ul>\r
\r
-<p class="whs19"> </p>\r
+<p class="whs18"> </p>\r
\r
-<ol type="disc" class="whs16">\r
+<ul type="disc" class="whs14">\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs20"><span style="font-weight: bold;"><B>Use \r
+ <li class=kadov-p><p class="whs19"><span style="font-weight: bold;"><B>Use \r
field range: </B></span>if this check box is selected, all cells of the field \r
presentation will be colored according the values applied to these cells. \r
</p></li>\r
</ul>\r
-</ol>\r
+</ul>\r
\r
-<p class="whs20"> </p>\r
+<p class="whs19"> </p>\r
\r
-<ol type="disc" class="whs16">\r
+<ul type="disc" class="whs14">\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs17">Use \r
+ <li class=kadov-p><p class="whs16">Use \r
imposed range: <span style="font-weight: normal;">here you can define \r
your own range of scalar values of the field, on the basis of which this \r
presentation will be constructed. The cells of the field presentation \r
the maximal value of the imposed range the color will be the same as for \r
the cells with applied minimal values. </span></p></li>\r
</ul>\r
-</ol>\r
+</ul>\r
\r
-<p class="whs21"> </p>\r
+<p class="whs20"> </p>\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs22">Colors \r
+ <li class=kadov-p><p class="whs21">Colors \r
and Labels</p></li>\r
\r
- <li class=kadov-p><p class="whs23"><span style="font-weight: bold;"><B>Nb. \r
+ <li class=kadov-p><p class="whs22"><span style="font-weight: bold;"><B>Nb. \r
of colors </B></span>field: In this field you can enter the number of colors, \r
which will be used for coloring of cells containing scalar values.</p></li>\r
\r
- <li class=kadov-p><p class="whs23"><span style="font-weight: bold;"><B>Nb. \r
+ <li class=kadov-p><p class="whs22"><span style="font-weight: bold;"><B>Nb. \r
of labels </B></span>field: In this field you can enter the number of labels, \r
indicating graduation of the scalar bar.</p></li>\r
</ul>\r
\r
-<p class="whs21"> </p>\r
+<p class="whs20"> </p>\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs24"><span style="font-weight: bold;"><B>Orientation: \r
+ <li class=kadov-p><p class="whs23"><span style="font-weight: bold;"><B>Orientation: \r
</B></span>You can select <span style="font-weight: bold;"><B>Vertical </B></span>or<span \r
style="font-weight: bold;"><B> Horizontal </B></span>orientation of the scalar \r
bar. </p></li>\r
</ul>\r
\r
-<p class="whs21"> </p>\r
+<p class="whs20"> </p>\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs24"><span style="font-weight: bold;"><B>Origin:</B></span> \r
+ <li class=kadov-p><p class="whs23"><span style="font-weight: bold;"><B>Origin:</B></span> \r
you can enter <span style="font-weight: bold;"><B>X</B></span> & <span style="font-weight: bold;"><B>Y</B></span> \r
coordinates of the origin of the scalar bar.</p></li>\r
</ul>\r
\r
-<p class="whs21"> </p>\r
+<p class="whs20"> </p>\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs24"> <span \r
+ <li class=kadov-p><p class="whs23"> <span \r
style="font-weight: bold;"><B>Dimensions</B></span>: \r
you can enter <span style="font-weight: bold;"><B>Width</B></span> and <span \r
style="font-weight: bold;"><B>Height</B></span> of the scalar bar.</p></li>\r
</ul>\r
\r
-<p class="whs21"> </p>\r
+<p class="whs20"> </p>\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs25"><span \r
+ <li class=kadov-p><p class="whs24"><span \r
style="font-weight: bold;"><B>Save as default values </B></span>check box allows \r
to save this parameters for all presentations, which will be constructed \r
later.</p></li>\r
</ul>\r
\r
-<p class="whs25"><img src="../pics/textproperty.png" x-maintain-ratio="TRUE" width="308px" height="241px" align="left" border="0" class="img_whs26"></p>\r
-\r
-<p class="whs15"> </p>\r
+<p class="whs24"> </p>\r
\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs15"><span style="font-weight: bold;"><B>Text \r
- properties </B></span>button allows you to define from the following dialog \r
- box:</p></li>\r
+ <li class=kadov-p><p class="whs25">Text properties <span \r
+ style="font-weight: normal;">button allows you to define from the following \r
+ dialog box:</span></p></li>\r
</ul>\r
\r
<p class="whs3"> </p>\r
\r
+<p class="whs26"><img src="../pics/textproperty.png" x-maintain-ratio="TRUE" width="308px" height="241px" border="0" class="img_whs27"></p>\r
+\r
+<p class="whs15"> </p>\r
+\r
<ul type="disc" class="whs14">\r
\r
- <li class=kadov-p><p class="whs27"><span style="font-weight: bold;"><B>Title</B></span> \r
+ <li class=kadov-p><p class="whs28"><span style="font-weight: bold;"><B>Title</B></span> \r
of the field, on the basis of which this presentation is created,</p></li>\r
\r
- <li class=kadov-p><p class="whs27">Font<span style="font-weight: bold;"> \r
+ <li class=kadov-p><p class="whs28">Font<span style="font-weight: bold;"> \r
<B></B></span>properties of the this <span style="font-weight: bold;"><B>Title</B></span>, \r
displayed in the Object Browser,</p></li>\r
\r
- <li class=kadov-p><p class="whs27">Font<span style="font-weight: bold;"> \r
+ <li class=kadov-p><p class="whs28">Font<span style="font-weight: bold;"> \r
<B></B></span>properties of the <span style="font-weight: bold;"><B>Labels</B></span>, \r
displayed new the scalar bar, created with this presentation. </p></li>\r
</ul>\r
\r
-<p class="whs27"> </p>\r
+<p class="whs28"> </p>\r
\r
-<p class="whs28">After you have finished with setting these \r
+<p class="whs29">After you have finished with setting these \r
parameters, click <span style="font-weight: bold;"><B>OK. </B></span>Your presentation \r
with scalar bar will be immediately displayed in the viewer: </p>\r
\r
-<p class="whs28"> </p>\r
+<p class="whs29"> </p>\r
\r
-<p class="whs25"> </p>\r
+<p class="whs24"> </p>\r
\r
-<p class="whs25"> </p>\r
+<p class="whs24"> </p>\r
\r
-<p class="whs25"> </p>\r
+<p class="whs24"> </p>\r
\r
-<p class="whs3"> <img src="../pics/scalarrangesn.png" x-maintain-ratio="TRUE" width="433px" height="303px" border="0" class="img_whs29"></p>\r
+<p class="whs3"> <img src="../pics/scalarrangesn.png" x-maintain-ratio="TRUE" width="433px" height="303px" border="0" class="img_whs30"></p>\r
\r
<p class="whs8"> </p>\r
\r
ul.whs8 { list-style:disc; }\r
p.whs9 { margin-left:0px; font-weight:bold; }\r
p.whs10 { margin-left:0px; font-weight:normal; }\r
-img_whs11 { border:none; width:444px; height:260px; float:none; }\r
+img_whs11 { border:none; width:444px; height:260px; float:none; border-style:none; }\r
-->\r
</style><script type="text/javascript" language="JavaScript">\r
<!--\r
along X (Horizontal) or Y (Vertical) axes.</p></li>\r
</ul>\r
\r
+<p class="whs9"> </p>\r
+\r
<p class="whs10">You can define setting \r
- for each axis separately</p>\r
+ for each axis separately:</p>\r
+\r
+<p class="whs10"> </p>\r
\r
<ul type="disc" class="whs8">\r
\r
<li class=kadov-p><p class="whs9">Horizontal \r
or Vertical axis title</p></li>\r
\r
- <li class=kadov-p><p class="whs9">Vertical \r
- axis title</p></li>\r
- \r
<li class=kadov-p><p class="whs7"><span style="font-weight: bold;"><B>Grid/Axes \r
- marks: </B></span>This set of fields allows you to define the properties of \r
- the grid, constructed on the basis of the numerical marks on the axes.</p></li>\r
+ marks: </B></span> here \r
+ you can define the maximum number of major and minor scale divisions for \r
+ a specified axis. The real number of intervals fits to {1,2,5}*10<span \r
+ style="vertical-align: Super;">N</span>, where \r
+ N is a natural number, and doesn't exceed the maximum.</p></li>\r
\r
<li class=kadov-p><p class="whs7"><span style="font-weight: bold;"><B>Save \r
settings as default: </B></span>If this check box is marked, all XY plots \r
p.whs4 { text-indent:48px; text-align:justify; }\r
p.whs5 { margin-left:0px; text-indent:48px; text-align:justify; }\r
p.whs6 { margin-left:40px; text-align:justify; }\r
-img_whs7 { border:none; width:348px; height:533px; border-style:none; float:left; }\r
-p.whs8 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; }\r
-img_whs9 { border:none; width:26px; height:25px; float:none; border-style:none; }\r
-ul.whs10 { list-style:disc; }\r
-p.whs11 { text-align:justify; margin-left:36px; }\r
-p.whs12 { text-align:justify; margin-left:60px; }\r
-p.whs13 { margin-left:40px; font-weight:bold; text-align:justify; }\r
-img_whs14 { border:none; width:574px; height:411px; float:none; border-style:none; }\r
-p.whs15 { margin-left:0px; text-align:justify; }\r
+p.whs7 { font-style:italic; color:#ff0000; margin-left:40px; text-align:justify; }\r
+img_whs8 { border:none; width:26px; height:25px; float:none; border-style:none; }\r
+p.whs9 { margin-left:40px; text-align:justify; color:#000000; }\r
+img_whs10 { border:none; width:348px; height:533px; float:none; border-style:none; }\r
+p.whs11 { text-align:justify; margin-left:0px; }\r
+ul.whs12 { list-style:disc; }\r
+p.whs13 { margin-left:36px; text-align:justify; }\r
+p.whs14 { text-align:justify; margin-left:36px; }\r
+p.whs15 { font-weight:bold; text-align:justify; margin-left:36px; }\r
+img_whs16 { border:none; width:574px; height:411px; float:none; border-style:none; }\r
+p.whs17 { margin-left:0px; text-align:justify; }\r
-->\r
</style><script type="text/javascript" language="JavaScript">\r
<!--\r
{\r
var strNSS = "<style type='text/css'>";\r
strNSS += "p.whs5 {margin-left:1pt; }";\r
- strNSS += "p.whs15 {margin-left:1pt; }";\r
+ strNSS += "p.whs11 {margin-left:1pt; }";\r
+ strNSS += "p.whs17 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
}\r
\r
<p class=TODO\r
style="text-align: justify; color: #000000;"><span class=expandtext\r
- style="color: #000000;"><font color=black ><img src="../pics/streamlines.png" x-maintain-ratio="TRUE" width="348px" height="533px" align="left" border="0" class="img_whs7">To create a Stream Lines presentation:</font></span></p>\r
+ style="color: #000000;"><font color=black >To \r
+ create a Stream Lines presentation:</font></span></p>\r
\r
-<p class="whs8"> </p>\r
+<p class="whs7"> </p>\r
\r
<p class="whs6">- Right-click on one \r
of the time stamps of the field in the Object browser and from the pop-up \r
<p class="whs6">- Click on one of the \r
time stamps of the field in the Object browser and select from the main \r
menu <span style="font-weight: bold;"><B>Visualization > Stream Lines</B></span>, \r
- or click <img src="../pics/streamlinesicon.jpg" x-maintain-ratio="TRUE" width="26px" height="25px" border="0" class="img_whs9"> icon<span style="font-weight: bold;"> <B></B></span>in \r
+ or click <img src="../pics/streamlinesicon.jpg" x-maintain-ratio="TRUE" width="26px" height="25px" border="0" class="img_whs8"> icon<span style="font-weight: bold;"> <B></B></span>in \r
the <span style="font-weight: bold;"><B>Visualization Toolbar.</B></span></p>\r
\r
<p class="whs6"> </p>\r
\r
-<ul type="disc" class="whs10">\r
- \r
- <li class=kadov-p><p class="whs11"><span \r
- style="font-weight: bold;"><B>Stream Lines </B></span><span>tab allows you to \r
- set additional parameters of your Stream Lines presentation:</span></p></li>\r
-</ul>\r
+<p class="whs9"><span class=expandtext\r
+ style="color: #000000;"><font color=black ><img src="../pics/streamlines.png" x-maintain-ratio="TRUE" width="348px" height="533px" border="0" class="img_whs10"></font></span></p>\r
+\r
+<p class="whs9"> </p>\r
+\r
+<p class="whs11"><span style="font-weight: bold;"><B>Stream \r
+ Lines </B></span><span>tab allows you to set additional parameters of your \r
+ Stream Lines presentation:</span></p>\r
\r
<p class="whs6"> </p>\r
\r
-<ul type="disc" class="whs10">\r
+<ul type="disc" class="whs12">\r
\r
- <li class=kadov-p><p class="whs12"><span \r
+ <li class=kadov-p><p class="whs13"><span \r
style="font-weight: bold;"><B>Source</B></span>: This set of fields allows to \r
define a source presentation on the basis of which your <span style="font-weight: bold;"><B>Stream \r
- Lines </B></span><span>presentation will be generated. </span><span style="margin-left: 40px; text-align: justify;">If \r
- in the </span><span style="margin-left: 40px;\r
- text-align: justify;\r
- font-weight: bold;"><B>Source type </B></span><span \r
- style="margin-left: 40px; text-align: justify;">choose box you have chosen \r
- </span><span style="margin-left: 40px;\r
- text-align: justify;\r
- font-weight: bold;"><B>None</B></span><span style="margin-left: 40px; text-align: justify;">, \r
- your Stream Lines presentation will be generated on </span><span style="margin-left: 40px;\r
- text-align: justify;\r
- font-weight: bold;"><B>all</B></span><span style="margin-left: 40px; text-align: justify;"> \r
- points of the field. You can also choose </span><span style="margin-left: 40px;\r
- text-align: justify;\r
- font-weight: bold;"><B>Entity, Family, Group</B></span><span style="margin-left: 40px; text-align: justify;"> \r
- or </span><span style="margin-left: 40px;\r
- text-align: justify;\r
- font-weight: bold;"><B>Presentation. </B></span><span \r
- style="margin-left: 40px; text-align: justify;">You can also specify the \r
- source presentation (from the list of already created field presentations). \r
- The points of the field located on this source presentation will serve \r
- as starting points for generated streamlines. </span></p></li>\r
+ Lines </B></span>presentation will be generated. If in the <span \r
+ style="font-weight: bold;"><B>Source type </B></span>choose box you have chosen \r
+ <span style="font-weight: bold;"><B>None</B></span>, your Stream Lines presentation \r
+ will be generated on all points of the field. You can also choose <span \r
+ style="font-weight: bold;"><B>Entity, Family, Group </B></span>or <span style="font-weight: bold;"><B>Presentation. \r
+ </B></span>You can also specify the source presentation (from the list of \r
+ already created field presentations). The points of the field located \r
+ on this source presentation will serve as starting points for generated \r
+ streamlines. </p></li>\r
\r
- <li class=kadov-p><p class="whs12">In \r
+ <li class=kadov-p><p class="whs14">In \r
the <span style="font-weight: bold;"><B>Used points</B></span> field you can \r
set the number of these starting points (from 0 to 100%).</p></li>\r
-</ul>\r
-\r
-<p class="whs6"> </p>\r
-\r
-<p class="whs6">- <span style="font-weight: bold;"><B>Step \r
- Length </B></span>field: this parameter defines the size of the output line \r
- segments that make up the streamline (which is represented as a polyline). \r
- </p>\r
-\r
-<p class="whs6"> </p>\r
-\r
-<p class="whs6">- <span style="font-weight: bold;"><B>Integration \r
- Step </B></span>field: parameter of smoothness of the stream lines. This parameter \r
- defines the accuracy of construction of the streamlines. A smaller value \r
- of this parameter allows to construct smoother streamlines (at the cost \r
- of more computation time).</p>\r
-\r
-<p class="whs6"> </p>\r
-\r
-<p class="whs6">- <span style="font-weight: bold;"><B>Propagation \r
- Time </B></span>field: this parameter controls the maximum length of the stream \r
- line (measured in units of time)</p>\r
-\r
-<p class="whs6"> </p>\r
-\r
-<p class="whs13">- Direction <span style="font-weight: normal;">choose \r
+ \r
+ <li class=kadov-p><p class="whs14"><span \r
+ style="font-weight: bold;"><B>Step Length</B></span>: this parameter defines \r
+ the size of the output line segments that make up the streamline (which \r
+ is represented as a polyline). </p></li>\r
+ \r
+ <li class=kadov-p><p class="whs14"><span \r
+ style="font-weight: bold;"><B>Integration Step </B></span>field: parameter of \r
+ smoothness of the stream lines. This parameter defines the accuracy of \r
+ construction of the streamlines. A smaller value of this parameter allows \r
+ to construct smoother streamlines (at the cost of more computation time).</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs14"><span \r
+ style="font-weight: bold;"><B>Propagation Time </B></span>field: this parameter \r
+ controls the maximum length of the stream line (measured in units of time)</p></li>\r
+ \r
+ <li class=kadov-p><p class="whs15">Direction <span style="font-weight: normal;">choose \r
box: this option allows to select direction of the stream lines.(Forward, \r
- Backward or Both)</span></p>\r
-\r
-<p class="whs13"> </p>\r
-\r
-<p class="whs6">- <span style="font-weight: bold;"><B>Magnitude \r
- coloring</B></span> check box: this option allows to color your presentation \r
- according the vector values applied to the cells of the mesh or to display \r
- it using only one color (this color can be selected if you click <span \r
- style="font-weight: bold;"><B>Use Color </B></span>button).</p>\r
+ Backward or Both)</span></p></li>\r
+ \r
+ <li class=kadov-p><p class="whs14"><span \r
+ style="font-weight: bold;"><B>Magnitude coloring</B></span> check box: this option \r
+ allows to color your presentation according the vector values applied \r
+ to the cells of the mesh or to display it using only one color (this color \r
+ can be selected if you click <span style="font-weight: bold;"><B>Use Color \r
+ </B></span>button).</p></li>\r
+</ul>\r
\r
<p class="whs2"> </p>\r
\r
\r
<p class="whs2"> </p>\r
\r
-<p class="whs6"> <img src="../pics/streamlinesprsnt.jpg" x-maintain-ratio="TRUE" width="574px" height="411px" border="0" class="img_whs14"></p>\r
+<p class="whs6"> <img src="../pics/streamlinesprsnt.jpg" x-maintain-ratio="TRUE" width="574px" height="411px" border="0" class="img_whs16"></p>\r
\r
-<p class="whs15"> </p>\r
+<p class="whs17"> </p>\r
\r
-<p class="whs15"> </p>\r
+<p class="whs17"> </p>\r
\r
-<p class="whs15">\r
+<p class="whs17">\r
<a href="javascript:void(0);" onClick="var e; if (parseInt(navigator.appVersion)>=4){e=event;} if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function') PickupDialog_Invoke(e,'','Creating field presentations','creating_field_presentations.htm','Editing field presentations','editing_field_presentations.htm');return false;" title="Related Topics"><img src="../ss_btn_related_topics.gif" border=0 height=17 width=82 alt="Related Topics"></a>\r
\r
\r
</p>\r
\r
-<p class="whs15"> </p>\r
+<p class="whs17"> </p>\r
\r
-<p class="whs15"> </p>\r
+<p class="whs17"> </p>\r
\r
<script type="text/javascript" language="JavaScript" title="WebHelpRelatedTopics"><!--\r
if (parseInt(navigator.appVersion) >= 3 && typeof (WritePopupMenuLayer) == "function")\r
<!--\r
h1.whs1 { font-family:'Times New Roman' , serif; }\r
p.whs2 { font-family:'Times New Roman' , serif; }\r
-img_whs3 { border:none; width:348px; height:533px; border-style:none; float:left; }\r
+img_whs3 { border:none; float:none; width:30px; height:30px; border-style:none; }\r
p.whs4 { font-family:'Times New Roman' , serif; font-style:italic; color:#ff0000; margin-left:40px; }\r
p.whs5 { font-family:'Times New Roman' , serif; margin-left:40px; font-style:normal; color:#000000; }\r
img_whs6 { border:none; width:30px; height:25px; float:none; border-style:none; }\r
-ul.whs7 { list-style:disc; }\r
-p.whs8 { margin-left:36px; }\r
-p.whs9 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:normal; }\r
-p.whs10 { margin-left:60px; }\r
-p.whs11 { margin-left:40px; }\r
-img_whs12 { border:none; width:574px; height:411px; float:none; border-style:none; }\r
+img_whs7 { border:none; width:348px; height:533px; border-style:none; float:none; }\r
+ul.whs8 { list-style:disc; }\r
+p.whs9 { margin-left:36px; }\r
+p.whs10 { font-family:'Times New Roman' , serif; margin-left:0px; font-weight:normal; }\r
+p.whs11 { margin-left:60px; }\r
+p.whs12 { margin-left:40px; }\r
+img_whs13 { border:none; width:574px; height:411px; 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.whs10 {margin-left:1pt; }";\r
strNSS +="</style>";\r
document.write(strNSS);\r
}\r
</script>\r
<h1 class="whs1">Vector Field Presentation</h1>\r
\r
-<p class="whs2"><span style="font-weight: bold;"><B>Vector \r
- Field </B></span>presentation \r
+<p class="whs2"><span style="font-weight: bold;"><B><img src="../i_blue.jpg" x-maintain-ratio="TRUE" width="30px" height="30px" border="0" class="img_whs3">Vector Field </B></span>presentation \r
visualizes vectors of the corresponding cells of the mesh in graphical \r
mode.</p>\r
\r
<p class="whs2"> </p>\r
\r
-<p class=TODO><span style="font-family: 'Times New Roman', serif;"><img src="../pics/vectorfield.png" x-maintain-ratio="TRUE" width="348px" height="533px" align="left" border="0" class="img_whs3"></span>To create a Vector presentation:</p>\r
+<p class=TODO>To create a Vector presentation:</p>\r
\r
<p class="whs4"> </p>\r
\r
\r
<p class="whs5"> </p>\r
\r
-<ul type="disc" class="whs7">\r
+<p class="whs5"><img src="../pics/vectorfield.png" x-maintain-ratio="TRUE" width="348px" height="533px" border="0" class="img_whs7"></p>\r
+\r
+<p class="whs5"> </p>\r
+\r
+<ul type="disc" class="whs8">\r
\r
- <li class=kadov-p><p class="whs8"><span style="font-family: 'Times New Roman', serif;\r
+ <li class=kadov-p><p class="whs9"><span style="font-family: 'Times New Roman', serif;\r
margin-left: 0px;\r
font-weight: bold;"><B>Vectors </B></span><span style="font-family: 'Times New Roman', serif;\r
margin-left: 0px;\r
font-weight: normal;">presentation:</span></p></li>\r
</ul>\r
\r
-<p class="whs9"> </p>\r
+<p class="whs10"> </p>\r
\r
-<ul type="disc" class="whs7">\r
+<ul type="disc" class="whs8">\r
\r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Scale \r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Scale \r
Factor:</B></span> visualization scaling of all vector values applied to the \r
cells of the mesh. </p></li>\r
\r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Line \r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Line \r
width</B></span>: width of the lines representing vectors in your presentation.</p></li>\r
\r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Magnitude \r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Magnitude \r
coloring</B></span> check box: this option allows to color your presentation \r
according the <a href="scalar_map_presentation.htm#Scalar range">scalar \r
range</a> defined in Scalar Bar properties or to display it using only \r
one color (this color can be selected if you click <span style="font-weight: bold;"><B>Select \r
Color </B></span>button).</p></li>\r
\r
- <li class=kadov-p><p class="whs10"><span style="font-weight: bold;"><B>Use \r
+ <li class=kadov-p><p class="whs11"><span style="font-weight: bold;"><B>Use \r
glyphs</B></span> check box: this option allows you to visualize vectors with \r
pointers and select their <span style="font-weight: bold;"><B>type</B></span> \r
and <span style="font-weight: bold;"><B>position </B></span>on the line of the \r
\r
<p> </p>\r
\r
-<ul type="disc" class="whs7">\r
+<ul type="disc" class="whs8">\r
\r
- <li class=kadov-p><p class="whs8"><span style="font-weight: bold;"><B>Scalar \r
+ <li class=kadov-p><p class="whs9"><span style="font-weight: bold;"><B>Scalar \r
Bar </B></span>tab allows to define the parameters of the scalar bar displayed \r
along with this presentation (<a href="scalar_map_presentation.htm#Scalar Bar">see \r
also</a>).</p></li>\r
\r
<p class="whs2"> </p>\r
\r
-<p class="whs11"> <img src="../pics/vectorsprsnt.jpg" x-maintain-ratio="TRUE" width="574px" height="411px" border="0" class="img_whs12"></p>\r
+<p class="whs12"> <img src="../pics/vectorsprsnt.jpg" x-maintain-ratio="TRUE" width="574px" height="411px" border="0" class="img_whs13"></p>\r
\r
<p class="whs2"> </p>\r
\r
document.write("<link REL=\"SHORTCUT ICON\" href=\""+ sIcon +"\">");\r
//-->\r
</script>\r
- <title>VISU refrence manual</title>\r
+ <title>Post-Pro Reference Manual</title>\r
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
<meta name="description" content="WebHelp 5.50">\r
</head>\r
clipping.htm\r
creating_plot2d_presentations_from_tables.htm\r
creating_tables.htm\r
-files\a.htm\r
-files\a1.htm\r
-files\a2.htm\r
-files\a3.htm\r
-files\a4.htm\r
-files\a5.htm\r
files\about_structure_of_med_object.htm\r
files\about_tables.htm\r
files\animating_presentations.htm\r
image20.gif\r
bgbaby.gif\r
q_blue.jpg\r
-createfieldprsnt.gif\r
pics\cellsel.jpg\r
pics\vectorsprsnt.jpg\r
pics\isosurf.jpg\r
pics\setupplot2d.png\r
pics\importtablefromfile.png\r
image21.gif\r
-importmed.gif\r
-launchvisu.gif\r
pics\surface.jpg\r
pics\fitdatarange.png\r
image22.gif\r
pics\editplot2dpresentation.png\r
pics\cutlines.png\r
pics\importfromfile.png\r
-createtable.gif\r
-createpresent.gif\r
pics\animationparam.jpg\r
pics\display.jpg\r
pics\dataonelements2.png\r
pics\dataonelements3.png\r
pics\scaling.png\r
pics\scalarbarproperties.png\r
-animation.gif\r
pics\cutlinesicn.jpg\r
pics\animation.jpg\r
pics\cellselection.jpg\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
<html>\r
<head>\r
-<title>VISU refrence manual</title>\r
+<title>Post-Pro Reference Manual</title>\r
\r
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
<meta name="description" content="WebHelp 5.50">\r
<html>\r
<head>\r
-<title>VISU refrence manual</title>\r
+<title>Post-Pro Reference Manual</title>\r
\r
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
<meta name="description" content="WebHelp 5.50">\r
<html>\r
<head>\r
-<title>VISU refrence manual</title>\r
+<title>Post-Pro Reference Manual</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">\r
<!--\r
aWE("0",0,6,30);\r
-aWE("1",4,5,7,2,10,15,14,16,17,18,21,33,27,28,31);\r
+aWE("1",4,5,7,2,10,15,14,16,17,18,21,33,27,28,29,31);\r
aWE("100",6,30);\r
-aWE("2",4,5,7,2,10,15,14,16,17,21,33,27,28,31);\r
+aWE("10n",29);\r
+aWE("2",4,5,7,2,10,15,14,16,17,21,33,27,28,29,31);\r
aWE("200",7,10);\r
aWE("2d",7,11,19,29);\r
aWE("3",4,5,7,10,21,27,31);\r
aWE("3d",3,11,12,18,20,22,26,28,6);\r
aWE("4",5,7,10,27,31);\r
-aWE("5",5,0);\r
+aWE("5",5,0,29);\r
aWE("acceptabl",31);\r
aWE("acces",29);\r
aWE("accessibl",14);\r
aWE("adjust",5,0,29);\r
aWE("algorithm",11,17);\r
aWE("allow",4,5,7,2,11,12,13,14,16,20,23,33,26,27,28,29,30,31,32);\r
-aWE("along",11,12,13,18,23,27,29,30,32);\r
+aWE("along",11,13,18,23,27,29,30,32);\r
aWE("already",24,6,30);\r
aWE("angl",0,11,12);\r
aWE("animat",5,19);\r
aWE("animation",5,31);\r
-aWE("anoth",5,11,12,28,30,31);\r
+aWE("anoth",5,12,28,30,31);\r
aWE("any",3,4,18);\r
aWE("ap",26,27);\r
aWE("appear",5,7,10,14,24,26,28,6,29);\r
aWE("display",4,5,7,8,9,2,10,11,12,13,15,14,16,17,18,20,23,33,26,28,6,29,30,31,32);\r
aWE("distanc",0);\r
aWE("divid",3);\r
+aWE("division",29);\r
+aWE("doesn",29);\r
aWE("dot",7,1);\r
aWE("down",5,14,28);\r
aWE("downward",7,1);\r
aWE("eras",14);\r
aWE("every",3,5);\r
aWE("examin",18);\r
+aWE("exce",29);\r
aWE("exist",14);\r
aWE("explor",17,20,30);\r
aWE("export",21);\r
aWE("fami",3,30);\r
aWE("famili",3);\r
aWE("featur",27,30);\r
-aWE("field",3,5,8,11,12,13,14,16,18,19,20,22,23,24,26,27,28,29,30,31,32);\r
+aWE("field",3,5,8,11,12,13,14,16,18,19,20,22,23,24,26,27,28,30,31,32);\r
aWE("fil",3,4,17,19,20,21,29);\r
aWE("finish",11,12,13,23,26,30,32);\r
aWE("first",5,1);\r
aWE("intend",5);\r
aWE("interest",30);\r
aWE("interpolation",3);\r
+aWE("interval",29);\r
aWE("introduction",22);\r
aWE("iso",23,31);\r
aWE("isobaric",23);\r
aWE("lot",30);\r
aWE("magnitud",13,30,32);\r
aWE("main",3,5,8,10,11,12,13,14,17,18,21,23,26,27,28,6,29,30,32);\r
+aWE("major",29);\r
aWE("mak",8,28,30);\r
aWE("management",5,16);\r
aWE("manual",4,11,12);\r
aWE("marker",1,29);\r
aWE("massles",30);\r
aWE("maximal",26);\r
-aWE("maximum",23,30);\r
+aWE("maximum",23,29,30);\r
aWE("measur",30);\r
aWE("menu",5,0,7,8,1,9,2,10,11,12,13,15,14,16,17,18,20,21,23,33,24,25,26,27,28,6,29,30,31,32);\r
aWE("mesh",3,11,12,13,18,19,6,30,32);\r
aWE("method",4);\r
aWE("minimal",26);\r
aWE("minimum",23,31);\r
+aWE("minor",29);\r
aWE("mod",4,0,26,28,6,29,32);\r
aWE("modify",2,14,33);\r
aWE("modul",3,5,19,22,25,26,28);\r
aWE("mous",14,28);\r
aWE("mov",5,10);\r
aWE("multipl",30);\r
+aWE("n",29);\r
aWE("nam",7,10,18,21,24,29);\r
+aWE("natural",29);\r
aWE("nb",26);\r
aWE("necessary",18,21);\r
aWE("new",0,8,2,10,19,21,33,25,26);\r
aWE("normal",6);\r
aWE("not",26);\r
aWE("now",0);\r
-aWE("numb",11,12,18,23,26,28,30,31);\r
-aWE("numerical",29);\r
+aWE("numb",12,18,23,26,28,29,30,31);\r
aWE("object",3,5,0,7,8,9,2,10,11,12,13,15,14,16,17,18,20,21,23,33,24,26,28,6,30,31,32);\r
aWE("observ",11,12);\r
aWE("often",3);\r
aWE("quit",10,27);\r
aWE("rang",4,5,13,23,26,29,32);\r
aWE("rarefi",4);\r
-aWE("real",5);\r
+aWE("real",5,29);\r
aWE("rectangl",7,1);\r
aWE("referenc",4,10);\r
aWE("regard",31);\r
aWE("regular",11);\r
aWE("relat",25);\r
-aWE("relativ",11,12);\r
+aWE("relativ",12);\r
aWE("relevant",26);\r
aWE("remov",7);\r
aWE("renam",16,24);\r
aWE("scal",13,16,26,27,29,32);\r
aWE("scalar",3,5,8,2,11,12,13,18,23,33,26,30,31,32);\r
aWE("script",4);\r
-aWE("se",3,4,5,0,8,11,12,13,20,23,25,30,32);\r
+aWE("se",3,4,5,0,8,11,13,20,23,25,30,32);\r
aWE("search",17,20);\r
aWE("second",1);\r
aWE("section",0);\r
aWE("should",3,7,11,12,18,25,31);\r
aWE("show",5,0,11,12,15,29);\r
aWE("shrink",6);\r
-aWE("sid",11,12);\r
+aWE("sid",12);\r
aWE("similar",30);\r
aWE("simultaneou",5);\r
aWE("simultaneous",11,12,20);\r
aWE("spac",11,12,18,28);\r
aWE("spe",5);\r
aWE("special",4);\r
-aWE("specifi",5);\r
+aWE("specifi",5,29);\r
aWE("specific",16);\r
aWE("specify",30);\r
aWE("splin",29);\r
aWE("surfac",12,23,6,31);\r
aWE("surfacefram",6);\r
aWE("sweep",5,19,31);\r
+aWE("t",29);\r
aWE("tab",4,0,11,12,13,21,23,26,30,32);\r
aWE("tabl",3,4,7,1,2,11,15,18,19,21,22,33,29);\r
aWE("tail",32);\r
<p class="ftsbody" >\r
\r
\r
-<nobr><a name="bm_{"></a><a name="subkey_{D"></a>2d <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/getting_started.htm"><b>4</b></a> </nobr><br><nobr>3d <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/introduction_to_visu.htm"><b>7</b></a> <a href="../files/importing_med_objects.htm"><b>8</b></a> <a href="../files/getting_elements_attributes.htm"><b>9</b></a> </nobr><br>\r
+<a name="bm_{"></a><a name="subkey_{{"></a><a href="../files/setting_properties_of_xy_plots.htm"><b>10n</b></a> <br><nobr><a name="bms_{D"></a><a name="subkey_{D"></a>2d <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/getting_started.htm"><b>4</b></a> </nobr><br><nobr>3d <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/introduction_to_visu.htm"><b>7</b></a> <a href="../files/importing_med_objects.htm"><b>8</b></a> <a href="../files/getting_elements_attributes.htm"><b>9</b></a> </nobr><br>\r
<br><br>\r
-<a name="bm_A"></a><a name="subkey_AC"></a><a href="../files/sweeping.htm"><b>acceptable</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>access</b></a> <br><a href="../files/displaying_hiding_presentations.htm"><b>accessible</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>accordance</b></a> <br><nobr>according <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/selection_in_visu.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/vectors_presentation.htm"><b>6</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>accuracy</b></a> <br><a href="../files/scaling_presentations.htm"><b>actions</b></a> <br><nobr>actor <a href="../files/selection_in_visu.htm"><b>1</b></a> <a href="../files/getting_elements_attributes.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_AD"></a><a name="subkey_AD"></a>additional <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/running_visu.htm"><b>7</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>8</b></a> <a href="../files/editing_field_presentations.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>adjust <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>adjusted</b></a> <br><a href="../clipping.htm"><b>adjusting</b></a> <br><nobr><a name="bms_AL"></a><a name="subkey_AL"></a>algorithm <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/exploring_med_files.htm"><b>2</b></a> </nobr><br><nobr>allow <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>3</b></a> </nobr><br><nobr>allowing <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/scaling_presentations.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/importing_med_objects.htm"><b>6</b></a> <a href="../files/editing_field_presentations.htm"><b>7</b></a> </nobr><br><nobr>allows <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/animating_presentations.htm"><b>6</b></a> <a href="../files/about_tables.htm"><b>7</b></a> <a href="../creating_tables.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>10</b></a> <a href="../files/selection_in_visu.htm"><b>11</b></a> <a href="../files/scalar_map_presentation.htm"><b>12</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>13</b></a> <a href="../new_topic.htm"><b>14</b></a> <a href="../files/vectors_presentation.htm"><b>15</b></a> </nobr><br><nobr>along <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> <a href="../files/scaling_presentations.htm"><b>6</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>7</b></a> <a href="../files/getting_elements_attributes.htm"><b>8</b></a> <a href="../files/vectors_presentation.htm"><b>9</b></a> </nobr><br><nobr>already <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/renaming_presentations.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_AN"></a><a name="subkey_AN"></a>angle <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><a href="../files/getting_started.htm"><b>animate</b></a> <br><a href="../files/animating_presentations.htm"><b>animating</b></a> <br><nobr>animation <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>animations</b></a> <br><nobr>another <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/animating_presentations.htm"><b>3</b></a> <a href="../files/sweeping.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/selection_in_visu.htm"><b>6</b></a> </nobr><br><nobr>any <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_AP"></a><a name="subkey_AP"></a>appear <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>6</b></a> <a href="../files/selection_in_visu.htm"><b>7</b></a> <a href="../files/scalar_map_presentation.htm"><b>8</b></a> <a href="../files/renaming_presentations.htm"><b>9</b></a> </nobr><br><nobr>application <a href="../files/running_visu.htm"><b>1</b></a> <a href="../files/importing_med_objects.htm"><b>2</b></a> </nobr><br><nobr>applied <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/about_structure_of_med_object.htm"><b>5</b></a> <a href="../creating_tables.htm"><b>6</b></a> <a href="../files/sweeping.htm"><b>7</b></a> <a href="../files/stream_lines_presentation.htm"><b>8</b></a> <a href="../files/scalar_map_presentation.htm"><b>9</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>10</b></a> <a href="../files/getting_elements_attributes.htm"><b>11</b></a> <a href="../new_topic.htm"><b>12</b></a> <a href="../files/vectors_presentation.htm"><b>13</b></a> </nobr><br><nobr>apply <a href="../files/scaling_presentations.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_AR"></a><a name="subkey_AR"></a><a href="../files/stream_lines_presentation.htm"><b>area</b></a> <br><nobr>around <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><a href="../files/cut_lines_presentation.htm"><b>array</b></a> <br><a href="../files/vectors_presentation.htm"><b>arrows</b></a> <br><nobr><a name="bms_AS"></a><a name="subkey_AS"></a>assign <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>associated</b></a> <br><nobr><a name="bms_AT"></a><a name="subkey_AT"></a>attributes <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_AU"></a><a name="subkey_AU"></a>auto <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><nobr>automatically <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/sweeping.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/importing_med_objects.htm"><b>6</b></a> <a href="../files/exploring_med_files.htm"><b>7</b></a> </nobr><br><nobr><a name="bms_AV"></a><a name="subkey_AV"></a>available <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_AX"></a><a name="subkey_AX"></a>axes <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/scaling_presentations.htm"><b>5</b></a> </nobr><br><nobr>axis <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> </nobr><br>\r
+<a name="bm_A"></a><a name="subkey_AC"></a><a href="../files/sweeping.htm"><b>acceptable</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>access</b></a> <br><a href="../files/displaying_hiding_presentations.htm"><b>accessible</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>accordance</b></a> <br><nobr>according <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/selection_in_visu.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/vectors_presentation.htm"><b>6</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>accuracy</b></a> <br><a href="../files/scaling_presentations.htm"><b>actions</b></a> <br><nobr>actor <a href="../files/selection_in_visu.htm"><b>1</b></a> <a href="../files/getting_elements_attributes.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_AD"></a><a name="subkey_AD"></a>additional <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/running_visu.htm"><b>7</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>8</b></a> <a href="../files/editing_field_presentations.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>adjust <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>adjusted</b></a> <br><a href="../clipping.htm"><b>adjusting</b></a> <br><nobr><a name="bms_AL"></a><a name="subkey_AL"></a>algorithm <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/exploring_med_files.htm"><b>2</b></a> </nobr><br><nobr>allow <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>3</b></a> </nobr><br><nobr>allowing <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/scaling_presentations.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/importing_med_objects.htm"><b>6</b></a> <a href="../files/editing_field_presentations.htm"><b>7</b></a> </nobr><br><nobr>allows <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/animating_presentations.htm"><b>6</b></a> <a href="../files/about_tables.htm"><b>7</b></a> <a href="../creating_tables.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>10</b></a> <a href="../files/selection_in_visu.htm"><b>11</b></a> <a href="../files/scalar_map_presentation.htm"><b>12</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>13</b></a> <a href="../new_topic.htm"><b>14</b></a> <a href="../files/vectors_presentation.htm"><b>15</b></a> </nobr><br><nobr>along <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/scaling_presentations.htm"><b>5</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> <a href="../files/vectors_presentation.htm"><b>8</b></a> </nobr><br><nobr>already <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/renaming_presentations.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_AN"></a><a name="subkey_AN"></a>angle <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><a href="../files/getting_started.htm"><b>animate</b></a> <br><a href="../files/animating_presentations.htm"><b>animating</b></a> <br><nobr>animation <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>animations</b></a> <br><nobr>another <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/sweeping.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> </nobr><br><nobr>any <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_AP"></a><a name="subkey_AP"></a>appear <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>6</b></a> <a href="../files/selection_in_visu.htm"><b>7</b></a> <a href="../files/scalar_map_presentation.htm"><b>8</b></a> <a href="../files/renaming_presentations.htm"><b>9</b></a> </nobr><br><nobr>application <a href="../files/running_visu.htm"><b>1</b></a> <a href="../files/importing_med_objects.htm"><b>2</b></a> </nobr><br><nobr>applied <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/about_structure_of_med_object.htm"><b>5</b></a> <a href="../creating_tables.htm"><b>6</b></a> <a href="../files/sweeping.htm"><b>7</b></a> <a href="../files/stream_lines_presentation.htm"><b>8</b></a> <a href="../files/scalar_map_presentation.htm"><b>9</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>10</b></a> <a href="../files/getting_elements_attributes.htm"><b>11</b></a> <a href="../new_topic.htm"><b>12</b></a> <a href="../files/vectors_presentation.htm"><b>13</b></a> </nobr><br><nobr>apply <a href="../files/scaling_presentations.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_AR"></a><a name="subkey_AR"></a><a href="../files/stream_lines_presentation.htm"><b>area</b></a> <br><nobr>around <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><a href="../files/cut_lines_presentation.htm"><b>array</b></a> <br><a href="../files/vectors_presentation.htm"><b>arrows</b></a> <br><nobr><a name="bms_AS"></a><a name="subkey_AS"></a>assign <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>associated</b></a> <br><nobr><a name="bms_AT"></a><a name="subkey_AT"></a>attributes <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_AU"></a><a name="subkey_AU"></a>auto <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><nobr>automatically <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/sweeping.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/importing_med_objects.htm"><b>6</b></a> <a href="../files/exploring_med_files.htm"><b>7</b></a> </nobr><br><nobr><a name="bms_AV"></a><a name="subkey_AV"></a>available <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_AX"></a><a name="subkey_AX"></a>axes <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/scaling_presentations.htm"><b>5</b></a> </nobr><br><nobr>axis <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> </nobr><br>\r
<br><br>\r
<nobr><a name="bm_B"></a><a name="subkey_BA"></a>back <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/animating_presentations.htm"><b>3</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>background</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>backward</b></a> <br><nobr>bar <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>7</b></a> <a href="../files/vectors_presentation.htm"><b>8</b></a> </nobr><br><nobr>base <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../creating_tables.htm"><b>4</b></a> <a href="../files/sweeping.htm"><b>5</b></a> <a href="../new_topic.htm"><b>6</b></a> </nobr><br><nobr>based <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/animating_presentations.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/introduction_to_visu.htm"><b>6</b></a> <a href="../files/getting_started.htm"><b>7</b></a> </nobr><br><nobr>basic <a href="../files/sweeping.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><nobr>basis <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/about_tables.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>8</b></a> <a href="../files/importing_med_objects.htm"><b>9</b></a> </nobr><br><a href="../files/about_tables.htm"><b>batch</b></a> <br><a name="bms_BE"></a><a name="subkey_BE"></a><a href="../files/running_visu.htm"><b>before</b></a> <br><a href="../files/animating_presentations.htm"><b>begin</b></a> <br><a href="../files/animating_presentations.htm"><b>beginning</b></a> <br><nobr>belonging <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_BI"></a><a name="subkey_BI"></a><a href="../files/vectors_presentation.htm"><b>big</b></a> <br><a name="bms_BO"></a><a name="subkey_BO"></a><a href="../files/selection_in_visu.htm"><b>borders</b></a> <br><nobr>both <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>bottom</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>bound</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>boundary</b></a> <br><nobr>box <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_xy_plot.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/animating_presentations.htm"><b>7</b></a> <a href="../files/stream_lines_presentation.htm"><b>8</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>9</b></a> <a href="../files/selection_in_visu.htm"><b>10</b></a> <a href="../files/scaling_presentations.htm"><b>11</b></a> <a href="../files/scalar_map_presentation.htm"><b>12</b></a> <a href="../files/renaming_presentations.htm"><b>13</b></a> <a href="../files/importing_tables.htm"><b>14</b></a> <a href="../files/importing_med_objects.htm"><b>15</b></a> <a href="../files/getting_elements_attributes.htm"><b>16</b></a> <a href="../files/exploring_med_files.htm"><b>17</b></a> <a href="../files/vectors_presentation.htm"><b>18</b></a> </nobr><br><nobr>boxes <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/scalar_map_presentation.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_BR"></a><a name="subkey_BR"></a>browser <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../files/about_structure_of_med_object.htm"><b>12</b></a> <a href="../creating_tables.htm"><b>13</b></a> <a href="../files/sweeping.htm"><b>14</b></a> <a href="../files/stream_lines_presentation.htm"><b>15</b></a> <a href="../files/selection_in_visu.htm"><b>16</b></a> <a href="../files/scalar_map_presentation.htm"><b>17</b></a> <a href="../files/renaming_presentations.htm"><b>18</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>19</b></a> <a href="../files/importing_tables.htm"><b>20</b></a> <a href="../files/importing_med_objects.htm"><b>21</b></a> <a href="../files/exploring_med_files.htm"><b>22</b></a> <a href="../files/editing_field_presentations.htm"><b>23</b></a> <a href="../new_topic.htm"><b>24</b></a> <a href="../files/vectors_presentation.htm"><b>25</b></a> </nobr><br><nobr><a name="bms_BU"></a><a name="subkey_BU"></a>button <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../clipping.htm"><b>5</b></a> <a href="../files/stream_lines_presentation.htm"><b>6</b></a> <a href="../files/selection_in_visu.htm"><b>7</b></a> <a href="../files/scaling_presentations.htm"><b>8</b></a> <a href="../files/scalar_map_presentation.htm"><b>9</b></a> <a href="../files/renaming_presentations.htm"><b>10</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>11</b></a> <a href="../files/importing_tables.htm"><b>12</b></a> <a href="../files/vectors_presentation.htm"><b>13</b></a> </nobr><br>\r
<br><br>\r
<p class="ftsbody" >\r
<nobr><a name="bms_CL"></a><a name="subkey_CL"></a>click <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../creating_tables.htm"><b>12</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>13</b></a> <a href="../clipping.htm"><b>14</b></a> <a href="../files/sweeping.htm"><b>15</b></a> <a href="../files/stream_lines_presentation.htm"><b>16</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>17</b></a> <a href="../files/selection_in_visu.htm"><b>18</b></a> <a href="../files/scaling_presentations.htm"><b>19</b></a> <a href="../files/scalar_map_presentation.htm"><b>20</b></a> <a href="../files/running_visu.htm"><b>21</b></a> <a href="../files/renaming_presentations.htm"><b>22</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>23</b></a> <a href="../files/importing_tables.htm"><b>24</b></a> <a href="../files/importing_med_objects.htm"><b>25</b></a> <a href="../files/getting_elements_attributes.htm"><b>26</b></a> <a href="../files/editing_field_presentations.htm"><b>27</b></a> <a href="../new_topic.htm"><b>28</b></a> <a href="../files/vectors_presentation.htm"><b>29</b></a> </nobr><br><a href="../clipping.htm"><b>clipping</b></a> <br><a href="../files/animating_presentations.htm"><b>close</b></a> <br><nobr><a name="bms_CO"></a><a name="subkey_CO"></a>color <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> <a href="../files/selection_in_visu.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/vectors_presentation.htm"><b>8</b></a> </nobr><br><nobr>colored <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/scalar_map_presentation.htm"><b>3</b></a> </nobr><br><nobr>coloring <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/scalar_map_presentation.htm"><b>3</b></a> <a href="../files/vectors_presentation.htm"><b>4</b></a> </nobr><br><a href="../files/scalar_map_presentation.htm"><b>colors</b></a> <br><nobr>column <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>3</b></a> </nobr><br><a href="../files/creating_curves.htm"><b>columns</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>combine</b></a> <br><a href="../files/iso_surfaces_presentation.htm"><b>combines</b></a> <br><nobr>comparison <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>compatible</b></a> <br><a href="../clipping.htm"><b>completely</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>complicated</b></a> <br><nobr>component <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/running_visu.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> <a href="../files/exploring_med_files.htm"><b>4</b></a> </nobr><br><nobr>components <a href="../files/scalar_map_presentation.htm"><b>1</b></a> <a href="../files/introduction_to_visu.htm"><b>2</b></a> </nobr><br><a href="../files/creating_xy_plot.htm"><b>compose</b></a> <br><nobr>composed <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../creating_tables.htm"><b>2</b></a> <a href="../files/sweeping.htm"><b>3</b></a> <a href="../new_topic.htm"><b>4</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>composing</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>compressed</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>computation</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>concept</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>conditions</b></a> <br><a href="../files/vectors_presentation.htm"><b>cones</b></a> <br><nobr>confirm <a href="../files/scaling_presentations.htm"><b>1</b></a> <a href="../files/renaming_presentations.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><nobr>consist <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><a href="../files/creating_xy_plot.htm"><b>consisting</b></a> <br><nobr>consists <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>construct</b></a> <br><nobr>constructed <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> </nobr><br><nobr>construction <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> </nobr><br><a href="../files/iso_surfaces_presentation.htm"><b>constructs</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>consuming</b></a> <br><nobr>contain <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> </nobr><br><nobr>contained <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_presentations.htm"><b>2</b></a> <a href="../files/importing_tables.htm"><b>3</b></a> </nobr><br><nobr>container <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> </nobr><br><nobr>containing <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> <a href="../files/importing_tables.htm"><b>3</b></a> </nobr><br><nobr>contains <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>context</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>control</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>controls</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>convey</b></a> <br><nobr>coordinates <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><a href="../files/displaying_hiding_presentations.htm"><b>copy</b></a> <br><a href="../files/creating_curves.htm"><b>correspond</b></a> <br><nobr>correspondence <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><nobr>corresponding <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/vectors_presentation.htm"><b>3</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>cost</b></a> <br><nobr><a name="bms_CR"></a><a name="subkey_CR"></a>create <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_xy_plot.htm"><b>4</b></a> <a href="../files/creating_presentations.htm"><b>5</b></a> <a href="../files/creating_field_presentations.htm"><b>6</b></a> <a href="../files/creating_curves.htm"><b>7</b></a> <a href="../creating_tables.htm"><b>8</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>9</b></a> <a href="../clipping.htm"><b>10</b></a> <a href="../files/sweeping.htm"><b>11</b></a> <a href="../files/stream_lines_presentation.htm"><b>12</b></a> <a href="../files/scalar_map_presentation.htm"><b>13</b></a> <a href="../files/running_visu.htm"><b>14</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>15</b></a> <a href="../files/importing_tables.htm"><b>16</b></a> <a href="../files/getting_started.htm"><b>17</b></a> <a href="../new_topic.htm"><b>18</b></a> <a href="../files/vectors_presentation.htm"><b>19</b></a> </nobr><br><nobr>created <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/about_tables.htm"><b>6</b></a> <a href="../files/about_structure_of_med_object.htm"><b>7</b></a> <a href="../creating_tables.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/scalar_map_presentation.htm"><b>10</b></a> <a href="../files/renaming_presentations.htm"><b>11</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>12</b></a> <a href="../new_topic.htm"><b>13</b></a> </nobr><br><nobr>creating <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_presentations.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/about_tables.htm"><b>6</b></a> <a href="../files/about_structure_of_med_object.htm"><b>7</b></a> <a href="../creating_tables.htm"><b>8</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>9</b></a> <a href="../files/stream_lines_presentation.htm"><b>10</b></a> <a href="../files/scalar_map_presentation.htm"><b>11</b></a> <a href="../new_topic.htm"><b>12</b></a> </nobr><br><nobr>creation <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_xy_plot.htm"><b>3</b></a> <a href="../files/sweeping.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/running_visu.htm"><b>6</b></a> <a href="../files/importing_med_objects.htm"><b>7</b></a> </nobr><br><nobr>cross <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><a name="bms_CT"></a><a name="subkey_CT"></a><a href="../files/displaying_hiding_presentations.htm"><b>ctrl</b></a> <br><a name="bms_CU"></a><a name="subkey_CU"></a><a href="../files/setting_properties_of_xy_plots.htm"><b>current</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>currently</b></a> <br><nobr>curve <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> </nobr><br><nobr>curves <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> </nobr><br><nobr>cut <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/about_tables.htm"><b>3</b></a> <a href="../creating_tables.htm"><b>4</b></a> <a href="../files/sweeping.htm"><b>5</b></a> <a href="../new_topic.htm"><b>6</b></a> </nobr><br><a name="bms_CY"></a><a name="subkey_CY"></a><a href="../files/animating_presentations.htm"><b>cycled</b></a> <br>\r
<br><br>\r
-<nobr><a name="bm_D"></a><a name="subkey_DA"></a>dash <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><nobr>data <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/about_tables.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/introduction_to_visu.htm"><b>6</b></a> <a href="../files/importing_med_objects.htm"><b>7</b></a> <a href="../files/getting_started.htm"><b>8</b></a> </nobr><br><a name="bms_DE"></a><a name="subkey_DE"></a><a href="../files/animating_presentations.htm"><b>decrease</b></a> <br><nobr>default <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_curves.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/running_visu.htm"><b>7</b></a> </nobr><br><nobr>define <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../clipping.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>8</b></a> <a href="../files/vectors_presentation.htm"><b>9</b></a> </nobr><br><nobr>defined <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/sweeping.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>5</b></a> <a href="../files/vectors_presentation.htm"><b>6</b></a> </nobr><br><nobr>defines <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>defining</b></a> <br><nobr>definite <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/about_structure_of_med_object.htm"><b>5</b></a> <a href="../files/selection_in_visu.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>deformation</b></a> <br><nobr>deformed <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><nobr>degrees <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><nobr>delete <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/editing_field_presentations.htm"><b>2</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>depending</b></a> <br><a href="../files/about_tables.htm"><b>described</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>description</b></a> <br><a href="../files/selection_in_visu.htm"><b>desired</b></a> <br><a href="../files/running_visu.htm"><b>desktop</b></a> <br><nobr>destined <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/introduction_to_visu.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_DI"></a><a name="subkey_DI"></a>diagonal <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><nobr>dialog <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/selection_in_visu.htm"><b>6</b></a> <a href="../files/scaling_presentations.htm"><b>7</b></a> <a href="../files/scalar_map_presentation.htm"><b>8</b></a> <a href="../files/renaming_presentations.htm"><b>9</b></a> <a href="../files/importing_tables.htm"><b>10</b></a> <a href="../files/importing_med_objects.htm"><b>11</b></a> <a href="../files/getting_elements_attributes.htm"><b>12</b></a> <a href="../files/exploring_med_files.htm"><b>13</b></a> </nobr><br><nobr>diamond <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>different</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>dimensions</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>direction</b></a> <br><a href="../files/animating_presentations.htm"><b>directory</b></a> <br><a href="../files/importing_med_objects.htm"><b>disabling</b></a> <br><nobr>displacement <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><nobr>display <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/creating_xy_plot.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/about_tables.htm"><b>7</b></a> <a href="../files/sweeping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>displayed <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>9</b></a> <a href="../creating_tables.htm"><b>10</b></a> <a href="../files/stream_lines_presentation.htm"><b>11</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>12</b></a> <a href="../files/selection_in_visu.htm"><b>13</b></a> <a href="../files/scalar_map_presentation.htm"><b>14</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>15</b></a> <a href="../files/importing_med_objects.htm"><b>16</b></a> <a href="../files/getting_elements_attributes.htm"><b>17</b></a> <a href="../files/exploring_med_files.htm"><b>18</b></a> <a href="../new_topic.htm"><b>19</b></a> <a href="../files/vectors_presentation.htm"><b>20</b></a> </nobr><br><nobr>displaying <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/animating_presentations.htm"><b>3</b></a> <a href="../files/sweeping.htm"><b>4</b></a> <a href="../files/editing_field_presentations.htm"><b>5</b></a> </nobr><br><nobr>displays <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> </nobr><br><a href="../clipping.htm"><b>distance</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>divided</b></a> <br><nobr><a name="bms_DO"></a><a name="subkey_DO"></a>dot <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><nobr>down <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> </nobr><br><nobr>downward <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a name="bms_DU"></a><a name="subkey_DU"></a><a href="../files/setting_properties_of_xy_plots.htm"><b>dump</b></a> <br><a href="../files/displaying_hiding_presentations.htm"><b>duplicated</b></a> <br>\r
+<nobr><a name="bm_D"></a><a name="subkey_DA"></a>dash <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><nobr>data <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/about_tables.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/introduction_to_visu.htm"><b>6</b></a> <a href="../files/importing_med_objects.htm"><b>7</b></a> <a href="../files/getting_started.htm"><b>8</b></a> </nobr><br><a name="bms_DE"></a><a name="subkey_DE"></a><a href="../files/animating_presentations.htm"><b>decrease</b></a> <br><nobr>default <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_curves.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/running_visu.htm"><b>7</b></a> </nobr><br><nobr>define <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>7</b></a> <a href="../files/vectors_presentation.htm"><b>8</b></a> </nobr><br><nobr>defined <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/sweeping.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>5</b></a> <a href="../files/vectors_presentation.htm"><b>6</b></a> </nobr><br><nobr>defines <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>defining</b></a> <br><nobr>definite <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/about_structure_of_med_object.htm"><b>5</b></a> <a href="../files/selection_in_visu.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>deformation</b></a> <br><nobr>deformed <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><nobr>degrees <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><nobr>delete <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/editing_field_presentations.htm"><b>2</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>depending</b></a> <br><a href="../files/about_tables.htm"><b>described</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>description</b></a> <br><a href="../files/selection_in_visu.htm"><b>desired</b></a> <br><a href="../files/running_visu.htm"><b>desktop</b></a> <br><nobr>destined <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/introduction_to_visu.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_DI"></a><a name="subkey_DI"></a>diagonal <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><nobr>dialog <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/selection_in_visu.htm"><b>6</b></a> <a href="../files/scaling_presentations.htm"><b>7</b></a> <a href="../files/scalar_map_presentation.htm"><b>8</b></a> <a href="../files/renaming_presentations.htm"><b>9</b></a> <a href="../files/importing_tables.htm"><b>10</b></a> <a href="../files/importing_med_objects.htm"><b>11</b></a> <a href="../files/getting_elements_attributes.htm"><b>12</b></a> <a href="../files/exploring_med_files.htm"><b>13</b></a> </nobr><br><nobr>diamond <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>different</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>dimensions</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>direction</b></a> <br><a href="../files/animating_presentations.htm"><b>directory</b></a> <br><a href="../files/importing_med_objects.htm"><b>disabling</b></a> <br><nobr>displacement <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><nobr>display <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/creating_xy_plot.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/about_tables.htm"><b>7</b></a> <a href="../files/sweeping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>displayed <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>9</b></a> <a href="../creating_tables.htm"><b>10</b></a> <a href="../files/stream_lines_presentation.htm"><b>11</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>12</b></a> <a href="../files/selection_in_visu.htm"><b>13</b></a> <a href="../files/scalar_map_presentation.htm"><b>14</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>15</b></a> <a href="../files/importing_med_objects.htm"><b>16</b></a> <a href="../files/getting_elements_attributes.htm"><b>17</b></a> <a href="../files/exploring_med_files.htm"><b>18</b></a> <a href="../new_topic.htm"><b>19</b></a> <a href="../files/vectors_presentation.htm"><b>20</b></a> </nobr><br><nobr>displaying <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/animating_presentations.htm"><b>3</b></a> <a href="../files/sweeping.htm"><b>4</b></a> <a href="../files/editing_field_presentations.htm"><b>5</b></a> </nobr><br><nobr>displays <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> </nobr><br><a href="../clipping.htm"><b>distance</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>divided</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>divisions</b></a> <br><a name="bms_DO"></a><a name="subkey_DO"></a><a href="../files/setting_properties_of_xy_plots.htm"><b>doesn</b></a> <br><nobr>dot <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><nobr>down <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> </nobr><br><nobr>downward <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a name="bms_DU"></a><a name="subkey_DU"></a><a href="../files/setting_properties_of_xy_plots.htm"><b>dump</b></a> <br><a href="../files/displaying_hiding_presentations.htm"><b>duplicated</b></a> <br>\r
<br><br>\r
<nobr><a name="bm_E"></a><a name="subkey_ED"></a>edges <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> </nobr><br><nobr>edit <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_xy_plot.htm"><b>4</b></a> </nobr><br><a href="../files/editing_field_presentations.htm"><b>editing</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf2.htm" target="_self" title="previous search group"><b>>></b></a>\r
\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><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<a name="bms_EI"></a><a name="subkey_EI"></a><a href="../clipping.htm"><b>either</b></a> <br><nobr><a name="bms_EL"></a><a name="subkey_EL"></a>element <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><nobr>elements <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><a name="bms_EM"></a><a name="subkey_EM"></a><a href="../files/about_tables.htm"><b>empty</b></a> <br><a name="bms_EN"></a><a name="subkey_EN"></a><a href="../files/importing_med_objects.htm"><b>enabling</b></a> <br><nobr>end <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><a href="../files/sweeping.htm"><b>enjoy</b></a> <br><nobr>enter <a href="../files/selection_in_visu.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> <a href="../files/renaming_presentations.htm"><b>3</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>4</b></a> <a href="../files/importing_tables.htm"><b>5</b></a> <a href="../files/getting_elements_attributes.htm"><b>6</b></a> </nobr><br><nobr>entered <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>entities</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>entity</b></a> <br><nobr><a name="bms_EQ"></a><a name="subkey_EQ"></a>equal <a href="../files/scalar_map_presentation.htm"><b>1</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_ER"></a><a name="subkey_ER"></a><a href="../files/displaying_hiding_presentations.htm"><b>erase</b></a> <br><nobr><a name="bms_EV"></a><a name="subkey_EV"></a>every <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> </nobr><br><a name="bms_EX"></a><a name="subkey_EX"></a><a href="../files/getting_elements_attributes.htm"><b>examine</b></a> <br><a href="../files/displaying_hiding_presentations.htm"><b>existing</b></a> <br><nobr>explore <a href="../files/stream_lines_presentation.htm"><b>1</b></a> <a href="../files/importing_med_objects.htm"><b>2</b></a> <a href="../files/exploring_med_files.htm"><b>3</b></a> </nobr><br><a href="../files/exploring_med_files.htm"><b>explored</b></a> <br><a href="../files/exploring_med_files.htm"><b>exploring</b></a> <br><a href="../files/importing_tables.htm"><b>export</b></a> <br><a href="../files/importing_tables.htm"><b>exported</b></a> <br><a href="../files/importing_tables.htm"><b>exporting</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>expressed</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>extent</b></a> <br><a href="../clipping.htm"><b>extremities</b></a> <br>\r
+<a name="bms_EI"></a><a name="subkey_EI"></a><a href="../clipping.htm"><b>either</b></a> <br><nobr><a name="bms_EL"></a><a name="subkey_EL"></a>element <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><nobr>elements <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><a name="bms_EM"></a><a name="subkey_EM"></a><a href="../files/about_tables.htm"><b>empty</b></a> <br><a name="bms_EN"></a><a name="subkey_EN"></a><a href="../files/importing_med_objects.htm"><b>enabling</b></a> <br><nobr>end <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><a href="../files/sweeping.htm"><b>enjoy</b></a> <br><nobr>enter <a href="../files/selection_in_visu.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> <a href="../files/renaming_presentations.htm"><b>3</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>4</b></a> <a href="../files/importing_tables.htm"><b>5</b></a> <a href="../files/getting_elements_attributes.htm"><b>6</b></a> </nobr><br><nobr>entered <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>entities</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>entity</b></a> <br><nobr><a name="bms_EQ"></a><a name="subkey_EQ"></a>equal <a href="../files/scalar_map_presentation.htm"><b>1</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_ER"></a><a name="subkey_ER"></a><a href="../files/displaying_hiding_presentations.htm"><b>erase</b></a> <br><nobr><a name="bms_EV"></a><a name="subkey_EV"></a>every <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> </nobr><br><a name="bms_EX"></a><a name="subkey_EX"></a><a href="../files/getting_elements_attributes.htm"><b>examine</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>exceed</b></a> <br><a href="../files/displaying_hiding_presentations.htm"><b>existing</b></a> <br><nobr>explore <a href="../files/stream_lines_presentation.htm"><b>1</b></a> <a href="../files/importing_med_objects.htm"><b>2</b></a> <a href="../files/exploring_med_files.htm"><b>3</b></a> </nobr><br><a href="../files/exploring_med_files.htm"><b>explored</b></a> <br><a href="../files/exploring_med_files.htm"><b>exploring</b></a> <br><a href="../files/importing_tables.htm"><b>export</b></a> <br><a href="../files/importing_tables.htm"><b>exported</b></a> <br><a href="../files/importing_tables.htm"><b>exporting</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>expressed</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>extent</b></a> <br><a href="../clipping.htm"><b>extremities</b></a> <br>\r
<br><br>\r
-<a name="bm_F"></a><a name="subkey_FA"></a><a href="../files/about_structure_of_med_object.htm"><b>faces</b></a> <br><nobr>factor <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/vectors_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>families</b></a> <br><nobr>family <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_FE"></a><a name="subkey_FE"></a><a href="../files/scaling_presentations.htm"><b>feature</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>features</b></a> <br><nobr><a name="bms_FI"></a><a name="subkey_FI"></a>field <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_field_presentations.htm"><b>5</b></a> <a href="../files/animating_presentations.htm"><b>6</b></a> <a href="../files/about_structure_of_med_object.htm"><b>7</b></a> <a href="../files/sweeping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/selection_in_visu.htm"><b>10</b></a> <a href="../files/scaling_presentations.htm"><b>11</b></a> <a href="../files/scalar_map_presentation.htm"><b>12</b></a> <a href="../files/renaming_presentations.htm"><b>13</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>14</b></a> <a href="../files/getting_started.htm"><b>15</b></a> <a href="../files/getting_elements_attributes.htm"><b>16</b></a> <a href="../files/editing_field_presentations.htm"><b>17</b></a> <a href="../files/vectors_presentation.htm"><b>18</b></a> </nobr><br><nobr>fields <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>7</b></a> <a href="../files/introduction_to_visu.htm"><b>8</b></a> <a href="../files/importing_med_objects.htm"><b>9</b></a> <a href="../files/getting_started.htm"><b>10</b></a> </nobr><br><nobr>file <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> <a href="../files/getting_started.htm"><b>4</b></a> <a href="../files/exploring_med_files.htm"><b>5</b></a> </nobr><br><nobr>files <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/importing_tables.htm"><b>3</b></a> <a href="../files/importing_med_objects.htm"><b>4</b></a> <a href="../files/exploring_med_files.htm"><b>5</b></a> </nobr><br><nobr>finished <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>6</b></a> <a href="../files/vectors_presentation.htm"><b>7</b></a> </nobr><br><nobr>first <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>fit</b></a> <br><nobr><a name="bms_FO"></a><a name="subkey_FO"></a>folder <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>folders</b></a> <br><nobr>following <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>7</b></a> <a href="../files/selection_in_visu.htm"><b>8</b></a> <a href="../files/scalar_map_presentation.htm"><b>9</b></a> <a href="../files/renaming_presentations.htm"><b>10</b></a> <a href="../files/importing_tables.htm"><b>11</b></a> <a href="../files/getting_elements_attributes.htm"><b>12</b></a> </nobr><br><nobr>follows <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/running_visu.htm"><b>2</b></a> </nobr><br><a href="../files/scalar_map_presentation.htm"><b>font</b></a> <br><nobr>forming <a href="../creating_tables.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> <a href="../new_topic.htm"><b>4</b></a> </nobr><br><a href="../files/introduction_to_visu.htm"><b>forms</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>forward</b></a> <br><nobr><a name="bms_FR"></a><a name="subkey_FR"></a>frame <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><nobr>frames <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><a href="../files/iso_surfaces_presentation.htm"><b>framework</b></a> <br><a name="bms_FU"></a><a name="subkey_FU"></a><a href="../files/importing_med_objects.htm"><b>full</b></a> <br><a href="../files/editing_field_presentations.htm"><b>functional</b></a> <br><nobr>functionality <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> </nobr><br>\r
+<a name="bm_F"></a><a name="subkey_FA"></a><a href="../files/about_structure_of_med_object.htm"><b>faces</b></a> <br><nobr>factor <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/vectors_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>families</b></a> <br><nobr>family <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_FE"></a><a name="subkey_FE"></a><a href="../files/scaling_presentations.htm"><b>feature</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>features</b></a> <br><nobr><a name="bms_FI"></a><a name="subkey_FI"></a>field <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_field_presentations.htm"><b>5</b></a> <a href="../files/animating_presentations.htm"><b>6</b></a> <a href="../files/about_structure_of_med_object.htm"><b>7</b></a> <a href="../files/sweeping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/selection_in_visu.htm"><b>10</b></a> <a href="../files/scaling_presentations.htm"><b>11</b></a> <a href="../files/scalar_map_presentation.htm"><b>12</b></a> <a href="../files/renaming_presentations.htm"><b>13</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>14</b></a> <a href="../files/getting_started.htm"><b>15</b></a> <a href="../files/getting_elements_attributes.htm"><b>16</b></a> <a href="../files/editing_field_presentations.htm"><b>17</b></a> <a href="../files/vectors_presentation.htm"><b>18</b></a> </nobr><br><nobr>fields <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>6</b></a> <a href="../files/introduction_to_visu.htm"><b>7</b></a> <a href="../files/importing_med_objects.htm"><b>8</b></a> <a href="../files/getting_started.htm"><b>9</b></a> </nobr><br><nobr>file <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> <a href="../files/getting_started.htm"><b>4</b></a> <a href="../files/exploring_med_files.htm"><b>5</b></a> </nobr><br><nobr>files <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/importing_tables.htm"><b>3</b></a> <a href="../files/importing_med_objects.htm"><b>4</b></a> <a href="../files/exploring_med_files.htm"><b>5</b></a> </nobr><br><nobr>finished <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>6</b></a> <a href="../files/vectors_presentation.htm"><b>7</b></a> </nobr><br><nobr>first <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>fit</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>fits</b></a> <br><nobr><a name="bms_FO"></a><a name="subkey_FO"></a>folder <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>folders</b></a> <br><nobr>following <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>7</b></a> <a href="../files/selection_in_visu.htm"><b>8</b></a> <a href="../files/scalar_map_presentation.htm"><b>9</b></a> <a href="../files/renaming_presentations.htm"><b>10</b></a> <a href="../files/importing_tables.htm"><b>11</b></a> <a href="../files/getting_elements_attributes.htm"><b>12</b></a> </nobr><br><nobr>follows <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/running_visu.htm"><b>2</b></a> </nobr><br><a href="../files/scalar_map_presentation.htm"><b>font</b></a> <br><nobr>forming <a href="../creating_tables.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> <a href="../new_topic.htm"><b>4</b></a> </nobr><br><a href="../files/introduction_to_visu.htm"><b>forms</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>forward</b></a> <br><nobr><a name="bms_FR"></a><a name="subkey_FR"></a>frame <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><nobr>frames <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><a href="../files/iso_surfaces_presentation.htm"><b>framework</b></a> <br><a name="bms_FU"></a><a name="subkey_FU"></a><a href="../files/importing_med_objects.htm"><b>full</b></a> <br><a href="../files/editing_field_presentations.htm"><b>functional</b></a> <br><nobr>functionality <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> </nobr><br>\r
<br><br>\r
<a name="bm_G"></a><a name="subkey_GE"></a><a href="../files/about_structure_of_med_object.htm"><b>general</b></a> <br><nobr>generate <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> </nobr><br><nobr>generated <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/sweeping.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>6</b></a> </nobr><br><a href="../files/sweeping.htm"><b>generates</b></a> <br><a href="../files/animating_presentations.htm"><b>generating</b></a> <br><nobr>generation <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>geometrical</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>get</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>getting</b></a> <br><nobr><a name="bms_GI"></a><a name="subkey_GI"></a>given <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> </nobr><br><nobr>gives <a href="../clipping.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><a name="bms_GL"></a><a name="subkey_GL"></a><a href="../files/vectors_presentation.htm"><b>glyph</b></a> <br><a href="../files/vectors_presentation.htm"><b>glyphs</b></a> <br><a name="bms_GR"></a><a name="subkey_GR"></a><a href="../files/scalar_map_presentation.htm"><b>graduation</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>graph</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>graphic</b></a> <br><a href="../files/vectors_presentation.htm"><b>graphical</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>graphs</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>grid</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>group</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>grouped</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>groups</b></a> <br>\r
<br><br>\r
<a name="bm_H"></a><a name="subkey_H{"></a><a href="../files/creating_curves.htm"><b>h</b></a> <br><a name="bms_HA"></a><a name="subkey_HA"></a><a href="../clipping.htm"><b>halves</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>hardware</b></a> <br><nobr>having <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/importing_tables.htm"><b>4</b></a> </nobr><br><a name="bms_HE"></a><a name="subkey_HE"></a><a href="../files/vectors_presentation.htm"><b>head</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>height</b></a> <br><a href="../files/about_tables.htm"><b>help</b></a> <br><nobr>here <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/animating_presentations.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> </nobr><br><a name="bms_HI"></a><a name="subkey_HI"></a><a href="../files/displaying_hiding_presentations.htm"><b>hidden</b></a> <br><a href="../files/displaying_hiding_presentations.htm"><b>hide</b></a> <br><a href="../files/editing_field_presentations.htm"><b>hiding</b></a> <br><nobr>highlighted <a href="../files/selection_in_visu.htm"><b>1</b></a> <a href="../files/getting_elements_attributes.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_HO"></a><a name="subkey_HO"></a>hold <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> </nobr><br><nobr>horizontal <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/getting_started.htm"><b>how</b></a> <br>\r
<br><br>\r
-<nobr><a name="bm_I"></a><a name="subkey_IC"></a>icon <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scaling_presentations.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/running_visu.htm"><b>7</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>8</b></a> <a href="../files/vectors_presentation.htm"><b>9</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>icons</b></a> <br><a name="bms_ID"></a><a name="subkey_ID"></a><a href="../files/getting_elements_attributes.htm"><b>id</b></a> <br><nobr><a name="bms_IF"></a><a name="subkey_IF"></a>if <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../clipping.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>6</b></a> <a href="../files/selection_in_visu.htm"><b>7</b></a> <a href="../files/scalar_map_presentation.htm"><b>8</b></a> <a href="../files/getting_elements_attributes.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><a name="bms_IJ"></a><a name="subkey_IJ"></a><a href="../clipping.htm"><b>ijk</b></a> <br><a name="bms_IM"></a><a name="subkey_IM"></a><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>image</b></a> <br><nobr>immediately <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>7</b></a> <a href="../files/importing_med_objects.htm"><b>8</b></a> <a href="../files/getting_elements_attributes.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>import <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> <a href="../files/getting_started.htm"><b>4</b></a> </nobr><br><nobr>imported <a href="../files/creating_presentations.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/importing_tables.htm"><b>3</b></a> <a href="../files/importing_med_objects.htm"><b>4</b></a> </nobr><br><nobr>importing <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><a href="../files/exploring_med_files.htm"><b>imports</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>imposed</b></a> <br><a name="bms_IN"></a><a name="subkey_IN"></a><a href="../files/scalar_map_presentation.htm"><b>inactive</b></a> <br><nobr>including <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/introduction_to_visu.htm"><b>3</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>increase</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>independently</b></a> <br><a href="../clipping.htm"><b>index</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>indicated</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>indicating</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>info</b></a> <br><nobr>information <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/getting_elements_attributes.htm"><b>2</b></a> </nobr><br><nobr>initial <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> <a href="../files/running_visu.htm"><b>4</b></a> </nobr><br><a href="../files/cut_lines_presentation.htm"><b>inside</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>insideframe</b></a> <br><a href="../files/exploring_med_files.htm"><b>integrated</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>integration</b></a> <br><a href="../files/animating_presentations.htm"><b>intended</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>interesting</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>interpolation</b></a> <br><a href="../files/introduction_to_visu.htm"><b>introduction</b></a> <br><nobr><a name="bms_IS"></a><a name="subkey_IS"></a>iso <a href="../files/sweeping.htm"><b>1</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/iso_surfaces_presentation.htm"><b>isobaric</b></a> <br><nobr><a name="bms_IT"></a><a name="subkey_IT"></a>item <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br>\r
+<nobr><a name="bm_I"></a><a name="subkey_IC"></a>icon <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scaling_presentations.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/running_visu.htm"><b>7</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>8</b></a> <a href="../files/vectors_presentation.htm"><b>9</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>icons</b></a> <br><a name="bms_ID"></a><a name="subkey_ID"></a><a href="../files/getting_elements_attributes.htm"><b>id</b></a> <br><nobr><a name="bms_IF"></a><a name="subkey_IF"></a>if <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../clipping.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>6</b></a> <a href="../files/selection_in_visu.htm"><b>7</b></a> <a href="../files/scalar_map_presentation.htm"><b>8</b></a> <a href="../files/getting_elements_attributes.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><a name="bms_IJ"></a><a name="subkey_IJ"></a><a href="../clipping.htm"><b>ijk</b></a> <br><a name="bms_IM"></a><a name="subkey_IM"></a><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>image</b></a> <br><nobr>immediately <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>7</b></a> <a href="../files/importing_med_objects.htm"><b>8</b></a> <a href="../files/getting_elements_attributes.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>import <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> <a href="../files/getting_started.htm"><b>4</b></a> </nobr><br><nobr>imported <a href="../files/creating_presentations.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/importing_tables.htm"><b>3</b></a> <a href="../files/importing_med_objects.htm"><b>4</b></a> </nobr><br><nobr>importing <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><a href="../files/exploring_med_files.htm"><b>imports</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>imposed</b></a> <br><a name="bms_IN"></a><a name="subkey_IN"></a><a href="../files/scalar_map_presentation.htm"><b>inactive</b></a> <br><nobr>including <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/introduction_to_visu.htm"><b>3</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>increase</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>independently</b></a> <br><a href="../clipping.htm"><b>index</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>indicated</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>indicating</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>info</b></a> <br><nobr>information <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/getting_elements_attributes.htm"><b>2</b></a> </nobr><br><nobr>initial <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> <a href="../files/running_visu.htm"><b>4</b></a> </nobr><br><a href="../files/cut_lines_presentation.htm"><b>inside</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>insideframe</b></a> <br><a href="../files/exploring_med_files.htm"><b>integrated</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>integration</b></a> <br><a href="../files/animating_presentations.htm"><b>intended</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>interesting</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>interpolation</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>intervals</b></a> <br><a href="../files/introduction_to_visu.htm"><b>introduction</b></a> <br><nobr><a name="bms_IS"></a><a name="subkey_IS"></a>iso <a href="../files/sweeping.htm"><b>1</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/iso_surfaces_presentation.htm"><b>isobaric</b></a> <br><nobr><a name="bms_IT"></a><a name="subkey_IT"></a>item <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br>\r
<br><br>\r
-<nobr><a name="bm_L"></a><a name="subkey_LA"></a>labels <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/scalar_map_presentation.htm"><b>larger</b></a> <br><a href="../files/animating_presentations.htm"><b>last</b></a> <br><nobr>launch <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/getting_started.htm"><b>2</b></a> </nobr><br><a href="../files/exploring_med_files.htm"><b>launches</b></a> <br><a href="../files/running_visu.htm"><b>launching</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>layout</b></a> <br><a name="bms_LE"></a><a name="subkey_LE"></a><a href="../files/creating_curves.htm"><b>least</b></a> <br><nobr>left <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> </nobr><br><nobr>leftward <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>legend</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>length</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>less</b></a> <br><nobr><a name="bms_LI"></a><a name="subkey_LI"></a>like <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/running_visu.htm"><b>2</b></a> </nobr><br><nobr>line <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>5</b></a> <a href="../files/stream_lines_presentation.htm"><b>6</b></a> <a href="../files/vectors_presentation.htm"><b>7</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>linear</b></a> <br><nobr>lines <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/about_tables.htm"><b>5</b></a> <a href="../creating_tables.htm"><b>6</b></a> <a href="../files/stream_lines_presentation.htm"><b>7</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>8</b></a> <a href="../new_topic.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>list <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf3.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<nobr><a name="bm_L"></a><a name="subkey_LA"></a>labels <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/scalar_map_presentation.htm"><b>larger</b></a> <br><a href="../files/animating_presentations.htm"><b>last</b></a> <br><nobr>launch <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/getting_started.htm"><b>2</b></a> </nobr><br><a href="../files/exploring_med_files.htm"><b>launches</b></a> <br><a href="../files/running_visu.htm"><b>launching</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>layout</b></a> <br><a name="bms_LE"></a><a name="subkey_LE"></a><a href="../files/creating_curves.htm"><b>least</b></a> <br><nobr>left <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> </nobr><br><nobr>leftward <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>legend</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>length</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>less</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf3.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\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><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<a name="bms_LO"></a><a name="subkey_LO"></a><a href="../files/importing_med_objects.htm"><b>loading</b></a> <br><nobr>located <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/importing_tables.htm"><b>4</b></a> </nobr><br><nobr>logarithmic <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/running_visu.htm"><b>look</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>lot</b></a> <br>\r
+<nobr><a name="bms_LI"></a><a name="subkey_LI"></a>like <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/running_visu.htm"><b>2</b></a> </nobr><br><nobr>line <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>5</b></a> <a href="../files/stream_lines_presentation.htm"><b>6</b></a> <a href="../files/vectors_presentation.htm"><b>7</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>linear</b></a> <br><nobr>lines <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/about_tables.htm"><b>5</b></a> <a href="../creating_tables.htm"><b>6</b></a> <a href="../files/stream_lines_presentation.htm"><b>7</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>8</b></a> <a href="../new_topic.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>list <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> </nobr><br><a name="bms_LO"></a><a name="subkey_LO"></a><a href="../files/importing_med_objects.htm"><b>loading</b></a> <br><nobr>located <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/importing_tables.htm"><b>4</b></a> </nobr><br><nobr>logarithmic <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/running_visu.htm"><b>look</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>lot</b></a> <br>\r
<br><br>\r
-<nobr><a name="bm_M"></a><a name="subkey_MA"></a>magnitude <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/vectors_presentation.htm"><b>3</b></a> </nobr><br><nobr>main <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_xy_plot.htm"><b>5</b></a> <a href="../files/creating_field_presentations.htm"><b>6</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>7</b></a> <a href="../files/animating_presentations.htm"><b>8</b></a> <a href="../files/about_structure_of_med_object.htm"><b>9</b></a> <a href="../files/stream_lines_presentation.htm"><b>10</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>11</b></a> <a href="../files/selection_in_visu.htm"><b>12</b></a> <a href="../files/scaling_presentations.htm"><b>13</b></a> <a href="../files/scalar_map_presentation.htm"><b>14</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>15</b></a> <a href="../files/importing_tables.htm"><b>16</b></a> <a href="../files/getting_elements_attributes.htm"><b>17</b></a> <a href="../files/exploring_med_files.htm"><b>18</b></a> <a href="../files/vectors_presentation.htm"><b>19</b></a> </nobr><br><nobr>make <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> </nobr><br><nobr>management <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/editing_field_presentations.htm"><b>2</b></a> </nobr><br><a href="../files/about_tables.htm"><b>manual</b></a> <br><nobr>manually <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><nobr>map <a href="../files/sweeping.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><nobr>marked <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><nobr>marker <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><nobr>markers <a href="../creating_plot2d_presentations_from_tables.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>marks</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>massless</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>maximal</b></a> <br><nobr>maximum <a href="../files/stream_lines_presentation.htm"><b>1</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_ME"></a><a name="subkey_ME"></a><a href="../files/stream_lines_presentation.htm"><b>measured</b></a> <br><nobr>menu <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../creating_tables.htm"><b>12</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>13</b></a> <a href="../clipping.htm"><b>14</b></a> <a href="../files/sweeping.htm"><b>15</b></a> <a href="../files/stream_lines_presentation.htm"><b>16</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>17</b></a> <a href="../files/selection_in_visu.htm"><b>18</b></a> <a href="../files/scaling_presentations.htm"><b>19</b></a> <a href="../files/scalar_map_presentation.htm"><b>20</b></a> <a href="../files/renaming_presentations.htm"><b>21</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>22</b></a> <a href="../files/importing_tables.htm"><b>23</b></a> <a href="../files/importing_med_objects.htm"><b>24</b></a> <a href="../files/getting_elements_attributes.htm"><b>25</b></a> <a href="../files/exploring_med_files.htm"><b>26</b></a> <a href="../files/editing_field_presentations.htm"><b>27</b></a> <a href="../new_topic.htm"><b>28</b></a> <a href="../files/vectors_presentation.htm"><b>29</b></a> </nobr><br><a href="../files/running_visu.htm"><b>menus</b></a> <br><nobr>mesh <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/about_structure_of_med_object.htm"><b>5</b></a> <a href="../files/stream_lines_presentation.htm"><b>6</b></a> <a href="../files/getting_started.htm"><b>7</b></a> <a href="../files/getting_elements_attributes.htm"><b>8</b></a> <a href="../files/vectors_presentation.htm"><b>9</b></a> </nobr><br><a href="../files/getting_elements_attributes.htm"><b>meshes</b></a> <br><a href="../files/about_tables.htm"><b>methods</b></a> <br><a name="bms_MI"></a><a name="subkey_MI"></a><a href="../files/scalar_map_presentation.htm"><b>minimal</b></a> <br><nobr>minimum <a href="../files/sweeping.htm"><b>1</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_MO"></a><a name="subkey_MO"></a>mode <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/vectors_presentation.htm"><b>7</b></a> </nobr><br><a href="../files/displaying_hiding_presentations.htm"><b>modify</b></a> <br><nobr>modifying <a href="../creating_tables.htm"><b>1</b></a> <a href="../new_topic.htm"><b>2</b></a> </nobr><br><nobr>module <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/running_visu.htm"><b>5</b></a> <a href="../files/introduction_to_visu.htm"><b>6</b></a> <a href="../files/getting_started.htm"><b>7</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>moment</b></a> <br><nobr>mouse <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> </nobr><br><a href="../files/creating_xy_plot.htm"><b>move</b></a> <br><a href="../files/animating_presentations.htm"><b>moving</b></a> <br><a name="bms_MU"></a><a name="subkey_MU"></a><a href="../files/stream_lines_presentation.htm"><b>multiple</b></a> <br>\r
+<nobr><a name="bm_M"></a><a name="subkey_MA"></a>magnitude <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/vectors_presentation.htm"><b>3</b></a> </nobr><br><nobr>main <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_xy_plot.htm"><b>5</b></a> <a href="../files/creating_field_presentations.htm"><b>6</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>7</b></a> <a href="../files/animating_presentations.htm"><b>8</b></a> <a href="../files/about_structure_of_med_object.htm"><b>9</b></a> <a href="../files/stream_lines_presentation.htm"><b>10</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>11</b></a> <a href="../files/selection_in_visu.htm"><b>12</b></a> <a href="../files/scaling_presentations.htm"><b>13</b></a> <a href="../files/scalar_map_presentation.htm"><b>14</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>15</b></a> <a href="../files/importing_tables.htm"><b>16</b></a> <a href="../files/getting_elements_attributes.htm"><b>17</b></a> <a href="../files/exploring_med_files.htm"><b>18</b></a> <a href="../files/vectors_presentation.htm"><b>19</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>major</b></a> <br><nobr>make <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> </nobr><br><nobr>management <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/editing_field_presentations.htm"><b>2</b></a> </nobr><br><a href="../files/about_tables.htm"><b>manual</b></a> <br><nobr>manually <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><nobr>map <a href="../files/sweeping.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><nobr>marked <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><nobr>marker <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><nobr>markers <a href="../creating_plot2d_presentations_from_tables.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>marks</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>massless</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>maximal</b></a> <br><nobr>maximum <a href="../files/stream_lines_presentation.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>3</b></a> </nobr><br><a name="bms_ME"></a><a name="subkey_ME"></a><a href="../files/stream_lines_presentation.htm"><b>measured</b></a> <br><nobr>menu <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../creating_tables.htm"><b>12</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>13</b></a> <a href="../clipping.htm"><b>14</b></a> <a href="../files/sweeping.htm"><b>15</b></a> <a href="../files/stream_lines_presentation.htm"><b>16</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>17</b></a> <a href="../files/selection_in_visu.htm"><b>18</b></a> <a href="../files/scaling_presentations.htm"><b>19</b></a> <a href="../files/scalar_map_presentation.htm"><b>20</b></a> <a href="../files/renaming_presentations.htm"><b>21</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>22</b></a> <a href="../files/importing_tables.htm"><b>23</b></a> <a href="../files/importing_med_objects.htm"><b>24</b></a> <a href="../files/getting_elements_attributes.htm"><b>25</b></a> <a href="../files/exploring_med_files.htm"><b>26</b></a> <a href="../files/editing_field_presentations.htm"><b>27</b></a> <a href="../new_topic.htm"><b>28</b></a> <a href="../files/vectors_presentation.htm"><b>29</b></a> </nobr><br><a href="../files/running_visu.htm"><b>menus</b></a> <br><nobr>mesh <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/about_structure_of_med_object.htm"><b>5</b></a> <a href="../files/stream_lines_presentation.htm"><b>6</b></a> <a href="../files/getting_started.htm"><b>7</b></a> <a href="../files/getting_elements_attributes.htm"><b>8</b></a> <a href="../files/vectors_presentation.htm"><b>9</b></a> </nobr><br><a href="../files/getting_elements_attributes.htm"><b>meshes</b></a> <br><a href="../files/about_tables.htm"><b>methods</b></a> <br><a name="bms_MI"></a><a name="subkey_MI"></a><a href="../files/scalar_map_presentation.htm"><b>minimal</b></a> <br><nobr>minimum <a href="../files/sweeping.htm"><b>1</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>minor</b></a> <br><nobr><a name="bms_MO"></a><a name="subkey_MO"></a>mode <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/vectors_presentation.htm"><b>7</b></a> </nobr><br><a href="../files/displaying_hiding_presentations.htm"><b>modify</b></a> <br><nobr>modifying <a href="../creating_tables.htm"><b>1</b></a> <a href="../new_topic.htm"><b>2</b></a> </nobr><br><nobr>module <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/running_visu.htm"><b>5</b></a> <a href="../files/introduction_to_visu.htm"><b>6</b></a> <a href="../files/getting_started.htm"><b>7</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>moment</b></a> <br><nobr>mouse <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> </nobr><br><a href="../files/creating_xy_plot.htm"><b>move</b></a> <br><a href="../files/animating_presentations.htm"><b>moving</b></a> <br><a name="bms_MU"></a><a name="subkey_MU"></a><a href="../files/stream_lines_presentation.htm"><b>multiple</b></a> <br>\r
<br><br>\r
-<nobr><a name="bm_N"></a><a name="subkey_NA"></a>name <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/renaming_presentations.htm"><b>3</b></a> <a href="../files/importing_tables.htm"><b>4</b></a> <a href="../files/getting_elements_attributes.htm"><b>5</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>names</b></a> <br><a name="bms_NB"></a><a name="subkey_NB"></a><a href="../files/scalar_map_presentation.htm"><b>nb</b></a> <br><nobr><a name="bms_NE"></a><a name="subkey_NE"></a>necessary <a href="../files/importing_tables.htm"><b>1</b></a> <a href="../files/getting_elements_attributes.htm"><b>2</b></a> </nobr><br><nobr>new <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../creating_tables.htm"><b>3</b></a> <a href="../clipping.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/running_visu.htm"><b>6</b></a> <a href="../files/importing_tables.htm"><b>7</b></a> <a href="../files/getting_started.htm"><b>8</b></a> <a href="../new_topic.htm"><b>9</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>next</b></a> <br><a name="bms_NO"></a><a name="subkey_NO"></a><a href="../files/about_structure_of_med_object.htm"><b>nodes</b></a> <br><nobr>none <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>normal</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>note</b></a> <br><a href="../clipping.htm"><b>now</b></a> <br><nobr><a name="bms_NU"></a><a name="subkey_NU"></a>number <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/sweeping.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>7</b></a> <a href="../files/getting_elements_attributes.htm"><b>8</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>numerical</b></a> <br>\r
+<a name="bm_N"></a><a name="subkey_N{"></a><a href="../files/setting_properties_of_xy_plots.htm"><b>n</b></a> <br><nobr><a name="bms_NA"></a><a name="subkey_NA"></a>name <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/renaming_presentations.htm"><b>3</b></a> <a href="../files/importing_tables.htm"><b>4</b></a> <a href="../files/getting_elements_attributes.htm"><b>5</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>names</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>natural</b></a> <br><a name="bms_NB"></a><a name="subkey_NB"></a><a href="../files/scalar_map_presentation.htm"><b>nb</b></a> <br><nobr><a name="bms_NE"></a><a name="subkey_NE"></a>necessary <a href="../files/importing_tables.htm"><b>1</b></a> <a href="../files/getting_elements_attributes.htm"><b>2</b></a> </nobr><br><nobr>new <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../creating_tables.htm"><b>3</b></a> <a href="../clipping.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/running_visu.htm"><b>6</b></a> <a href="../files/importing_tables.htm"><b>7</b></a> <a href="../files/getting_started.htm"><b>8</b></a> <a href="../new_topic.htm"><b>9</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>next</b></a> <br><a name="bms_NO"></a><a name="subkey_NO"></a><a href="../files/about_structure_of_med_object.htm"><b>nodes</b></a> <br><nobr>none <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>normal</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>note</b></a> <br><a href="../clipping.htm"><b>now</b></a> <br><nobr><a name="bms_NU"></a><a name="subkey_NU"></a>number <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>7</b></a> <a href="../files/getting_elements_attributes.htm"><b>8</b></a> </nobr><br>\r
<br><br>\r
<nobr><a name="bm_O"></a><a name="subkey_OB"></a>object <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../files/about_structure_of_med_object.htm"><b>12</b></a> <a href="../creating_tables.htm"><b>13</b></a> <a href="../clipping.htm"><b>14</b></a> <a href="../files/sweeping.htm"><b>15</b></a> <a href="../files/stream_lines_presentation.htm"><b>16</b></a> <a href="../files/selection_in_visu.htm"><b>17</b></a> <a href="../files/scalar_map_presentation.htm"><b>18</b></a> <a href="../files/renaming_presentations.htm"><b>19</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>20</b></a> <a href="../files/importing_tables.htm"><b>21</b></a> <a href="../files/importing_med_objects.htm"><b>22</b></a> <a href="../files/getting_elements_attributes.htm"><b>23</b></a> <a href="../files/exploring_med_files.htm"><b>24</b></a> <a href="../files/editing_field_presentations.htm"><b>25</b></a> <a href="../new_topic.htm"><b>26</b></a> <a href="../files/vectors_presentation.htm"><b>27</b></a> </nobr><br><nobr>objects <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><nobr>observe <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_OF"></a><a name="subkey_OF"></a><a href="../files/about_structure_of_med_object.htm"><b>often</b></a> <br><nobr><a name="bms_OK"></a><a name="subkey_OK"></a>ok <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_xy_plot.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/stream_lines_presentation.htm"><b>7</b></a> <a href="../files/selection_in_visu.htm"><b>8</b></a> <a href="../files/scaling_presentations.htm"><b>9</b></a> <a href="../files/scalar_map_presentation.htm"><b>10</b></a> <a href="../files/renaming_presentations.htm"><b>11</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>12</b></a> <a href="../files/importing_tables.htm"><b>13</b></a> <a href="../files/vectors_presentation.htm"><b>14</b></a> </nobr><br><a name="bms_ON"></a><a name="subkey_ON"></a><a href="../files/creating_curves.htm"><b>once</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>oncells</b></a> <br><nobr>one <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_xy_plot.htm"><b>5</b></a> <a href="../files/creating_field_presentations.htm"><b>6</b></a> <a href="../files/creating_curves.htm"><b>7</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>8</b></a> <a href="../files/animating_presentations.htm"><b>9</b></a> <a href="../files/about_structure_of_med_object.htm"><b>10</b></a> <a href="../clipping.htm"><b>11</b></a> <a href="../files/sweeping.htm"><b>12</b></a> <a href="../files/stream_lines_presentation.htm"><b>13</b></a> <a href="../files/selection_in_visu.htm"><b>14</b></a> <a href="../files/scaling_presentations.htm"><b>15</b></a> <a href="../files/scalar_map_presentation.htm"><b>16</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>17</b></a> <a href="../files/importing_tables.htm"><b>18</b></a> <a href="../files/vectors_presentation.htm"><b>19</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>onedges</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>onfaces</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>onnodes</b></a> <br><a name="bms_OP"></a><a name="subkey_OP"></a><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>opacity</b></a> <br><nobr>open <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><a href="../files/cut_lines_presentation.htm"><b>operation</b></a> <br><a href="../files/displaying_hiding_presentations.htm"><b>operations</b></a> <br><a href="../clipping.htm"><b>opposite</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>optimization</b></a> <br><nobr>option <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/creating_curves.htm"><b>4</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>5</b></a> <a href="../files/animating_presentations.htm"><b>6</b></a> <a href="../creating_tables.htm"><b>7</b></a> <a href="../files/sweeping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>10</b></a> <a href="../files/selection_in_visu.htm"><b>11</b></a> <a href="../files/importing_med_objects.htm"><b>12</b></a> <a href="../files/exploring_med_files.htm"><b>13</b></a> <a href="../files/editing_field_presentations.htm"><b>14</b></a> <a href="../new_topic.htm"><b>15</b></a> <a href="../files/vectors_presentation.htm"><b>16</b></a> </nobr><br><nobr>options <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/importing_med_objects.htm"><b>4</b></a> <a href="../files/editing_field_presentations.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_OR"></a><a name="subkey_OR"></a>orientation <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> </nobr><br><a href="../clipping.htm"><b>oriented</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>origin</b></a> <br><a name="bms_OU"></a><a name="subkey_OU"></a><a href="../files/scalar_map_presentation.htm"><b>out</b></a> <br><a href="../files/selection_in_visu.htm"><b>outline</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>output</b></a> <br><a name="bms_OV"></a><a name="subkey_OV"></a><a href="../files/getting_started.htm"><b>overview</b></a> <br><nobr><a name="bms_OW"></a><a name="subkey_OW"></a>own <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br>\r
<br><br>\r
-<nobr><a name="bm_P"></a><a name="subkey_PA"></a>parameter <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> </nobr><br><nobr>parameters <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/animating_presentations.htm"><b>7</b></a> <a href="../clipping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/scaling_presentations.htm"><b>10</b></a> <a href="../files/scalar_map_presentation.htm"><b>11</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>12</b></a> <a href="../files/getting_started.htm"><b>13</b></a> <a href="../files/editing_field_presentations.htm"><b>14</b></a> <a href="../files/vectors_presentation.htm"><b>15</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>particle</b></a> <br><nobr>particular <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>parts</b></a> <br><nobr>path <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_PE"></a><a name="subkey_PE"></a><a href="../files/about_structure_of_med_object.htm"><b>performed</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>period</b></a> <br><a href="../files/animating_presentations.htm"><b>periods</b></a> <br><a href="../clipping.htm"><b>perpendicular</b></a> <br><a href="../files/renaming_presentations.htm"><b>personal</b></a> <br><a name="bms_PH"></a><a name="subkey_PH"></a><a href="../files/about_structure_of_med_object.htm"><b>physical</b></a> <br><a name="bms_PI"></a><a name="subkey_PI"></a><a href="../files/animating_presentations.htm"><b>picture</b></a> <br><a href="../files/animating_presentations.htm"><b>pictures</b></a> <br><nobr><a name="bms_PL"></a><a name="subkey_PL"></a>placed <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> </nobr><br><nobr>plane <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../clipping.htm"><b>2</b></a> </nobr><br><nobr>planes <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> <a href="../files/sweeping.htm"><b>4</b></a> </nobr><br><nobr>platform <a href="../files/running_visu.htm"><b>1</b></a> <a href="../files/introduction_to_visu.htm"><b>2</b></a> <a href="../files/exploring_med_files.htm"><b>3</b></a> </nobr><br><nobr>plot <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/getting_started.htm"><b>5</b></a> </nobr><br><nobr>plot2d <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>3</b></a> </nobr><br><a href="../files/creating_curves.htm"><b>plot2dview</b></a> <br><nobr>plots <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/introduction_to_visu.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_PO"></a><a name="subkey_PO"></a>point <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><a href="../files/vectors_presentation.htm"><b>pointers</b></a> <br><nobr>points <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/getting_elements_attributes.htm"><b>6</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>polyline</b></a> <br><nobr>pop <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../creating_tables.htm"><b>12</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>13</b></a> <a href="../files/sweeping.htm"><b>14</b></a> <a href="../files/stream_lines_presentation.htm"><b>15</b></a> <a href="../files/selection_in_visu.htm"><b>16</b></a> <a href="../files/scalar_map_presentation.htm"><b>17</b></a> <a href="../files/renaming_presentations.htm"><b>18</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>19</b></a> <a href="../files/editing_field_presentations.htm"><b>20</b></a> <a href="../new_topic.htm"><b>21</b></a> <a href="../files/vectors_presentation.htm"><b>22</b></a> </nobr><br><nobr>position <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/vectors_presentation.htm"><b>4</b></a> </nobr><br><a href="../clipping.htm"><b>positions</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>possesses</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>possibility</b></a> <br><nobr>possible <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../clipping.htm"><b>2</b></a> </nobr><br><nobr>post <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/about_tables.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../files/sweeping.htm"><b>7</b></a> <a href="../files/stream_lines_presentation.htm"><b>8</b></a> <a href="../files/scalar_map_presentation.htm"><b>9</b></a> <a href="../files/running_visu.htm"><b>10</b></a> <a href="../files/introduction_to_visu.htm"><b>11</b></a> <a href="../files/importing_tables.htm"><b>12</b></a> <a href="../files/importing_med_objects.htm"><b>13</b></a> <a href="../files/getting_started.htm"><b>14</b></a> <a href="../files/editing_field_presentations.htm"><b>15</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf4.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<nobr><a name="bm_P"></a><a name="subkey_PA"></a>parameter <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> </nobr><br><nobr>parameters <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/animating_presentations.htm"><b>7</b></a> <a href="../clipping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/scaling_presentations.htm"><b>10</b></a> <a href="../files/scalar_map_presentation.htm"><b>11</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>12</b></a> <a href="../files/getting_started.htm"><b>13</b></a> <a href="../files/editing_field_presentations.htm"><b>14</b></a> <a href="../files/vectors_presentation.htm"><b>15</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>particle</b></a> <br><nobr>particular <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>parts</b></a> <br><nobr>path <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> </nobr><br><a name="bms_PE"></a><a name="subkey_PE"></a><a href="../files/about_structure_of_med_object.htm"><b>performed</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>period</b></a> <br><a href="../files/animating_presentations.htm"><b>periods</b></a> <br><a href="../clipping.htm"><b>perpendicular</b></a> <br><a href="../files/renaming_presentations.htm"><b>personal</b></a> <br><a name="bms_PH"></a><a name="subkey_PH"></a><a href="../files/about_structure_of_med_object.htm"><b>physical</b></a> <br><a name="bms_PI"></a><a name="subkey_PI"></a><a href="../files/animating_presentations.htm"><b>picture</b></a> <br><a href="../files/animating_presentations.htm"><b>pictures</b></a> <br><nobr><a name="bms_PL"></a><a name="subkey_PL"></a>placed <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> </nobr><br><nobr>plane <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../clipping.htm"><b>2</b></a> </nobr><br><nobr>planes <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> <a href="../files/sweeping.htm"><b>4</b></a> </nobr><br><nobr>platform <a href="../files/running_visu.htm"><b>1</b></a> <a href="../files/introduction_to_visu.htm"><b>2</b></a> <a href="../files/exploring_med_files.htm"><b>3</b></a> </nobr><br><nobr>plot <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/getting_started.htm"><b>5</b></a> </nobr><br><nobr>plot2d <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>3</b></a> </nobr><br><a href="../files/creating_curves.htm"><b>plot2dview</b></a> <br><nobr>plots <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/introduction_to_visu.htm"><b>5</b></a> </nobr><br><br><br></p><p class="ftsbody" align="center"><a href="whlstf4.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\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><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<nobr><a name="bms_PR"></a><a name="subkey_PR"></a>preferences <a href="../files/scalar_map_presentation.htm"><b>1</b></a> <a href="../files/running_visu.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><a href="../files/scalar_map_presentation.htm"><b>present</b></a> <br><nobr>presentation <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_presentations.htm"><b>5</b></a> <a href="../files/creating_field_presentations.htm"><b>6</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>7</b></a> <a href="../files/animating_presentations.htm"><b>8</b></a> <a href="../files/about_structure_of_med_object.htm"><b>9</b></a> <a href="../creating_tables.htm"><b>10</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>11</b></a> <a href="../clipping.htm"><b>12</b></a> <a href="../files/sweeping.htm"><b>13</b></a> <a href="../files/stream_lines_presentation.htm"><b>14</b></a> <a href="../files/selection_in_visu.htm"><b>15</b></a> <a href="../files/scaling_presentations.htm"><b>16</b></a> <a href="../files/scalar_map_presentation.htm"><b>17</b></a> <a href="../files/renaming_presentations.htm"><b>18</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>19</b></a> <a href="../files/getting_started.htm"><b>20</b></a> <a href="../files/getting_elements_attributes.htm"><b>21</b></a> <a href="../files/editing_field_presentations.htm"><b>22</b></a> <a href="../new_topic.htm"><b>23</b></a> <a href="../files/vectors_presentation.htm"><b>24</b></a> </nobr><br><nobr>presentations <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_presentations.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>5</b></a> <a href="../files/animating_presentations.htm"><b>6</b></a> <a href="../files/about_tables.htm"><b>7</b></a> <a href="../files/about_structure_of_med_object.htm"><b>8</b></a> <a href="../creating_tables.htm"><b>9</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>10</b></a> <a href="../files/sweeping.htm"><b>11</b></a> <a href="../files/stream_lines_presentation.htm"><b>12</b></a> <a href="../files/selection_in_visu.htm"><b>13</b></a> <a href="../files/scaling_presentations.htm"><b>14</b></a> <a href="../files/scalar_map_presentation.htm"><b>15</b></a> <a href="../files/running_visu.htm"><b>16</b></a> <a href="../files/renaming_presentations.htm"><b>17</b></a> <a href="../files/introduction_to_visu.htm"><b>18</b></a> <a href="../files/importing_med_objects.htm"><b>19</b></a> <a href="../files/getting_started.htm"><b>20</b></a> <a href="../files/editing_field_presentations.htm"><b>21</b></a> <a href="../new_topic.htm"><b>22</b></a> </nobr><br><a href="../files/selection_in_visu.htm"><b>press</b></a> <br><a href="../files/selection_in_visu.htm"><b>pressed</b></a> <br><nobr>preview <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>previous</b></a> <br><nobr>previously <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>3</b></a> <a href="../files/importing_tables.htm"><b>4</b></a> </nobr><br><nobr>pro <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/about_tables.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../files/sweeping.htm"><b>7</b></a> <a href="../files/stream_lines_presentation.htm"><b>8</b></a> <a href="../files/scalar_map_presentation.htm"><b>9</b></a> <a href="../files/running_visu.htm"><b>10</b></a> <a href="../files/introduction_to_visu.htm"><b>11</b></a> <a href="../files/importing_tables.htm"><b>12</b></a> <a href="../files/importing_med_objects.htm"><b>13</b></a> <a href="../files/getting_started.htm"><b>14</b></a> <a href="../files/editing_field_presentations.htm"><b>15</b></a> </nobr><br><a href="../files/cut_lines_presentation.htm"><b>procedure</b></a> <br><a href="../files/sweeping.htm"><b>process</b></a> <br><a href="../files/introduction_to_visu.htm"><b>processing</b></a> <br><a href="../files/introduction_to_visu.htm"><b>produced</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>propagation</b></a> <br><nobr>properties <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/animating_presentations.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/vectors_presentation.htm"><b>6</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>proportional</b></a> <br><a href="../files/introduction_to_visu.htm"><b>provides</b></a> <br><a name="bms_PS"></a><a name="subkey_PS"></a><a href="../files/sweeping.htm"><b>pseudo</b></a> <br><a name="bms_PU"></a><a name="subkey_PU"></a><a href="../files/stream_lines_presentation.htm"><b>purposes</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>put</b></a> <br><a name="bms_PY"></a><a name="subkey_PY"></a><a href="../files/about_tables.htm"><b>python</b></a> <br>\r
+<nobr><a name="bms_PO"></a><a name="subkey_PO"></a>point <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><a href="../files/vectors_presentation.htm"><b>pointers</b></a> <br><nobr>points <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/selection_in_visu.htm"><b>5</b></a> <a href="../files/getting_elements_attributes.htm"><b>6</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>polyline</b></a> <br><nobr>pop <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../creating_tables.htm"><b>12</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>13</b></a> <a href="../files/sweeping.htm"><b>14</b></a> <a href="../files/stream_lines_presentation.htm"><b>15</b></a> <a href="../files/selection_in_visu.htm"><b>16</b></a> <a href="../files/scalar_map_presentation.htm"><b>17</b></a> <a href="../files/renaming_presentations.htm"><b>18</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>19</b></a> <a href="../files/editing_field_presentations.htm"><b>20</b></a> <a href="../new_topic.htm"><b>21</b></a> <a href="../files/vectors_presentation.htm"><b>22</b></a> </nobr><br><nobr>position <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/vectors_presentation.htm"><b>4</b></a> </nobr><br><a href="../clipping.htm"><b>positions</b></a> <br><a href="../files/getting_elements_attributes.htm"><b>possesses</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>possibility</b></a> <br><nobr>possible <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../clipping.htm"><b>2</b></a> </nobr><br><nobr>post <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/about_tables.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../files/sweeping.htm"><b>7</b></a> <a href="../files/stream_lines_presentation.htm"><b>8</b></a> <a href="../files/scalar_map_presentation.htm"><b>9</b></a> <a href="../files/running_visu.htm"><b>10</b></a> <a href="../files/introduction_to_visu.htm"><b>11</b></a> <a href="../files/importing_tables.htm"><b>12</b></a> <a href="../files/importing_med_objects.htm"><b>13</b></a> <a href="../files/getting_started.htm"><b>14</b></a> <a href="../files/editing_field_presentations.htm"><b>15</b></a> </nobr><br><nobr><a name="bms_PR"></a><a name="subkey_PR"></a>preferences <a href="../files/scalar_map_presentation.htm"><b>1</b></a> <a href="../files/running_visu.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><a href="../files/scalar_map_presentation.htm"><b>present</b></a> <br><nobr>presentation <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_presentations.htm"><b>5</b></a> <a href="../files/creating_field_presentations.htm"><b>6</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>7</b></a> <a href="../files/animating_presentations.htm"><b>8</b></a> <a href="../files/about_structure_of_med_object.htm"><b>9</b></a> <a href="../creating_tables.htm"><b>10</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>11</b></a> <a href="../clipping.htm"><b>12</b></a> <a href="../files/sweeping.htm"><b>13</b></a> <a href="../files/stream_lines_presentation.htm"><b>14</b></a> <a href="../files/selection_in_visu.htm"><b>15</b></a> <a href="../files/scaling_presentations.htm"><b>16</b></a> <a href="../files/scalar_map_presentation.htm"><b>17</b></a> <a href="../files/renaming_presentations.htm"><b>18</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>19</b></a> <a href="../files/getting_started.htm"><b>20</b></a> <a href="../files/getting_elements_attributes.htm"><b>21</b></a> <a href="../files/editing_field_presentations.htm"><b>22</b></a> <a href="../new_topic.htm"><b>23</b></a> <a href="../files/vectors_presentation.htm"><b>24</b></a> </nobr><br><nobr>presentations <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_presentations.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>5</b></a> <a href="../files/animating_presentations.htm"><b>6</b></a> <a href="../files/about_tables.htm"><b>7</b></a> <a href="../files/about_structure_of_med_object.htm"><b>8</b></a> <a href="../creating_tables.htm"><b>9</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>10</b></a> <a href="../files/sweeping.htm"><b>11</b></a> <a href="../files/stream_lines_presentation.htm"><b>12</b></a> <a href="../files/selection_in_visu.htm"><b>13</b></a> <a href="../files/scaling_presentations.htm"><b>14</b></a> <a href="../files/scalar_map_presentation.htm"><b>15</b></a> <a href="../files/running_visu.htm"><b>16</b></a> <a href="../files/renaming_presentations.htm"><b>17</b></a> <a href="../files/introduction_to_visu.htm"><b>18</b></a> <a href="../files/importing_med_objects.htm"><b>19</b></a> <a href="../files/getting_started.htm"><b>20</b></a> <a href="../files/editing_field_presentations.htm"><b>21</b></a> <a href="../new_topic.htm"><b>22</b></a> </nobr><br><a href="../files/selection_in_visu.htm"><b>press</b></a> <br><a href="../files/selection_in_visu.htm"><b>pressed</b></a> <br><nobr>preview <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>previous</b></a> <br><nobr>previously <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>3</b></a> <a href="../files/importing_tables.htm"><b>4</b></a> </nobr><br><nobr>pro <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/about_tables.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../files/sweeping.htm"><b>7</b></a> <a href="../files/stream_lines_presentation.htm"><b>8</b></a> <a href="../files/scalar_map_presentation.htm"><b>9</b></a> <a href="../files/running_visu.htm"><b>10</b></a> <a href="../files/introduction_to_visu.htm"><b>11</b></a> <a href="../files/importing_tables.htm"><b>12</b></a> <a href="../files/importing_med_objects.htm"><b>13</b></a> <a href="../files/getting_started.htm"><b>14</b></a> <a href="../files/editing_field_presentations.htm"><b>15</b></a> </nobr><br><a href="../files/cut_lines_presentation.htm"><b>procedure</b></a> <br><a href="../files/sweeping.htm"><b>process</b></a> <br><a href="../files/introduction_to_visu.htm"><b>processing</b></a> <br><a href="../files/introduction_to_visu.htm"><b>produced</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>propagation</b></a> <br><nobr>properties <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/animating_presentations.htm"><b>3</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/vectors_presentation.htm"><b>6</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>proportional</b></a> <br><a href="../files/introduction_to_visu.htm"><b>provides</b></a> <br><a name="bms_PS"></a><a name="subkey_PS"></a><a href="../files/sweeping.htm"><b>pseudo</b></a> <br><a name="bms_PU"></a><a name="subkey_PU"></a><a href="../files/stream_lines_presentation.htm"><b>purposes</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>put</b></a> <br><a name="bms_PY"></a><a name="subkey_PY"></a><a href="../files/about_tables.htm"><b>python</b></a> <br>\r
<br><br>\r
<a name="bm_Q"></a><a name="subkey_QU"></a><a href="../files/about_structure_of_med_object.htm"><b>quadrangles</b></a> <br><nobr>quit <a href="../files/creating_xy_plot.htm"><b>1</b></a> <a href="../files/scaling_presentations.htm"><b>2</b></a> </nobr><br>\r
<br><br>\r
-<nobr><a name="bm_R"></a><a name="subkey_RA"></a>range <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>5</b></a> <a href="../files/vectors_presentation.htm"><b>6</b></a> </nobr><br><a href="../files/about_tables.htm"><b>ranged</b></a> <br><a href="../files/about_tables.htm"><b>rarefied</b></a> <br><a name="bms_RE"></a><a name="subkey_RE"></a><a href="../files/animating_presentations.htm"><b>real</b></a> <br><nobr>rectangle <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/about_tables.htm"><b>reference</b></a> <br><a href="../files/creating_xy_plot.htm"><b>references</b></a> <br><a href="../files/sweeping.htm"><b>regarding</b></a> <br><a href="../files/cut_lines_presentation.htm"><b>regular</b></a> <br><a href="../files/running_visu.htm"><b>related</b></a> <br><nobr>relative <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/scalar_map_presentation.htm"><b>relevant</b></a> <br><a href="../files/creating_curves.htm"><b>remove</b></a> <br><a href="../files/renaming_presentations.htm"><b>rename</b></a> <br><nobr>renaming <a href="../files/renaming_presentations.htm"><b>1</b></a> <a href="../files/editing_field_presentations.htm"><b>2</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>render</b></a> <br><nobr>represent <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> </nobr><br><nobr>representation <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/scaling_presentations.htm"><b>4</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>representations</b></a> <br><nobr>represented <a href="../files/stream_lines_presentation.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><nobr>representing <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/scalar_map_presentation.htm"><b>3</b></a> <a href="../files/vectors_presentation.htm"><b>4</b></a> </nobr><br><nobr>represents <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> </nobr><br><nobr>required <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/getting_elements_attributes.htm"><b>5</b></a> <a href="../files/exploring_med_files.htm"><b>6</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>requires</b></a> <br><a href="../files/scaling_presentations.htm"><b>reset</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>resources</b></a> <br><a href="../files/cut_lines_presentation.htm"><b>result</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>resulting</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>results</b></a> <br><nobr>return <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> </nobr><br><a href="../files/cut_lines_presentation.htm"><b>reuses</b></a> <br><nobr><a name="bms_RI"></a><a name="subkey_RI"></a>right <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../creating_tables.htm"><b>12</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>13</b></a> <a href="../files/sweeping.htm"><b>14</b></a> <a href="../files/stream_lines_presentation.htm"><b>15</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>16</b></a> <a href="../files/selection_in_visu.htm"><b>17</b></a> <a href="../files/scalar_map_presentation.htm"><b>18</b></a> <a href="../files/renaming_presentations.htm"><b>19</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>20</b></a> <a href="../files/importing_tables.htm"><b>21</b></a> <a href="../files/importing_med_objects.htm"><b>22</b></a> <a href="../files/editing_field_presentations.htm"><b>23</b></a> <a href="../new_topic.htm"><b>24</b></a> <a href="../files/vectors_presentation.htm"><b>25</b></a> </nobr><br><nobr>rightward <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_RO"></a><a name="subkey_RO"></a>rotation <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><nobr>rotations <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><nobr>row <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_RU"></a><a name="subkey_RU"></a>running <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/running_visu.htm"><b>2</b></a> </nobr><br>\r
+<nobr><a name="bm_R"></a><a name="subkey_RA"></a>range <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>5</b></a> <a href="../files/vectors_presentation.htm"><b>6</b></a> </nobr><br><a href="../files/about_tables.htm"><b>ranged</b></a> <br><a href="../files/about_tables.htm"><b>rarefied</b></a> <br><nobr><a name="bms_RE"></a><a name="subkey_RE"></a>real <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><nobr>rectangle <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/about_tables.htm"><b>reference</b></a> <br><a href="../files/creating_xy_plot.htm"><b>references</b></a> <br><a href="../files/sweeping.htm"><b>regarding</b></a> <br><a href="../files/cut_lines_presentation.htm"><b>regular</b></a> <br><a href="../files/running_visu.htm"><b>related</b></a> <br><a href="../files/cut_lines_resentation.htm"><b>relative</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>relevant</b></a> <br><a href="../files/creating_curves.htm"><b>remove</b></a> <br><a href="../files/renaming_presentations.htm"><b>rename</b></a> <br><nobr>renaming <a href="../files/renaming_presentations.htm"><b>1</b></a> <a href="../files/editing_field_presentations.htm"><b>2</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>render</b></a> <br><nobr>represent <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> </nobr><br><nobr>representation <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/scaling_presentations.htm"><b>4</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>representations</b></a> <br><nobr>represented <a href="../files/stream_lines_presentation.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><nobr>representing <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> <a href="../files/scalar_map_presentation.htm"><b>3</b></a> <a href="../files/vectors_presentation.htm"><b>4</b></a> </nobr><br><nobr>represents <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_structure_of_med_object.htm"><b>2</b></a> </nobr><br><nobr>required <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/getting_elements_attributes.htm"><b>5</b></a> <a href="../files/exploring_med_files.htm"><b>6</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>requires</b></a> <br><a href="../files/scaling_presentations.htm"><b>reset</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>resources</b></a> <br><a href="../files/cut_lines_presentation.htm"><b>result</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>resulting</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>results</b></a> <br><nobr>return <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> </nobr><br><a href="../files/cut_lines_presentation.htm"><b>reuses</b></a> <br><nobr><a name="bms_RI"></a><a name="subkey_RI"></a>right <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../creating_tables.htm"><b>12</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>13</b></a> <a href="../files/sweeping.htm"><b>14</b></a> <a href="../files/stream_lines_presentation.htm"><b>15</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>16</b></a> <a href="../files/selection_in_visu.htm"><b>17</b></a> <a href="../files/scalar_map_presentation.htm"><b>18</b></a> <a href="../files/renaming_presentations.htm"><b>19</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>20</b></a> <a href="../files/importing_tables.htm"><b>21</b></a> <a href="../files/importing_med_objects.htm"><b>22</b></a> <a href="../files/editing_field_presentations.htm"><b>23</b></a> <a href="../new_topic.htm"><b>24</b></a> <a href="../files/vectors_presentation.htm"><b>25</b></a> </nobr><br><nobr>rightward <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_RO"></a><a name="subkey_RO"></a>rotation <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> </nobr><br><nobr>rotations <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><nobr>row <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_RU"></a><a name="subkey_RU"></a>running <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/running_visu.htm"><b>2</b></a> </nobr><br>\r
<br><br>\r
-<a name="bm_S"></a><a name="subkey_S{"></a><a href="../files/about_structure_of_med_object.htm"><b>s</b></a> <br><nobr><a name="bms_SA"></a><a name="subkey_SA"></a>salome <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> <a href="../files/scaling_presentations.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/running_visu.htm"><b>5</b></a> <a href="../files/introduction_to_visu.htm"><b>6</b></a> <a href="../files/importing_med_objects.htm"><b>7</b></a> <a href="../files/exploring_med_files.htm"><b>8</b></a> </nobr><br><nobr>same <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/importing_med_objects.htm"><b>6</b></a> </nobr><br><nobr>save <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/scalar_map_presentation.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_SC"></a><a name="subkey_SC"></a>scalar <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../creating_tables.htm"><b>7</b></a> <a href="../files/sweeping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/scalar_map_presentation.htm"><b>10</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>11</b></a> <a href="../files/getting_elements_attributes.htm"><b>12</b></a> <a href="../new_topic.htm"><b>13</b></a> <a href="../files/vectors_presentation.htm"><b>14</b></a> </nobr><br><nobr>scale <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/scaling_presentations.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/vectors_presentation.htm"><b>5</b></a> </nobr><br><nobr>scaling <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/scaling_presentations.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/editing_field_presentations.htm"><b>5</b></a> <a href="../files/vectors_presentation.htm"><b>6</b></a> </nobr><br><a href="../files/about_tables.htm"><b>script</b></a> <br><nobr><a name="bms_SE"></a><a name="subkey_SE"></a>search <a href="../files/importing_med_objects.htm"><b>1</b></a> <a href="../files/exploring_med_files.htm"><b>2</b></a> </nobr><br><a href="../creating_plot2d_presentations_from_tables.htm"><b>second</b></a> <br><a href="../clipping.htm"><b>section</b></a> <br><nobr>see <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/about_tables.htm"><b>6</b></a> <a href="../files/about_structure_of_med_object.htm"><b>7</b></a> <a href="../clipping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/running_visu.htm"><b>10</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>11</b></a> <a href="../files/importing_med_objects.htm"><b>12</b></a> <a href="../files/vectors_presentation.htm"><b>13</b></a> </nobr><br><nobr>segments <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> </nobr><br><nobr>select <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_xy_plot.htm"><b>5</b></a> <a href="../files/creating_field_presentations.htm"><b>6</b></a> <a href="../files/creating_curves.htm"><b>7</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>8</b></a> <a href="../files/animating_presentations.htm"><b>9</b></a> <a href="../creating_tables.htm"><b>10</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>11</b></a> <a href="../clipping.htm"><b>12</b></a> <a href="../files/sweeping.htm"><b>13</b></a> <a href="../files/stream_lines_presentation.htm"><b>14</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>15</b></a> <a href="../files/selection_in_visu.htm"><b>16</b></a> <a href="../files/scalar_map_presentation.htm"><b>17</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>18</b></a> <a href="../files/importing_tables.htm"><b>19</b></a> <a href="../files/importing_med_objects.htm"><b>20</b></a> <a href="../files/editing_field_presentations.htm"><b>21</b></a> <a href="../new_topic.htm"><b>22</b></a> <a href="../files/vectors_presentation.htm"><b>23</b></a> </nobr><br><nobr>selected <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_xy_plot.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/selection_in_visu.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/getting_elements_attributes.htm"><b>8</b></a> <a href="../files/vectors_presentation.htm"><b>9</b></a> </nobr><br><a href="../files/editing_field_presentations.htm"><b>selecting</b></a> <br><nobr>selection <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>sensitive</b></a> <br><a href="../files/displaying_tables.htm"><b>separate</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>separately</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>serve</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>sessions</b></a> <br><nobr>set <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/animating_presentations.htm"><b>7</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>8</b></a> <a href="../clipping.htm"><b>9</b></a> <a href="../files/stream_lines_presentation.htm"><b>10</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>11</b></a> <a href="../files/scaling_presentations.htm"><b>12</b></a> <a href="../files/scalar_map_presentation.htm"><b>13</b></a> <a href="../files/running_visu.htm"><b>14</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>15</b></a> <a href="../files/importing_med_objects.htm"><b>16</b></a> <a href="../files/getting_started.htm"><b>17</b></a> <a href="../files/vectors_presentation.htm"><b>18</b></a> </nobr><br><nobr>setting <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/running_visu.htm"><b>8</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>settings</b></a> <br><a href="../files/animating_presentations.htm"><b>setup</b></a> <br><nobr><a name="bms_SH"></a><a name="subkey_SH"></a>shape <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/sweeping.htm"><b>3</b></a> </nobr><br><a href="../files/selection_in_visu.htm"><b>shift</b></a> <br><a href="../files/deformed_shape_presentation.htm"><b>shifting</b></a> <br><nobr>should <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/sweeping.htm"><b>5</b></a> <a href="../files/running_visu.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> </nobr><br><nobr>show <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../clipping.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>shows</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>shrink</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>shrinked</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>shrinking</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf5.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<a name="bm_S"></a><a name="subkey_S{"></a><a href="../files/about_structure_of_med_object.htm"><b>s</b></a> <br><nobr><a name="bms_SA"></a><a name="subkey_SA"></a>salome <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> <a href="../files/scaling_presentations.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/running_visu.htm"><b>5</b></a> <a href="../files/introduction_to_visu.htm"><b>6</b></a> <a href="../files/importing_med_objects.htm"><b>7</b></a> <a href="../files/exploring_med_files.htm"><b>8</b></a> </nobr><br><nobr>same <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/importing_med_objects.htm"><b>6</b></a> </nobr><br><nobr>save <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/scalar_map_presentation.htm"><b>3</b></a> </nobr><br><nobr><a name="bms_SC"></a><a name="subkey_SC"></a>scalar <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../creating_tables.htm"><b>7</b></a> <a href="../files/sweeping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/scalar_map_presentation.htm"><b>10</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>11</b></a> <a href="../files/getting_elements_attributes.htm"><b>12</b></a> <a href="../new_topic.htm"><b>13</b></a> <a href="../files/vectors_presentation.htm"><b>14</b></a> </nobr><br><nobr>scale <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/scaling_presentations.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/vectors_presentation.htm"><b>5</b></a> </nobr><br><nobr>scaling <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> <a href="../files/scaling_presentations.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/editing_field_presentations.htm"><b>5</b></a> <a href="../files/vectors_presentation.htm"><b>6</b></a> </nobr><br><a href="../files/about_tables.htm"><b>script</b></a> <br><nobr><a name="bms_SE"></a><a name="subkey_SE"></a>search <a href="../files/importing_med_objects.htm"><b>1</b></a> <a href="../files/exploring_med_files.htm"><b>2</b></a> </nobr><br><a href="../creating_plot2d_presentations_from_tables.htm"><b>second</b></a> <br><a href="../clipping.htm"><b>section</b></a> <br><nobr>see <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_field_presentations.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/about_tables.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../clipping.htm"><b>7</b></a> <a href="../files/stream_lines_presentation.htm"><b>8</b></a> <a href="../files/running_visu.htm"><b>9</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>10</b></a> <a href="../files/importing_med_objects.htm"><b>11</b></a> <a href="../files/vectors_presentation.htm"><b>12</b></a> </nobr><br><nobr>segments <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> </nobr><br><nobr>select <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_xy_plot.htm"><b>5</b></a> <a href="../files/creating_field_presentations.htm"><b>6</b></a> <a href="../files/creating_curves.htm"><b>7</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>8</b></a> <a href="../files/animating_presentations.htm"><b>9</b></a> <a href="../creating_tables.htm"><b>10</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>11</b></a> <a href="../clipping.htm"><b>12</b></a> <a href="../files/sweeping.htm"><b>13</b></a> <a href="../files/stream_lines_presentation.htm"><b>14</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>15</b></a> <a href="../files/selection_in_visu.htm"><b>16</b></a> <a href="../files/scalar_map_presentation.htm"><b>17</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>18</b></a> <a href="../files/importing_tables.htm"><b>19</b></a> <a href="../files/importing_med_objects.htm"><b>20</b></a> <a href="../files/editing_field_presentations.htm"><b>21</b></a> <a href="../new_topic.htm"><b>22</b></a> <a href="../files/vectors_presentation.htm"><b>23</b></a> </nobr><br><nobr>selected <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_xy_plot.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/selection_in_visu.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/getting_elements_attributes.htm"><b>8</b></a> <a href="../files/vectors_presentation.htm"><b>9</b></a> </nobr><br><a href="../files/editing_field_presentations.htm"><b>selecting</b></a> <br><nobr>selection <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> <a href="../files/getting_elements_attributes.htm"><b>3</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>sensitive</b></a> <br><a href="../files/displaying_tables.htm"><b>separate</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>separately</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>serve</b></a> <br><a href="../files/scalar_map_presentation.htm"><b>sessions</b></a> <br><nobr>set <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/animating_presentations.htm"><b>7</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>8</b></a> <a href="../clipping.htm"><b>9</b></a> <a href="../files/stream_lines_presentation.htm"><b>10</b></a> <a href="../files/scaling_presentations.htm"><b>11</b></a> <a href="../files/scalar_map_presentation.htm"><b>12</b></a> <a href="../files/running_visu.htm"><b>13</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>14</b></a> <a href="../files/importing_med_objects.htm"><b>15</b></a> <a href="../files/getting_started.htm"><b>16</b></a> <a href="../files/vectors_presentation.htm"><b>17</b></a> </nobr><br><nobr>setting <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/running_visu.htm"><b>8</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><a href="../files/setting_properties_of_xy_plots.htm"><b>settings</b></a> <br><a href="../files/animating_presentations.htm"><b>setup</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf5.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\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><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<nobr><a name="bms_SI"></a><a name="subkey_SI"></a>side <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>similar</b></a> <br><a href="../files/animating_presentations.htm"><b>simultaneous</b></a> <br><nobr>simultaneously <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><nobr>size <a href="../creating_plot2d_presentations_from_tables.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/getting_elements_attributes.htm"><b>4</b></a> </nobr><br><a name="bms_SM"></a><a name="subkey_SM"></a><a href="../files/vectors_presentation.htm"><b>small</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>smaller</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>smoother</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>smoothness</b></a> <br><a name="bms_SO"></a><a name="subkey_SO"></a><a href="../files/animating_presentations.htm"><b>so</b></a> <br><nobr>solid <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>sometimes</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>source</b></a> <br><nobr><a name="bms_SP"></a><a name="subkey_SP"></a>space <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> <a href="../files/getting_elements_attributes.htm"><b>4</b></a> </nobr><br><a href="../files/about_tables.htm"><b>special</b></a> <br><a href="../files/editing_field_presentations.htm"><b>specific</b></a> <br><a href="../files/animating_presentations.htm"><b>specified</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>specify</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>specifying</b></a> <br><a href="../files/animating_presentations.htm"><b>speed</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>spline</b></a> <br><a href="../clipping.htm"><b>split</b></a> <br><nobr><a name="bms_ST"></a><a name="subkey_ST"></a>stamp <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/animating_presentations.htm"><b>3</b></a> </nobr><br><nobr>stamps <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../files/stream_lines_presentation.htm"><b>7</b></a> <a href="../files/scalar_map_presentation.htm"><b>8</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>standard <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/importing_tables.htm"><b>3</b></a> <a href="../files/importing_med_objects.htm"><b>4</b></a> <a href="../files/exploring_med_files.htm"><b>5</b></a> </nobr><br><nobr>start <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../clipping.htm"><b>2</b></a> <a href="../files/sweeping.htm"><b>3</b></a> <a href="../files/running_visu.htm"><b>4</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>starting</b></a> <br><a href="../files/sweeping.htm"><b>state</b></a> <br><nobr>step <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> </nobr><br><nobr>steps <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><nobr>stored <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/importing_med_objects.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>stream</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>streamline</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>streamlines</b></a> <br><nobr>structure <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/importing_med_objects.htm"><b>5</b></a> <a href="../files/exploring_med_files.htm"><b>6</b></a> </nobr><br><a href="../clipping.htm"><b>structured</b></a> <br><nobr>study <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/running_visu.htm"><b>4</b></a> <a href="../files/importing_tables.htm"><b>5</b></a> <a href="../files/importing_med_objects.htm"><b>6</b></a> <a href="../files/getting_started.htm"><b>7</b></a> </nobr><br><nobr><a name="bms_SU"></a><a name="subkey_SU"></a>subfolder <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>subfolders</b></a> <br><nobr>submenu <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>submenus</b></a> <br><nobr>submesh <a href="../files/creating_presentations.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/renaming_presentations.htm"><b>5</b></a> <a href="../files/getting_started.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> </nobr><br><nobr>submeshes <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/scaling_presentations.htm"><b>2</b></a> <a href="../files/introduction_to_visu.htm"><b>3</b></a> </nobr><br><a href="../files/importing_med_objects.htm"><b>supplementary</b></a> <br><nobr>surface <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>surfaceframe</b></a> <br><nobr>surfaces <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>3</b></a> </nobr><br><a name="bms_SW"></a><a name="subkey_SW"></a><a href="../files/sweeping.htm"><b>sweep</b></a> <br><nobr>sweeping <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/getting_started.htm"><b>3</b></a> </nobr><br>\r
+<nobr><a name="bms_SH"></a><a name="subkey_SH"></a>shape <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/sweeping.htm"><b>3</b></a> </nobr><br><a href="../files/selection_in_visu.htm"><b>shift</b></a> <br><a href="../files/deformed_shape_presentation.htm"><b>shifting</b></a> <br><nobr>should <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/sweeping.htm"><b>5</b></a> <a href="../files/running_visu.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> </nobr><br><nobr>show <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../clipping.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>shows</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>shrink</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>shrinked</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>shrinking</b></a> <br><a name="bms_SI"></a><a name="subkey_SI"></a><a href="../files/cut_lines_resentation.htm"><b>side</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>similar</b></a> <br><a href="../files/animating_presentations.htm"><b>simultaneous</b></a> <br><nobr>simultaneously <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/importing_med_objects.htm"><b>3</b></a> </nobr><br><nobr>size <a href="../creating_plot2d_presentations_from_tables.htm"><b>1</b></a> <a href="../files/stream_lines_presentation.htm"><b>2</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>3</b></a> <a href="../files/getting_elements_attributes.htm"><b>4</b></a> </nobr><br><a name="bms_SM"></a><a name="subkey_SM"></a><a href="../files/vectors_presentation.htm"><b>small</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>smaller</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>smoother</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>smoothness</b></a> <br><a name="bms_SO"></a><a name="subkey_SO"></a><a href="../files/animating_presentations.htm"><b>so</b></a> <br><nobr>solid <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>sometimes</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>source</b></a> <br><nobr><a name="bms_SP"></a><a name="subkey_SP"></a>space <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> <a href="../files/getting_elements_attributes.htm"><b>4</b></a> </nobr><br><a href="../files/about_tables.htm"><b>special</b></a> <br><a href="../files/editing_field_presentations.htm"><b>specific</b></a> <br><nobr>specified <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>specify</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>specifying</b></a> <br><a href="../files/animating_presentations.htm"><b>speed</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>spline</b></a> <br><a href="../clipping.htm"><b>split</b></a> <br><nobr><a name="bms_ST"></a><a name="subkey_ST"></a>stamp <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/animating_presentations.htm"><b>3</b></a> </nobr><br><nobr>stamps <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/animating_presentations.htm"><b>5</b></a> <a href="../files/about_structure_of_med_object.htm"><b>6</b></a> <a href="../files/stream_lines_presentation.htm"><b>7</b></a> <a href="../files/scalar_map_presentation.htm"><b>8</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>standard <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/importing_tables.htm"><b>3</b></a> <a href="../files/importing_med_objects.htm"><b>4</b></a> <a href="../files/exploring_med_files.htm"><b>5</b></a> </nobr><br><nobr>start <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../clipping.htm"><b>2</b></a> <a href="../files/sweeping.htm"><b>3</b></a> <a href="../files/running_visu.htm"><b>4</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>starting</b></a> <br><a href="../files/sweeping.htm"><b>state</b></a> <br><nobr>step <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> </nobr><br><nobr>steps <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><nobr>stored <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/importing_med_objects.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>stream</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>streamline</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>streamlines</b></a> <br><nobr>structure <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/importing_med_objects.htm"><b>5</b></a> <a href="../files/exploring_med_files.htm"><b>6</b></a> </nobr><br><a href="../clipping.htm"><b>structured</b></a> <br><nobr>study <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/running_visu.htm"><b>4</b></a> <a href="../files/importing_tables.htm"><b>5</b></a> <a href="../files/importing_med_objects.htm"><b>6</b></a> <a href="../files/getting_started.htm"><b>7</b></a> </nobr><br><nobr><a name="bms_SU"></a><a name="subkey_SU"></a>subfolder <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>subfolders</b></a> <br><nobr>submenu <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>submenus</b></a> <br><nobr>submesh <a href="../files/creating_presentations.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/renaming_presentations.htm"><b>5</b></a> <a href="../files/getting_started.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> </nobr><br><nobr>submeshes <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/scaling_presentations.htm"><b>2</b></a> <a href="../files/introduction_to_visu.htm"><b>3</b></a> </nobr><br><a href="../files/importing_med_objects.htm"><b>supplementary</b></a> <br><nobr>surface <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>surfaceframe</b></a> <br><nobr>surfaces <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>3</b></a> </nobr><br><a name="bms_SW"></a><a name="subkey_SW"></a><a href="../files/sweeping.htm"><b>sweep</b></a> <br><nobr>sweeping <a href="../files/animating_presentations.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> <a href="../files/getting_started.htm"><b>3</b></a> </nobr><br>\r
<br><br>\r
-<nobr><a name="bm_T"></a><a name="subkey_TA"></a>tab <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/about_tables.htm"><b>4</b></a> <a href="../clipping.htm"><b>5</b></a> <a href="../files/stream_lines_presentation.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>8</b></a> <a href="../files/importing_tables.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>table <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/about_tables.htm"><b>4</b></a> <a href="../files/about_structure_of_med_object.htm"><b>5</b></a> <a href="../creating_tables.htm"><b>6</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>7</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>8</b></a> <a href="../files/importing_tables.htm"><b>9</b></a> <a href="../files/getting_started.htm"><b>10</b></a> <a href="../files/getting_elements_attributes.htm"><b>11</b></a> <a href="../new_topic.htm"><b>12</b></a> </nobr><br><nobr>tables <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/about_tables.htm"><b>4</b></a> <a href="../creating_tables.htm"><b>5</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>6</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>7</b></a> <a href="../files/introduction_to_visu.htm"><b>8</b></a> <a href="../files/importing_tables.htm"><b>9</b></a> <a href="../new_topic.htm"><b>10</b></a> </nobr><br><a href="../files/vectors_presentation.htm"><b>tail</b></a> <br><a href="../files/sweeping.htm"><b>take</b></a> <br><nobr>taken <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>takes</b></a> <br><a name="bms_TE"></a><a name="subkey_TE"></a><a href="../files/scalar_map_presentation.htm"><b>text</b></a> <br><nobr><a name="bms_TH"></a><a name="subkey_TH"></a>them <a href="../files/about_tables.htm"><b>1</b></a> <a href="../clipping.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>4</b></a> <a href="../files/importing_med_objects.htm"><b>5</b></a> </nobr><br><a href="../creating_plot2d_presentations_from_tables.htm"><b>third</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>thought</b></a> <br><nobr>three <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/about_tables.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_TI"></a><a name="subkey_TI"></a>time <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_field_presentations.htm"><b>5</b></a> <a href="../files/animating_presentations.htm"><b>6</b></a> <a href="../files/about_structure_of_med_object.htm"><b>7</b></a> <a href="../files/sweeping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/scalar_map_presentation.htm"><b>10</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>11</b></a> <a href="../files/importing_med_objects.htm"><b>12</b></a> <a href="../files/vectors_presentation.htm"><b>13</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>timing</b></a> <br><nobr>title <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/about_tables.htm"><b>titles</b></a> <br><a name="bms_TO"></a><a name="subkey_TO"></a><a href="../files/about_structure_of_med_object.htm"><b>together</b></a> <br><nobr>toolbar <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_field_presentations.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/stream_lines_presentation.htm"><b>7</b></a> <a href="../files/selection_in_visu.htm"><b>8</b></a> <a href="../files/scaling_presentations.htm"><b>9</b></a> <a href="../files/scalar_map_presentation.htm"><b>10</b></a> <a href="../files/running_visu.htm"><b>11</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>12</b></a> <a href="../files/vectors_presentation.htm"><b>13</b></a> </nobr><br><a href="../files/running_visu.htm"><b>toolbars</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>top</b></a> <br><nobr><a name="bms_TR"></a><a name="subkey_TR"></a>transformation <a href="../files/sweeping.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>transforming</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>tree</b></a> <br><nobr>triangle <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>triangles</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>triggers</b></a> <br><nobr><a name="bms_TW"></a><a name="subkey_TW"></a>two <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_xy_plot.htm"><b>3</b></a> <a href="../files/creating_curves.htm"><b>4</b></a> <a href="../clipping.htm"><b>5</b></a> <a href="../files/importing_med_objects.htm"><b>6</b></a> </nobr><br><nobr><a name="bms_TX"></a><a name="subkey_TX"></a>txt <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_TY"></a><a name="subkey_TY"></a>type <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/animating_presentations.htm"><b>7</b></a> <a href="../files/about_structure_of_med_object.htm"><b>8</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>9</b></a> <a href="../files/sweeping.htm"><b>10</b></a> <a href="../files/stream_lines_presentation.htm"><b>11</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>12</b></a> <a href="../files/scalar_map_presentation.htm"><b>13</b></a> <a href="../files/getting_elements_attributes.htm"><b>14</b></a> <a href="../files/vectors_presentation.htm"><b>15</b></a> </nobr><br><nobr>types <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> </nobr><br>\r
+<a name="bm_T"></a><a name="subkey_T{"></a><a href="../files/setting_properties_of_xy_plots.htm"><b>t</b></a> <br><nobr><a name="bms_TA"></a><a name="subkey_TA"></a>tab <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/about_tables.htm"><b>4</b></a> <a href="../clipping.htm"><b>5</b></a> <a href="../files/stream_lines_presentation.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>8</b></a> <a href="../files/importing_tables.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><nobr>table <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/about_tables.htm"><b>4</b></a> <a href="../files/about_structure_of_med_object.htm"><b>5</b></a> <a href="../creating_tables.htm"><b>6</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>7</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>8</b></a> <a href="../files/importing_tables.htm"><b>9</b></a> <a href="../files/getting_started.htm"><b>10</b></a> <a href="../files/getting_elements_attributes.htm"><b>11</b></a> <a href="../new_topic.htm"><b>12</b></a> </nobr><br><nobr>tables <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/about_tables.htm"><b>4</b></a> <a href="../creating_tables.htm"><b>5</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>6</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>7</b></a> <a href="../files/introduction_to_visu.htm"><b>8</b></a> <a href="../files/importing_tables.htm"><b>9</b></a> <a href="../new_topic.htm"><b>10</b></a> </nobr><br><a href="../files/vectors_presentation.htm"><b>tail</b></a> <br><a href="../files/sweeping.htm"><b>take</b></a> <br><nobr>taken <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>takes</b></a> <br><a name="bms_TE"></a><a name="subkey_TE"></a><a href="../files/scalar_map_presentation.htm"><b>text</b></a> <br><nobr><a name="bms_TH"></a><a name="subkey_TH"></a>them <a href="../files/about_tables.htm"><b>1</b></a> <a href="../clipping.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>4</b></a> <a href="../files/importing_med_objects.htm"><b>5</b></a> </nobr><br><a href="../creating_plot2d_presentations_from_tables.htm"><b>third</b></a> <br><a href="../files/stream_lines_presentation.htm"><b>thought</b></a> <br><nobr>three <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/about_tables.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> </nobr><br><nobr><a name="bms_TI"></a><a name="subkey_TI"></a>time <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_field_presentations.htm"><b>5</b></a> <a href="../files/animating_presentations.htm"><b>6</b></a> <a href="../files/about_structure_of_med_object.htm"><b>7</b></a> <a href="../files/sweeping.htm"><b>8</b></a> <a href="../files/stream_lines_presentation.htm"><b>9</b></a> <a href="../files/scalar_map_presentation.htm"><b>10</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>11</b></a> <a href="../files/importing_med_objects.htm"><b>12</b></a> <a href="../files/vectors_presentation.htm"><b>13</b></a> </nobr><br><a href="../files/animating_presentations.htm"><b>timing</b></a> <br><nobr>title <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/about_tables.htm"><b>titles</b></a> <br><a name="bms_TO"></a><a name="subkey_TO"></a><a href="../files/about_structure_of_med_object.htm"><b>together</b></a> <br><nobr>toolbar <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_field_presentations.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/stream_lines_presentation.htm"><b>7</b></a> <a href="../files/selection_in_visu.htm"><b>8</b></a> <a href="../files/scaling_presentations.htm"><b>9</b></a> <a href="../files/scalar_map_presentation.htm"><b>10</b></a> <a href="../files/running_visu.htm"><b>11</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>12</b></a> <a href="../files/vectors_presentation.htm"><b>13</b></a> </nobr><br><a href="../files/running_visu.htm"><b>toolbars</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>top</b></a> <br><nobr><a name="bms_TR"></a><a name="subkey_TR"></a>transformation <a href="../files/sweeping.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>transforming</b></a> <br><a href="../files/about_structure_of_med_object.htm"><b>tree</b></a> <br><nobr>triangle <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>triangles</b></a> <br><a href="../files/setting_properties_of_xy_plots.htm"><b>triggers</b></a> <br><nobr><a name="bms_TW"></a><a name="subkey_TW"></a>two <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/creating_xy_plot.htm"><b>3</b></a> <a href="../files/creating_curves.htm"><b>4</b></a> <a href="../clipping.htm"><b>5</b></a> <a href="../files/importing_med_objects.htm"><b>6</b></a> </nobr><br><nobr><a name="bms_TX"></a><a name="subkey_TX"></a>txt <a href="../files/about_tables.htm"><b>1</b></a> <a href="../files/importing_tables.htm"><b>2</b></a> </nobr><br><nobr><a name="bms_TY"></a><a name="subkey_TY"></a>type <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>6</b></a> <a href="../files/animating_presentations.htm"><b>7</b></a> <a href="../files/about_structure_of_med_object.htm"><b>8</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>9</b></a> <a href="../files/sweeping.htm"><b>10</b></a> <a href="../files/stream_lines_presentation.htm"><b>11</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>12</b></a> <a href="../files/scalar_map_presentation.htm"><b>13</b></a> <a href="../files/getting_elements_attributes.htm"><b>14</b></a> <a href="../files/vectors_presentation.htm"><b>15</b></a> </nobr><br><nobr>types <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> </nobr><br>\r
<br><br>\r
<a name="bm_U"></a><a name="subkey_UN"></a><a href="../creating_plot2d_presentations_from_tables.htm"><b>unchecking</b></a> <br><nobr>units <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/about_tables.htm"><b>2</b></a> <a href="../files/stream_lines_presentation.htm"><b>3</b></a> </nobr><br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>unshrink</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>unshrinked</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>unshrinking</b></a> <br><nobr><a name="bms_UP"></a><a name="subkey_UP"></a>up <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../creating_tables.htm"><b>12</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>13</b></a> <a href="../files/sweeping.htm"><b>14</b></a> <a href="../files/stream_lines_presentation.htm"><b>15</b></a> <a href="../files/selection_in_visu.htm"><b>16</b></a> <a href="../files/scalar_map_presentation.htm"><b>17</b></a> <a href="../files/renaming_presentations.htm"><b>18</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>19</b></a> <a href="../files/editing_field_presentations.htm"><b>20</b></a> <a href="../new_topic.htm"><b>21</b></a> <a href="../files/vectors_presentation.htm"><b>22</b></a> </nobr><br><nobr>update <a href="../creating_tables.htm"><b>1</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>2</b></a> <a href="../new_topic.htm"><b>3</b></a> </nobr><br><a href="../files/running_visu.htm"><b>updated</b></a> <br><a href="../files/importing_med_objects.htm"><b>uploaded</b></a> <br><nobr>upward <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../creating_plot2d_presentations_from_tables.htm"><b>2</b></a> </nobr><br><a name="bms_US"></a><a name="subkey_US"></a><a href="../files/getting_started.htm"><b>usage</b></a> <br><nobr>used <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/creating_curves.htm"><b>3</b></a> <a href="../files/animating_presentations.htm"><b>4</b></a> <a href="../files/stream_lines_presentation.htm"><b>5</b></a> <a href="../files/scalar_map_presentation.htm"><b>6</b></a> </nobr><br><nobr>user <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/sweeping.htm"><b>2</b></a> </nobr><br><nobr>using <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/creating_curves.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/getting_elements_attributes.htm"><b>6</b></a> <a href="../files/exploring_med_files.htm"><b>7</b></a> <a href="../files/vectors_presentation.htm"><b>8</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>usually</b></a> <br>\r
<br><br>\r
-<a name="bm_V"></a><a name="subkey_V{"></a><a href="../files/creating_curves.htm"><b>v</b></a> <br><nobr><a name="bms_VA"></a><a name="subkey_VA"></a>validate <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> </nobr><br><nobr>value <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> </nobr><br><nobr>values <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/about_tables.htm"><b>6</b></a> <a href="../files/about_structure_of_med_object.htm"><b>7</b></a> <a href="../creating_tables.htm"><b>8</b></a> <a href="../files/sweeping.htm"><b>9</b></a> <a href="../files/stream_lines_presentation.htm"><b>10</b></a> <a href="../files/scalar_map_presentation.htm"><b>11</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>12</b></a> <a href="../new_topic.htm"><b>13</b></a> <a href="../files/vectors_presentation.htm"><b>14</b></a> </nobr><br><a href="../files/introduction_to_visu.htm"><b>various</b></a> <br><nobr><a name="bms_VE"></a><a name="subkey_VE"></a>vector <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> <a href="../files/vectors_presentation.htm"><b>8</b></a> </nobr><br><nobr>vectors <a href="../files/stream_lines_presentation.htm"><b>1</b></a> <a href="../files/vectors_presentation.htm"><b>2</b></a> </nobr><br><nobr>vertical <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>very</b></a> <br><a name="bms_VI"></a><a name="subkey_VI"></a><a href="../files/setting_properties_of_xy_plots.htm"><b>via</b></a> <br><nobr>view <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> <a href="../files/getting_started.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> <a href="../files/editing_field_presentations.htm"><b>8</b></a> </nobr><br><nobr>viewer <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_xy_plot.htm"><b>5</b></a> <a href="../files/creating_presentations.htm"><b>6</b></a> <a href="../files/creating_curves.htm"><b>7</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>8</b></a> <a href="../files/about_tables.htm"><b>9</b></a> <a href="../creating_tables.htm"><b>10</b></a> <a href="../files/sweeping.htm"><b>11</b></a> <a href="../files/stream_lines_presentation.htm"><b>12</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>13</b></a> <a href="../files/selection_in_visu.htm"><b>14</b></a> <a href="../files/scalar_map_presentation.htm"><b>15</b></a> <a href="../files/running_visu.htm"><b>16</b></a> <a href="../files/renaming_presentations.htm"><b>17</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>18</b></a> <a href="../files/getting_elements_attributes.htm"><b>19</b></a> <a href="../files/editing_field_presentations.htm"><b>20</b></a> <a href="../new_topic.htm"><b>21</b></a> <a href="../files/vectors_presentation.htm"><b>22</b></a> </nobr><br><a href="../clipping.htm"><b>views</b></a> <br><nobr>visu <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../creating_tables.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/introduction_to_visu.htm"><b>5</b></a> <a href="../files/exploring_med_files.htm"><b>6</b></a> <a href="../new_topic.htm"><b>7</b></a> </nobr><br><nobr>visualization <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>5</b></a> <a href="../files/stream_lines_presentation.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>8</b></a> <a href="../files/introduction_to_visu.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><a href="../files/vectors_presentation.htm"><b>visualize</b></a> <br><nobr>visualized <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/vectors_presentation.htm"><b>visualizes</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>visually</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf6.htm" target="_self" title="previous search group"><b>>></b></a>\r
+<a name="bm_V"></a><a name="subkey_V{"></a><a href="../files/creating_curves.htm"><b>v</b></a> <br><nobr><a name="bms_VA"></a><a name="subkey_VA"></a>validate <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>1</b></a> <a href="../files/animating_presentations.htm"><b>2</b></a> </nobr><br><nobr>value <a href="../files/cut_lines_resentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> </nobr><br><nobr>values <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/creating_curves.htm"><b>5</b></a> <a href="../files/about_tables.htm"><b>6</b></a> <a href="../files/about_structure_of_med_object.htm"><b>7</b></a> <a href="../creating_tables.htm"><b>8</b></a> <a href="../files/sweeping.htm"><b>9</b></a> <a href="../files/stream_lines_presentation.htm"><b>10</b></a> <a href="../files/scalar_map_presentation.htm"><b>11</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>12</b></a> <a href="../new_topic.htm"><b>13</b></a> <a href="../files/vectors_presentation.htm"><b>14</b></a> </nobr><br><a href="../files/introduction_to_visu.htm"><b>various</b></a> <br><br><br></p><p class="ftsbody" align="center"><a href="whlstf6.htm" target="_self" title="previous search group"><b>>></b></a>\r
\r
</body>\r
\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><<</b></a><br><br></p>\r
<p class="ftsbody" >\r
-<a name="bms_VT"></a><a name="subkey_VT"></a><a href="../files/running_visu.htm"><b>vtk</b></a> <br>\r
+<nobr><a name="bms_VE"></a><a name="subkey_VE"></a>vector <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/creating_field_presentations.htm"><b>2</b></a> <a href="../files/about_structure_of_med_object.htm"><b>3</b></a> <a href="../files/stream_lines_presentation.htm"><b>4</b></a> <a href="../files/scalar_map_presentation.htm"><b>5</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> <a href="../files/vectors_presentation.htm"><b>8</b></a> </nobr><br><nobr>vectors <a href="../files/stream_lines_presentation.htm"><b>1</b></a> <a href="../files/vectors_presentation.htm"><b>2</b></a> </nobr><br><nobr>vertical <a href="../files/setting_properties_of_xy_plots.htm"><b>1</b></a> <a href="../files/scalar_map_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/stream_lines_presentation.htm"><b>very</b></a> <br><a name="bms_VI"></a><a name="subkey_VI"></a><a href="../files/setting_properties_of_xy_plots.htm"><b>via</b></a> <br><nobr>view <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>3</b></a> <a href="../files/about_structure_of_med_object.htm"><b>4</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>5</b></a> <a href="../files/getting_started.htm"><b>6</b></a> <a href="../files/getting_elements_attributes.htm"><b>7</b></a> <a href="../files/editing_field_presentations.htm"><b>8</b></a> </nobr><br><nobr>viewer <a href="../files/displaying_hiding_presentations.htm"><b>1</b></a> <a href="../files/deformed_shape_presentation.htm"><b>2</b></a> <a href="../files/cut_lines_resentation.htm"><b>3</b></a> <a href="../files/cut_lines_presentation.htm"><b>4</b></a> <a href="../files/creating_xy_plot.htm"><b>5</b></a> <a href="../files/creating_presentations.htm"><b>6</b></a> <a href="../files/creating_curves.htm"><b>7</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>8</b></a> <a href="../files/about_tables.htm"><b>9</b></a> <a href="../creating_tables.htm"><b>10</b></a> <a href="../files/sweeping.htm"><b>11</b></a> <a href="../files/stream_lines_presentation.htm"><b>12</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>13</b></a> <a href="../files/selection_in_visu.htm"><b>14</b></a> <a href="../files/scalar_map_presentation.htm"><b>15</b></a> <a href="../files/running_visu.htm"><b>16</b></a> <a href="../files/renaming_presentations.htm"><b>17</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>18</b></a> <a href="../files/getting_elements_attributes.htm"><b>19</b></a> <a href="../files/editing_field_presentations.htm"><b>20</b></a> <a href="../new_topic.htm"><b>21</b></a> <a href="../files/vectors_presentation.htm"><b>22</b></a> </nobr><br><a href="../clipping.htm"><b>views</b></a> <br><nobr>visu <a href="../files/cut_lines_presentation.htm"><b>1</b></a> <a href="../creating_tables.htm"><b>2</b></a> <a href="../files/selection_in_visu.htm"><b>3</b></a> <a href="../files/scalar_map_presentation.htm"><b>4</b></a> <a href="../files/introduction_to_visu.htm"><b>5</b></a> <a href="../files/exploring_med_files.htm"><b>6</b></a> <a href="../new_topic.htm"><b>7</b></a> </nobr><br><nobr>visualization <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_resentation.htm"><b>2</b></a> <a href="../files/cut_lines_presentation.htm"><b>3</b></a> <a href="../files/creating_field_presentations.htm"><b>4</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>5</b></a> <a href="../files/stream_lines_presentation.htm"><b>6</b></a> <a href="../files/scalar_map_presentation.htm"><b>7</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>8</b></a> <a href="../files/introduction_to_visu.htm"><b>9</b></a> <a href="../files/vectors_presentation.htm"><b>10</b></a> </nobr><br><a href="../files/vectors_presentation.htm"><b>visualize</b></a> <br><nobr>visualized <a href="../files/deformed_shape_presentation.htm"><b>1</b></a> <a href="../files/cut_lines_presentation.htm"><b>2</b></a> </nobr><br><a href="../files/vectors_presentation.htm"><b>visualizes</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>visually</b></a> <br><a name="bms_VT"></a><a name="subkey_VT"></a><a href="../files/running_visu.htm"><b>vtk</b></a> <br>\r
<br><br>\r
<a name="bm_W"></a><a name="subkey_WA"></a><a href="../files/selection_in_visu.htm"><b>want</b></a> <br><a href="../clipping.htm"><b>way</b></a> <br><nobr><a name="bms_WE"></a><a name="subkey_WE"></a>well <a href="../files/creating_field_presentations.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> <a href="../files/scalar_map_presentation.htm"><b>3</b></a> </nobr><br><a name="bms_WH"></a><a name="subkey_WH"></a><a href="../files/animating_presentations.htm"><b>wheel</b></a> <br><a href="../files/selection_in_visu.htm"><b>white</b></a> <br><nobr>whole <a href="../files/about_structure_of_med_object.htm"><b>1</b></a> <a href="../files/selection_in_visu.htm"><b>2</b></a> </nobr><br><a href="../files/about_structure_of_med_object.htm"><b>why</b></a> <br><nobr><a name="bms_WI"></a><a name="subkey_WI"></a>width <a href="../files/creating_curves.htm"><b>1</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>2</b></a> <a href="../files/scalar_map_presentation.htm"><b>3</b></a> <a href="../files/vectors_presentation.htm"><b>4</b></a> </nobr><br><nobr>will <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/displaying_hiding_presentations.htm"><b>2</b></a> <a href="../files/deformed_shape_presentation.htm"><b>3</b></a> <a href="../files/cut_lines_resentation.htm"><b>4</b></a> <a href="../files/cut_lines_presentation.htm"><b>5</b></a> <a href="../files/creating_xy_plot.htm"><b>6</b></a> <a href="../files/creating_presentations.htm"><b>7</b></a> <a href="../files/creating_field_presentations.htm"><b>8</b></a> <a href="../files/creating_curves.htm"><b>9</b></a> <a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>10</b></a> <a href="../files/animating_presentations.htm"><b>11</b></a> <a href="../files/about_structure_of_med_object.htm"><b>12</b></a> <a href="../creating_tables.htm"><b>13</b></a> <a href="../clipping.htm"><b>14</b></a> <a href="../files/sweeping.htm"><b>15</b></a> <a href="../files/stream_lines_presentation.htm"><b>16</b></a> <a href="../files/setting_properties_of_xy_plots.htm"><b>17</b></a> <a href="../files/selection_in_visu.htm"><b>18</b></a> <a href="../files/scalar_map_presentation.htm"><b>19</b></a> <a href="../files/running_visu.htm"><b>20</b></a> <a href="../files/renaming_presentations.htm"><b>21</b></a> <a href="../files/iso_surfaces_presentation.htm"><b>22</b></a> <a href="../files/importing_tables.htm"><b>23</b></a> <a href="../files/importing_med_objects.htm"><b>24</b></a> <a href="../files/getting_elements_attributes.htm"><b>25</b></a> <a href="../files/exploring_med_files.htm"><b>26</b></a> <a href="../new_topic.htm"><b>27</b></a> <a href="../files/vectors_presentation.htm"><b>28</b></a> </nobr><br><nobr>window <a href="../files/displaying_tables.htm"><b>1</b></a> <a href="../files/creating_xy_plot.htm"><b>2</b></a> <a href="../clipping.htm"><b>3</b></a> <a href="../files/selection_in_visu.htm"><b>4</b></a> <a href="../files/running_visu.htm"><b>5</b></a> </nobr><br><a href="../files/creating_xy_plot.htm"><b>windows</b></a> <br><a href="../files/changing_visualization_parameters_of_the_presenetation.htm"><b>wireframe</b></a> <br><a href="../files/about_tables.htm"><b>without</b></a> <br><a name="bms_WO"></a><a name="subkey_WO"></a><a href="../files/importing_med_objects.htm"><b>work</b></a> <br>\r
<br><br>\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 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_AL" target="ftslist" title="search letter AL"><b>AL</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
+<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
</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_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
+<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 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_AL" target="ftslist" title="search letter AL"><b>AL</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
</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="whlstf3.htm#bm_M" target="ftslist" title="search letter MA"><b>MA</b></a> <a href="whlstf3.htm#bms_ME" target="ftslist" title="search letter ME"><b>ME</b></a> <a href="whlstf3.htm#bms_MI" target="ftslist" title="search letter MI"><b>MI</b></a> <a href="whlstf3.htm#bms_MO" target="ftslist" title="search letter MO"><b>MO</b></a> <a href="whlstf3.htm#bms_MU" target="ftslist" title="search letter MU"><b>MU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\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="whlstf2.htm#bm_L" target="ftslist" title="search letter LA"><b>LA</b></a> <a href="whlstf2.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
</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="whlstf3.htm#bm_N" target="ftslist" title="search letter NA"><b>NA</b></a> <a href="whlstf3.htm#bms_NB" target="ftslist" title="search letter NB"><b>NB</b></a> <a href="whlstf3.htm#bms_NE" target="ftslist" title="search letter NE"><b>NE</b></a> <a href="whlstf3.htm#bms_NO" target="ftslist" title="search letter NO"><b>NO</b></a> <a href="whlstf3.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
+<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="whlstf3.htm#bm_M" target="ftslist" title="search letter MA"><b>MA</b></a> <a href="whlstf3.htm#bms_ME" target="ftslist" title="search letter ME"><b>ME</b></a> <a href="whlstf3.htm#bms_MI" target="ftslist" title="search letter MI"><b>MI</b></a> <a href="whlstf3.htm#bms_MO" target="ftslist" title="search letter MO"><b>MO</b></a> <a href="whlstf3.htm#bms_MU" target="ftslist" title="search letter MU"><b>MU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\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="whlstf3.htm#bm_O" target="ftslist" title="search letter OB"><b>OB</b></a> <a href="whlstf3.htm#bms_OF" target="ftslist" title="search letter OF"><b>OF</b></a> <a href="whlstf3.htm#bms_OK" target="ftslist" title="search letter OK"><b>OK</b></a> <a href="whlstf3.htm#bms_ON" target="ftslist" title="search letter ON"><b>ON</b></a> <a href="whlstf3.htm#bms_OP" target="ftslist" title="search letter OP"><b>OP</b></a> <a href="whlstf3.htm#bms_OR" target="ftslist" title="search letter OR"><b>OR</b></a> <a href="whlstf3.htm#bms_OU" target="ftslist" title="search letter OU"><b>OU</b></a> <a href="whlstf3.htm#bms_OV" target="ftslist" title="search letter OV"><b>OV</b></a> <a href="whlstf3.htm#bms_OW" target="ftslist" title="search letter OW"><b>OW</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\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="whlstf3.htm#bm_N" target="ftslist" title="search letter N "><b>N </b></a> <a href="whlstf3.htm#bms_NA" target="ftslist" title="search letter NA"><b>NA</b></a> <a href="whlstf3.htm#bms_NB" target="ftslist" title="search letter NB"><b>NB</b></a> <a href="whlstf3.htm#bms_NE" target="ftslist" title="search letter NE"><b>NE</b></a> <a href="whlstf3.htm#bms_NO" target="ftslist" title="search letter NO"><b>NO</b></a> <a href="whlstf3.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
</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="whlstf3.htm#bm_P" target="ftslist" title="search letter PA"><b>PA</b></a> <a href="whlstf3.htm#bms_PE" target="ftslist" title="search letter PE"><b>PE</b></a> <a href="whlstf3.htm#bms_PH" target="ftslist" title="search letter PH"><b>PH</b></a> <a href="whlstf3.htm#bms_PI" target="ftslist" title="search letter PI"><b>PI</b></a> <a href="whlstf3.htm#bms_PL" target="ftslist" title="search letter PL"><b>PL</b></a> <a href="whlstf3.htm#bms_PO" target="ftslist" title="search letter PO"><b>PO</b></a> <a href="whlstf4.htm#bms_PR" target="ftslist" title="search letter PR"><b>PR</b></a> <a href="whlstf4.htm#bms_PS" target="ftslist" title="search letter PS"><b>PS</b></a> <a href="whlstf4.htm#bms_PU" target="ftslist" title="search letter PU"><b>PU</b></a> <a href="whlstf4.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
+<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="whlstf3.htm#bm_O" target="ftslist" title="search letter OB"><b>OB</b></a> <a href="whlstf3.htm#bms_OF" target="ftslist" title="search letter OF"><b>OF</b></a> <a href="whlstf3.htm#bms_OK" target="ftslist" title="search letter OK"><b>OK</b></a> <a href="whlstf3.htm#bms_ON" target="ftslist" title="search letter ON"><b>ON</b></a> <a href="whlstf3.htm#bms_OP" target="ftslist" title="search letter OP"><b>OP</b></a> <a href="whlstf3.htm#bms_OR" target="ftslist" title="search letter OR"><b>OR</b></a> <a href="whlstf3.htm#bms_OU" target="ftslist" title="search letter OU"><b>OU</b></a> <a href="whlstf3.htm#bms_OV" target="ftslist" title="search letter OV"><b>OV</b></a> <a href="whlstf3.htm#bms_OW" target="ftslist" title="search letter OW"><b>OW</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\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="whlstf4.htm#bm_R" target="ftslist" title="search letter RA"><b>RA</b></a> <a href="whlstf4.htm#bms_RE" target="ftslist" title="search letter RE"><b>RE</b></a> <a href="whlstf4.htm#bms_RI" target="ftslist" title="search letter RI"><b>RI</b></a> <a href="whlstf4.htm#bms_RO" target="ftslist" title="search letter RO"><b>RO</b></a> <a href="whlstf4.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
+<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="whlstf3.htm#bm_P" target="ftslist" title="search letter PA"><b>PA</b></a> <a href="whlstf3.htm#bms_PE" target="ftslist" title="search letter PE"><b>PE</b></a> <a href="whlstf3.htm#bms_PH" target="ftslist" title="search letter PH"><b>PH</b></a> <a href="whlstf3.htm#bms_PI" target="ftslist" title="search letter PI"><b>PI</b></a> <a href="whlstf3.htm#bms_PL" target="ftslist" title="search letter PL"><b>PL</b></a> <a href="whlstf4.htm#bms_PO" target="ftslist" title="search letter PO"><b>PO</b></a> <a href="whlstf4.htm#bms_PR" target="ftslist" title="search letter PR"><b>PR</b></a> <a href="whlstf4.htm#bms_PS" target="ftslist" title="search letter PS"><b>PS</b></a> <a href="whlstf4.htm#bms_PU" target="ftslist" title="search letter PU"><b>PU</b></a> <a href="whlstf4.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
</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="whlstf4.htm#bm_S" target="ftslist" title="search letter S "><b>S </b></a> <a href="whlstf4.htm#bms_SA" target="ftslist" title="search letter SA"><b>SA</b></a> <a href="whlstf4.htm#bms_SC" target="ftslist" title="search letter SC"><b>SC</b></a> <a href="whlstf4.htm#bms_SE" target="ftslist" title="search letter SE"><b>SE</b></a> <a href="whlstf4.htm#bms_SH" target="ftslist" title="search letter SH"><b>SH</b></a> <a href="whlstf5.htm#bms_SI" target="ftslist" title="search letter SI"><b>SI</b></a> <a href="whlstf5.htm#bms_SM" target="ftslist" title="search letter SM"><b>SM</b></a> <a href="whlstf5.htm#bms_SO" target="ftslist" title="search letter SO"><b>SO</b></a> <a href="whlstf5.htm#bms_SP" target="ftslist" title="search letter SP"><b>SP</b></a> <a href="whlstf5.htm#bms_ST" target="ftslist" title="search letter ST"><b>ST</b></a> <a href="whlstf5.htm#bms_SU" target="ftslist" title="search letter SU"><b>SU</b></a> <a href="whlstf5.htm#bms_SW" target="ftslist" title="search letter SW"><b>SW</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\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="whlstf4.htm#bm_R" target="ftslist" title="search letter RA"><b>RA</b></a> <a href="whlstf4.htm#bms_RE" target="ftslist" title="search letter RE"><b>RE</b></a> <a href="whlstf4.htm#bms_RI" target="ftslist" title="search letter RI"><b>RI</b></a> <a href="whlstf4.htm#bms_RO" target="ftslist" title="search letter RO"><b>RO</b></a> <a href="whlstf4.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
</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="whlstf5.htm#bm_T" target="ftslist" title="search letter TA"><b>TA</b></a> <a href="whlstf5.htm#bms_TE" target="ftslist" title="search letter TE"><b>TE</b></a> <a href="whlstf5.htm#bms_TH" target="ftslist" title="search letter TH"><b>TH</b></a> <a href="whlstf5.htm#bms_TI" target="ftslist" title="search letter TI"><b>TI</b></a> <a href="whlstf5.htm#bms_TO" target="ftslist" title="search letter TO"><b>TO</b></a> <a href="whlstf5.htm#bms_TR" target="ftslist" title="search letter TR"><b>TR</b></a> <a href="whlstf5.htm#bms_TW" target="ftslist" title="search letter TW"><b>TW</b></a> <a href="whlstf5.htm#bms_TX" target="ftslist" title="search letter TX"><b>TX</b></a> <a href="whlstf5.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
+<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="whlstf4.htm#bm_S" target="ftslist" title="search letter S "><b>S </b></a> <a href="whlstf4.htm#bms_SA" target="ftslist" title="search letter SA"><b>SA</b></a> <a href="whlstf4.htm#bms_SC" target="ftslist" title="search letter SC"><b>SC</b></a> <a href="whlstf4.htm#bms_SE" target="ftslist" title="search letter SE"><b>SE</b></a> <a href="whlstf5.htm#bms_SH" target="ftslist" title="search letter SH"><b>SH</b></a> <a href="whlstf5.htm#bms_SI" target="ftslist" title="search letter SI"><b>SI</b></a> <a href="whlstf5.htm#bms_SM" target="ftslist" title="search letter SM"><b>SM</b></a> <a href="whlstf5.htm#bms_SO" target="ftslist" title="search letter SO"><b>SO</b></a> <a href="whlstf5.htm#bms_SP" target="ftslist" title="search letter SP"><b>SP</b></a> <a href="whlstf5.htm#bms_ST" target="ftslist" title="search letter ST"><b>ST</b></a> <a href="whlstf5.htm#bms_SU" target="ftslist" title="search letter SU"><b>SU</b></a> <a href="whlstf5.htm#bms_SW" target="ftslist" title="search letter SW"><b>SW</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\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="whlstf5.htm#bm_U" target="ftslist" title="search letter UN"><b>UN</b></a> <a href="whlstf5.htm#bms_UP" target="ftslist" title="search letter UP"><b>UP</b></a> <a href="whlstf5.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
+<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="whlstf5.htm#bm_T" target="ftslist" title="search letter T "><b>T </b></a> <a href="whlstf5.htm#bms_TA" target="ftslist" title="search letter TA"><b>TA</b></a> <a href="whlstf5.htm#bms_TE" target="ftslist" title="search letter TE"><b>TE</b></a> <a href="whlstf5.htm#bms_TH" target="ftslist" title="search letter TH"><b>TH</b></a> <a href="whlstf5.htm#bms_TI" target="ftslist" title="search letter TI"><b>TI</b></a> <a href="whlstf5.htm#bms_TO" target="ftslist" title="search letter TO"><b>TO</b></a> <a href="whlstf5.htm#bms_TR" target="ftslist" title="search letter TR"><b>TR</b></a> <a href="whlstf5.htm#bms_TW" target="ftslist" title="search letter TW"><b>TW</b></a> <a href="whlstf5.htm#bms_TX" target="ftslist" title="search letter TX"><b>TX</b></a> <a href="whlstf5.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
</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="whlstf5.htm#bm_V" target="ftslist" title="search letter V "><b>V </b></a> <a href="whlstf5.htm#bms_VA" target="ftslist" title="search letter VA"><b>VA</b></a> <a href="whlstf5.htm#bms_VE" target="ftslist" title="search letter VE"><b>VE</b></a> <a href="whlstf5.htm#bms_VI" target="ftslist" title="search letter VI"><b>VI</b></a> <a href="whlstf6.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
+<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="whlstf5.htm#bm_U" target="ftslist" title="search letter UN"><b>UN</b></a> <a href="whlstf5.htm#bms_UP" target="ftslist" title="search letter UP"><b>UP</b></a> <a href="whlstf5.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
</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="whlstf6.htm#bm_W" target="ftslist" title="search letter WA"><b>WA</b></a> <a href="whlstf6.htm#bms_WE" target="ftslist" title="search letter WE"><b>WE</b></a> <a href="whlstf6.htm#bms_WH" target="ftslist" title="search letter WH"><b>WH</b></a> <a href="whlstf6.htm#bms_WI" target="ftslist" title="search letter WI"><b>WI</b></a> <a href="whlstf6.htm#bms_WO" target="ftslist" title="search letter WO"><b>WO</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\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="whlstf5.htm#bm_V" target="ftslist" title="search letter V "><b>V </b></a> <a href="whlstf5.htm#bms_VA" target="ftslist" title="search letter VA"><b>VA</b></a> <a href="whlstf6.htm#bms_VE" target="ftslist" title="search letter VE"><b>VE</b></a> <a href="whlstf6.htm#bms_VI" target="ftslist" title="search letter VI"><b>VI</b></a> <a href="whlstf6.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
</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="whlstf0.htm#bms_CE" target="ftslist" title="search letter CE"><b>CE</b></a> <a href="whlstf0.htm#bms_CH" target="ftslist" title="search letter CH"><b>CH</b></a> <a href="whlstf0.htm#bms_CI" target="ftslist" title="search letter CI"><b>CI</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="whlstf1.htm#bms_CY" target="ftslist" title="search letter CY"><b>CY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\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_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
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
\r
-<p class="ftsheader"><a name="subkey_X"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_X" target="ftslist" title="search letter X "><b>X </b></a> <a href="whlstf6.htm#bms_XL" target="ftslist" title="search letter XL"><b>XL</b></a> <a href="whlstf6.htm#bms_XM" target="ftslist" title="search letter XM"><b>XM</b></a> <a href="whlstf6.htm#bms_XY" target="ftslist" title="search letter XY"><b>XY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\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="whlstf6.htm#bm_W" target="ftslist" title="search letter WA"><b>WA</b></a> <a href="whlstf6.htm#bms_WE" target="ftslist" title="search letter WE"><b>WE</b></a> <a href="whlstf6.htm#bms_WH" target="ftslist" title="search letter WH"><b>WH</b></a> <a href="whlstf6.htm#bms_WI" target="ftslist" title="search letter WI"><b>WI</b></a> <a href="whlstf6.htm#bms_WO" target="ftslist" title="search letter WO"><b>WO</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\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="whlstf6.htm#bm_Y" target="ftslist" title="search letter Y "><b>Y </b></a> <a href="whlstf6.htm#bms_YO" target="ftslist" title="search letter YO"><b>YO</b></a> <a href="whlstf6.htm#bms_YZ" target="ftslist" title="search letter YZ"><b>YZ</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
+<p class="ftsheader"><a name="subkey_X"></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a> <a href="whlstf6.htm#bm_X" target="ftslist" title="search letter X "><b>X </b></a> <a href="whlstf6.htm#bms_XL" target="ftslist" title="search letter XL"><b>XL</b></a> <a href="whlstf6.htm#bms_XM" target="ftslist" title="search letter XM"><b>XM</b></a> <a href="whlstf6.htm#bms_XY" target="ftslist" title="search letter XY"><b>XY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\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="whlstf6.htm#bm_Z" target="ftslist" title="search letter Z "><b>Z </b></a> <a href="whlstf6.htm#bms_ZX" target="ftslist" title="search letter ZX"><b>ZX</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\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="whlstf6.htm#bm_Y" target="ftslist" title="search letter Y "><b>Y </b></a> <a href="whlstf6.htm#bms_YO" target="ftslist" title="search letter YO"><b>YO</b></a> <a href="whlstf6.htm#bms_YZ" target="ftslist" title="search letter YZ"><b>YZ</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\r
--- /dev/null
+<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="whlstf6.htm#bm_Z" target="ftslist" title="search letter Z "><b>Z </b></a> <a href="whlstf6.htm#bms_ZX" target="ftslist" title="search letter ZX"><b>ZX</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
</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 DA"><b>DA</b></a> <a href="whlstf1.htm#bms_DE" target="ftslist" title="search letter DE"><b>DE</b></a> <a href="whlstf1.htm#bms_DI" target="ftslist" title="search letter DI"><b>DI</b></a> <a href="whlstf1.htm#bms_DO" target="ftslist" title="search letter DO"><b>DO</b></a> <a href="whlstf1.htm#bms_DU" target="ftslist" title="search letter DU"><b>DU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\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="whlstf0.htm#bms_CE" target="ftslist" title="search letter CE"><b>CE</b></a> <a href="whlstf0.htm#bms_CH" target="ftslist" title="search letter CH"><b>CH</b></a> <a href="whlstf0.htm#bms_CI" target="ftslist" title="search letter CI"><b>CI</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="whlstf1.htm#bms_CY" target="ftslist" title="search letter CY"><b>CY</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\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="whlstf1.htm#bm_E" target="ftslist" title="search letter ED"><b>ED</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_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
+<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 DA"><b>DA</b></a> <a href="whlstf1.htm#bms_DE" target="ftslist" title="search letter DE"><b>DE</b></a> <a href="whlstf1.htm#bms_DI" target="ftslist" title="search letter DI"><b>DI</b></a> <a href="whlstf1.htm#bms_DO" target="ftslist" title="search letter DO"><b>DO</b></a> <a href="whlstf1.htm#bms_DU" target="ftslist" title="search letter DU"><b>DU</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\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_FO" target="ftslist" title="search letter FO"><b>FO</b></a> <a href="whlstf2.htm#bms_FR" target="ftslist" title="search letter FR"><b>FR</b></a> <a href="whlstf2.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
+<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="whlstf1.htm#bm_E" target="ftslist" title="search letter ED"><b>ED</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_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
</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="whlstf2.htm#bm_G" target="ftslist" title="search letter GE"><b>GE</b></a> <a href="whlstf2.htm#bms_GI" target="ftslist" title="search letter GI"><b>GI</b></a> <a href="whlstf2.htm#bms_GL" target="ftslist" title="search letter GL"><b>GL</b></a> <a href="whlstf2.htm#bms_GR" target="ftslist" title="search letter GR"><b>GR</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\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_FO" target="ftslist" title="search letter FO"><b>FO</b></a> <a href="whlstf2.htm#bms_FR" target="ftslist" title="search letter FR"><b>FR</b></a> <a href="whlstf2.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
</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="whlstf2.htm#bm_H" target="ftslist" title="search letter H "><b>H </b></a> <a href="whlstf2.htm#bms_HA" target="ftslist" title="search letter HA"><b>HA</b></a> <a href="whlstf2.htm#bms_HE" target="ftslist" title="search letter HE"><b>HE</b></a> <a href="whlstf2.htm#bms_HI" target="ftslist" title="search letter HI"><b>HI</b></a> <a href="whlstf2.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
+<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="whlstf2.htm#bm_G" target="ftslist" title="search letter GE"><b>GE</b></a> <a href="whlstf2.htm#bms_GI" target="ftslist" title="search letter GI"><b>GI</b></a> <a href="whlstf2.htm#bms_GL" target="ftslist" title="search letter GL"><b>GL</b></a> <a href="whlstf2.htm#bms_GR" target="ftslist" title="search letter GR"><b>GR</b></a> <a href="whnvl32.htm#home" target="_self" title="back to top level"><b>^</b></a></p>\r
\r
</body>\r
\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="whlstf2.htm#bm_I" target="ftslist" title="search letter IC"><b>IC</b></a> <a href="whlstf2.htm#bms_ID" target="ftslist" title="search letter ID"><b>ID</b></a> <a href="whlstf2.htm#bms_IF" target="ftslist" title="search letter IF"><b>IF</b></a> <a href="whlstf2.htm#bms_IJ" target="ftslist" title="search letter IJ"><b>IJ</b></a> <a href="whlstf2.htm#bms_IM" target="ftslist" title="search letter IM"><b>IM</b></a> <a href="whlstf2.htm#bms_IN" target="ftslist" title="search letter IN"><b>IN</b></a> <a href="whlstf2.htm#bms_IS" target="ftslist" title="search letter IS"><b>IS</b></a> <a href="whlstf2.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
+<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="whlstf2.htm#bm_H" target="ftslist" title="search letter H "><b>H </b></a> <a href="whlstf2.htm#bms_HA" target="ftslist" title="search letter HA"><b>HA</b></a> <a href="whlstf2.htm#bms_HE" target="ftslist" title="search letter HE"><b>HE</b></a> <a href="whlstf2.htm#bms_HI" target="ftslist" title="search letter HI"><b>HI</b></a> <a href="whlstf2.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
</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="whlstf2.htm#bm_L" target="ftslist" title="search letter LA"><b>LA</b></a> <a href="whlstf2.htm#bms_LE" target="ftslist" title="search letter LE"><b>LE</b></a> <a href="whlstf2.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
+<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="whlstf2.htm#bm_I" target="ftslist" title="search letter IC"><b>IC</b></a> <a href="whlstf2.htm#bms_ID" target="ftslist" title="search letter ID"><b>ID</b></a> <a href="whlstf2.htm#bms_IF" target="ftslist" title="search letter IF"><b>IF</b></a> <a href="whlstf2.htm#bms_IJ" target="ftslist" title="search letter IJ"><b>IJ</b></a> <a href="whlstf2.htm#bms_IM" target="ftslist" title="search letter IM"><b>IM</b></a> <a href="whlstf2.htm#bms_IN" target="ftslist" title="search letter IN"><b>IN</b></a> <a href="whlstf2.htm#bms_IS" target="ftslist" title="search letter IS"><b>IS</b></a> <a href="whlstf2.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
</head>\r
<body marginheight="0" marginwidth="0" bgproperties="fixed">\r
<p class="ftsheader">\r
-<a name="home"></a> <a href="whlstf0.htm#bm_{" target="ftslist"title="search non-alphabet letter" ><b>#</b></a> \r
- <a href="whlstfl0.htm#subkey_A" target="_self"title="search letter A"><b>A</b></a> \r
- <a href="whlstfl1.htm#subkey_B" target="_self"title="search letter B"><b>B</b></a> \r
- <a href="whlstfl2.htm#subkey_C" target="_self"title="search letter C"><b>C</b></a> \r
- <a href="whlstfl3.htm#subkey_D" target="_self"title="search letter D"><b>D</b></a> \r
- <a href="whlstfl4.htm#subkey_E" target="_self"title="search letter E"><b>E</b></a> \r
- <a href="whlstfl5.htm#subkey_F" target="_self"title="search letter F"><b>F</b></a> \r
- <a href="whlstfl6.htm#subkey_G" target="_self"title="search letter G"><b>G</b></a> \r
- <a href="whlstfl7.htm#subkey_H" target="_self"title="search letter H"><b>H</b></a> \r
- <a href="whlstfl8.htm#subkey_I" target="_self"title="search letter I"><b>I</b></a> \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
<font class="inactive">K</font> \r
- <a href="whlstfl9.htm#subkey_L" target="_self"title="search letter L"><b>L</b></a> \r
- <a href="whlstfl10.htm#subkey_M" target="_self"title="search letter M"><b>M</b></a> \r
- <a href="whlstfl11.htm#subkey_N" target="_self"title="search letter N"><b>N</b></a> \r
- <a href="whlstfl12.htm#subkey_O" target="_self"title="search letter O"><b>O</b></a> \r
- <a href="whlstfl13.htm#subkey_P" target="_self"title="search letter P"><b>P</b></a> \r
+ <a href="whlstfl10.htm#subkey_L" target="_self"title="search letter L"><b>L</b></a> \r
+ <a href="whlstfl11.htm#subkey_M" target="_self"title="search letter M"><b>M</b></a> \r
+ <a href="whlstfl12.htm#subkey_N" target="_self"title="search letter N"><b>N</b></a> \r
+ <a href="whlstfl13.htm#subkey_O" target="_self"title="search letter O"><b>O</b></a> \r
+ <a href="whlstfl14.htm#subkey_P" target="_self"title="search letter P"><b>P</b></a> \r
<a href="whlstf4.htm#bm_Q" target="ftslist"title="search letter Q" ><b>Q</b></a> \r
- <a href="whlstfl14.htm#subkey_R" target="_self"title="search letter R"><b>R</b></a> \r
- <a href="whlstfl15.htm#subkey_S" target="_self"title="search letter S"><b>S</b></a> \r
- <a href="whlstfl16.htm#subkey_T" target="_self"title="search letter T"><b>T</b></a> \r
- <a href="whlstfl17.htm#subkey_U" target="_self"title="search letter U"><b>U</b></a> \r
- <a href="whlstfl18.htm#subkey_V" target="_self"title="search letter V"><b>V</b></a> \r
- <a href="whlstfl19.htm#subkey_W" target="_self"title="search letter W"><b>W</b></a> \r
- <a href="whlstfl20.htm#subkey_X" target="_self"title="search letter X"><b>X</b></a> \r
- <a href="whlstfl21.htm#subkey_Y" target="_self"title="search letter Y"><b>Y</b></a> \r
- <a href="whlstfl22.htm#subkey_Z" target="_self"title="search letter Z"><b>Z</b></a> \r
+ <a href="whlstfl15.htm#subkey_R" target="_self"title="search letter R"><b>R</b></a> \r
+ <a href="whlstfl16.htm#subkey_S" target="_self"title="search letter S"><b>S</b></a> \r
+ <a href="whlstfl17.htm#subkey_T" target="_self"title="search letter T"><b>T</b></a> \r
+ <a href="whlstfl18.htm#subkey_U" target="_self"title="search letter U"><b>U</b></a> \r
+ <a href="whlstfl19.htm#subkey_V" target="_self"title="search letter V"><b>V</b></a> \r
+ <a href="whlstfl20.htm#subkey_W" target="_self"title="search letter W"><b>W</b></a> \r
+ <a href="whlstfl21.htm#subkey_X" target="_self"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
<head>\r
-<title>VISU refrence manual</title>\r
+<title>Post-Pro Reference Manual</title>\r
\r
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
<meta name="description" content="WebHelp 5.50">\r
document.write("<link REL=\"SHORTCUT ICON\" href=\""+ sIcon +"\">");\r
//-->\r
</script>\r
- <title>VISU refrence manual</title>\r
+ <title>Post-Pro Reference Manual</title>\r
<meta name="generator" content="RoboHelp by eHelp Corporation www.ehelp.com">\r
<meta name="description" content="WebHelp 5.50">\r
</head>\r
<table>\r
<tr><td> Start Page </td><td>visu.htm</td></tr>\r
<tr><td> Skin Name </td><td>Default</td></tr>\r
-<tr><td> Generating Time </td><td>16:06 10/17/2005</td></tr>\r
+<tr><td> Generating Time </td><td>18:09 01/10/2006</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
<?xml version='1.0' encoding='windows-1252' ?>\r
<ftswdata>\r
<key name="0"> 0,6,30, </key>\r
-<key name="1"> 4,5,7,2,10,15,14,16,17,18,21,33,27,28,31, </key>\r
+<key name="1"> 4,5,7,2,10,15,14,16,17,18,21,33,27,28,29,31, </key>\r
<key name="100"> 6,30, </key>\r
-<key name="2"> 4,5,7,2,10,15,14,16,17,21,33,27,28,31, </key>\r
+<key name="10n"> 29, </key>\r
+<key name="2"> 4,5,7,2,10,15,14,16,17,21,33,27,28,29,31, </key>\r
<key name="200"> 7,10, </key>\r
<key name="2d"> 7,11,19,29, </key>\r
<key name="3"> 4,5,7,10,21,27,31, </key>\r
<key name="3d"> 3,11,12,18,20,22,26,28,6, </key>\r
<key name="4"> 5,7,10,27,31, </key>\r
-<key name="5"> 5,0, </key>\r
+<key name="5"> 5,0,29, </key>\r
<key name="acceptabl"> 31, </key>\r
<key name="acces"> 29, </key>\r
<key name="accessibl"> 14, </key>\r
<key name="adjust"> 5,0,29, </key>\r
<key name="algorithm"> 11,17, </key>\r
<key name="allow"> 4,5,7,2,11,12,13,14,16,20,23,33,26,27,28,29,30,31,32, </key>\r
-<key name="along"> 11,12,13,18,23,27,29,30,32, </key>\r
+<key name="along"> 11,13,18,23,27,29,30,32, </key>\r
<key name="already"> 24,6,30, </key>\r
<key name="angl"> 0,11,12, </key>\r
<key name="animat"> 5,19, </key>\r
<key name="animation"> 5,31, </key>\r
-<key name="anoth"> 5,11,12,28,30,31, </key>\r
+<key name="anoth"> 5,12,28,30,31, </key>\r
<key name="any"> 3,4,18, </key>\r
<key name="ap"> 26,27, </key>\r
<key name="appear"> 5,7,10,14,24,26,28,6,29, </key>\r
<key name="display"> 4,5,7,8,9,2,10,11,12,13,15,14,16,17,18,20,23,33,26,28,6,29,30,31,32, </key>\r
<key name="distanc"> 0, </key>\r
<key name="divid"> 3, </key>\r
+<key name="division"> 29, </key>\r
+<key name="doesn"> 29, </key>\r
<key name="dot"> 7,1, </key>\r
<key name="down"> 5,14,28, </key>\r
<key name="downward"> 7,1, </key>\r
<key name="eras"> 14, </key>\r
<key name="every"> 3,5, </key>\r
<key name="examin"> 18, </key>\r
+<key name="exce"> 29, </key>\r
<key name="exist"> 14, </key>\r
<key name="explor"> 17,20,30, </key>\r
<key name="export"> 21, </key>\r
<key name="fami"> 3,30, </key>\r
<key name="famili"> 3, </key>\r
<key name="featur"> 27,30, </key>\r
-<key name="field"> 3,5,8,11,12,13,14,16,18,19,20,22,23,24,26,27,28,29,30,31,32, </key>\r
+<key name="field"> 3,5,8,11,12,13,14,16,18,19,20,22,23,24,26,27,28,30,31,32, </key>\r
<key name="fil"> 3,4,17,19,20,21,29, </key>\r
<key name="finish"> 11,12,13,23,26,30,32, </key>\r
<key name="first"> 5,1, </key>\r
<key name="intend"> 5, </key>\r
<key name="interest"> 30, </key>\r
<key name="interpolation"> 3, </key>\r
+<key name="interval"> 29, </key>\r
<key name="introduction"> 22, </key>\r
<key name="iso"> 23,31, </key>\r
<key name="isobaric"> 23, </key>\r
<key name="lot"> 30, </key>\r
<key name="magnitud"> 13,30,32, </key>\r
<key name="main"> 3,5,8,10,11,12,13,14,17,18,21,23,26,27,28,6,29,30,32, </key>\r
+<key name="major"> 29, </key>\r
<key name="mak"> 8,28,30, </key>\r
<key name="management"> 5,16, </key>\r
<key name="manual"> 4,11,12, </key>\r
<key name="marker"> 1,29, </key>\r
<key name="massles"> 30, </key>\r
<key name="maximal"> 26, </key>\r
-<key name="maximum"> 23,30, </key>\r
+<key name="maximum"> 23,29,30, </key>\r
<key name="measur"> 30, </key>\r
<key name="menu"> 5,0,7,8,1,9,2,10,11,12,13,15,14,16,17,18,20,21,23,33,24,25,26,27,28,6,29,30,31,32, </key>\r
<key name="mesh"> 3,11,12,13,18,19,6,30,32, </key>\r
<key name="method"> 4, </key>\r
<key name="minimal"> 26, </key>\r
<key name="minimum"> 23,31, </key>\r
+<key name="minor"> 29, </key>\r
<key name="mod"> 4,0,26,28,6,29,32, </key>\r
<key name="modify"> 2,14,33, </key>\r
<key name="modul"> 3,5,19,22,25,26,28, </key>\r
<key name="mous"> 14,28, </key>\r
<key name="mov"> 5,10, </key>\r
<key name="multipl"> 30, </key>\r
+<key name="n"> 29, </key>\r
<key name="nam"> 7,10,18,21,24,29, </key>\r
+<key name="natural"> 29, </key>\r
<key name="nb"> 26, </key>\r
<key name="necessary"> 18,21, </key>\r
<key name="new"> 0,8,2,10,19,21,33,25,26, </key>\r
<key name="normal"> 6, </key>\r
<key name="not"> 26, </key>\r
<key name="now"> 0, </key>\r
-<key name="numb"> 11,12,18,23,26,28,30,31, </key>\r
-<key name="numerical"> 29, </key>\r
+<key name="numb"> 12,18,23,26,28,29,30,31, </key>\r
<key name="object"> 3,5,0,7,8,9,2,10,11,12,13,15,14,16,17,18,20,21,23,33,24,26,28,6,30,31,32, </key>\r
<key name="observ"> 11,12, </key>\r
<key name="often"> 3, </key>\r
<key name="quit"> 10,27, </key>\r
<key name="rang"> 4,5,13,23,26,29,32, </key>\r
<key name="rarefi"> 4, </key>\r
-<key name="real"> 5, </key>\r
+<key name="real"> 5,29, </key>\r
<key name="rectangl"> 7,1, </key>\r
<key name="referenc"> 4,10, </key>\r
<key name="regard"> 31, </key>\r
<key name="regular"> 11, </key>\r
<key name="relat"> 25, </key>\r
-<key name="relativ"> 11,12, </key>\r
+<key name="relativ"> 12, </key>\r
<key name="relevant"> 26, </key>\r
<key name="remov"> 7, </key>\r
<key name="renam"> 16,24, </key>\r
<key name="scal"> 13,16,26,27,29,32, </key>\r
<key name="scalar"> 3,5,8,2,11,12,13,18,23,33,26,30,31,32, </key>\r
<key name="script"> 4, </key>\r
-<key name="se"> 3,4,5,0,8,11,12,13,20,23,25,30,32, </key>\r
+<key name="se"> 3,4,5,0,8,11,13,20,23,25,30,32, </key>\r
<key name="search"> 17,20, </key>\r
<key name="second"> 1, </key>\r
<key name="section"> 0, </key>\r
<key name="should"> 3,7,11,12,18,25,31, </key>\r
<key name="show"> 5,0,11,12,15,29, </key>\r
<key name="shrink"> 6, </key>\r
-<key name="sid"> 11,12, </key>\r
+<key name="sid"> 12, </key>\r
<key name="similar"> 30, </key>\r
<key name="simultaneou"> 5, </key>\r
<key name="simultaneous"> 11,12,20, </key>\r
<key name="spac"> 11,12,18,28, </key>\r
<key name="spe"> 5, </key>\r
<key name="special"> 4, </key>\r
-<key name="specifi"> 5, </key>\r
+<key name="specifi"> 5,29, </key>\r
<key name="specific"> 16, </key>\r
<key name="specify"> 30, </key>\r
<key name="splin"> 29, </key>\r
<key name="surfac"> 12,23,6,31, </key>\r
<key name="surfacefram"> 6, </key>\r
<key name="sweep"> 5,19,31, </key>\r
+<key name="t"> 29, </key>\r
<key name="tab"> 4,0,11,12,13,21,23,26,30,32, </key>\r
<key name="tabl"> 3,4,7,1,2,11,15,18,19,21,22,33,29, </key>\r
<key name="tail"> 32, </key>\r
-# 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
#---------------------------------------------------------------------------
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
#---------------------------------------------------------------------------
ENUM_VALUES_PER_LINE = 4
GENERATE_TREEVIEW = YES
TREEVIEW_WIDTH = 250
+
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
+LATEX_HIDE_INDICES = NO
+
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
+
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
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
#---------------------------------------------------------------------------
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
+
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
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
#---------------------------------------------------------------------------
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 =
TSCALARMAP, /*!< Scalarmap 3D presentation object */
TISOSURFACE, /*!< Iso surface 3D presentation object */
TDEFORMEDSHAPE, /*!< Deformed shape 3D presentation object */
+ TSCALARMAPONDEFORMEDSHAPE, /*!< Scalar map on 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 */
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 */
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.
* 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);
*/
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.
*/
*/
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.
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.
void SetColor(in SALOMEDS::Color theColor);
};
+ //-------------------------------------------------------
+ /*! \brief Scalar Map on Deformed shape presentation interface
+ *
+ * Presentation parameters of the scalar map on deformed shape presentation.
+ */
+ interface ScalarMapOnDeformedShape : ScalarMap {
+
+ /*!
+ * Sets the source ranges of pipeline
+ */
+ void SetSourceRange(in double theMinRange,in double theMaxRange);
+ /*!
+ * Gets the minimum source range of pipeline
+ */
+ double GetSourceRangeMin();
+ /*!
+ * Gets the maximum source range of pipeline
+ */
+ double GetSourceRangeMax();
+
+ /*!
+ * Sets the scale of the presentatable object.
+ * \param theScale Double value defining the scale of this presentable object.
+ */
+ void SetScale(in double theScale);
+
+ /*!
+ * Gets the scale of the presentatable object.
+ */
+ double GetScale();
+
+ };
//-------------------------------------------------------
/*!
* \brief Plot3D interface
/*!
*/
- 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>.
* This method allows to bound the range of generated frames.
* If this method is not used, the animation will be generated
* on the basis of all time stamps contained in the field.
- * /param theMin The value of the first time stamp which will be used for generation of the animation.
- * /param theMax The value of the last time stamp which will be used for generation of the animation.
+ * \param theMin The value of the first time stamp which will be used for generation of the animation.
+ * \param theMax The value of the last time stamp which will be used for generation of the animation.
*/
void setAnimationRange(in double theMin, in double theMax);
boolean isRangeDefined();
/*! Saves all the frames composing the animation into a definite directory.
- * \param thePath The directory where all the frames will be saved.
+ * Pictures format is set with method <VAR>setDumpFormat()</VAR>.
+ * \param thePath The directory where all the frames will be saved.
*/
void dumpTo(in string thePath);
+ /*! Set format for saving all the frames composing the animation.
+ * \param theFormat The format for saving pictures.
+ * For available formats see QImageIO documentation (Qt).
+ * If specified format is not available, default format will be used.
+ * Default format is JPEG or first of supported, if JPEG is not available.
+ * \return Really set format. Differ from \a theFormat if \a theFormat is not available.
+ */
+ string setDumpFormat(in string theFormat);
+
/*! Returns True, if the playback of the animation is cycling.
*/
boolean isCycling();
* 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();
};
//-------------------------------------------------------
*/
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
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)
<popup-item item-id="4018" pos-id="" label-id="Cut Lines" icon-id="Visu_cutlines.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="4016" pos-id="" label-id="Stream Lines" icon-id="Visu_streamlines.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="4017" pos-id="" label-id="Plot 3D" icon-id="Visu_plot3d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ <popup-item item-id="4020" pos-id="" label-id="Scalar Map on Deformed Shape" icon-id="Visu_scalarmapondeformedshape.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
</menu-item>
<!-- ************************* Selection (menubar) ************************************** -->
<toolbutton-item item-id="4018" pos-id="" label-id="Cut Lines" icon-id="Visu_cutlines.png" tooltip-id="Cut Lines" accel-id="" toggle-id="" execute-action=""/>
<toolbutton-item item-id="4016" pos-id="" label-id="Stream Lines" icon-id="Visu_streamlines.png" tooltip-id="Stream Lines" accel-id="" toggle-id="" execute-action=""/>
<toolbutton-item item-id="4017" pos-id="" label-id="Plot 3D" icon-id="Visu_plot3d.png" tooltip-id="Plot 3D" accel-id="" toggle-id="" execute-action=""/>
+ <toolbutton-item item-id="4020" pos-id="" label-id="Scalar map on deformed shape" icon-id="Visu_scalarmapondeformedshape.png" tooltip-id="Scalar Map on Deformed Shape" accel-id="" toggle-id="" execute-action=""/>
</toolbar>
</desktop> <!-- DESKTOP END -->
<popup-item item-id="4018" pos-id="" label-id="Cut Lines" icon-id="Visu_cutlines.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="4016" pos-id="" label-id="Stream Lines" icon-id="Visu_streamlines.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
<popup-item item-id="4017" pos-id="" label-id="Plot 3D" icon-id="Visu_plot3d.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
+ <popup-item item-id="4020" pos-id="" label-id="Scalar Map on Deformed Shape" icon-id="Visu_scalarmapondeformedshape.png" tooltip-id="" accel-id="" toggle-id="" execute-action=""/>
</menu-item>
<!-- ************************* Selection (menubar) ************************************** -->
<toolbutton-item item-id="4018" pos-id="" label-id="Cut Lines" icon-id="Visu_cutlines.png" tooltip-id="Cut Lines" accel-id="" toggle-id="" execute-action=""/>
<toolbutton-item item-id="4016" pos-id="" label-id="Stream Lines" icon-id="Visu_streamlines.png" tooltip-id="Stream Lines" accel-id="" toggle-id="" execute-action=""/>
<toolbutton-item item-id="4017" pos-id="" label-id="Plot 3D" icon-id="Visu_plot3d.png" tooltip-id="Plot 3D" accel-id="" toggle-id="" execute-action=""/>
+ <toolbutton-item item-id="4020" pos-id="" label-id="Scalar map on deformed shape" icon-id="Visu_scalarmapondeformedshape.png" tooltip-id="Scalar Map on Deformed Shape" accel-id="" toggle-id="" execute-action=""/>
</toolbar>
</desktop> <!-- DESKTOP END -->
--- /dev/null
+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 );
+}
@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
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@
#include <qfileinfo.h>
#include <qstringlist.h>
#include <memory>
+#include "VISU_Convertor_impl.hxx"
+
+#include <vtkUnstructuredGrid.h>
using namespace std;
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++){
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();
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++){
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;
}
namespace VISU{
- inline int GetNbOfPoints(int theVTKCellType){
+ inline
+ int
+ GetNbOfPoints(int theVTKCellType)
+ {
switch(theVTKCellType){
case VTK_VERTEX : return 1;
case VTK_LINE : return 2;
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)
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);
#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
--- /dev/null
+// 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
// 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)
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;
+ }
+
}
#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();
+ };
}
#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>
#include <vtkCellData.h>
#include <vtkCellLinks.h>
-#include <vtkMergeDataObjectFilter.h>
#include <qstring.h>
#include <qfileinfo.h>
#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();
+ }
+
+
+ //---------------------------------------------------------------
+ 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
-namespace{
+ 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;
}
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();
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)
{
- //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;
+ 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);
- 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);
+
+ 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,
+ const VISU::TEntity& theEntity)
+ {
+ int aNbTuples = theField->myDataSize/theField->myNbComp;
+ std::string aFieldName = GenerateFieldName(theField,theValForTime);
+
+ vtkDataSetAttributes* aDataSetAttributes;
+ switch(theEntity){
+ 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);
+
+ INITMSG(MYDEBUG,"GetTimeStampOnProfile "<<
+ "- theEntity = "<<theEntity<<
+ "; aNbTuples = "<<aNbTuples<<
+ "; aNbComp = "<<aNbComp<<
+ 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)
+ {
+ 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);
+
+ 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)
+ {
+ INITMSG(MYDEBUG,"GetMeshOnProfile - anEntity = "<<theMeshOnEntity->myEntity<<endl);
+
+ 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);
+
+ INITMSG(MYDEBUG,"GetTimeStampOnGaussMesh "<<
+ "- aNbTuples = "<<aNbTuples<<
+ "; aNbComp = "<<aNbComp<<
+ 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::TVTKOutput*
+VISU_Convertor_impl
+::GetTimeStampOnProfile(const VISU::PMeshImpl& theMesh,
+ const VISU::PMeshOnEntityImpl& theMeshOnEntity,
+ const VISU::PFieldImpl& theField,
+ const VISU::PValForTimeImpl& theValForTime,
+ const VISU::PIDMapperFilter& theIDMapperFilter,
+ const VISU::PProfileImpl& theProfile,
+ const VISU::TEntity& theEntity)
+{
+ LoadMeshOnEntity(theMesh,theMeshOnEntity);
+ GetMeshOnEntity(theMeshOnEntity->myMeshName,theMeshOnEntity->myEntity);
+ GetMeshOnProfile(theMesh,theMeshOnEntity,theProfile);
+
+ theIDMapperFilter->myIDMapper = theProfile;
+ TVTKOutput* anOutput = theIDMapperFilter->GetVTKOutput();
+ const TVTKSource& aSource = theIDMapperFilter->mySource.GetSource();
+ ::GetTimeStampOnProfile(aSource,theField,theValForTime,theEntity);
+
+ return anOutput;
+}
+
+
+//---------------------------------------------------------------
+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);
+
+ TVTKOutput* anOutput;
+ try{
+ anOutput = GetTimeStampOnProfile(aMesh,
+ aVTKMeshOnEntity,
+ aField,
+ aValForTime,
+ anIDMapperFilter,
+ aValForTime->myProfile,
+ aMeshOnEntity->myEntity);
+ }catch(std::exception& exc){
+ MSG(MYDEBUG,"Follow exception was occured :\n"<<exc.what());
+ anOutput = GetTimeStampOnProfile(aMesh,
+ aMeshOnEntity,
+ aField,
+ aValForTime,
+ anIDMapperFilter,
+ aValForTime->myProfile,
+ aVTKMeshOnEntity->myEntity);
}
+
+ anIDMapperFilter->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 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(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 aGaussPtsIDFilter;
}
+//---------------------------------------------------------------
VISU::PMeshImpl
-VISU_Convertor_impl::FindMesh(const string& theMeshName)
+VISU_Convertor_impl
+::FindMesh(const string& theMeshName)
{
GetMeshMap();
TMeshMap::iterator aMeshMapIter = myMeshMap.find(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;
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();
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);
}
-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);
(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;
}
-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;
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;
}
-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);
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);
}
-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);
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);
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);
-// 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;
+
+
+ //---------------------------------------------------------------
+ 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 SharedPtr<TMeshOnEntityImpl> PMeshOnEntityImpl;
+
+
+ //---------------------------------------------------------------
+ typedef std::map<EGeometry,TSubMeshID> TGeom2SubMeshID;
+
+ //! 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);
- struct TFieldImpl: TField{
- TVTKExtractFilter myExtractFilter;
- ~TFieldImpl()
- {
- if(myExtractFilter.GetPointer())
- myExtractFilter->UnRegisterAllOutputs();
- }
+ //! To initialize the data structure
+ void
+ InitArrays(vtkIdType theNbComp);
+
+ TFieldImpl();
};
- typedef shared_ptr<TFieldImpl> PFieldImpl;
+ 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
- struct TValForTimeImpl: TValForTime{
- TVTKAttribyteFilter myAttribyteFilter;
- TVTKMergetFilter myMergeFilter;
- TVTKSource myStorage;
+ 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
- typedef std::vector<float> TValForCellsWithType;
- typedef std::map<vtkIdType,TValForCellsWithType> TValForCells;
- TValForCells myValForCells;
+ //! To intitilize the data strucutre
+ void
+ Init(vtkIdType theNbElem,
+ vtkIdType theNbGauss,
+ vtkIdType theNbComp);
- ~TValForTimeImpl()
- {
- if(myMergeFilter.GetPointer())
- myMergeFilter->UnRegisterAllOutputs();
- if(myAttribyteFilter.GetPointer())
- myAttribyteFilter->UnRegisterAllOutputs();
- }
+ //! 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 shared_ptr<TValForTimeImpl> PValForTimeImpl;
+
+ //---------------------------------------------------------------
+ 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,
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,
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,
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,
const VISU::TEntity& theEntity,
const std::string& theFieldName,
int theStampsNum);
+
+ VISU::TVTKOutput*
+ GetTimeStampOnProfile(const VISU::PMeshImpl& theMesh,
+ const VISU::PMeshOnEntityImpl& theMeshOnEntity,
+ const VISU::PFieldImpl& theField,
+ const VISU::PValForTimeImpl& theValForTime,
+ const VISU::PIDMapperFilter& theIDMapperFilter,
+ const VISU::PProfileImpl& theProfile,
+ const VISU::TEntity& theEntity);
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
--- /dev/null
+// 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;
+ }
+}
--- /dev/null
+// 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
#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);
- MED::TEntityInfo aEntityInfo = aMed->GetEntityInfo(aMeshInfo);
+ TProfileMap& aProfileMap = theMeshOnEntity.myProfileMap;
- TElemGroup aElemGroup = GetElemsByEntity(aMed,aMeshInfo,aEntityInfo);
+ TProfileKey aProfileKey = GetProfileKey(theMEDWrapper,
+ theMeshInfo,
+ theTimeStampVal,
+ theMeshOnEntity,
+ theMEntity,
+ theGeom2Size);
+
+ 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);
+
+ if(aProfile->myIsAll && aSubProfile->myStatus != eAddAll)
+ aProfile->myIsAll = false;
- TFamilyGroup aFamilyGroup = GetFamilies(aMed,aMeshInfo);
+ VISU::EGeometry aEGeom = aSubProfile->myGeom;
+ aGeom2SubProfile[aEGeom] = aSubProfile;
+ }
+
+ aProfileMap[aProfileKey] = aProfile;
+ theValForTime.myProfile = aProfile;
+ }
+ }
- TFamilyByEntity aFamilyByEntity = GetFamiliesByEntity(aMed,aElemGroup,aFamilyGroup);
- TGroupInfo aGroupInfo = GetFamiliesByGroup(aFamilyGroup);
+ //---------------------------------------------------------------
+ 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);
- // creating TMesh structure and TMeshOnEntityMap
- typedef map<TInt,TInt> TFamilyCounterMap;
- TFamilyCounterMap aFamilyNbCellsCounterMap, aFamilyCellsSizeCounterMap;
+ TGaussKey aGaussKey;
+ PMEDProfile aProfile = theValForTime.myProfile;
+ TGeom2SubProfile& aGeom2SubProfile = aProfile->myGeom2SubProfile;
- 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");
+ 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;
-
- INITMSG(MYDEBUG,"aMEntity = "<<aMEntity<<"; aVEntity = "<<aVEntity<<"\n");
+ aMeshOnEntity->myGeom2Size = aGeom2Size;
+ TFamilyID2CellsSize& aFamilyID2CellsSize = aMeshOnEntity->myFamilyID2CellsSize;
- 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);
+ }
+
+
+ //---------------------------------------------------------------
+ void
+ TMEDSubMesh
+ ::Init(const MED::PElemInfo& theElemInfo)
+ {
+ myIsElemNum = theElemInfo->IsElemNum();
+ myElemNum = theElemInfo->myElemNum;
+ if(theElemInfo->IsElemNames())
+ myElemInfo = theElemInfo;
}
- return this;
-}
+ vtkIdType
+ TMEDSubMesh
+ ::GetElemObjID(vtkIdType theID) const
+ {
+ if(myIsElemNum)
+ return myElemNum[theID];
+ else
+ return TSubMeshImpl::GetElemObjID(theID);
+ }
-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);
+ std::string
+ TMEDSubMesh
+ ::GetElemName(vtkIdType theObjID) const
+ {
+ if(myElemInfo)
+ return myElemInfo->GetElemName(theObjID);
+ return TSubMeshImpl::GetElemName(theObjID);
+ }
- return (isPointsUpdated || isCellsOnEntityUpdated);
+ struct TSetIsDone
+ {
+ bool& myIsDone;
+ TSetIsDone(bool& theIsDone):
+ myIsDone(theIsDone)
+ {}
+
+ ~TSetIsDone()
+ {
+ myIsDone = true;
+ }
+
+ };
}
-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);
- }
- }
- return (isPointsUpdated || isCellsOnEntityUpdated);
+//---------------------------------------------------------------
+extern "C"
+VISU_Convertor*
+CreateConvertor(const string& theFileName)
+{
+ if(MED::PWrapper aMed = MED::CrWrapper(theFileName))
+ return new VISU_MedConvertor(theFileName);
+ return NULL;
}
-int VISU_MedConvertor::LoadFieldOnMesh(VISU::PMeshImpl theMesh,
- VISU::PMeshOnEntityImpl theMeshOnEntity,
- VISU::PFieldImpl theField,
- VISU::PValForTimeImpl theValForTime)
+VISU_MedConvertor
+::VISU_MedConvertor(const string& theFileName):
+ myIsEntitiesDone(false),
+ myIsFieldsDone(false),
+ myIsGroupsDone(false),
+ myIsMinMaxDone(false)
{
- 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);
+ myFileInfo.setFile(QString(theFileName.c_str()));
+ myName = myFileInfo.baseName().latin1();
}
-int
-VISU_MedConvertor::LoadPoints(const MED::PWrapper& theMed,
- VISU::PMEDMesh theMesh,
- const string& theFamilyName)
+//---------------------------------------------------------------
+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
- VISU::PMEDMeshOnEntity aMeshOnEntity = theMesh->myMeshOnEntityMap[VISU::NODE_ENTITY];
- aMeshOnEntity->myEntity = VISU::NODE_ENTITY;
+ 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 - theMesh->myIsDone = "<<theMesh->myIsDone<<"'\n");
- INITMSG(MYDEBUG,"LoadPoints - isPointsLoaded = "<<isPointsLoaded<<"; theFamilyName = '"<<theFamilyName<<"'\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){
}
#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);
+}
#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
--- /dev/null
+// 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);
+ }
+ }
+ }
+}
--- /dev/null
+// 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
+
+
}
+ 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);
}
}
+ 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,
//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);
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,
@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@
@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 =
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@
//
//
//
-// 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>
#include <vtkGeometryFilter.h>
#include <vtkObjectFactory.h>
+#include <boost/bind.hpp>
+
#include "utilities.h"
using namespace std;
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);
}
-VISU_Actor::~VISU_Actor(){
- SALOME_Actor::SetProperty(NULL);
+//----------------------------------------------------------------------------
+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);
+}
- myMapper->RemoveAllInputs();
- myMapper->Delete();
+void
+VISU_Actor
+::ShallowCopyPL(VISU_PipeLine* thePipeLine)
+{
+ myPipeLine->ShallowCopy(thePipeLine);
- if(myPipeLine)
- myPipeLine->UnRegister(this);
+ vtkDataSet* aDatsSet = myMapper->GetInput();
+ GetMapper()->ShallowCopy(thePipeLine->GetMapper());
- myShrinkFilter->UnRegisterAllOutputs();
- myShrinkFilter->Delete();
+ // To restore mapper input from pipeline
+ myMapper->SetInput(aDatsSet);
}
-void VISU_Actor::setIO(const Handle(SALOME_InteractiveObject)& theIO){
- SALOME_Actor::setIO(theIO);
+//----------------------------------------------------------------------------
+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)
+{
+ 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()){
+ 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
+::SetRepresentation(int theMode)
+{
+ Superclass::SetRepresentation(theMode);
+ if(myRepresentation == VTK_POINTS)
+ UnShrink();
}
-void VISU_Actor::SetShrink(){
- if(!myIsShrinkable) return;
+//----------------------------------------------------------------------------
+void
+VISU_Actor
+::SetShrink()
+{
+ if(!myIsShrinkable)
+ return;
if(vtkDataSet* aDataSet = myPassFilter[0]->GetOutput()){
myShrinkFilter->SetInput(aDataSet);
myPassFilter[1]->SetInput(myShrinkFilter->GetOutput());
}
}
-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();
}
}
-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;
}
//
//
//
-// 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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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(aVisisbility && 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);
+}
--- /dev/null
+// 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 vtkDataArray;
+
+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
--- /dev/null
+// 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
--- /dev/null
+// 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;
+}
--- /dev/null
+// 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
--- /dev/null
+// 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()
+{
+}
--- /dev/null
+// 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
//
//
// 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;
}
#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
#include <vtkObjectFactory.h>
#include <vtkRenderer.h>
+#include <vtkProperty.h>
vtkStandardNewMacro(VISU_ScalarMapAct);
-VISU_ScalarMapAct::VISU_ScalarMapAct(){
+VISU_ScalarMapAct
+::VISU_ScalarMapAct()
+{
myScalarBar = VISU_ScalarBarActor::New();
vtkProperty* aProperty = GetProperty();
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)
+{
+ Superclass::AddToRender(theRenderer);
+
if(myScalarBar)
theRenderer->AddActor2D(myScalarBar);
}
-void VISU_ScalarMapAct::RemoveFromRender(vtkRenderer* theRenderer){
- SALOME_Actor::RemoveFromRender(theRenderer);
+void
+VISU_ScalarMapAct
+::RemoveFromRender(vtkRenderer* theRenderer)
+{
if(myScalarBar)
theRenderer->RemoveActor(myScalarBar);
+
+ Superclass::RemoveFromRender(theRenderer);
}
-void VISU_ScalarMapAct::SetVisibility(int theMode){
- SALOME_Actor::SetVisibility(theMode);
- if(myScalarBar) myScalarBar->SetVisibility(myBarVisibility && theMode);
+void
+VISU_ScalarMapAct
+::SetVisibility(int theMode)
+{
+ Superclass::SetVisibility(theMode);
+
+ if(myScalarBar)
+ myScalarBar->SetVisibility(myBarVisibility && theMode);
}
-int VISU_ScalarMapAct::GetVisibility(){
- return SALOME_Actor::GetVisibility();
+int
+VISU_ScalarMapAct
+::GetVisibility()
+{
+ return Superclass::GetVisibility();
}
-void VISU_ScalarMapAct::SetBarVisibility(bool theMode){
+void
+VISU_ScalarMapAct
+::SetBarVisibility(bool theMode)
+{
myBarVisibility = theMode;
if(myScalarBar) myScalarBar->SetVisibility(myBarVisibility);
}
#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))
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
@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 \
+ VISU_ScalarMapOnDeformedShapePL.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 \
+ VISU_ScalarMapOnDeformedShapePL.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@
#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;
numCells = input->GetNumberOfCells();
numPts = input->GetNumberOfPoints();
- vtkDebugMacro(<< "Extracting geometry");
-
if ( ! this->ImplicitFunction )
{
vtkErrorMacro(<<"No implicit function specified");
vtkFloatArray *newScalars = NULL;
if(myStoreMapping){
- myElemVTK2ObjIds.clear();
myElemVTK2ObjIds.reserve(numCells);
- myNodeVTK2ObjIds.clear();
myNodeVTK2ObjIds.reserve(numPts);
}
{
newId = newPts->InsertNextPoint(x);
pointMap[ptId] = newId;
- myNodeVTK2ObjIds.push_back(ptId);
+ if(myStoreMapping)
+ myNodeVTK2ObjIds.push_back(ptId);
outputPD->CopyData(pd,ptId,newId);
}
}
{
newId = newPts->InsertNextPoint(x);
pointMap[ptId] = newId;
- myNodeVTK2ObjIds.push_back(ptId);
+ if(myStoreMapping)
+ myNodeVTK2ObjIds.push_back(ptId);
outputPD->CopyData(pd,ptId,newId);
}
}
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]);
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
#include <vtkExtractGeometry.h>
#include <vtkSmartPointer.h>
-#include <vtkImplicitBoolean.h>
#include <vector>
-//class vtkImplicitBoolean;
+class vtkImplicitBoolean;
class SALOME_ExtractGeometry : public vtkExtractGeometry
{
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();
private:
bool myStoreMapping;
+ bool myIsDoneShallowCopy;
typedef std::vector<vtkIdType> TVectorId;
TVectorId myElemVTK2ObjIds;
TVectorId myNodeVTK2ObjIds;
#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>
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;
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);
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();
VISU_ScalarBarActor * aScalarBar = VISU_ScalarBarActor::New();
aScalarBar->SetLookupTable(aPresent->GetBarTable());
- aPresent->Build();
-
ren->AddActor(anActor);
ren->AddActor2D(aScalarBar);
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);
SetDefault();
if (!aPipeLine->IsDefault()) SetPosition(aPipeLine->GetPosition());
}
+ VISU_CutPlanesPL::ShallowCopy(thePipeLine);
}
void VISU_CutLinesPL::Init(){
}
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());
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(){
}
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){
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(){
#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);
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"));
}
}
#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);
}
template<typename TypeData> void
ExecVectors(VISU_FieldTransform::TTransformFun theFunction,
VTKViewer_Transform* theTransform,
- float theScalarRange[2], int theNbComponent,
- TypeData* theInputData, TypeData* theOutputData)
+ float theScalarRange[2],
+ int theNbOfTuples,
+ TypeData* theInputData,
+ TypeData* theOutputData)
{
- vtkDataArray *inVectors = theInputData->GetVectors();
- if ( !inVectors || theNbComponent < 1 ) return;
- vtkFloatArray *newVectors = vtkFloatArray::New();
- newVectors->SetNumberOfComponents(3);
- newVectors->SetNumberOfTuples(theNbComponent);
+ vtkDataArray *anInVectors = theInputData->GetVectors();
+ if ( !anInVectors || theNbOfTuples < 1 )
+ return;
+ vtkFloatArray *aNewVectors = vtkFloatArray::New();
+ aNewVectors->SetNumberOfComponents(3);
+ aNewVectors->SetNumberOfTuples(theNbOfTuples);
float aScalarRange[2] = {(*theFunction)(theScalarRange[0]),(*theFunction)(theScalarRange[1])};
- float *V, v[3], vMag, aDelta = aScalarRange[1] - aScalarRange[0];
+ float aDelta = aScalarRange[1] - aScalarRange[0];
float aScale[3] = {1.0, 1.0, 1.0};
+ static float EPS = 1.0 / VTK_LARGE_FLOAT;
if(theTransform){
aScale[0] = theTransform->GetScale()[0];
aScale[1] = theTransform->GetScale()[1];
aScale[2] = theTransform->GetScale()[2];
}
if(theFunction == &(VISU_FieldTransform::Ident)){
- for (int ptId = 0; ptId < theNbComponent; ptId++) {
- V = inVectors->GetTuple3(ptId);
- v[0] = V[0]*aScale[0];
- v[1] = V[1]*aScale[1];
- v[2] = V[2]*aScale[2];
- newVectors->SetTuple3(ptId, v[0], v[1], v[2]);
+ for (int aTupleId = 0; aTupleId < theNbOfTuples; aTupleId++) {
+ float anInVec[3];
+ anInVectors->GetTuple(aTupleId,anInVec);
+ float anNewVec[3];
+ anNewVec[0] = anInVec[0]*aScale[0];
+ anNewVec[1] = anInVec[1]*aScale[1];
+ anNewVec[2] = anInVec[2]*aScale[2];
+ aNewVectors->SetTuple(aTupleId,anNewVec);
}
}else{
- for (int ptId = 0; ptId < theNbComponent; ptId++) {
- V = inVectors->GetTuple3(ptId);
- vMag = vtkMath::Norm(V);
- vMag = ((*theFunction)(vMag) - aScalarRange[0]) / aDelta * theScalarRange[1] / vMag;
- if(vMag <= 0.0) vMag = 0.0;
- v[0] = V[0]*vMag*aScale[0];
- v[1] = V[1]*vMag*aScale[1];
- v[2] = V[2]*vMag*aScale[2];
- newVectors->SetTuple3(ptId, v[0], v[1], v[2]);
+ for (int aTupleId = 0; aTupleId < theNbOfTuples; aTupleId++) {
+ float anInVec[3];
+ anInVectors->GetTuple(aTupleId,anInVec);
+ float aMagn = vtkMath::Norm(anInVec);
+ if(aMagn > EPS)
+ aMagn = ((*theFunction)(aMagn) - aScalarRange[0]) / aDelta * theScalarRange[1] / aMagn;
+ if(aMagn < 0.0)
+ aMagn = 0.0;
+ float anNewVec[3];
+ anNewVec[0] = anInVec[0]*aMagn*aScale[0];
+ anNewVec[1] = anInVec[1]*aMagn*aScale[1];
+ anNewVec[2] = anInVec[2]*aMagn*aScale[2];
+ aNewVectors->SetTuple(aTupleId,anNewVec);
}
}
- theOutputData->SetVectors(newVectors);
- newVectors->Delete();
+ theOutputData->SetVectors(aNewVectors);
+ aNewVectors->Delete();
}
template<typename TypeData> void
-ExecScalars(VISU_FieldTransform::TTransformFun theFunction, float theScalarRange[2],
- int theNbComponent, TypeData* theInputData, TypeData* theOutputData)
+ExecScalars(VISU_FieldTransform::TTransformFun theFunction,
+ float theScalarRange[2],
+ int theNbOfTuples,
+ TypeData* theInputData,
+ TypeData* theOutputData)
{
- vtkDataArray *inScalars = theInputData->GetScalars();
- if ( !inScalars || theNbComponent < 1 )
+ vtkDataArray *anInScalars = theInputData->GetScalars();
+ if ( !anInScalars || theNbOfTuples < 1 )
return;
- vtkFloatArray *newScalars = vtkFloatArray::New();
- newScalars->SetNumberOfComponents(1);
- newScalars->SetNumberOfTuples(theNbComponent);
+ vtkFloatArray *aNewScalars = vtkFloatArray::New();
+ aNewScalars->SetNumberOfComponents(1);
+ aNewScalars->SetNumberOfTuples(theNbOfTuples);
float aScalarRange[2] = {(*theFunction)(theScalarRange[0]),(*theFunction)(theScalarRange[1])};
- for (int ptId = 0; ptId < theNbComponent; ptId++) {
- float s = (*theFunction)(inScalars->GetTuple1(ptId ));
- if(s < aScalarRange[0]) s = aScalarRange[0];
- newScalars->SetTuple1(ptId, s);
+ for (int aTupleId = 0; aTupleId < theNbOfTuples; aTupleId++) {
+ float aScalar = (*theFunction)(anInScalars->GetTuple1(aTupleId));
+ if(aScalar < aScalarRange[0])
+ aScalar = aScalarRange[0];
+ aNewScalars->SetTuple1(aTupleId,aScalar);
}
- theOutputData->SetScalars(newScalars);
- newScalars->Delete();
+ theOutputData->SetScalars(aNewScalars);
+ aNewScalars->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())){
--- /dev/null
+// 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();
+}
--- /dev/null
+// 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
--- /dev/null
+// 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()
+{
+}
--- /dev/null
+// 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
}
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() {
}
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();
}
}
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])
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];
}
}
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();
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++;
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++;
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];
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;
{
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++;
{
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++;
{
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];
{
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;
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++;
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++;
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]);
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;
{
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++;
{
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++;
{
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);
{
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;
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;
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;
}
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");
VISU_LookupTableMapData(this,
static_cast<unsigned char*>(newInput->GetPointer(0)),
output,numberOfValues,
- inputIncrement,outputFormat,myScale);
+ inputIncrement,outputFormat,myScale,myBicolor);
newInput->Delete();
bitArray->Delete();
}
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:
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);
~VISU_LookupTable() {};
float myScale;
+
+ bool myBicolor;
};
#endif // VISU_LookupTable_H
--- /dev/null
+// 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;
+}
--- /dev/null
+// 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
#include <vtkPlane.h>
#include <vtkExtractGeometry.h>
#include <vtkImplicitBoolean.h>
+#include <vtkImplicitFunction.h>
#include <vtkImplicitFunctionCollection.h>
#include <vtkMath.h>
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()){
}
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;
return 0;
}
-float VISU_PipeLine::GetAvailableMemory(float theSize, float theMinSize)
+float
+VISU_PipeLine
+::GetAvailableMemory(float theSize,
+ float theMinSize)
{
while(!CheckAvailableMemory(theSize))
if(theSize > theMinSize)
}
//------------------------ Clipping planes -----------------------------------
-
-bool VISU_PipeLine::AddClippingPlane(vtkPlane* thePlane)
+bool
+VISU_PipeLine
+::AddClippingPlane(vtkPlane* thePlane)
{
if (thePlane) {
if (vtkImplicitBoolean* aBoolean = myExtractGeometry->GetImplicitBoolean()) {
return true;
}
-vtkPlane* VISU_PipeLine::GetClippingPlane(vtkIdType theID) const
+vtkPlane*
+VISU_PipeLine
+::GetClippingPlane(vtkIdType theID) const
{
vtkPlane* aPlane = NULL;
if(theID >= 0 && theID < GetNumberOfClippingPlanes()){
return aPlane;
}
-void VISU_PipeLine::RemoveAllClippingPlanes()
+void
+VISU_PipeLine
+::RemoveAllClippingPlanes()
{
if(vtkImplicitBoolean* aBoolean = myExtractGeometry->GetImplicitBoolean()){
vtkImplicitFunctionCollection* aFunction = aBoolean->GetFunction();
}
}
-vtkIdType VISU_PipeLine::GetNumberOfClippingPlanes() const
+vtkIdType
+VISU_PipeLine
+::GetNumberOfClippingPlanes() const
{
if(vtkImplicitBoolean* aBoolean = myExtractGeometry->GetImplicitBoolean()){
vtkImplicitFunctionCollection* aFunction = aBoolean->GetFunction();
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);
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);
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);
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];
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);
//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
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();
+}
#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;
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;
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());
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());
--- /dev/null
+// 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);
+}
+*/
--- /dev/null
+// 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
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());
SetContourPrs( aPipeLine->GetIsContourPrs() );
SetNumberOfContours( aPipeLine->GetNumberOfContours() );
}
+ VISU_ScalarMapPL::ShallowCopy(thePipeLine);
}
VISU_CutPlanesPL::PlaneOrientation
--- /dev/null
+// 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);
+ }
+}
--- /dev/null
+// 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
--- /dev/null
+// VISU ScalarMapOnDeformedShapePL
+//
+// 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_ScalarMapOnDeformedShapePL.cxx
+// Author: Eugeny Nikolaev
+// Module : VISU
+
+#include "VISU_ScalarMapOnDeformedShapePL.hxx"
+#include "VISU_DeformedShapePL.hxx"
+#include "VISU_PipeLineUtils.hxx"
+#include "VTKViewer_TransformFilter.h"
+#include "VTKViewer_Transform.h"
+
+#include <vtkWarpVector.h>
+#include <vtkMergeFilter.h>
+#include <vtkUnstructuredGrid.h>
+#include <vtkCellDataToPointData.h>
+#include <vtkPointDataToCellData.h>
+
+#include <VISU_Convertor.hxx>
+
+vtkStandardNewMacro(VISU_ScalarMapOnDeformedShapePL)
+
+/*!
+ * Constructor. Creating new instances of vtkWarpVector,vtkMergeFilter,vtkUnstructuredGrid
+ * Where:
+ * \li myDeformVectors is vtkWarpVector - deformation vectors data
+ * \li myMergeFilter is vtkMergeFilter - merge filter.
+ * Merge filter which unify the deformation and scalars
+ * \li myScalars is vtk shared pointer to vtkUnstructuredGrid - scalars data
+*/
+VISU_ScalarMapOnDeformedShapePL::VISU_ScalarMapOnDeformedShapePL(){
+ myDeformVectors = vtkWarpVector::New();
+ myMergeFilter = vtkMergeFilter::New();
+ myExtractorScalars = VISU_Extractor::New();
+ myCellDataToPointData = vtkCellDataToPointData::New();
+}
+
+/*!
+ * Destructor.
+ * Delete all fields.
+*/
+VISU_ScalarMapOnDeformedShapePL::~VISU_ScalarMapOnDeformedShapePL(){
+ myDeformVectors->UnRegisterAllOutputs();
+ myDeformVectors->Delete();
+
+ myMergeFilter->UnRegisterAllOutputs();
+ myMergeFilter->Delete();
+
+ myExtractorScalars->UnRegisterAllOutputs();
+ myExtractorScalars->Delete();
+
+ myCellDataToPointData->UnRegisterAllOutputs();
+ myCellDataToPointData->Delete();
+}
+
+/*!
+ * Initial method
+ */
+void VISU_ScalarMapOnDeformedShapePL::Init(){
+
+ if (GetScalars() == NULL) SetScalars(GetInput2());
+
+ Superclass::Init();
+
+ float aScalarRange[2];
+ GetSourceRange(aScalarRange);
+ static double EPS = 1.0 / VTK_LARGE_FLOAT;
+ if(aScalarRange[1] > EPS)
+ SetScale(VISU_DeformedShapePL::GetScaleFactor(GetInput2())/aScalarRange[1]);
+ else
+ SetScale(0.0);
+
+ myMapper->SetColorModeToMapScalars();
+ myMapper->ScalarVisibilityOn();
+
+ // Sets input for field transformation filter
+ myFieldTransform->SetInput(myExtractor->GetOutput());
+
+}
+
+/*!
+ * Build method
+ * Building of deformation and puts result to merge filter.
+ */
+void VISU_ScalarMapOnDeformedShapePL::Build()
+{
+ // Set input for extractor
+ myExtractor->SetInput(GetInput2());
+
+ VISU::CellDataToPoint(myDeformVectors,myCellDataToPointData,
+ GetInput2(),myFieldTransform);
+
+ // Sets geometry for merge filter
+ myMergeFilter->SetGeometry(myDeformVectors->GetOutput());
+ // Sets data to mapper
+ myMapper->SetInput(myMergeFilter->GetOutput());
+}
+
+/*!
+ * Update method
+ */
+void VISU_ScalarMapOnDeformedShapePL::Update(){
+ this->UpdateScalars();
+
+ float aRange[2];
+ GetSourceRange(aRange);
+ float aScalarRange[2] = {aRange[0], aRange[1]};
+
+ if(myBarTable->GetScale() == VTK_SCALE_LOG10)
+ VISU_LookupTable::ComputeLogRange(aRange,aScalarRange);
+ myMapperTable->SetRange(aScalarRange);
+
+ myMapperTable->Build();
+ myBarTable->Build();
+
+ myMapper->SetLookupTable(myMapperTable);
+ myMapper->SetScalarRange(aScalarRange);
+
+ VISU_PipeLine::Update();
+}
+
+/*!
+ * Update scalars method.
+ * Put scalars to merge filter.
+ */
+void VISU_ScalarMapOnDeformedShapePL::UpdateScalars(){
+ if(myScalars->GetCellData()->GetVectors() != NULL ||
+ myScalars->GetPointData()->GetVectors() != NULL)
+ myMergeFilter->SetScalars(myExtractorScalars->GetOutput());
+ else
+ myMergeFilter->SetScalars(GetScalars());
+}
+
+/*!
+ * Copy information about pipline.
+ * Copy scale and scalars.
+ */
+void VISU_ScalarMapOnDeformedShapePL::ShallowCopy(VISU_PipeLine *thePipeLine){
+ VISU_ScalarMapOnDeformedShapePL *aPipeLine = dynamic_cast<VISU_ScalarMapOnDeformedShapePL*>(thePipeLine);
+ if(aPipeLine){
+ SetScale(aPipeLine->GetScale());
+ SetScalars(aPipeLine->GetScalars());
+ float aRange[2];
+ aPipeLine->GetSourceRange(aRange);
+ SetScalarRange(aRange);
+ }
+ Superclass::ShallowCopy(thePipeLine);
+}
+
+/*!
+ * Set scalars.
+ * Sets vtkDataSet with scalars values to VISU_Extractor filter for scalars extraction.
+ */
+void VISU_ScalarMapOnDeformedShapePL::SetScalars(vtkDataSet *theScalars){
+ myScalars = theScalars;
+ vtkUnstructuredGrid* aScalars = GetScalars();
+ myExtractorScalars->SetInput(aScalars);
+ Modified();
+}
+
+/*!
+ * Get pointer to input scalars.
+ */
+vtkUnstructuredGrid* VISU_ScalarMapOnDeformedShapePL::GetScalars(){
+ return myScalars.GetPointer();
+}
+
+/*!
+ * Sets scale for deformed shape
+ */
+void VISU_ScalarMapOnDeformedShapePL::SetScale(float theScale) {
+ if(myScaleFactor == theScale) return;
+ myScaleFactor = theScale;
+ myDeformVectors->SetScaleFactor(myScaleFactor);
+ Modified();
+}
+
+/*!
+ * Gets scale of deformed shape.
+ */
+float VISU_ScalarMapOnDeformedShapePL::GetScale() {
+ float aScale=myDeformVectors->GetScaleFactor();
+ return aScale;
+}
+
+/*!
+ * Set scale factor of deformation.
+ */
+void VISU_ScalarMapOnDeformedShapePL::SetMapScale(float theMapScale){
+ myDeformVectors->SetScaleFactor(myScaleFactor*theMapScale);
+ Modified();
+}
+
+/*!
+ * Gets scalar mode.
+ */
+int VISU_ScalarMapOnDeformedShapePL::GetScalarMode(){
+ int aMode=myExtractorScalars->GetScalarMode();
+ return aMode;
+}
+
+/*!
+ * Sets scalar mode.
+ */
+void VISU_ScalarMapOnDeformedShapePL::SetScalarMode(int theScalarMode){
+ myExtractorScalars->SetScalarMode(theScalarMode);
+ Modified();
+}
+
+/*!
+ * Gets ranges of extracted scalars
+ * \param theRange[2] - output values
+ * \li theRange[0] - minimum value
+ * \li theRange[1] - maximum value
+ */
+void VISU_ScalarMapOnDeformedShapePL::GetSourceRange(float theRange[2]){
+ myExtractorScalars->Update();
+ myExtractorScalars->GetUnstructuredGridOutput()->GetScalarRange(theRange);
+}
--- /dev/null
+// 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_ScalarMapOnDeformedShapePL.hxx
+// Author: Eugeny Nikolaev
+// Module : VISU
+
+#ifndef VISU_ScalarMapOnDeformedShapePL_HeaderFile
+#define VISU_ScalarMapOnDeformedShapePL_HeaderFile
+
+#include "VISU_ScalarMapPL.hxx"
+
+class vtkMergeFilter;
+class vtkWarpVector;
+class vtkUnstructuredGrid;
+class vtkCellDataToPointData;
+class vtkPointDataToCellData;
+
+class VISU_ScalarMapOnDeformedShapePL : public VISU_ScalarMapPL
+{
+protected:
+ VISU_ScalarMapOnDeformedShapePL();
+
+ virtual ~VISU_ScalarMapOnDeformedShapePL();
+
+ VISU_ScalarMapOnDeformedShapePL(const VISU_ScalarMapOnDeformedShapePL&);
+public:
+ vtkTypeMacro(VISU_ScalarMapOnDeformedShapePL,VISU_ScalarMapPL);
+
+ static VISU_ScalarMapOnDeformedShapePL* New();
+
+ virtual void ShallowCopy(VISU_PipeLine *thePipeLine);
+
+ virtual void SetScale(float theScale);
+ virtual float GetScale();
+
+ virtual int GetScalarMode();
+ virtual void SetScalarMode(int theScalarMode = 0);
+
+ virtual void GetSourceRange(float theRange[2]);
+
+ virtual void SetScalars(vtkDataSet *theScalars);
+ virtual vtkUnstructuredGrid* GetScalars();
+
+public:
+ //! 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 scalars.
+ void
+ UpdateScalars();
+
+ virtual void SetMapScale(float theMapScale = 1.0);
+
+protected:
+ float myScaleFactor;
+ vtkWarpVector *myDeformVectors;
+ vtkMergeFilter *myMergeFilter;
+ vtkSmartPointer<vtkUnstructuredGrid> myScalars;
+ VISU_Extractor* myExtractorScalars;
+ vtkCellDataToPointData* myCellDataToPointData;
+};
+
+#endif
#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);
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));
}
-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());
}
-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();
}
-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);
#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;
};
--- /dev/null
+#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);
+}
--- /dev/null
+#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
#include <vtkStreamLine.h>
#ifdef _DEBUG_
-static int MYDEBUG = 1;
+static int MYDEBUG = 0;
#else
static int MYDEBUG = 0;
#endif
}
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);
}
#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();
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();
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:
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();
}
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;
--- /dev/null
+// 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;
+}
--- /dev/null
+// 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
--- /dev/null
+// 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;
+}
# 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
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 \
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_ScalarMapOnDeformedShapeDlg.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 \
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_ScalarMapOnDeformedShapeDlg.h \
+ VisuGUI_SetupPlot2dDlg.h \
+ VisuGUI_BuildProgressDlg.h \
+ VisuGUI_TransparencyDlg.h
LIB_CLIENT_IDL = SALOME_Exception.idl \
VISU_Gen.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@
--- /dev/null
+# 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"
--- /dev/null
+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_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
msgid "ICON_DEFORMED_SHAPE"
msgstr "Visu_deformed.png"
+msgid "ICON_SCALAR_MAP_ON_DEFORMED_SHAPE"
+msgstr "Visu_scalarmapondeformedshape.png"
+
msgid "ICON_VECTORS"
msgstr "Visu_vectors.png"
msgid "ICON_DEFORMED_SHAPE"
msgstr "Visu_deformed.png"
+msgid "ICON_SCALAR_MAP_ON_DEFORMED_SHAPE"
+msgstr "Visu_scalarmapondeformedshape.png"
+
msgid "ICON_VECTORS"
msgstr "Visu_vectors.png"
msgid "VisuGUI::MEN_DEFORMED_SHAPE"
msgstr "Deformed Shape"
+msgid "VisuGUI::MEN_SCALAR_MAP_ON_DEFORMED_SHAPE"
+msgstr "Scalar Map on Deformed Shape"
+
msgid "VisuGUI::MEN_VISUALIZATION"
msgstr "Visualization"
msgid "VisuGUI::ERR_ACTIVATE_VIEW3D"
msgstr "Please activate 3D view before"
+msgid "VisuGUI::ERR_SCALARBAR_PARAMS"
+msgstr "Warning! The parameters is incorrect"
msgid "VisuGUI::FLT_ALL_FILES"
msgstr "All Files (*.*)"
msgstr "Scale Factor:"
+#: VisuGUI_ScalarMapOnDeformedShapeDlg.cxx
+
+msgid "VisuGUI_ScalarMapOnDeformedShapeDlg::DLG_TITLE"
+msgstr "Scalar Map on Deformed Shape"
+
+msgid "VisuGUI_ScalarMapOnDeformedShapeDlg::&Cancel"
+msgstr ""
+
+msgid "VisuGUI_ScalarMapOnDeformedShapeDlg::&OK"
+msgstr ""
+
+msgid "VisuGUI_ScalarMapOnDeformedShapeDlg::SCALAR_MAP_ON_DEFORMED_SHAPE_TAB"
+msgstr "Scalar Map on Deformed Shape"
+
+msgid "VisuGUI_ScalarMapOnDeformedShapeDlg::SCALAR_BAR_TAB"
+msgstr "Scalar Bar"
+
+msgid "VisuGUI_ScalarMapOnDeformedShapeDlg::SCALE_FACTOR"
+msgstr "Scale Factor:"
+
+msgid "VisuGUI_ScalarMapOnDeformedShapeDlg::FIELD_ITEM"
+msgstr "Fields"
+
+msgid "VisuGUI_ScalarMapOnDeformedShapeDlg::TIMESTAMP_ITEM"
+msgstr "Time stamp"
+
#: VisuGUI_EditContainerDlg.cxx
msgid "VisuGUI_EditContainerDlg::&Cancel"
//
//
// 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"
#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 "VISU_DeformedShape_i.hh"
#include "VisuGUI_DeformedShapeDlg.h"
+#include "VISU_ScalarMapOnDeformedShape_i.hh"
+#include "VisuGUI_ScalarMapOnDeformedShapeDlg.h"
+
#include "VISU_IsoSurfaces_i.hh"
#include "VisuGUI_IsoSurfacesDlg.h"
#include "VisuGUI_ActionsDef.h"
+#include "VisuGUI_Timer.h"
+
using namespace VISU;
#ifdef _DEBUG_
{
}
-
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();
}
{
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();
OnImportTableFromFile()
{
if(MYDEBUG) MESSAGE("VisuGUI::OnImportTableFromFile()");
- if ( CheckLock(GetCStudy(GetAppStudy(this))) )
+ if ( CheckLock(GetCStudy(GetAppStudy(this)),GetDesktop(this)) )
return;
QStringList aFilter;
try {
GetVisuGen(this)->ExportTableToFile(GetSObject(aSObj), aFile.latin1());
application()->putInfo(aFile + " " + tr("INF_DONE"));
- } catch(std::exception& ex) {
- INFOS(ex.what());
+ } catch(std::exception& exc) {
+ INFOS(exc.what());
SUIT_MessageBox::warn1(GetDesktop(this),
tr("WRN_VISU"),
- tr("ERR_ERROR_DURING_EXPORT") + " " + tr(ex.what()),
+ tr("ERR_ERROR_DURING_EXPORT") + " " + tr(exc.what()),
tr("BUT_OK"));
} catch(...) {
INFOS(tr("ERR_ERROR_DURING_EXPORT"));
OnImportMedField()
{
_PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
- if (CheckLock(aCStudy))
+ if (CheckLock(aCStudy,GetDesktop(this)))
return;
SALOMEDS::Study_var aStudy = GetDSStudy(aCStudy);
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;
}
}
OnCreateMesh()
{
_PTR(Study) aStudy = GetCStudy(GetAppStudy(this));
- if (CheckLock(aStudy))
+ if (CheckLock(aStudy,GetDesktop(this)))
return;
// Get selected SObject
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
CreatePrs3d<VISU::DeformedShape_i,VisuGUI_DeformedShapeDlg,1>(this);
}
+void
+VisuGUI::
+OnCreateScalarMapOnDeformedShape()
+{
+ CreatePrs3d<VISU::ScalarMapOnDeformedShape_i,VisuGUI_ScalarMapOnDeformedShapeDlg,1>(this);
+}
+
void
VisuGUI::
OnCreateVectors()
VisuGUI::
OnCreatePlot2dView()
{
- CheckLock(GetCStudy(GetAppStudy(this)));
+ CheckLock(GetCStudy(GetAppStudy(this)),GetDesktop(this));
GetVisuGen( this )->CreateContainer();
UpdateObjBrowser(this);
}
QApplication::restoreOverrideCursor();
}
+void
+VisuGUI::
+OnEraseAll()
+{
+ startOperation( myEraseAll );
+ if (SVTK_ViewWindow* vw = GetViewWindow(this)) {
+ vw->unHighlightAll();
+ if (vtkRenderer *aRen = vw->getRenderer()) {
+ vtkActor *anActor;
+ vtkActorCollection *anActColl = aRen->GetActors();
+ for (anActColl->InitTraversal(); (anActor = anActColl->GetNextActor()) != NULL; ) {
+ if (anActor->GetVisibility() > 0)
+ if (VISU_Actor* anVISUActor = VISU_Actor::SafeDownCast(anActor)) {
+ RemoveScalarBarPosition(this,anVISUActor->GetPrs3d());
+ anVISUActor->VisibilityOff();
+ }
+ }
+ vw->Repaint();
+ }
+ } else if (SPlot2d_Viewer* aPlot2d = GetPlot2dViewer(this, false)) {
+ aPlot2d->EraseAll();
+ }
+}
+
void
VisuGUI::
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);
}
}
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);
}
}
}
+void
+VisuGUI::
+OnEditScalarMapOnDeformedShape()
+{
+ Handle(SALOME_InteractiveObject) anIO;
+ if(VISU::Prs3d_i* aPrs3d = GetPrsToModify(this,&anIO)){
+ EditPrs3d<VISU::ScalarMapOnDeformedShape_i, VisuGUI_ScalarMapOnDeformedShapeDlg,1>(this, aPrs3d);
+ if(SVTK_ViewWindow* aViewWindow = GetViewWindow()){
+ aViewWindow->highlight(anIO, 1);
+ }
+ }
+}
void
VisuGUI::
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);
}
}
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);
}
}
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);
}
}
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);
}
}
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);
}
}
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);
}
}
}
-void
-VisuGUI::
-OnEraseAll()
-{
- startOperation( myEraseAll );
- if (SVTK_ViewWindow* vw = GetViewWindow()) {
- vw->unHighlightAll();
- if (vtkRenderer *aRen = vw->getRenderer()) {
- vtkActor *anActor;
- vtkActorCollection *anActColl = aRen->GetActors();
- 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();
- }
- }
- vw->Repaint();
- }
- } else if (SPlot2d_Viewer* aPlot2d = GetPlot2dViewer(this, false)) {
- aPlot2d->EraseAll();
- }
-}
-
void
VisuGUI::
OnMakeSurfaceframe()
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);
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);
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
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);
OnDeleteObjects()
{
_PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
- if (CheckLock(aCStudy))
+ if (CheckLock(aCStudy,GetDesktop(this)))
return;
SALOME_ListIO aList;
_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
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);
OnSaveViewParams()
{
_PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
- if (CheckLock(aCStudy))
+ if (CheckLock(aCStudy,GetDesktop(this)))
return;
SUIT_ViewManager* aViewMgr = getApp()->activeViewManager();
OnRename()
{
_PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
- if (CheckLock(aCStudy))
+ if (CheckLock(aCStudy,GetDesktop(this)))
return;
Handle(SALOME_InteractiveObject) anIO;
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);
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());
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);
VisuGUI::
OnShowAnimation()
{
+ if(!VISU::GetViewWindow(this))
+ return;
+
LightApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(this);
SALOME_ListIO aListIO;
aSelectionMgr->selectedObjects(aListIO);
OnCopyPresentation()
{
_PTR(Study) aCStudy = GetCStudy(GetAppStudy(this));
- if (CheckLock(aCStudy))
+ if (CheckLock(aCStudy,GetDesktop(this)))
return;
Handle(SALOME_InteractiveObject) anIO;
UpdateViewer(this, aSameDeformed);
}
break;
+ case VISU::TSCALARMAPONDEFORMEDSHAPE:
+ {
+ VISU::ScalarMapOnDeformedShape_i* aDefPrs = dynamic_cast<VISU::ScalarMapOnDeformedShape_i*>(aPrsObject);
+ VISU::ScalarMapOnDeformedShape_i* aSameScalarMapOnDeformed = new VISU::ScalarMapOnDeformedShape_i(aDefPrs->GetResult(),true);
+ aSameScalarMapOnDeformed->SameAs(aDefPrs);
+ UpdateViewer(this, aSameScalarMapOnDeformed);
+ }
+ break;
case VISU::TCUTPLANES:
{
VISU::CutPlanes_i* aCutPrs = dynamic_cast<VISU::CutPlanes_i*>(aPrsObject);
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"),
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()
VisuGUI::
OnArrangeActors()
{
- SVTK_ViewWindow* vw = GetViewWindow();
+ SVTK_ViewWindow* vw = GetViewWindow(this);
if (vw) {
ArrangeDlg* aDlg = new ArrangeDlg (GetDesktop(this), vw);
aDlg->exec();
tr("MEN_DEFORMED_SHAPE"), "", 0, aParent, false,
this, SLOT(OnCreateDeformedShape()));
+ aPixmap = aResourceMgr->loadPixmap("VISU",tr("ICON_SCALAR_MAP_ON_DEFORMED_SHAPE"));
+ createAction( VISU_SCALAR_MAP_ON_DEFORMED_SHAPE, tr("MEN_SCALAR_MAP_ON_DEFORMED_SHAPE"), QIconSet(aPixmap),
+ tr("MEN_SCALAR_MAP_ON_DEFORMED_SHAPE"), "", 0, aParent, false,
+ this, SLOT(OnCreateScalarMapOnDeformedShape()));
+
aPixmap = aResourceMgr->loadPixmap("VISU",tr("ICON_VECTORS"));
createAction( VISU_VECTORS, tr("MEN_VECTORS"), QIconSet(aPixmap),
tr("MEN_VECTORS"), "", 0, aParent, false,
tr("MEN_EDIT_PRS"), "", 0, aParent, false,
this, SLOT(OnEditPlot3D()));
+ createAction( VISU_EDIT_SCALARMAPONDEFORMEDSHAPE, tr("MEN_EDIT_PRS"), QIconSet(),
+ tr("MEN_EDIT_PRS"), "", 0, aParent, false,
+ this, SLOT(OnEditScalarMapOnDeformedShape()));
+
createAction( VISU_CREATE_TABLE, tr("MEN_CREATE_TABLE"), QIconSet(),
tr("MEN_CREATE_TABLE"), "", 0, aParent, false,
//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()));
createMenu( VISU_CUT_LINES, aMenuId, 10 ); // cut lines
createMenu( VISU_STREAM_LINES, aMenuId, 10 ); // stream lines
createMenu( VISU_PLOT_3D, aMenuId, 10 ); // Plot3d
+ createMenu( VISU_SCALAR_MAP_ON_DEFORMED_SHAPE, aMenuId, 10 ); // scalar map on deformed shape
aMenuId = createMenu( tr( "MEN_SELECTION" ), -1, -1, 30 );
createMenu( VISU_SELECTION_INFO, aMenuId, 10 ); // selection info
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
createTool( VISU_CUT_LINES, aToolId );
createTool( VISU_STREAM_LINES, aToolId );
createTool( VISU_PLOT_3D, aToolId );
+ createTool( VISU_SCALAR_MAP_ON_DEFORMED_SHAPE, aToolId );
aToolId = createTool(tr("TOOL_REPRESENTATION"));
createTool( VISU_POINTS, aToolId );
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
mgr->insert( action( VISU_VECTORS ), -1, -1, -1 ); // vectors
mgr->insert( action( VISU_STREAM_LINES ), -1, -1, -1 ); // stream lines
mgr->insert( action( VISU_PLOT_3D ), -1, -1, -1 ); // Plot3d
+ mgr->insert( action( VISU_SCALAR_MAP_ON_DEFORMED_SHAPE ), -1, -1, -1 ); // scalar map on deformed shape
mgr->insert( action( VISU_CREATE_PRS ), -1, -1, -1 ); // create presentation
mgr->insert( action( VISU_CREATE_MANY_PRS ), -1, -1, -1 ); // create presentations
mgr->insert( action( VISU_EDIT_VECTORS ), -1, -1, -1 );
mgr->insert( action( VISU_EDIT_STREAMLINES ), -1, -1, -1 );
mgr->insert( action( VISU_EDIT_PLOT3D ), -1, -1, -1 );
+ mgr->insert( action( VISU_EDIT_SCALARMAPONDEFORMEDSHAPE ), -1, -1, -1 );
mgr->insert( action( VISU_EDIT_CONTAINER ), -1, -1, -1 );
// rename
// Rules
QString aPrsAll ("'VISU::TSCALARMAP' 'VISU::TISOSURFACE' 'VISU::TDEFORMEDSHAPE' 'VISU::TCUTPLANES' "
- "'VISU::TCUTLINES' 'VISU::TVECTORS' 'VISU::TSTREAMLINES' 'VISU::TPLOT3D'");
+ "'VISU::TCUTLINES' 'VISU::TVECTORS' 'VISU::TSTREAMLINES' 'VISU::TPLOT3D' 'VISU::TSCALARMAPONDEFORMEDSHAPE'");
// VISU root commands
QString aRule = "client='ObjectBrowser' and selcount=1 and type='VISU::TVISUGEN'";
mgr->setRule( action( VISU_DEFORMED_SHAPE ), aRule, true );
mgr->setRule( action( VISU_VECTORS ), aRule, true );
mgr->setRule( action( VISU_STREAM_LINES ), aRule, true );
+ mgr->setRule( action( VISU_SCALAR_MAP_ON_DEFORMED_SHAPE ), aRule, true );
// display/erase commands
QString andInvisible = " and (((not isVisible) and isActiveView) or (not isActiveView))";
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;
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 );
QString aInsideType = " and $type in {'VISU::TMESH' 'VISU::TSCALARMAP' 'VISU::TDEFORMEDSHAPE'}";
QString aSurfType = " and $type in {'VISU::TMESH'}";
QString aShrinkType = " and $type in {'VISU::TMESH' 'VISU::TSCALARMAP' 'VISU::TISOSURFACE' "
- "'VISU::TDEFORMEDSHAPE' 'VISU::TCUTPLANES' 'VISU::TCUTLINES' 'VISU::TPLOT3D'}";
+ "'VISU::TDEFORMEDSHAPE' 'VISU::TCUTPLANES' 'VISU::TCUTLINES' 'VISU::TPLOT3D' 'VISU::TSCALARMAPONDEFORMEDSHAPE'}";
QString aLineType = " and $type in {'VISU::TMESH' 'VISU::TSCALARMAP' 'VISU::TISOSURFACE' 'VISU::TDEFORMEDSHAPE' "
- "'VISU::TCUTPLANES' 'VISU::TCUTLINES' 'VISU::TSTREAMLINES' 'VISU::TPLOT3D'}";
+ "'VISU::TCUTPLANES' 'VISU::TCUTLINES' 'VISU::TSTREAMLINES' 'VISU::TPLOT3D' 'VISU::TSCALARMAPONDEFORMEDSHAPE' }";
aRule = "selcount=1";
mgr->setRule( action( VISU_CLIPPING ), aRule + aPrsType, true );
"selcount=1 and type='VISU::TSCALARMAP'", true );
mgr->setRule( action( VISU_EDIT_DEFORMEDSHAPE ),
"selcount=1 and type='VISU::TDEFORMEDSHAPE'", true );
+ mgr->setRule( action( VISU_EDIT_SCALARMAPONDEFORMEDSHAPE ),
+ "selcount=1 and type='VISU::TSCALARMAPONDEFORMEDSHAPE'", true );
mgr->setRule( action( VISU_EDIT_CUTPLANES ),
"selcount=1 and type='VISU::TCUTPLANES'", true );
mgr->setRule( action( VISU_EDIT_CUTLINES ),
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'}";
// 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,
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" );
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 );
// 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" ) );
-
- // 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( "Arrange Scalar Bars" ), scalarBarGr, LightApp_Preferences::Bool, "VISU", "scalar_bars_default_position" );
- 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 );
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 );
LightApp_Preferences::Bool, "VISU", "represent_shading" );
}
-void VisuGUI::preferencesChanged( const QString&, const QString& )
+void VisuGUI::preferencesChanged( const QString& a, const QString& b)
{
+ if (a != QString("VISU")) return;
+ if (b == QString("scalar_bar_orientation")) return;
+ SUIT_ResourceMgr* aResourceMgr = VISU::GetResourceMgr();
+ float sbX1,sbY1,sbW,sbH;
+ std::string aWarning;
+ if(b == QString("scalar_bar_vertical_x") || b == QString("scalar_bar_vertical_width")){
+ sbX1 = aResourceMgr->doubleValue("VISU", "scalar_bar_vertical_x", sbX1);
+ sbW = aResourceMgr->doubleValue("VISU", "scalar_bar_vertical_width", sbW);
+ if(sbX1+sbW > 1.0){
+ aWarning = "Origin and Size Vertical: X+Width > 1\n";
+ sbX1=0.01;
+ sbW=0.05;
+ aResourceMgr->setValue("VISU", "scalar_bar_vertical_x", sbX1);
+ aResourceMgr->setValue("VISU", "scalar_bar_vertical_width", sbW);
+ }
+ }
+ else if(b == QString("scalar_bar_vertical_y") || b == QString("scalar_bar_vertical_height")){
+ sbY1 = aResourceMgr->doubleValue("VISU", "scalar_bar_vertical_y", sbY1);
+ sbH = aResourceMgr->doubleValue("VISU", "scalar_bar_vertical_height",sbH);
+ if(sbY1+sbH > 1.0){
+ aWarning = "Origin and Size Vertical: Y+Height > 1\n";
+ sbY1=0.01;
+ sbH=0.5;
+ aResourceMgr->setValue("VISU", "scalar_bar_vertical_y", sbY1);
+ aResourceMgr->setValue("VISU", "scalar_bar_vertical_height",sbH);
+ }
+ }
+ else if(b == QString("scalar_bar_horizontal_x") || b == QString("scalar_bar_horizontal_width")){
+ sbX1 = aResourceMgr->doubleValue("VISU", "scalar_bar_horizontal_x", sbX1);
+ sbW = aResourceMgr->doubleValue("VISU", "scalar_bar_horizontal_width", sbW);
+ if(sbX1+sbW > 1.0){
+ aWarning = "Origin and Size Horizontal: X+Width > 1\n";
+ sbX1=0.2;
+ sbW=0.6;
+ aResourceMgr->setValue("VISU", "scalar_bar_horizontal_x", sbX1);
+ aResourceMgr->setValue("VISU", "scalar_bar_horizontal_width", sbW);
+ }
+ }
+ else if(b == QString("scalar_bar_horizontal_y") || b == QString("scalar_bar_horizontal_height")){
+ sbY1 = aResourceMgr->doubleValue("VISU", "scalar_bar_horizontal_y", sbY1);
+ sbH = aResourceMgr->doubleValue("VISU", "scalar_bar_horizontal_height",sbH);
+ if(sbY1+sbH > 1.0){
+ aWarning = "Origin and Size Horizontal: Y+Height > 1\n";
+ sbY1=0.01;
+ sbH=0.12;
+ aResourceMgr->setValue("VISU", "scalar_bar_horizontal_y", sbY1);
+ aResourceMgr->setValue("VISU", "scalar_bar_horizontal_height",sbH);
+ }
+ }
+ if (aWarning.size() != 0){
+ aWarning += "The default values are applied instead.";
+ SUIT_MessageBox::warn1(GetDesktop(this),
+ tr("ERR_SCALARBAR_PARAMS"),
+ tr(aWarning.c_str()),
+ tr("BUT_OK") );
+ }
}
SUIT_ViewManager*
void OnCreatePlot3D();
void OnCreateManyMesh();
void OnCreatePlot2dView();
+ void OnCreateScalarMapOnDeformedShape();
void OnEditScalarMap();
void OnEditDeformedShape();
void OnEditVectors();
void OnEditStreamLines();
void OnEditPlot3D();
+ void OnEditScalarMapOnDeformedShape();
virtual void OnDisplayPrs();
virtual void OnDisplayOnlyPrs();
void OnMergeScalarBars();
void OnFreeScalarBars();
- void OnSaveViewParams();
- void OnRestoreViewParams();
+ virtual void OnSaveViewParams();
+ virtual void OnRestoreViewParams();
void OnRename();
void OnClippingPlanes();
void OnTranslatePrs();
void OnArrangeActors();
- void OnScaling();
- void OnCubeAxes();
-
protected:
virtual LightApp_Selection* createSelection() const;
#define VISU_CUT_LINES 4017
#define VISU_PLOT2D 4018
#define VISU_PLOT_3D 4019
+#define VISU_SCALAR_MAP_ON_DEFORMED_SHAPE 40110
//#define VISU_DELETE 4021
#define VISU_DELETE_OBJS 4022
#define VISU_EDIT_VECTORS 40625
#define VISU_EDIT_STREAMLINES 40626
#define VISU_EDIT_PLOT3D 40627
+#define VISU_EDIT_SCALARMAPONDEFORMEDSHAPE 40628
#define VISU_EDIT_PRS 4062
#define VISU_CREATE_TABLE 4063
--- /dev/null
+// 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 );
+
+}
--- /dev/null
+// 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
#include <vtkPlaneSource.h>
#include <vtkPolyData.h>
#include <vtkUnstructuredGrid.h>
+#include <vtkProperty.h>
// OCCT Includes
#include <gp_Dir.hxx>
+++ /dev/null
-// 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();
-}
+++ /dev/null
-// 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
// $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"
SVTK_Viewer* vtk_viewer = dynamic_cast<SVTK_Viewer*>( aViewFrame );
if( vtk_viewer )
{
- SVTK_ViewWindow* wnd = dynamic_cast<SVTK_ViewWindow*>( vtk_viewer->getViewManager()->getActiveView() );
+ SVTK_ViewWindow* wnd =
+ dynamic_cast<SVTK_ViewWindow*>( vtk_viewer->getViewManager()->getActiveView() );
if( wnd )
{
VISU::Prs3d_i* thePrs = dynamic_cast<VISU::Prs3d_i*>( VISU::GetServant( anObj ).in() );
SPlot2d_Viewer* plot_viewer = dynamic_cast<SPlot2d_Viewer*>( aViewFrame );
if( plot_viewer )
{
- Plot2d_ViewWindow* wnd = dynamic_cast<Plot2d_ViewWindow*>( plot_viewer->getViewManager()->getActiveView() );
+ Plot2d_ViewWindow* wnd =
+ dynamic_cast<Plot2d_ViewWindow*>( plot_viewer->getViewManager()->getActiveView() );
if( !wnd )
return 0;
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();
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;
// Module : VISU
// $Header$
-#include "VisuGUI.h"
+#include "VisuGUI_Module.h"
#include "CAM_Module.h"
CAM_Module*
createModule()
{
- return new VisuGUI();
+ return new VisuGUI_Module();
}
}
+++ /dev/null
-// 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();
-}
+++ /dev/null
-// 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
--- /dev/null
+// 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();
+}
--- /dev/null
+// 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
--- /dev/null
+
+//
+// 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 )
+{
+ VisuGUI::preferencesChanged(group,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 aSel, aList;
+ aSelectionMgr->selectedObjects(aSel);
+ extractContainers(aSel, 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);
+
+ LightApp_SelectionMgr* aSelectionMgr = GetSelectionMgr(this);
+ SALOME_ListIO aSel, aList;
+ aSelectionMgr->selectedObjects(aSel);
+ extractContainers(aSel, 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;
+}
--- /dev/null
+// 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
+++ /dev/null
-// 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
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();
if (!myPipeCopy)
myPipeCopy = VISU_Plot3DPL::New();
if (myPrs) {
+ myPipeCopy->SetIDMapper(myPrs->GetPL()->GetIDMapper());
myPipeCopy->ShallowCopy(myPrs->GetPL());
storeToPrsObject(myPrs);
}
// 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;
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 ) );
{
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 );
ENUM2STRING( aResStr, VISU::TSCALARMAP );
ENUM2STRING( aResStr, VISU::TISOSURFACE );
ENUM2STRING( aResStr, VISU::TDEFORMEDSHAPE );
+ ENUM2STRING( aResStr, VISU::TSCALARMAPONDEFORMEDSHAPE );
ENUM2STRING( aResStr, VISU::TCUTPLANES );
ENUM2STRING( aResStr, VISU::TCUTLINES );
ENUM2STRING( aResStr, VISU::TVECTORS );
{
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 );
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 );
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 );
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
//////////////////////////////////////////////////
class SalomeApp_Module;
+class SalomeApp_Study;
class VisuGUI_Selection : public LightApp_Selection
{
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;
private:
int nbChild( const int, const bool ) const;
+ SalomeApp_Study* GetStudy() const;
private:
SalomeApp_Module* myModule;
#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();
+ try {
+ aPrs3d->UpdateActors();
+ } catch (std::runtime_error& exc) {
+ INFOS(exc.what());
+ SUIT_MessageBox::warn1
+ (GetDesktop(theModule), QObject::tr("WRN_VISU"),
+ QObject::tr("ERR_CANT_BUILD_PRESENTATION") + ": " + QObject::tr(exc.what()),
+ QObject::tr("BUT_OK"));
+
+ aPrs3d->RemoveActors();
+ }
+ 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();
}
}
+ 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,
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"),
//---------------------------------------------------------------
- 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);
dynamic_cast<VISU::CutLines_i*>( aPrs3d ),
aDlg,
true ); // in creation mode
+ UpdateObjBrowser(theModule,true,theTimeStamp);
QApplication::restoreOverrideCursor();
delete aDlg;
} else {
}
}
}
- 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
#include "VisuGUI.h"
#include "VisuGUI_Tools.h"
-#include "VisuGUI_FontWg.h"
+
+#include "SVTK_FontWidget.h"
+
+#include "SVTK_ViewWindow.h"
#include "SVTK_ViewWindow.h"
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 ) );
// signals and slots connections ===========================================
connect( RangeGroup, SIGNAL( clicked( int ) ), this, SLOT( changeRange( int ) ) );
+ connect( myModeCombo, SIGNAL( activated( int ) ), this, SLOT( changeScalarMode( int ) ) );
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 ) ) );
void VisuGUI_ScalarBarPane::initFromPrsObject(VISU::ScalarMap_i* thePrs) {
initFromResources();
myScalarMap = thePrs;
- myModeCombo->setCurrentItem(thePrs->GetScalarMode());
setPosAndSize( thePrs->GetPosX(),
thePrs->GetPosY(),
thePrs->GetWidth(),
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);
if (myPreviewActor != 0) return;
if (myScalarMap == NULL) return;
- if (!check()) return;
+ if(!check()) return;
if ( myBusy ) return;
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();
}
/**
* 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());
updatePreview();
}
+/*!
+ Called when scalar mode is changed
+*/
+void VisuGUI_ScalarBarPane::changeScalarMode( int theMode )
+{
+ if ( myScalarMap ) {
+ if ( RBFrange->isChecked() ) {
+ float aRange[2];
+ myScalarMap->SetScalarMode(theMode);
+ myScalarMap->GetScalarMapPL()->GetSourceRange(aRange);
+ MinEdit->setText( QString::number( aRange[0] ) );
+ MaxEdit->setText( QString::number( aRange[1] ) );
+ }
+ }
+}
+
/*!
Sets default values and range mode
*/
changeRange( 0 );
}
+/*!
+ Sets default values and range mode
+*/
+void VisuGUI_ScalarBarPane::setDefaultRange(double imin, double imax){
+ Rmin = imin;
+ Rmax = imax;
+}
+
/*!
Sets size and position
*/
// font
QHBox* aHBox = new QHBox (aTitleGrp);
aHBox->setSpacing(5);
- myTitleFont = new VisuGUI_FontWg (aHBox);
+ myTitleFont = new SVTK_FontWidget (aHBox);
TopLayout->addWidget(aTitleGrp);
// font
aHBox = new QHBox (aLabelsGrp);
aHBox->setSpacing(5);
- myLabelFont = new VisuGUI_FontWg (aHBox);
+ myLabelFont = new SVTK_FontWidget (aHBox);
TopLayout->addWidget(aLabelsGrp);
// File : VisuGUI_ScalarBarDlg.h
// Author : Laurent CORNABE & Hubert ROLLAND
// Module : VISU
+// $Header$
#ifndef VISUGUI_SCALARBARDLG_H
#define VISUGUI_SCALARBARDLG_H
class QtxDblSpinBox;
class SalomeApp_Module;
-class VisuGUI_FontWg;
+class SVTK_FontWidget;
class VISU_ScalarMapAct;
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;
~VisuGUI_ScalarBarPane() {};
void setRange( double imin, double imax, /*double fmin, double fmax,*/ bool sbRange );
+ void setDefaultRange(double imin, double imax);
bool isIRange() {return RBIrange->isChecked();}
double getMin() {return MinEdit->text().toDouble();}
double getMax() {return MaxEdit->text().toDouble();}
void changeDefaults( int );
void changeRange( int );
void XYChanged( double );
+ void changeScalarMode( int );
void onTextPref();
void onPreviewCheck(bool thePreview);
void updatePreview();
--- /dev/null
+// 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_ScalarMapOnDeformedShapeDlg.cxx
+// Author : Eugeny Nikolaev
+// Module : VISU
+
+#include "VisuGUI_ScalarMapOnDeformedShapeDlg.h"
+#include "VisuGUI_Tools.h"
+#include "VISU_Result_i.hh"
+#include "VISU_ScalarMapOnDeformedShape_i.hh"
+#include "VISU_ScalarMapOnDeformedShapePL.hxx"
+#include "SalomeApp_Module.h"
+#include "LightApp_SelectionMgr.h"
+#include "SUIT_Desktop.h"
+#include "VISU_ScalarMapPL.hxx"
+
+#include "SALOME_ListIO.hxx"
+
+#include "VISU_Convertor.hxx"
+
+#include "SALOMEDSClient_AttributeComment.hxx"
+#include "SALOMEDSClient_AttributeName.hxx"
+
+#include <qlayout.h>
+#include <qtabwidget.h>
+
+using namespace std;
+
+#define MYDEBUG 0
+
+/*!
+ * Constructor
+ */
+VisuGUI_ScalarMapOnDeformedShapeDlg::VisuGUI_ScalarMapOnDeformedShapeDlg (SalomeApp_Module* theModule)
+ : QDialog(VISU::GetDesktop(theModule), "VisuGUI_ScalarMapOnDeformedShapeDlg", false,
+ WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu),
+ myVisuGUI(theModule)
+{
+ myPrs = NULL;
+ setCaption(tr("DLG_TITLE"));
+ setSizeGripEnabled(TRUE);
+
+ QVBoxLayout* TopLayout = new QVBoxLayout (this);
+ TopLayout->setSpacing(6);
+ TopLayout->setMargin(11);
+
+ QTabWidget* aTabBox = new QTabWidget (this);
+
+ // Scalar Map on Deformed shape pane
+ QVBox* aBox = new QVBox (this);
+ aBox->setMargin(11);
+ QFrame* TopGroup = new QFrame (aBox, "TopGroup");
+ TopGroup->setFrameStyle(QFrame::Box | QFrame::Sunken);
+ TopGroup->setLineWidth(1);
+ QGridLayout* TopGroupLayout = new QGridLayout (TopGroup);
+ TopGroupLayout->setAlignment(Qt::AlignTop | Qt::AlignCenter);
+ TopGroupLayout->setSpacing(6);
+ TopGroupLayout->setMargin(11);
+
+ // Scale factor
+ QLabel* ScaleLabel = new QLabel (tr("SCALE_FACTOR"), TopGroup, "ScaleLabel");
+ TopGroupLayout->addWidget(ScaleLabel, 0, 0);
+
+ ScalFact = new QtxDblSpinBox (0.0, 1.0E+38, 0.1, TopGroup);
+ ScalFact->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
+ ScalFact->setPrecision(5);
+ ScalFact->setValue(0.1);
+ TopGroupLayout->addWidget(ScalFact, 0, 1);
+
+ // Fields combo box
+ QLabel* FieldLabel = new QLabel (tr("FIELD_ITEM"), TopGroup, "FieldLabel");
+ myFieldsCombo = new QComboBox (TopGroup,"Fields");
+
+ TopGroupLayout->addWidget(FieldLabel, 1, 0);
+ TopGroupLayout->addWidget(myFieldsCombo,1,1);
+
+ // TimeStamps combo box
+ QLabel* TimeStampLabel = new QLabel (tr("TIMESTAMP_ITEM"), TopGroup, "TimeStampLabel");
+ myTimeStampsCombo = new QComboBox (TopGroup,"TimeStamp");
+
+ TopGroupLayout->addWidget(TimeStampLabel, 2, 0);
+ TopGroupLayout->addWidget(myTimeStampsCombo,2,1);
+
+ //
+ aTabBox->addTab(aBox, tr("SCALAR_MAP_ON_DEFORMED_SHAPE_TAB"));
+
+ // Scalar bar pane
+ myScalarPane = new VisuGUI_ScalarBarPane (this, false);
+ myScalarPane->setMargin(5);
+
+ aTabBox->addTab(myScalarPane, tr("SCALAR_BAR_TAB"));
+
+ // Buttons
+ QGroupBox* GroupButtons = new QGroupBox (this, "GroupButtons");
+ GroupButtons->setGeometry(QRect(10, 10, 281, 48));
+ GroupButtons->setColumnLayout(0, Qt::Vertical);
+ GroupButtons->layout()->setSpacing(0);
+ GroupButtons->layout()->setMargin(0);
+ QGridLayout* GroupButtonsLayout = new QGridLayout (GroupButtons->layout());
+ GroupButtonsLayout->setAlignment(Qt::AlignTop);
+ GroupButtonsLayout->setSpacing(6);
+ GroupButtonsLayout->setMargin(11);
+
+ QPushButton* buttonOk = new QPushButton (tr("&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);
+
+ // Add Tab box and Buttons to the top layout
+ TopLayout->addWidget(aTabBox);
+ TopLayout->addWidget(GroupButtons);
+
+ // signals and slots connections
+ connect(buttonOk, SIGNAL(clicked()), this, SLOT(accept()));
+ connect(buttonCancel, SIGNAL(clicked()), this, SLOT(reject()));
+ connect(myFieldsCombo, SIGNAL(activated(int)), this, SLOT(onFieldChanged(int)));
+ connect(myTimeStampsCombo, SIGNAL(activated(int)), this, SLOT(onTimeStampChanged(int)));
+
+}
+
+void VisuGUI_ScalarMapOnDeformedShapeDlg::initFromPrsObject (VISU::ScalarMapOnDeformedShape_i* thePrs,bool isAnim)
+{
+ myPrs = thePrs;
+
+ setFactor(thePrs->GetScale());
+ myTimeStampsCombo->setDisabled(isAnim);
+
+ QString aFieldName(thePrs->GetScalarFieldName());
+ float aIterFloat = GetFloatValueOfTimeStamp(thePrs->GetMeshName().c_str(),
+ thePrs->GetScalarFieldName().c_str(),
+ thePrs->GetScalarIteration(),
+ thePrs->GetScalarEntity());
+ QString aIteration(QString("%1").arg(aIterFloat));
+
+ if (myMeshFieldsTimes.size() == 0)
+ {
+ // find all fields and time stamps on it
+ _PTR(Study) aActiveStudy = VISU::GetCStudy(VISU::GetAppStudy(myVisuGUI));
+ LightApp_SelectionMgr* aSel = VISU::GetSelectionMgr(myVisuGUI);
+ SALOME_ListIO selected;
+ aSel->selectedObjects(selected);
+ if (selected.Extent() > 0) {
+ Handle(SALOME_InteractiveObject) aIO = selected.First();
+ if (aIO->hasEntry()) {
+ _PTR(SObject) aSObject = aActiveStudy->FindObjectID(aIO->getEntry());
+ aSObject = aSObject->GetFather();
+ aSObject = aSObject->GetFather();
+ aSObject = aSObject->GetFather();
+ aSObject = aSObject->GetFather();
+ mySelectionObj = aSObject;
+ CORBA::Object_var anObject = VISU::ClientSObjectToObject(mySelectionObj);
+ VISU::Result_var aResult;
+ if (CORBA::is_nil(anObject)) {
+ mySelectionObj = mySelectionObj->GetFather();
+ }
+ _PTR(ChildIterator) aIter = aActiveStudy->NewChildIterator(mySelectionObj);
+
+ for (aIter->InitEx(true); aIter->More(); aIter->Next()) {
+ _PTR(SObject) aChildSObj = aIter->Value();
+ CORBA::Object_var aChildObject = VISU::ClientSObjectToObject(aChildSObj);
+
+ _PTR(GenericAttribute) anAttr;
+ if (aChildSObj->FindAttribute(anAttr, "AttributeComment")) {
+ _PTR(AttributeComment) aComment (anAttr);
+ string aComm = aComment->Value();
+ QString strIn (aComm.c_str());
+ VISU::Storable::TRestoringMap aMap;
+ VISU::Storable::StrToMap(strIn,aMap);
+ bool isExist;
+ VISU::VISUType aType = (VISU::VISUType)VISU::Storable::FindValue(aMap,"myType",&isExist).toInt();
+ if (isExist) {
+ if ((aType == VISU::TTIMESTAMP)) {
+ _PTR(GenericAttribute) aNameAttr;
+ if (aChildSObj->FindAttribute(aNameAttr, "AttributeName")) {
+ _PTR(AttributeName) aName (aNameAttr);
+ VISU::Prs3d_var aPrsObj = VISU::Prs3d::_narrow(aChildObject);
+ QString aMeshName = VISU::getValue(aChildSObj,"myMeshName");
+ if(QString(thePrs->GetMeshName().c_str()) != aMeshName) continue;
+ myCurrMeshName = aMeshName;
+ QString aFieldName = VISU::getValue(aChildSObj,"myFieldName");
+ QString aTimeIter = VISU::getValue(aChildSObj,"myTimeStampId");
+ QString aEntity = VISU::getValue(aChildSObj,"myEntityId");
+ VISU::TEntity anEntity;
+ switch(aEntity.toInt()){
+ case 0: anEntity = VISU::NODE_ENTITY; break;
+ case 1: anEntity = VISU::EDGE_ENTITY; break;
+ case 2: anEntity = VISU::FACE_ENTITY; break;
+ case 3: anEntity = VISU::CELL_ENTITY; break;
+ }
+ TFT &aFieldsMap = myMeshFieldsTimes[aMeshName.latin1()];
+ TFE aKey(aFieldName.latin1(),anEntity);
+ aFieldsMap[aKey][aTimeIter.toInt()] =
+ GetFloatValueOfTimeStamp(myPrs->GetMeshName().c_str(),
+ aFieldName.latin1(),
+ aTimeIter.toInt(),
+ anEntity);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ AddAllFieldNames();
+
+ }
+ myFieldsCombo->setCurrentText(aFieldName);
+ AddAllTimes(myFieldsCombo->currentText());
+ myTimeStampsCombo->setCurrentText(aIteration);
+ SetScalarField();
+
+ myScalarPane->initFromPrsObject(myPrs);
+}
+
+int VisuGUI_ScalarMapOnDeformedShapeDlg::storeToPrsObject(VISU::ScalarMapOnDeformedShape_i* thePrs, bool theUpdateScalar) {
+
+ thePrs->SetScale(getFactor());
+
+ thePrs->SetScalarField(myPrs->GetScalarMeshName().c_str(),
+ myPrs->GetScalarFieldName().c_str(),
+ myPrs->GetScalarIteration(),
+ myPrs->GetScalarEntity());
+
+ if (theUpdateScalar) SetScalarField();
+
+ thePrs->ShowColored(true);
+
+ myScalarPane->storeToPrsObject(thePrs);
+
+ myPrs = thePrs;
+
+ return 1;
+}
+
+int VisuGUI_ScalarMapOnDeformedShapeDlg::getCurrentScalarFieldNamePos(){
+ return myFieldsCombo->currentItem();
+}
+
+QString VisuGUI_ScalarMapOnDeformedShapeDlg::getCurrentScalarFieldName(){
+ return myFieldsCombo->currentText();
+}
+
+int VisuGUI_ScalarMapOnDeformedShapeDlg::getCurrentScalarNbIterations(){
+ return myTimeStampsCombo->count();
+}
+
+VISU::TEntity VisuGUI_ScalarMapOnDeformedShapeDlg::getCurrentScalarEntity(){
+ VISU::TEntity anEntity;
+ TFT::const_iterator aIterField = myMeshFieldsTimes[myCurrMeshName].begin();
+ for(;aIterField != myMeshFieldsTimes[myCurrMeshName].end();aIterField++){
+ if (aIterField->first.first == myFieldsCombo->currentText()){
+ anEntity = aIterField->first.second;
+ break;
+ }
+ }
+ return anEntity;
+}
+
+void VisuGUI_ScalarMapOnDeformedShapeDlg::SetScalarField(){
+ SetScalarField(myTimeStampsCombo->currentItem()+1);
+}
+
+void VisuGUI_ScalarMapOnDeformedShapeDlg::SetScalarField(int theIter,QString theFieldName){
+
+ QString aFieldName;
+
+ if(theFieldName.isEmpty())
+ aFieldName = myFieldsCombo->currentText();
+ else
+ aFieldName = theFieldName;
+
+ VISU::TEntity anEntity = getCurrentScalarEntity();
+
+ myPrs->SetScalarField(myCurrMeshName.latin1(),
+ aFieldName.latin1(),
+ theIter,
+ anEntity);
+
+ myScalarPane->storeToPrsObject(myPrs);
+
+ UpdateScalarField();
+}
+
+void VisuGUI_ScalarMapOnDeformedShapeDlg::accept()
+{
+ if (myScalarPane->check()){
+ myScalarPane->deletePreview();
+ QDialog::accept();
+ }
+}
+
+void VisuGUI_ScalarMapOnDeformedShapeDlg::reject()
+{
+ myScalarPane->deletePreview();
+ QDialog::reject();
+}
+
+void VisuGUI_ScalarMapOnDeformedShapeDlg::AddAllFieldNames(){
+ TMF::const_iterator aIterMesh = myMeshFieldsTimes.begin();
+ for(;aIterMesh != myMeshFieldsTimes.end();aIterMesh++){
+ QString aMeshName = aIterMesh->first;
+ TFT::const_iterator aIterField = (aIterMesh->second).begin();
+ for(;aIterField != (aIterMesh->second).end(); aIterField++){
+ QString aFieldName = aIterField->first.first;
+ myFieldsCombo->insertItem(aFieldName);
+ }
+ }
+}
+
+void VisuGUI_ScalarMapOnDeformedShapeDlg::AddAllTimes(const QString& theFieldName){
+ TMF::const_iterator aIterMesh = myMeshFieldsTimes.begin();
+ for(;aIterMesh != myMeshFieldsTimes.end();aIterMesh++){
+ QString aMeshName = aIterMesh->first;
+ TFT::const_iterator aIterField = (aIterMesh->second).begin();
+ for(;aIterField != (aIterMesh->second).end(); aIterField++){
+ QString aFieldName = aIterField->first.first;
+ if(theFieldName != aFieldName) continue;
+ myTimeStampsCombo->clear();
+ TTL::const_iterator aTimeIter = (aIterField->second).begin();
+ for(;aTimeIter != (aIterField->second).end(); aTimeIter++)
+ myTimeStampsCombo->insertItem(QString("%1").arg(aTimeIter->second));
+ return;
+ }
+ }
+}
+
+void VisuGUI_ScalarMapOnDeformedShapeDlg::onFieldChanged(int){
+ AddAllTimes(myFieldsCombo->currentText());
+ SetScalarField();
+ UpdateScalarField();
+}
+
+void VisuGUI_ScalarMapOnDeformedShapeDlg::onTimeStampChanged(int){
+ SetScalarField();
+ UpdateScalarField();
+}
+
+void VisuGUI_ScalarMapOnDeformedShapeDlg::UpdateScalarField(){
+ myPrs->SetScale(getFactor());
+ float aRange[2];
+ myPrs->GetScalarMapOnDeformedShapePL()->Build();
+ myPrs->GetScalarMapOnDeformedShapePL()->Update();
+ myPrs->GetScalarMapOnDeformedShapePL()->GetSourceRange(aRange);
+ double aDoubleRange[2];
+ aDoubleRange[0] = double(aRange[0]);
+ aDoubleRange[1] = double(aRange[1]);
+ myScalarPane->initFromPrsObject(myPrs);
+ myScalarPane->setRange(aDoubleRange[0],aDoubleRange[1],myScalarPane->isIRange());
+}
+
+float VisuGUI_ScalarMapOnDeformedShapeDlg::GetFloatValueOfTimeStamp(const char* theMeshName,
+ const char* theFieldName,
+ const int theIter,
+ const VISU::TEntity theEntity){
+ float ret=1;
+ VISU::Result_i* theResult = myPrs->GetResult();
+ VISU::PField aField = theResult->GetInput()->GetField(theMeshName,theEntity,theFieldName);
+ if(!aField) return ret;
+ VISU::TValField& aValField = aField->myValField;
+ VISU::TValField::const_iterator aIter = aValField.find(theIter);
+ if(aIter != aValField.end()){
+ VISU::PValForTime aValForTime = aIter->second;
+ ret = float(aValForTime->myTime.first);
+ } else {
+ if(MYDEBUG){
+ cout << "Where are no aValForTime with iteration:"<<theIter<<endl;
+ cout << "\tThe possible interations is aValField.keys():";
+ VISU::TValField::const_iterator aTmp = aValField.begin();
+ for(;aTmp != aValField.end(); aTmp++)
+ cout << aTmp->first << ",";
+ cout << endl;
+ }
+ }
+ return ret;
+}
--- /dev/null
+// 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_ScalarMapOnDeformedShapeDlg.h
+// Author : Eugeny Nikolaev
+// Module : VISU
+
+#ifndef VISUGUI_SCALARMAPONDEFORMEDSHAPEDLS_H
+#define VISUGUI_SCALARMAPONDEFORMEDSHAPEDLS_H
+
+#include "VisuGUI_ScalarBarDlg.h"
+
+#include "QtxDblSpinBox.h"
+
+#include <qdialog.h>
+#include <qgroupbox.h>
+#include <qcheckbox.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+
+#include <set>
+
+class SalomeApp_Module;
+class QComboBox;
+class QString;
+
+namespace VISU{
+ class ScalarMapOnDeformedShape_i;
+}
+
+class VisuGUI_ScalarMapOnDeformedShapeDlg : public QDialog
+{
+ Q_OBJECT
+
+public:
+ VisuGUI_ScalarMapOnDeformedShapeDlg (SalomeApp_Module* theModule);
+ ~VisuGUI_ScalarMapOnDeformedShapeDlg() {};
+
+ double getFactor()
+ { return ScalFact->value(); }
+ void setFactor(double theFactor)
+ { ScalFact->setValue(theFactor); }
+
+
+ void initFromPrsObject(VISU::ScalarMapOnDeformedShape_i* thePrs,bool isAnim=false);
+ int storeToPrsObject(VISU::ScalarMapOnDeformedShape_i* thePrs,bool theUpdateScalar=true);
+
+ int getCurrentScalarFieldNamePos();
+ QString getCurrentScalarFieldName();
+ int getCurrentScalarNbIterations();
+ VISU::TEntity getCurrentScalarEntity();
+ void SetScalarField(int theIter,QString theFieldName=QString(""));
+
+protected slots:
+ void accept();
+ void reject();
+
+private slots:
+ void onFieldChanged(int i=0);
+ void onTimeStampChanged(int i=0);
+
+private:
+ QtxDblSpinBox* ScalFact;
+ VisuGUI_ScalarBarPane* myScalarPane;
+ QComboBox *myFieldsCombo;
+ QComboBox *myTimeStampsCombo;
+
+ typedef std::map<int,float> TTL; // Times map definition (iteration time, real value of time)
+ typedef std::pair<QString,VISU::TEntity> TFE; // pair field name and entity
+ typedef std::map<TFE,TTL> TFT; // Field name and enity to Times
+ typedef std::map<QString,TFT> TMF; // Mesh to fields map
+
+ TMF myMeshFieldsTimes;
+ QString myCurrMeshName;
+
+ _PTR(SObject) mySelectionObj;
+ VISU::ScalarMapOnDeformedShape_i* myPrs;
+ SalomeApp_Module* myVisuGUI;
+
+protected:
+ void UpdateScalarField();
+ void SetScalarField();
+ void AddAllFieldNames();
+ void AddAllTimes(const QString& theFieldName);
+ float GetFloatValueOfTimeStamp(const char* theMeshName,
+ const char* theFieldName,
+ const int theIteration,
+ const VISU::TEntity theEntity);
+};
+
+#endif // VISUGUI_DEFORMEDSHAPEDLS_H
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);
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;
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();
}
}
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);
}
#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;
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();
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);
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();
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;
TColStd_MapOfInteger newIndices;
newIndices.Add(anId);
aSelector->AddOrRemoveIndex(anIO, newIndices, false);
- aSVTKVW->highlight(anIO, true, true);
+ aViewWindow->highlight(anIO, true, true);
return true;
{
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)
{
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)
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:
QLabel* myDYLbl;
QLabel* myDZLbl;
+ const SalomeApp_Module* myModule;
LightApp_SelectionMgr* mySelectionMgr;
bool myFl;
};
#include "VisuGUI_VectorsDlg.h"
#include "VisuGUI_IsoSurfacesDlg.h"
#include "VisuGUI_StreamLinesDlg.h"
+#include "VisuGUI_ScalarMapOnDeformedShapeDlg.h"
+#include "VisuGUI_GaussPointsDlg.h"
#include "VISU_TimeAnimation.h"
#include "VISU_CutLines_i.hh"
#include "VISU_Vectors_i.hh"
#include "VISU_StreamLines_i.hh"
+#include "VISU_ScalarMapOnDeformedShape_i.hh"
+#include "VISU_GaussPoints_i.hh"
#include "VISU_ViewManager_i.hh"
#include "SUIT_FileDlg.h"
#include <vtkRenderer.h>
+#include <vtkMapper.h>
#include <qhbox.h>
#include <qgrid.h>
+#include <qimage.h>
#include <qlayout.h>
#include <qslider.h>
#include <qthread.h>
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();
}
-//*****************************************************************************************************
-//*****************************************************************************************************
-//*****************************************************************************************************
-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 );
aMainLayout->addWidget(aBtnBox);
}
-//************************************************************************
+//------------------------------------------------------------------------
enum PrsComboItem {
TSCALARMAP_ITEM = 0, // VISU::TSCALARMAP
TISOSURFACE_ITEM = 1, // VISU::TISOSURFACE
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
+ TSCALARMAPONDEFORMEDSHAPE_ITEM = 8 // VISU::TSCALARMAPONDEFORMEDSHAPE
};
-//************************************************************************
+//------------------------------------------------------------------------
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);;
+
+ myTypeCombo->insertItem("Scalar map on Deformed shape"); // item 8
+ myTypeId2ComboId[TSCALARMAPONDEFORMEDSHAPE_ITEM] = myComboId2TypeId.size();
+ myComboId2TypeId.push_back(TSCALARMAPONDEFORMEDSHAPE_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::TSCALARMAPONDEFORMEDSHAPE: //Scalar Map on Deformed Shape
+ myTypeCombo->setCurrentItem(TSCALARMAPONDEFORMEDSHAPE_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;
case TDEFORMEDSHAPE_ITEM: //Deformed Shape
aData.myPrsType = VISU::TDEFORMEDSHAPE;
break;
+ case TSCALARMAPONDEFORMEDSHAPE_ITEM: //Scalar Map on Deformed Shape
+ aData.myPrsType = VISU::TSCALARMAPONDEFORMEDSHAPE;
+ break;
case TVECTORS_ITEM: //Vectors
aData.myPrsType = VISU::TVECTORS;
break;
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;
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 TSCALARMAPONDEFORMEDSHAPE_ITEM: //Scalar Map on Deformed Shape
+ c.suspend();
+ {
+ typedef VisuGUI_ScalarMapOnDeformedShapeDlg DLG;
+ typedef VISU::ScalarMapOnDeformedShape_i TYPE;
+ DLG* aDlg = new DLG (myModule);
+ aDlg->initFromPrsObject(dynamic_cast<TYPE*>(aData.myPrs[0]),true);
+ if (aDlg->exec())
+ {
+ int anbFrames=aDlg->getCurrentScalarNbIterations();
+ for (int i = 0; i < aData.myNbFrames; i++){
+ TYPE* aCurrPrs_i = dynamic_cast<TYPE*>(aData.myPrs[i]);
+ if(i+1 > anbFrames)
+ aDlg->SetScalarField(anbFrames);
+ else
+ aDlg->SetScalarField(i+1);
+ aDlg->storeToPrsObject(aCurrPrs_i,false);
+ }
+ }
+ delete aDlg;
+ }
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++)
}
}
-//************************************************************************
+//------------------------------------------------------------------------
void SetupDlg::onMinValue (double theVal)
{
if (theVal > myAnimator->getMaxRange()) {
myAnimator->setAnimationRange(theVal, myAnimator->getMaxRange());
}
-//************************************************************************
+//------------------------------------------------------------------------
void SetupDlg::onMaxValue (double theVal)
{
if (theVal < myAnimator->getMinRange()) {
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 );
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()));
connect(aPropCheck, SIGNAL(toggled(bool)), myAnimator, SLOT(setProportionalSlot(bool)));
TopLayout->addMultiCellWidget(aPropCheck, 6, 6, 0, 3);
+ // Pictures saving on disk
QGroupBox* aSaveBox = new QGroupBox( "Saving", myPlayFrame );
aSaveBox->setColumnLayout(0, Qt::Horizontal );
QGridLayout* aSaveLay = new QGridLayout(aSaveBox->layout());
mySaveCheck = new QCheckBox("Save pictures to directory", aSaveBox);
aSaveLay->addMultiCellWidget(mySaveCheck, 0, 0, 0, 2);
+
+ QLabel* aFormatLbl = new QLabel("Saving format:", aSaveBox);
+ aFormatLbl->setEnabled(false);
+ connect(mySaveCheck, SIGNAL( toggled(bool)),
+ aFormatLbl, SLOT( setEnabled(bool) ));
+ aSaveLay->addMultiCellWidget(aFormatLbl, 1, 1, 0, 1);
+
+ myPicsFormat = new QComboBox(aSaveBox);
+ QStrList aDumpFormats = QImageIO::outputFormats();
+ for (unsigned int i = 0; i < aDumpFormats.count(); i++) {
+ myPicsFormat->insertItem(aDumpFormats.at(i));
+ }
+ if (aDumpFormats.find("JPEG"))
+ myPicsFormat->setCurrentItem(aDumpFormats.find("JPEG"));
+ else
+ myPicsFormat->setCurrentItem(0);
+ myPicsFormat->setEnabled(false);
+ aSaveLay->addWidget(myPicsFormat, 1, 2);
connect(mySaveCheck, SIGNAL( toggled(bool)),
- aWheel, SLOT( setDisabled(bool) ));
+ myPicsFormat, SLOT( setEnabled(bool) ));
QLabel* aPathLbl = new QLabel("Path:", aSaveBox);
aPathLbl->setEnabled(false);
connect(mySaveCheck, SIGNAL( toggled(bool)),
- aPathLbl, SLOT( setEnabled(bool) ));
- aSaveLay->addWidget(aPathLbl, 1, 0);
+ aPathLbl, SLOT( setEnabled(bool) ));
+ aSaveLay->addWidget(aPathLbl, 2, 0);
myPathEdit = new QLineEdit(aSaveBox);
myPathEdit->setReadOnly(true);
myPathEdit->setEnabled(false);
connect(mySaveCheck, SIGNAL( toggled(bool)),
- myPathEdit, SLOT( setEnabled(bool) ));
- aSaveLay->addWidget(myPathEdit, 1, 1);
+ myPathEdit, SLOT( setEnabled(bool) ));
+ aSaveLay->addWidget(myPathEdit, 2, 1);
QPushButton* aBrowseBtn = new QPushButton("Browse...", aSaveBox);
aBrowseBtn->setEnabled(false);
connect(aBrowseBtn, SIGNAL( clicked()),
this, SLOT( onBrowse() ));
mySaveCheck->setChecked(false);
- aSaveLay->addWidget(aBrowseBtn, 1, 2);
+ aSaveLay->addWidget(aBrowseBtn, 2, 2);
TopLayout->addMultiCellWidget(aSaveBox, 7, 7, 0, 3);
aMainLayout->addWidget(myPlayFrame);
+ // Animation publishing in study
QHBox* aPublishBox = new QHBox(this);
aPublishBox->setSpacing(5);
myPlayFrame->setEnabled(false);
}
-//************************************************************************
+//------------------------------------------------------------------------
VisuGUI_TimeAnimationDlg::~VisuGUI_TimeAnimationDlg()
{
delete myAnimator;
}
-//************************************************************************
+//------------------------------------------------------------------------
void VisuGUI_TimeAnimationDlg::onTypeChange (int index)
{
stopAnimation();
myPlayFrame->setEnabled(false);
}
-//************************************************************************
+//------------------------------------------------------------------------
void VisuGUI_TimeAnimationDlg::addField (_PTR(SObject) theSObject)
{
myPlayFrame->setEnabled(false);
myAnimator->addField(theSObject);
}
-//************************************************************************
+//------------------------------------------------------------------------
void VisuGUI_TimeAnimationDlg::createFrames()
{
stopAnimation();
//myPlayFrame->setEnabled(true);
}
-//************************************************************************
+//------------------------------------------------------------------------
void VisuGUI_TimeAnimationDlg::onPlayPressed()
{
if (myPlayBtn->isOn() && (!myAnimator->running())) {
myPlayBtn->setIconSet(MYpausePixmap);
- if (mySaveCheck->isChecked())
+ if (mySaveCheck->isChecked()) {
+ QStrList aDumpFormats = QImageIO::outputFormats();
+ myAnimator->setDumpFormat(aDumpFormats.at(myPicsFormat->currentItem()));
myAnimator->dumpTo(myPathEdit->text());
- else
+ } else {
myAnimator->dumpTo("");
+ }
mySetupBtn->setEnabled(false);
myGenBtn->setEnabled(false);
myAnimator->startAnimation();
}
}
-//************************************************************************
+//------------------------------------------------------------------------
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();
}
}
-//************************************************************************
+//------------------------------------------------------------------------
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();
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");
myPathEdit->setText(Qtx::addSlash(aPath));
}
-//************************************************************************
+//------------------------------------------------------------------------
void VisuGUI_TimeAnimationDlg::onStop()
{
if (isClosing) {
}
}
-//************************************************************************
+//------------------------------------------------------------------------
void VisuGUI_TimeAnimationDlg::saveToStudy()
{
myAnimator->saveAnimation();
VISU::UpdateObjBrowser(myModule, true);
}
-//************************************************************************
+//------------------------------------------------------------------------
void VisuGUI_TimeAnimationDlg::publishToStudy()
{
myAnimator->publishInStudy();
mySaveBtn->setEnabled(myAnimator->isSavedInStudy());
}
-//************************************************************************
+//------------------------------------------------------------------------
void VisuGUI_TimeAnimationDlg::restoreFromStudy(_PTR(SObject) theAnimation)
{
myAnimator->restoreFromStudy(theAnimation);
Q_OBJECT
public:
- SetupDlg(VisuGUI* theModule, VISU_TimeAnimation* theAnimator);
+ SetupDlg(QWidget* theParent,
+ VisuGUI* theModule,
+ VISU_TimeAnimation* theAnimator);
~SetupDlg() {};
private slots:
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;
protected:
virtual void closeEvent(QCloseEvent* theEvent);
+ virtual void showEvent(QShowEvent* theEvent);
void stopAnimation();
private slots:
QPushButton* myGenBtn;
QFrame* myPlayFrame;
+ SetupDlg* mySetupDlg;
_PTR(Study) myStudy;
VisuGUI* myModule;
VISU_TimeAnimation* myAnimator;
QCheckBox* mySaveCheck;
+ QComboBox* myPicsFormat;
QLineEdit* myPathEdit;
bool isClosing;
QCloseEvent* myEvent;
--- /dev/null
+// 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();
+}
--- /dev/null
+// 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();
+};
#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"
}
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;
}
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);
}
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();
}
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
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();
}
}
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;
_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;
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
/*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;
if(aActor = thePrs->CreateActor())
aView->AddActor(aActor);
}catch(std::exception& exc){
- SUIT_MessageBox::warn1(GetDesktop(theModule),
- QObject::tr("WRN_VISU"),
- QObject::tr("ERR_CANT_CREATE_ACTOR") + ": " + QObject::tr(exc.what()),
- QObject::tr("BUT_OK"));
+ SUIT_MessageBox::warn1
+ (GetDesktop(theModule), QObject::tr("WRN_VISU"),
+ QObject::tr("ERR_CANT_CREATE_ACTOR") + ": " + QObject::tr(exc.what()),
+ QObject::tr("BUT_OK"));
}
QApplication::restoreOverrideCursor();
}
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) {
+ } catch (std::runtime_error& exc) {
aResActor->VisibilityOff();
- INFOS(ex.what());
- SUIT_MessageBox::warn1(GetDesktop(theModule), QObject::tr("WRN_VISU"),
- QObject::tr("ERR_CANT_CREATE_ACTOR") + ": " + QObject::tr(ex.what()),
- QObject::tr("BUT_OK"));
+ INFOS(exc.what());
+ SUIT_MessageBox::warn1
+ (GetDesktop(theModule), QObject::tr("WRN_VISU"),
+ QObject::tr("ERR_CANT_CREATE_ACTOR") + ": " + QObject::tr(exc.what()),
+ QObject::tr("BUT_OK"));
}
} else if (theDispOnly) {
- anVISUActor->GetParent()->VisibilityOff();
+ anVISUActor->VisibilityOff();
} else {
}
} else if (theDispOnly && anActor->GetVisibility()) {
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;
}
}
}
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);
- }
- }
- } catch (std::runtime_error& ex) {
- INFOS(ex.what());
+ thePrs->UpdateActors();
+ } catch (std::runtime_error& exc) {
+ INFOS(exc.what());
QApplication::restoreOverrideCursor();
- SUIT_MessageBox::warn1 (GetDesktop(theModule), QObject::tr("WRN_VISU"),
- QObject::tr("ERR_CANT_BUILD_PRESENTATION") + ": " + QObject::tr(ex.what()),
- QObject::tr("BUT_OK"));
+ SUIT_MessageBox::warn1
+ (GetDesktop(theModule), QObject::tr("WRN_VISU"),
+ QObject::tr("ERR_CANT_BUILD_PRESENTATION") + ": " + QObject::tr(exc.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,
}
}
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);
}
}
}
theModule->getApp()->updateActions();
} catch (std::runtime_error& exc) {
INFOS(exc.what());
- SUIT_MessageBox::warn1 (GetDesktop(theModule),
- QObject::tr("WRN_VISU"),
- QObject::tr("ERR_CANT_CREATE_ACTOR") + ": " + QObject::tr(exc.what()),
- QObject::tr("BUT_OK"));
+ SUIT_MessageBox::warn1
+ (GetDesktop(theModule), QObject::tr("WRN_VISU"),
+ QObject::tr("ERR_CANT_CREATE_ACTOR") + ": " + QObject::tr(exc.what()),
+ QObject::tr("BUT_OK"));
}
}
}
case VISU::TVECTORS:
case VISU::TSTREAMLINES:
case VISU::TPLOT3D:
+ case VISU::TSCALARMAPONDEFORMEDSHAPE:
{
PortableServer::ServantBase_var aServant = VISU::GetServant(aCORBAObject);
if (aServant.in()) {
#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;
class Plot2d_ViewFrame;
class CAM_Module;
class LightApp_SelectionMgr;
+class SalomeApp_Module;
class SalomeApp_Study;
class VisuGUI;
_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();
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,
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,
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
--- /dev/null
+// 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();
+}
--- /dev/null
+// 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
--- /dev/null
+// 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)
+ }
+}
--- /dev/null
+// 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) {
+ QApplication::restoreOverrideCursor();
+ INFOS(exc.what());
+ SUIT_MessageBox::warn1
+ (GetDesktop(theModule), QObject::tr("WRN_VISU"),
+ QObject::tr("ERR_CANT_CREATE_ACTOR") + ": " + QObject::tr(exc.what()),
+ 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){
+ try {
+ thePrs->UpdateActors();
+ } catch (std::runtime_error& exc) {
+ INFOS(exc.what());
+ QApplication::restoreOverrideCursor();
+ SUIT_MessageBox::warn1
+ (GetDesktop(theModule), QObject::tr("WRN_VISU"),
+ QObject::tr("ERR_CANT_BUILD_PRESENTATION") + ": " + QObject::tr(exc.what()),
+ QObject::tr("BUT_OK"));
+
+ thePrs->RemoveActors();
+ return NULL;
+ }
+ aResActor = anActor;
+ 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
# 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 \
- VISU_DumpPython.cc
-
-LIB_MOC = VISU_TimeAnimation.h
+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 \
+ VISU_ScalarMapOnDeformedShape_i.cc
+
+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 \
- VISU_TimeAnimation.h
+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 \
+ VISU_ScalarMapOnDeformedShape_i.hh
# 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 =
if (CORBA::is_nil(aRemovableObject)) continue;
aRemovableObject->RemoveFromStudy();
-
- // Destroy
- if (theDestroySubObjects) {
- VISU::Prs3d_var aPrs3d = VISU::Prs3d::_narrow(aRemovableObject);
- if (CORBA::is_nil(aPrs3d)) continue;
- aPrs3d->Destroy();
- }
}
// asl, fix for PAL10455: Remove references to SObject
for (aChildIter->InitEx(true); aChildIter->More(); aChildIter->Next()) {
_PTR(SObject) aChildSObject = aChildIter->Value();
CORBA::Object_var aChildObj = VISU::ClientSObjectToObject(aChildSObject);
- if (CORBA::is_nil(aChildObj)) continue;
+ if (CORBA::is_nil(aChildObj))
+ continue;
VISU::RemovableObject_var aRemovableObject = VISU::RemovableObject::_narrow(aChildObj);
- if (CORBA::is_nil(aRemovableObject)) continue;
+ if (CORBA::is_nil(aRemovableObject))
+ continue;
aRemovableObject->RemoveFromStudy();
-
- // Destroy
- if (theDestroySubObjects) {
- VISU::Prs3d_var aPrs3d = VISU::Prs3d::_narrow(aRemovableObject);
- if (CORBA::is_nil(aPrs3d)) continue;
- aPrs3d->Destroy();
- }
}
// Remove the SObject itself
#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>
class SUIT_Session;
class SUIT_ResourceMgr;
-
-namespace VISU{
+namespace VISU
+{
SUIT_Session *GetSession();
SUIT_ResourceMgr *GetResourceMgr();
--- /dev/null
+// 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 "SALOME_Event.hxx"
+
+#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()
+{
+ struct TRemoveFromStudy: public SALOME_Event
+ {
+ VISU::ColoredPrs3d_i* myRemovable;
+ TRemoveFromStudy(VISU::ColoredPrs3d_i* theRemovable):
+ myRemovable(theRemovable)
+ {}
+
+ virtual
+ void
+ Execute()
+ {
+ SALOMEDS::SObject_var aSObject = myRemovable->GetSObject();
+ if(!CORBA::is_nil(aSObject.in()))
+ VISU::RemoveFromStudy(aSObject,false);
+ myRemovable->TSuperClass::RemoveFromStudy();
+ }
+ };
+
+ ProcessVoidEvent(new TRemoveFromStudy(this));
+}
+
+//---------------------------------------------------------------
+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;
+}
--- /dev/null
+// 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
}
}
-namespace{
+namespace
+{
using namespace SALOME_MED;
const int MED_NBR_GEOMETRIE_MAILLE = 15;
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;
return -1;
}
- int MEDGeom2NbNodes(int theMEDGeomType)
+
+ //---------------------------------------------------------------
+ int
+ MEDGeom2NbNodes(int theMEDGeomType)
{
switch(theMEDGeomType){
case MED_NONE: return 0;
return -1;
}
- int MEDGeomToVTK(medGeometryElement theMEDGeomType)
+
+ //---------------------------------------------------------------
+ VISU::EGeometry
+ MEDGeom2VISU(medGeometryElement theGeom)
{
- 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;
+ 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;
}
- int VTKGeom2NbNodes(int theVTKGeomType)
- {
- 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;
- }
- return -1;
- }
-
- medGeometryElement VTKGeomToMED(int theVTKGeomType)
+
+ //---------------------------------------------------------------
+ medGeometryElement
+ VTKGeomToMED(int theVTKGeomType)
{
switch(theVTKGeomType){
case VTK_VERTEX: return MED_POINT1;
return medGeometryElement(-1);
}
- VISU::TEntity MEDEntityToVTK(medEntityMesh theMEDEntity)
+ //---------------------------------------------------------------
+ VISU::TEntity
+ MEDEntityToVTK(medEntityMesh theMEDEntity)
{
switch(theMEDEntity){
case MED_NODE: return NODE_ENTITY;
return VISU::TEntity(-1);
}
- medEntityMesh VTKEntityToMED(VISU::TEntity theVTKEntity)
+ //---------------------------------------------------------------
+ medEntityMesh
+ VTKEntityToMED(VISU::TEntity theVTKEntity)
{
switch(theVTKEntity){
case NODE_ENTITY: return MED_NODE;
}
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);
return "";
}
+
+ //---------------------------------------------------------------
void
- GetCellsSize(vtkIdType& theNbCells, vtkIdType& theCellsSize,
+ GetCellsSize(vtkIdType& theNbCells,
+ vtkIdType& theCellsSize,
SALOME_MED::MESH_ptr theMEDMesh,
const VISU::TEntity& theVEntity)
{
int iGeomEnd = GetEntity2Geom(theVEntity,aGeomElems);
const medEntityMesh& aMEntity = VTKEntityToMED(theVEntity);
if(MYDEBUG) MESSAGE("GetCellsSize - theVEntity = "<<theVEntity);
- for(int iGeom = 0; iGeom < iGeomEnd; iGeom++){
- medGeometryElement aMEDGeom = aGeomElems[iGeom];
- int iNumElemEnd = theMEDMesh->getNumberOfElements(aMEntity,aMEDGeom);
- if(iNumElemEnd > 0){
- if(MYDEBUG) MESSAGE("GetCellsSize - iNumElemEnd = "<<iNumElemEnd);
- theCellsSize += iNumElemEnd*(MEDGeom2NbNodes(aMEDGeom) + 1);
- theNbCells += iNumElemEnd;
- }
+ for(int iGeom = 0; iGeom < iGeomEnd; iGeom++){
+ medGeometryElement aMEDGeom = aGeomElems[iGeom];
+ int iNumElemEnd = theMEDMesh->getNumberOfElements(aMEntity,aMEDGeom);
+ if(iNumElemEnd > 0){
+ if(MYDEBUG) MESSAGE("GetCellsSize - iNumElemEnd = "<<iNumElemEnd);
+ theCellsSize += iNumElemEnd*(MEDGeom2NbNodes(aMEDGeom) + 1);
+ theNbCells += iNumElemEnd;
}
+ }
}
+ //---------------------------------------------------------------
void
- GetCellsSize(vtkIdType& theNbCells, vtkIdType& theCellsSize,
+ GetCellsSize(vtkIdType& theNbCells,
+ vtkIdType& theCellsSize,
SALOME_MED::FAMILY_ptr theMEDFamily)
{
medGeometryElement_array_var aGeom = theMEDFamily->getTypes();
}
+ //---------------------------------------------------------------
void
GetCellsSize(VISU::PCMesh theMesh,
SALOME_MED::MESH_ptr theMEDMesh,
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;
- aMeshOnCells->myCellsSize = aCellsSize;
- }
- }
}else{
GetCellsSize(aMeshOnEntity->myNbCells,aMeshOnEntity->myCellsSize,theMEDMesh,theEntity);
}
}
-
+
+
+ //---------------------------------------------------------------
+ PCMeshOnEntity
+ InitMeshOnEntity(const VISU::PCMesh& theMesh,
+ const VISU::TEntity& theEntity,
+ const VISU::PCMeshOnEntity& theMeshOnEntity)
+ {
+ PCMeshOnEntity aMeshOnEntity;
+ TMeshOnEntityMap& aMeshOnEntityMap = theMesh->myMeshOnEntityMap;
+ TMeshOnEntityMap::const_iterator anIter = aMeshOnEntityMap.find(theEntity);
+ if(anIter == aMeshOnEntityMap.end()){
+ aMeshOnEntity.reset(new TCMeshOnEntity());
+ *aMeshOnEntity = *theMeshOnEntity;
+ aMeshOnEntity->myEntity = theEntity;
+ aMeshOnEntityMap[theEntity] = aMeshOnEntity;
+ }else
+ aMeshOnEntity = anIter->second;
+
+ GetCellsSize(theMesh,theMesh->myMesh,theEntity);
+
+ return aMeshOnEntity;
+ }
+
}
+//---------------------------------------------------------------
VISU_Convertor*
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;
aMeshOnEntity->myMeshName = aMeshName.in();
aMeshOnEntity->mySupport = aMEDSupport;
- if(aVEntity == NODE_ENTITY){
- PCMeshOnEntity aMeshOnEntity2 = aMeshOnEntityMap[CELL_ENTITY](new TCMeshOnEntity());
- *aMeshOnEntity2 = *aMeshOnEntity;
- aMeshOnEntity->myEntity = CELL_ENTITY;
- GetCellsSize(aMesh,aMEDMesh,CELL_ENTITY);
- }else{
- PCMeshOnEntity aMeshOnEntity2 = aMeshOnEntityMap[NODE_ENTITY](new TCMeshOnEntity());
- *aMeshOnEntity2 = *aMeshOnEntity;
- aMeshOnEntity->myEntity = NODE_ENTITY;
- GetCellsSize(aMesh,aMEDMesh,NODE_ENTITY);
- }
- GetCellsSize(aMesh,aMEDMesh,aVEntity);
+ if(aVEntity == NODE_ENTITY)
+ ::InitMeshOnEntity(aMesh,CELL_ENTITY,aMeshOnEntity);
+ else
+ ::InitMeshOnEntity(aMesh,NODE_ENTITY,aMeshOnEntity);
+
+ ::GetCellsSize(aMesh,aMEDMesh,aVEntity);
TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
PCField aField = aFieldMap[aFieldName.in()](new TCField());
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);
}
+//---------------------------------------------------------------
VISU_Convertor*
VISU_MEDConvertor::Build()
{
return Build(aTimeStampIterator);
}
+
namespace{
using namespace boost;
- struct TSObjectByName{
+ //---------------------------------------------------------------
+ struct TSObjectByName
+ {
std::string myName;
typedef tuple<SALOMEDS::SObject_var> TRet;
};
- struct TMeshByName{
+
+ //---------------------------------------------------------------
+ struct TMeshByName
+ {
std::string myName;
typedef tuple<SALOME_MED::MESH_var,SALOMEDS::SObject_var> TRet;
}
};
+
+ //---------------------------------------------------------------
template<typename TFun>
typename TFun::TRet
Find(SALOMEDS::SObject_ptr theStartSObj,
}
+
+//---------------------------------------------------------------
VISU_Convertor*
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);
aNbCells = aMesh->myNbPoints;
aCellsSize = 2*aMesh->myNbPoints;
}else
- GetCellsSize(aNbCells,aCellsSize,aMeshOnSupport,aVEntity);
+ ::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;
+ }
}
}
}
int aNbCells = aMeshOnEntity->myNbCells, aCellsSize = aMeshOnEntity->myCellsSize;
CORBA::Boolean anIsOnAllElements = aMEDSupport->isOnAllElements();
if(!anIsOnAllElements)
- GetCellsSize(aNbCells,aCellsSize,aMEDFamily);
+ ::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;
+ }
}
}
}
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;
}
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;
}
+//---------------------------------------------------------------
VISU_Convertor*
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;
- if(aVEntity == NODE_ENTITY){
- PCMeshOnEntity aMeshOnEntity2 = aMeshOnEntityMap[CELL_ENTITY](new TCMeshOnEntity());
- *aMeshOnEntity2 = *aMeshOnEntity;
- aMeshOnEntity->myEntity = CELL_ENTITY;
- GetCellsSize(aMesh,aMEDMesh,CELL_ENTITY);
- }else{
- PCMeshOnEntity aMeshOnEntity2 = aMeshOnEntityMap[NODE_ENTITY](new TCMeshOnEntity());
- *aMeshOnEntity2 = *aMeshOnEntity;
- aMeshOnEntity->myEntity = NODE_ENTITY;
- GetCellsSize(aMesh,aMEDMesh,NODE_ENTITY);
- }
- GetCellsSize(aMesh,aMEDMesh,aVEntity);
- TFieldMap& aFieldMap = aMeshOnEntity->myFieldMap;
- TFieldMap::iterator aFieldMapIter = aFieldMap.find(aFieldName.in());
+ 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;
+
+ if(aVEntity == NODE_ENTITY)
+ ::InitMeshOnEntity(aMesh,CELL_ENTITY,aMeshOnEntity);
+ else
+ ::InitMeshOnEntity(aMesh,NODE_ENTITY,aMeshOnEntity);
+
+ ::GetCellsSize(aMesh,aMEDMesh,aVEntity);
+
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());
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;
+ int anIsUpdated = LoadPoints(theMesh);
const TEntity& aVEntity = theMeshOnEntity->myEntity;
- PCMesh aMesh = myMeshMap[aMeshName];
- int isPointsUpdated;
- if(aVEntity == NODE_ENTITY)
- isPointsUpdated = LoadPoints(aMesh,theFamilyName);
- else
- isPointsUpdated = LoadPoints(aMesh);
- int isCellsOnEntityUpdated = LoadCellsOnEntity(aMesh,theMeshOnEntity,theFamilyName);
-
- return (isPointsUpdated || isCellsOnEntityUpdated);
+ if(aVEntity != NODE_ENTITY)
+ anIsUpdated |= LoadCellsOnEntity(theMesh,theMeshOnEntity);
+
+ return anIsUpdated;
}
+//---------------------------------------------------------------
+int
+VISU_MEDConvertor
+::LoadFamilyOnEntity(VISU::PMeshImpl theMesh,
+ VISU::PMeshOnEntityImpl theMeshOnEntity,
+ VISU::PFamilyImpl theFamily)
+{
+ int anIsUpdated = LoadPoints(theMesh);
+ const TEntity& anEntity = theMeshOnEntity->myEntity;
+ if(anEntity == NODE_ENTITY){
+ anIsUpdated |= LoadPointsOnFamily(theMesh,theFamily);
+ }else{
+ anIsUpdated |= LoadCellsOnEntity(theMesh,theMeshOnEntity);
+ anIsUpdated |= LoadCellsOnFamily(theMesh,theMeshOnEntity,theFamily);
+ }
+
+ return anIsUpdated;
+}
+
+
+//---------------------------------------------------------------
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;
+ int anIsUpdated = LoadPoints(theMesh);
+ 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);
- isCellsOnEntityUpdated += LoadCellsOnEntity(theMesh,aMeshOnEntity);
+ anIsUpdated |= LoadPointsOnFamily(theMesh,aFamily);
}else{
- isPointsUpdated += LoadPoints(theMesh);
- isCellsOnEntityUpdated += LoadCellsOnEntity(theMesh,aMeshOnEntity,aFamilyName);
+ anIsUpdated |= LoadCellsOnEntity(theMesh,aMeshOnEntity);
+ anIsUpdated |= LoadCellsOnFamily(theMesh,aMeshOnEntity,aFamily);
}
}
- return (isPointsUpdated || isCellsOnEntityUpdated);
+ return anIsUpdated;
}
+//---------------------------------------------------------------
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);
- int isCellsOnEntityUpdated = LoadCellsOnEntity(theMesh,theMeshOnEntity);
- int isFieldUpdated = LoadField(theMesh,theMeshOnEntity,theField,theValForTime);
+ int anIsUpdated = LoadPoints(theMesh);
+ const TEntity& aVEntity = theMeshOnEntity->myEntity;
+ if(aVEntity != NODE_ENTITY)
+ anIsUpdated |= LoadCellsOnEntity(theMesh,theMeshOnEntity);
+
+ anIsUpdated |= LoadField(theMesh,theMeshOnEntity,theField,theValForTime);
- return (isPointsUpdated || isCellsOnEntityUpdated || isFieldUpdated);
+ return anIsUpdated;
}
+
+//---------------------------------------------------------------
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 aSize = aNbElem;
+ aNbElem = aCellNumForType->length();
+ for(int iElem = 0; iElem < aNbElem; iElem++){
+ int anID = aCellNumForType[iElem] - 1;
+ if(0 > anID || anID >= aSize){
+ static QString aString;
+ aString.sprintf("LoadPointsOnFamily - aSize(%d) <= aCellNumForType[%d] = %d < 0",aSize,iElem,anID);
+ throw std::runtime_error(aString.latin1());
}
+ aSubMeshID.push_back(anID);
+ }
+ }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("LoadCellsOnEntity >> 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();
+ if(MYDEBUG) MESSAGE("LoadCellsOnEntity - aCounter = "<<aCounter<<"; aSize = "<<aSize);
+ 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("LoadCellsOnFamily - 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 aNbElem = aCellNumForType->length();
+ int aCounter = theMeshOnEntity->myCellsFirstIndex[aMGeom].first;
+ int aSize = theMeshOnEntity->myCellsFirstIndex[aMGeom].second;
+ TSubMeshID& aSubMeshID = theFamily->myGeom2SubMeshID[aEGeom];
+
+ if(MYDEBUG)
+ MESSAGE("LoadCellsOnFamily "<<
+ "- aMGeom = "<<aMGeom<<
+ "; aNbElem = "<<aNbElem<<
+ "; aSize = "<<aSize<<
+ "; aCounter = "<<aCounter);
+
+ for(int iElem = 0; iElem < aNbElem; iElem++){
+ int anID = aCellNumForType[iElem] - aCounter - 1;
+ if(0 > anID || anID >= aSize){
+ static QString aString;
+ aString.sprintf("LoadCellsOnFamily - aNbElem(%d) <= aCellNumForType[%d] = %d < 0 !!!",aNbElem,iElem,anID);
+ throw std::runtime_error(aString.latin1());
+ }
+ aSubMeshID.push_back(anID);
}
}
+ }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,
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];
+ }
+ }
}
}
}
}
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()){
if(MYDEBUG) MESSAGE("VISU_MEDConvertor::LoadField - There is FIELDINT = "<<anArray->length());
::ImportField(anArray,theMesh,theField,theValForTime,theMeshOnEntity);
}
+
+ anIDMapperFilter->myIsVTKDone = true;
+
return 1;
}
#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;
}
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" {
// 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>
bool theAddToStudy) :
PrsObject_i(theResult->GetStudyDocument()),
Prs3d_i(theResult,theAddToStudy),
+ ColoredPrs3d_i(theResult,theAddToStudy),
ScalarMap_i(theResult,theAddToStudy),
myCutLinesPL(NULL)
-{
-}
+{}
VISU::CutLines_i::
SALOMEDS::SObject_ptr theSObject) :
PrsObject_i(theResult->GetStudyDocument()),
Prs3d_i(theResult,theSObject),
+ ColoredPrs3d_i(theResult,theSObject),
ScalarMap_i(theResult,theSObject),
myCutLinesPL(NULL)
{
}
-void VISU::CutLines_i::SameAs(const CutLines_i* theOrigin){
- VISU::ScalarMap_i::SameAs(theOrigin);
-}
-
/*! Copy map to /a myMapCurvesInverted.
* \param theCurves - map
*/
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());
SetCurveInverted(i,false);
}
- return ScalarMap_i::Restore(theMap);
+ return this;
}
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");
static int myNbPresent;
CutLines_i();
CutLines_i(const CutLines_i&);
+
public:
+ typedef ScalarMap_i TSuperClass;
+
explicit
CutLines_i(Result_i* theResult,
bool theAddToStudy);
explicit
CutLines_i(Result_i* theResult,
SALOMEDS::SObject_ptr theSObject);
- virtual void SameAs(const CutLines_i* theOrigin);
virtual ~CutLines_i();
virtual VISU::VISUType GetType() { return VISU::TCUTLINES;};
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;
bool theAddToStudy) :
PrsObject_i(theResult->GetStudyDocument()),
Prs3d_i(theResult,theAddToStudy),
+ ColoredPrs3d_i(theResult,theAddToStudy),
ScalarMap_i(theResult,theAddToStudy),
myCutPlanesPL(NULL)
-{
-}
+{}
VISU::CutPlanes_i::
SALOMEDS::SObject_ptr theSObject) :
PrsObject_i(theResult->GetStudyDocument()),
Prs3d_i(theResult,theSObject),
+ ColoredPrs3d_i(theResult,theSObject),
ScalarMap_i(theResult,theSObject),
myCutPlanesPL(NULL)
{
}
-void VISU::CutPlanes_i::SameAs(const CutPlanes_i* theOrigin){
- VISU::ScalarMap_i::SameAs(theOrigin);
-}
-
-
VISU::Storable* VISU::CutPlanes_i::Create(const char* theMeshName, VISU::Entity theEntity,
const char* theFieldName, int theIteration)
{
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()),
if(aCondList[i].toInt() == 0)
SetPlanePosition(i,aPosList[i].toDouble());
- return ScalarMap_i::Restore(theMap);
+ return this;
}
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;
+}
+
static int myNbPresent;
CutPlanes_i();
CutPlanes_i(const CutPlanes_i&);
+
public:
+ typedef ScalarMap_i TSuperClass;
+
explicit
CutPlanes_i(Result_i* theResult,
bool theAddToStudy);
explicit
CutPlanes_i(Result_i* theResult,
SALOMEDS::SObject_ptr theSObject);
- virtual void SameAs(const CutPlanes_i* theOrigin);
virtual ~CutPlanes_i();
virtual VISU::VISUType GetType() { return VISU::TCUTPLANES;};
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();
// 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>
+#include <vtkProperty.h>
using namespace VISU;
using namespace std;
bool theAddToStudy) :
PrsObject_i(theResult->GetStudyDocument()),
Prs3d_i(theResult,theAddToStudy),
+ ColoredPrs3d_i(theResult,theAddToStudy),
ScalarMap_i(theResult,theAddToStudy),
myDeformedShapePL(NULL)
{
SALOMEDS::SObject_ptr theSObject) :
PrsObject_i(theResult->GetStudyDocument()),
Prs3d_i(theResult,theSObject),
+ ColoredPrs3d_i(theResult,theSObject),
ScalarMap_i(theResult,theSObject),
myDeformedShapePL(NULL)
{
}
-void VISU::DeformedShape_i::SameAs(const DeformedShape_i* theOrigin)
+void VISU::DeformedShape_i::SameAs(const Prs3d_i* theOrigin)
{
- DeformedShape_i* aDefShape = const_cast<DeformedShape_i*>(theOrigin);
- VISU::ScalarMap_i::SameAs(theOrigin);
+ TSuperClass::SameAs(theOrigin);
- 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());
+ }
}
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;
}
}
-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;
}
static int myNbPresent;
DeformedShape_i();
DeformedShape_i(const DeformedShape_i&);
+
public:
+ typedef ScalarMap_i TSuperClass;
+
explicit
DeformedShape_i(Result_i* theResult,
bool theAddToStudy);
explicit
DeformedShape_i(Result_i* theResult,
SALOMEDS::SObject_ptr theSObject);
- virtual void SameAs(const DeformedShape_i* theOrigin);
+ virtual void SameAs(const Prs3d_i* theOrigin);
virtual ~DeformedShape_i();
virtual VISU::VISUType GetType() { return VISU::TDEFORMEDSHAPE;};
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) ;
};
--- /dev/null
+// 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>
+#include <vtkProperty.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();
+}
--- /dev/null
+// 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
+
#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"
+#include "VISU_ScalarMapOnDeformedShape_i.hh"
#include "VISU_Actor.h"
static QFileInfo aFileInfo;
#ifdef _DEBUG_
-static int MYDEBUG = 1;
+static int MYDEBUG = 0;
+//#define _DEXCEPT_
#else
static int MYDEBUG = 0;
#endif
return aVISU_Gen->_this();
}
-namespace VISU{
+namespace VISU
+{
static string VisuTmpDir;
static CORBA::Boolean myIsMultiFile;
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>));
Storable::Registry(Table_i::myComment.c_str(),&(Table_i::Restore));
Storable::Registry(Curve_i::myComment.c_str(),&(Curve_i::Restore));
Storable::Registry(Container_i::myComment.c_str(),&(Container_i::Restore));
+ Storable::Registry(ScalarMapOnDeformedShape_i::myComment.c_str(),&(Restore<ScalarMapOnDeformedShape_i>));
}
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");
}
Mutex mt(myMutex);
SALOMEDS::Study_var aStudy = theComponent->GetStudy();
SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder();
- const char* aDir = isMultiFile? theURL: SALOMEDS_Tool::GetTmpDir().c_str();
- TCollection_AsciiString aTmpDir(const_cast<char*>(aDir));
+ string aDir = isMultiFile ? theURL : SALOMEDS_Tool::GetTmpDir();
+ TCollection_AsciiString aTmpDir (const_cast<char*>(aDir.c_str()));
VisuTmpDir = aTmpDir.ToCString();
SALOMEDS::ListOfFileNames_var aSeq =
SALOMEDS_Tool::PutStreamToFiles(theStream, aTmpDir.ToCString(),isMultiFile);
bool isMultiFile)
{
Mutex mt(myMutex);
- const char* aDir = isMultiFile? theURL: SALOMEDS_Tool::GetTmpDir().c_str();
- TCollection_AsciiString aTmpDir(const_cast<char*>(aDir));
+ string aDir = isMultiFile ? theURL : SALOMEDS_Tool::GetTmpDir();
+ TCollection_AsciiString aTmpDir (const_cast<char*>(aDir.c_str()));
if(MYDEBUG) MESSAGE("VISU_Gen_i::Save - "<<aTmpDir);
int aCounter = 0;
TColStd_SequenceOfAsciiString aFileNames;
bool isMultiFile)
{
Mutex mt(myMutex);
- const char* aDir = isMultiFile? theURL: SALOMEDS_Tool::GetTmpDir().c_str();
- TCollection_AsciiString aTmpDir(const_cast<char*>(aDir));
+ string aDir = isMultiFile ? theURL : SALOMEDS_Tool::GetTmpDir();
+ TCollection_AsciiString aTmpDir (const_cast<char*>(aDir.c_str()));
if(MYDEBUG) MESSAGE("VISU_Gen_i::Save - "<<aTmpDir);
int aCounter = 0;
TColStd_SequenceOfAsciiString aFileNames;
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;
{
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)");
}
}
}
}
+ 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();
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,
return Prs3dOnField<VISU::DeformedShape_i>(theResult,theMeshName,theEntity,theFieldName,theIteration)._retn();
}
+ ScalarMapOnDeformedShape_ptr VISU_Gen_i::ScalarMapOnDeformedShapeOnField(Result_ptr theResult,
+ const char* theMeshName,
+ VISU::Entity theEntity,
+ const char* theFieldName,
+ CORBA::Double theIteration)
+ {
+ return Prs3dOnField<VISU::ScalarMapOnDeformedShape_i>(theResult,theMeshName,theEntity,theFieldName,theIteration)._retn();
+ }
+
Vectors_ptr VISU_Gen_i::VectorsOnField(Result_ptr theResult,
const char* theMeshName,
VISU::Entity theEntity,
void VISU_Gen_i::DeleteResult (Result_ptr theResult)
{
- class TEvent: public SALOME_Event {
- Result_ptr myResult;
- public:
- TEvent(Result_ptr theResult): myResult(theResult) {}
- virtual void Execute()
- {
- if (Result_i* aResult = dynamic_cast<Result_i*>(GetServant(myResult).in())) {
- SALOMEDS::SObject_var aSObject = aResult->GetSObject();
- VISU::RemoveFromStudy(aSObject,
- false, // not only attribute
- true); // destroy sub-objects
-
- //jfa tmp:if (QAD_Desktop* aDesktop = QAD_Application::getDesktop())
- //jfa tmp: if (QAD_Study* aStudy = aDesktop->findStudy(aStudyDocument))
- //jfa tmp: aStudy->updateObjBrowser(); //update Object browser
- }
-
- myResult->Destroy();
- }
- };
-
- if (myStudyDocument->GetProperties()->IsLocked())
- return;
- Mutex mt(myMutex); // jfa ???
-
- ProcessVoidEvent(new TEvent(theResult));
+ theResult->RemoveFromStudy();
}
void VISU_Gen_i::DeletePrs3d (Prs3d_ptr thePrs3d)
{
- class TEvent: public SALOME_Event {
- Prs3d_ptr myPrs3d;
- public:
- TEvent(Prs3d_ptr thePrs3d): myPrs3d(thePrs3d) {}
- virtual void Execute() {
- myPrs3d->RemoveFromStudy();
-
- //update Object browser
- /*jfa tmp:if (QAD_Desktop* aDesktop = QAD_Application::getDesktop()) {
- if (Prs3d_i* aPrs3d = dynamic_cast<Prs3d_i*>(GetServant(myPrs3d).in())) {
- SALOMEDS::SObject_var aSObject = aPrs3d->GetSObject();
- SALOMEDS::Study_var aStudyDocument = aSObject->GetStudy();
- if (QAD_Study* aStudy = aDesktop->findStudy(aStudyDocument))
- aStudy->updateObjBrowser();
- }
- }*/
-
- myPrs3d->Destroy();
- }
- };
-
- if (myStudyDocument->GetProperties()->IsLocked())
- return;
- Mutex mt(myMutex); // jfa ???
-
- ProcessVoidEvent(new TEvent(thePrs3d));
+ thePrs3d->RemoveFromStudy();
}
void VISU_Gen_i::Close(SALOMEDS::SComponent_ptr theComponent){
#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
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;
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
+ ScalarMapOnDeformedShape_ptr
+ ScalarMapOnDeformedShapeOnField(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
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
--- /dev/null
+// 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;
+}
bool theAddToStudy) :
PrsObject_i(theResult->GetStudyDocument()),
Prs3d_i(theResult,theAddToStudy),
+ ColoredPrs3d_i(theResult,theAddToStudy),
ScalarMap_i(theResult,theAddToStudy),
myIsoSurfacesPL(NULL)
-{
-}
+{}
VISU::IsoSurfaces_i::
SALOMEDS::SObject_ptr theSObject) :
PrsObject_i(theResult->GetStudyDocument()),
Prs3d_i(theResult,theSObject),
+ ColoredPrs3d_i(theResult,theSObject),
ScalarMap_i(theResult,theSObject),
myIsoSurfacesPL(NULL)
{
}
-void VISU::IsoSurfaces_i::SameAs(const IsoSurfaces_i* theOrigin) {
- VISU::ScalarMap_i::SameAs(theOrigin);
-}
-
-
VISU::Storable* VISU::IsoSurfaces_i::Create(const char* theMeshName, VISU::Entity theEntity,
const char* theFieldName, int theIteration)
{
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){
}
+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);
}
static int myNbPresent;
IsoSurfaces_i();
IsoSurfaces_i(const IsoSurfaces_i&);
+
public:
+ typedef ScalarMap_i TSuperClass;
+
explicit
IsoSurfaces_i(Result_i* theResult,
bool theAddToStudy);
explicit
IsoSurfaces_i(Result_i* theResult,
SALOMEDS::SObject_ptr theSObject);
- virtual void SameAs(const IsoSurfaces_i* theOrigin);
virtual ~IsoSurfaces_i();
virtual VISU::VISUType GetType() { return VISU::TISOSURFACE;};
virtual Storable* Restore(const Storable::TRestoringMap& theMap);
+ virtual
+ VISU_Actor*
+ CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
virtual void SetMapScale(double theMapScale = 1.0);
};
}
#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"
+
+#include "SALOME_Event.hxx"
using namespace VISU;
using namespace std;
}
+//---------------------------------------------------------------
void VISU::Mesh_i::RemoveFromStudy()
{
- VISU::DeleteActors(this);
- VISU::RemoveFromStudy(mySObject);
+ struct TRemoveFromStudy: public SALOME_Event
+ {
+ VISU::Mesh_i* myRemovable;
+ TRemoveFromStudy(VISU::Mesh_i* theRemovable):
+ myRemovable(theRemovable)
+ {}
+
+ virtual
+ void
+ Execute()
+ {
+ VISU::RemoveFromStudy(myRemovable->GetSObject());
+ myRemovable->TSuperClass::RemoveFromStudy();
+ }
+ };
+
+ ProcessVoidEvent(new TRemoveFromStudy(this));
}
-void VISU::Mesh_i::SameAs (const Mesh_i* theOrigin)
+void VISU::Mesh_i::SameAs (const Prs3d_i* theOrigin)
{
return; // "SameAs" command for mesh is not valid in current architecture
}
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;
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();
class VISU_MeshPL;
-namespace VISU{
+namespace VISU
+{
class Mesh_i : public virtual POA_VISU::Mesh,
public virtual Prs3d_i
{
static int myNbPresent;
Mesh_i();
Mesh_i(const Mesh_i&);
+
public:
+ typedef Prs3d_i TSuperClass;
+
explicit
Mesh_i(Result_i* theResult);
+
explicit
Mesh_i(Result_i* theResult,
SALOMEDS::SObject_ptr theSObject);
- virtual void SameAs(const Mesh_i* theOrigin);
+
+ virtual void SameAs(const Prs3d_i* theOrigin);
virtual ~Mesh_i();
virtual void RemoveFromStudy();
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)
-{
-}
-
-void VISU::Plot3D_i::SameAs (const Plot3D_i* theOrigin)
-{
- VISU::ScalarMap_i::SameAs(theOrigin);
-}
+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)
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());
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)
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);
Plot3D_i(const Plot3D_i&);
public:
+ typedef ScalarMap_i TSuperClass;
+
explicit
Plot3D_i (Result_i* theResult, bool theAddToStudy = true);
explicit
Plot3D_i (Result_i* theResult, SALOMEDS::SObject_ptr theSObject);
- virtual void SameAs (const Plot3D_i* theOrigin);
virtual ~Plot3D_i();
virtual VISU::VISUType GetType() { return VISU::TPLOT3D; };
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();
// 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 "SALOME_Event.hxx"
+
+#include <vtkActorCollection.h>
+#include <vtkDataSet.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());
}
}
-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();
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(...){
}
}
-VISU_PipeLine* VISU::Prs3d_i::GetPipeLine(){
+
+//----------------------------------------------------------------------------
+void
+VISU::Prs3d_i
+::CheckDataSet()
+{
+ 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 are no visible elements");
+ if (aDataSet->GetLength() > eps)
+ throw std::runtime_error("Diagonal of the actor is too large !!!");
+}
+
+void
+VISU::Prs3d_i
+::RemoveFromStudy()
+{
+ struct TRemoveFromStudy: public SALOME_Event
+ {
+ VISU::Prs3d_i* myRemovable;
+ typedef boost::signal0<void> TRemoveFromStudySignal;
+ const TRemoveFromStudySignal& myRemoveFromStudySignal;
+
+ TRemoveFromStudy(VISU::Prs3d_i* theRemovable,
+ const TRemoveFromStudySignal& theRemoveFromStudySignal):
+ myRemovable(theRemovable),
+ myRemoveFromStudySignal(theRemoveFromStudySignal)
+ {}
+
+ virtual
+ void
+ Execute()
+ {
+ myRemoveFromStudySignal();
+ myRemovable->Destroy();
+ }
+ };
+
+ ProcessVoidEvent(new TRemoveFromStudy(this,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();
+ CheckDataSet();
+
+ 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();
+ CheckDataSet();
+ 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;
+}
+
#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
{
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);
- void CreateActor(VISU_Actor* theActor, const Handle(SALOME_InteractiveObject)& theIO = NULL);
- virtual VISU_PipeLine* GetPipeLine();
+ virtual
+ ~Prs3d_i();
- public:
- virtual void Update() ;
- VISU_PipeLine* GetPL();
+ //----------------------------------------------------------------------------
+ //! 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;
- vtkUnstructuredGrid* GetInput();
+ //! Get corresponding SALOMEDS::SObject
+ virtual
+ SALOMEDS::SObject_var
+ GetSObject();
- void GetBounds(float aBounds[6]);
+ const std::string&
+ GetMeshName() const;
- void SetOffset(const float* theOffsets);
- virtual void SetOffset(float theDx, float theDy, float theDz);
+ //----------------------------------------------------------------------------
+ //! To update is internal state
+ virtual
+ void
+ Update();
- void GetOffset(float* theOffsets);
- virtual void GetOffset(float& theDx, float& theDy, float& theDz);
+ //! To remove the instance from study
+ virtual
+ void
+ RemoveFromStudy();
- virtual const char* GetComment() const = 0;
- virtual QString GenerateName() = 0;
+ //----------------------------------------------------------------------------
+ //! Get corresponding VISU_PipeLine
+ VISU_PipeLine*
+ GetPL();
- virtual Storable* Restore(const Storable::TRestoringMap& theMap);
+ //! Get input of the VISU_PipeLine
+ vtkUnstructuredGrid*
+ GetInput();
- virtual void ToStream(std::ostringstream& theStr);
+ //----------------------------------------------------------------------------
+ //! To define a way to create VTK representation of the instance
+ virtual
+ VISU_Actor*
+ CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL) = 0;
- virtual VISU_Actor* CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL) = 0;
+ //! To unregister the pointed actor
+ virtual
+ void
+ RemoveActor(VISU_Actor* theActor);
- virtual void UpdateActor(VISU_Actor* theActor) ;
+ //! To unregister all actors of the instance
+ virtual
+ void
+ RemoveActors();
- Result_i* GetResult() const { return myResult;}
- virtual SALOMEDS::SObject_var GetSObject();
- const std::string& GetMeshName() const { return myMeshName; }
+ //! 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();
- vtkIdType GetNumberOfClippingPlanes() const;
- bool AddClippingPlane(vtkPlane* thePlane);
- vtkPlane* GetClippingPlane(vtkIdType theID) const;
+ void
+ RemoveAllClippingPlanes();
+
+ bool
+ AddClippingPlane(vtkPlane* thePlane);
+
+ vtkIdType
+ GetNumberOfClippingPlanes() const;
+
+ vtkPlane*
+ GetClippingPlane(vtkIdType theID) const;
+
+ void
+ SetPlaneParam(float theDir[3], float theDist, vtkPlane* thePlane);
+
+ //----------------------------------------------------------------------------
+ void
+ GetBounds(float aBounds[6]);
+
+ void
+ SetOffset(const float* theOffsets);
+
+ virtual
+ void
+ SetOffset(float theDx, float theDy, float theDz);
+
+ void
+ GetOffset(float* theOffsets);
+
+ virtual
+ void
+ GetOffset(float& theDx, float& theDy, float& theDz);
+
+ //----------------------------------------------------------------------------
+ protected:
+ void
+ CreateActor(VISU_Actor* theActor,
+ const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
+ virtual
+ VISU_PipeLine*
+ GetPipeLine();
+
+ //! To check dataset validity, throws std::exception if not valid
+ virtual
+ void
+ CheckDataSet();
+
+ bool myAddToStudy;
+ float myOffset[3];
+ Result_i *myResult;
+ VISU_PipeLine *myPipeLine;
+ SALOMEDS::SObject_var mySObject;
+ std::string myMeshName;
+
+ 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){
}
return NULL;
}
+ //----------------------------------------------------------------------------
}
#endif
#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>
#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()
{
+ struct TRemoveFromStudy: public SALOME_Event
+ {
+ VISU::Result_i* myRemovable;
+ TRemoveFromStudy(VISU::Result_i* theRemovable):
+ myRemovable(theRemovable)
+ {}
+
+ virtual
+ void
+ Execute()
+ {
+ VISU::RemoveFromStudy(myRemovable->GetSObject(),false);
+ myRemovable->Destroy();
+ }
+ };
+
// Remove the result with all presentations and other possible sub-objects
- VISU::RemoveFromStudy(mySObject,false);
+ ProcessVoidEvent(new TRemoveFromStudy(this));
}
+//---------------------------------------------------------------
+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();
}
+//---------------------------------------------------------------
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();
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(...){
}
}
}
- 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();
+ if(Build(SALOMEDS::SObject::_nil(),theIsAtOnce)){
+ if(theIsBuildAll)
+ return BuildAll();
+ return true;
+ }
- 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);
+ return false;
+}
- mySObject = myStudyDocument->FindObjectID(aResultEntry.c_str());
- if (mySObject->_is_nil())
- throw std::runtime_error("Build - There is no SObject for the Result !!!");
- if (!CORBA::is_nil(theSObject)) {
- CORBA::String_var aString = theSObject->GetID();
- CreateReference(myStudyDocument, aResultEntry, aString.in());
- }
+//---------------------------------------------------------------
+VISU::Storable*
+VISU::Result_i
+::Build(SALOMEDS::SObject_ptr theSObject,
+ CORBA::Boolean theIsAtOnce)
+{
+ if(!myInput)
+ return NULL;
- 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);
+ 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)
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(...){
}
+//---------------------------------------------------------------
VISU::Storable*
VISU::Result_i::
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(...){
return NULL;
}
+
+//---------------------------------------------------------------
VISU::Storable*
VISU::Result_i::
Create(SALOME_MED::FIELD_ptr theField)
if(myInput == NULL)
return NULL;
+ myInput->Build();
+
string aCompDataType = "MED";
myFileInfo.setFile(aCompDataType.c_str());
myInitFileName = aCompDataType;
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(...){
}
+//---------------------------------------------------------------
VISU::Storable*
VISU::Result_i::
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);
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());
}
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(),
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();
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) {
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;
}
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;
// 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 );
#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
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();
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:
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();
--- /dev/null
+// 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_ScalarMapOnDeformedShape_i.cc
+// Author : Eugeny Nikolaev
+// Module : VISU
+
+#include "VISU_ScalarMapOnDeformedShapePL.hxx"
+#include "VISU_Result_i.hh"
+#include "VISU_ScalarMap_i.hh"
+#include "VISU_ScalarMapOnDeformedShape_i.hh"
+#include "VISU_Convertor.hxx"
+#include "VISU_ScalarMapAct.h"
+
+#include <vtkUnstructuredGrid.h>
+#include <vtkProperty.h>
+#include <vtkMapper.h>
+
+using namespace VISU;
+using namespace std;
+
+#ifdef _DEBUG_
+static int MYDEBUG = 0;
+#else
+static int MYDEBUG = 0;
+#endif
+
+static int INCMEMORY = 4+12;
+
+int VISU::ScalarMapOnDeformedShape_i::IsPossible(Result_i* theResult, const char* theMeshName, VISU::Entity theEntity,
+ const char* theFieldName, int theIteration, int isMemoryCheck)
+{
+ bool aResult = false;
+ try{
+ aResult = VISU::ScalarMap_i::IsPossible(theResult,theMeshName,theEntity,theFieldName,theIteration,false);
+ if(isMemoryCheck && aResult){
+ const VISU::PField aField = theResult->GetInput()->GetField(theMeshName,(VISU::TEntity)theEntity,theFieldName);
+ if(aField->myNbComp <= 1)
+ return false;
+ float aSize = INCMEMORY*
+ theResult->GetInput()->GetTimeStampSize(theMeshName,(VISU::TEntity)theEntity,theFieldName,theIteration);
+ aResult = VISU_PipeLine::CheckAvailableMemory(aSize);
+ MESSAGE("ScalarMapOnDeformedShape_i::IsPossible - CheckAvailableMemory = "<<float(aSize)<<"; aResult = "<<aResult);
+ }
+ }catch(std::exception& exc){
+ INFOS("Follow exception was occured :\n"<<exc.what());
+ }catch(...){
+ INFOS("Unknown exception was occured!");
+ }
+ return aResult;
+}
+
+int VISU::ScalarMapOnDeformedShape_i::myNbPresent = 0;
+QString VISU::ScalarMapOnDeformedShape_i::GenerateName() { return VISU::GenerateName("ScalarDef.Shape",myNbPresent++);}
+
+const string VISU::ScalarMapOnDeformedShape_i::myComment = "SCALARMAPONDEFORMEDSHAPE";
+const char* VISU::ScalarMapOnDeformedShape_i::GetComment() const { return myComment.c_str();}
+
+VISU::ScalarMapOnDeformedShape_i::
+ScalarMapOnDeformedShape_i(Result_i* theResult,
+ bool theAddToStudy) :
+ PrsObject_i(theResult->GetStudyDocument()),
+ Prs3d_i(theResult,theAddToStudy),
+ ColoredPrs3d_i(theResult,theAddToStudy),
+ ScalarMap_i(theResult,theAddToStudy),
+ myScalarMapOnDeformedShapePL(NULL),
+ myScalarIteration(1)
+{
+}
+
+VISU::ScalarMapOnDeformedShape_i::
+ScalarMapOnDeformedShape_i(Result_i* theResult,
+ SALOMEDS::SObject_ptr theSObject) :
+ PrsObject_i(theResult->GetStudyDocument()),
+ Prs3d_i(theResult,theSObject),
+ ColoredPrs3d_i(theResult,theSObject),
+ ScalarMap_i(theResult,theSObject),
+ myScalarMapOnDeformedShapePL(NULL),
+ myScalarIteration(1)
+{
+}
+
+VISU::Storable* VISU::ScalarMapOnDeformedShape_i::Create(const char* theMeshName, VISU::Entity theEntity,
+ const char* theFieldName, int theIteration)
+{
+ myIsColored = true;
+ myColor.R = myColor.G = myColor.B = 0.5;
+ VISU::Storable* aRes = TSuperClass::Create(theMeshName,theEntity,theFieldName,theIteration);
+ SetScalarFieldName(theFieldName);
+ SetScalarIteration(theIteration);
+ SetScalarMeshName(theMeshName);
+ int anEntity = theEntity;
+ SetScalarEntity(VISU::TEntity(anEntity));
+ SetScalarField(myScalarMeshName.c_str(),myScalarFieldName.c_str(),myScalarIteration,myScalarEntity);
+ return aRes;
+}
+
+VISU::Storable* VISU::ScalarMapOnDeformedShape_i::Restore(const Storable::TRestoringMap& theMap)
+{
+ TSuperClass::Restore(theMap);
+
+ SetScalarFieldName(VISU::Storable::FindValue(theMap,"myScalarFieldName"));
+ SetScalarMeshName(VISU::Storable::FindValue(theMap,"myScalarMeshName"));
+ SetScalarIteration(VISU::Storable::FindValue(theMap,"myScalarIteration").toInt());
+ SetScalarEntity(VISU::TEntity(VISU::Storable::FindValue(theMap,"myScalarEntity").toInt()));
+ SetScalarField(GetScalarMeshName().c_str(),
+ GetScalarFieldName().c_str(),
+ GetScalarIteration(),
+ GetScalarEntity());
+
+ 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 this;
+}
+
+void VISU::ScalarMapOnDeformedShape_i::ToStream(std::ostringstream& theStr)
+{
+ TSuperClass::ToStream(theStr);
+
+ Storable::DataToStream( theStr, "myScalarFieldName", myScalarFieldName.c_str());
+ Storable::DataToStream( theStr, "myScalarMeshName", myScalarMeshName.c_str());
+ Storable::DataToStream( theStr, "myScalarIteration", myScalarIteration);
+ Storable::DataToStream( theStr, "myScalarEntity", int(myScalarEntity));
+
+ Storable::DataToStream( theStr, "myFactor", GetScale() );
+ Storable::DataToStream( theStr, "myIsColored", myIsColored );
+ Storable::DataToStream( theStr, "myColor.R", myColor.R );
+ Storable::DataToStream( theStr, "myColor.G", myColor.G );
+ Storable::DataToStream( theStr, "myColor.B", myColor.B );
+
+}
+
+VISU::ScalarMapOnDeformedShape_i::~ScalarMapOnDeformedShape_i(){
+ if(MYDEBUG) MESSAGE("ScalarMapOnDeformedShape_i::~ScalarMapOnDeformedShape_i()");
+}
+
+void
+VISU::ScalarMapOnDeformedShape_i
+::SameAs(const Prs3d_i* theOrigin)
+{
+ TSuperClass::SameAs(theOrigin);
+
+ if(const ScalarMapOnDeformedShape_i* aPrs3d = dynamic_cast<const ScalarMapOnDeformedShape_i*>(theOrigin)){
+ ScalarMapOnDeformedShape_i* anOrigin = const_cast<ScalarMapOnDeformedShape_i*>(aPrs3d);
+
+ // increment the scalar iteration for using in VISU_TimeAnimation class implementation.
+ this->SetScalarField(anOrigin->GetScalarMeshName().c_str(),
+ anOrigin->GetScalarFieldName().c_str(),
+ anOrigin->GetScalarIteration() + 1,
+ anOrigin->GetScalarEntity());
+ Update();
+ }
+}
+
+void VISU::ScalarMapOnDeformedShape_i::SetScale(CORBA::Double theScale) {
+ myScalarMapOnDeformedShapePL->SetScale(theScale);
+}
+
+CORBA::Double VISU::ScalarMapOnDeformedShape_i::GetScale(){
+ return myScalarMapOnDeformedShapePL->GetScale();
+}
+
+void VISU::ScalarMapOnDeformedShape_i::SetSourceRange(CORBA::Double theMinRange,CORBA::Double theMaxRange){
+ float aRange[2];
+ aRange[0] = float(theMinRange);
+ aRange[1] = float(theMaxRange);
+ myScalarMapOnDeformedShapePL->SetScalarRange(aRange);
+}
+
+CORBA::Double VISU::ScalarMapOnDeformedShape_i::GetSourceRangeMin(){
+ float aRange[2];
+ myScalarMapOnDeformedShapePL->GetSourceRange(aRange);
+ return aRange[0];
+}
+
+CORBA::Double VISU::ScalarMapOnDeformedShape_i::GetSourceRangeMax(){
+ float aRange[2];
+ myScalarMapOnDeformedShapePL->GetSourceRange(aRange);
+ return aRange[1];
+}
+
+void VISU::ScalarMapOnDeformedShape_i::DoHook()
+{
+ if(!myPipeLine)
+ myPipeLine = VISU_ScalarMapOnDeformedShapePL::New();
+
+ myScalarMapOnDeformedShapePL = dynamic_cast<VISU_ScalarMapOnDeformedShapePL*>(myPipeLine);
+ myPipeLine->GetMapper()->SetScalarVisibility(IsColored());
+
+ TSuperClass::DoHook();
+}
+
+VISU_Actor* VISU::ScalarMapOnDeformedShape_i::CreateActor(const Handle(SALOME_InteractiveObject)& theIO)
+{
+ VISU_Actor* anActor = TSuperClass::CreateActor(theIO);
+ anActor->SetRepresentation(2);
+ anActor->GetProperty()->SetColor(myColor.R,myColor.G,myColor.B);
+ anActor->SetVTKMapping(false);
+ return anActor;
+}
+
+
+void VISU::ScalarMapOnDeformedShape_i::UpdateActor(VISU_Actor* theActor) {
+ if(VISU_ScalarMapAct* anActor = dynamic_cast<VISU_ScalarMapAct*>(theActor)){
+ if(IsColored()){
+ anActor->SetBarVisibility(true);
+ myPipeLine->GetMapper()->SetScalarVisibility(1);
+ }else{
+ anActor->SetBarVisibility(false);
+ myPipeLine->GetMapper()->SetScalarVisibility(0);
+ anActor->GetProperty()->SetColor(myColor.R,myColor.G,myColor.B);
+ }
+ TSuperClass::UpdateActor(theActor);
+ }
+}
+
+void VISU::ScalarMapOnDeformedShape_i::SetScalarField(const char* theMeshName,
+ const char* theFieldName,
+ const int theIteration,
+ const VISU::TEntity theEntity)
+{
+ if (myScalarMapOnDeformedShapePL){
+ myField = myResult->GetInput()->GetField(theMeshName,theEntity,theFieldName);
+ TVTKOutput* aOut = myResult->GetInput()->GetTimeStampOnMesh(theMeshName,
+ theEntity,
+ theFieldName,
+ theIteration)->GetVTKOutput();
+ myScalarMapOnDeformedShapePL->SetScalars(aOut);
+ }
+ this->SetScalarMeshName(theMeshName);
+ this->SetScalarFieldName(theFieldName);
+ this->SetScalarIteration(theIteration);
+ this->SetScalarEntity(theEntity);
+}
+
+
+void VISU::ScalarMapOnDeformedShape_i::SetScalarMeshName(const char* theName){
+ myScalarMeshName = theName;
+}
+std::string VISU::ScalarMapOnDeformedShape_i::GetScalarMeshName(){
+ return myScalarMeshName;
+}
+
+void VISU::ScalarMapOnDeformedShape_i::SetScalarFieldName(const char* theName){
+ myScalarFieldName = theName;
+}
+std::string VISU::ScalarMapOnDeformedShape_i::GetScalarFieldName(){
+ return myScalarFieldName;
+}
+
+void VISU::ScalarMapOnDeformedShape_i::SetScalarIteration(const int theValue){
+ myScalarIteration = theValue;
+}
+int VISU::ScalarMapOnDeformedShape_i::GetScalarIteration(){
+ return myScalarIteration;
+}
+
+void VISU::ScalarMapOnDeformedShape_i::SetScalarEntity(const VISU::TEntity theValue){
+ myScalarEntity = theValue;
+}
+VISU::TEntity VISU::ScalarMapOnDeformedShape_i::GetScalarEntity(){
+ return myScalarEntity;
+}
--- /dev/null
+// 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_ScalarMapOnDeformedShape_i.hh
+// Author: Eugeny Nikolaev
+// Module : VISU
+
+#ifndef VISU_ScalarMapOnDeformedShape_i_HeaderFile
+#define VISU_ScalarMapOnDeformedShape_i_HeaderFile
+
+#include "VISU_ScalarMap_i.hh"
+
+class VISU_ScalarMapOnDeformedShapePL;
+
+namespace VISU{
+
+ //! Class of Scalar Map on Deformed Shape presentation.
+ class ScalarMapOnDeformedShape_i : public virtual POA_VISU::ScalarMapOnDeformedShape,
+ public virtual ScalarMap_i
+ {
+ static int myNbPresent;
+ ScalarMapOnDeformedShape_i();
+ ScalarMapOnDeformedShape_i(const ScalarMapOnDeformedShape_i&);
+
+ public:
+
+ typedef ScalarMap_i TSuperClass;
+
+ explicit
+ ScalarMapOnDeformedShape_i(Result_i* theResult,
+ bool theAddToStudy);
+ explicit
+ ScalarMapOnDeformedShape_i(Result_i* theResult,
+ SALOMEDS::SObject_ptr theSObject);
+
+ virtual ~ScalarMapOnDeformedShape_i();
+
+ virtual VISU::VISUType GetType()
+ {
+ return VISU::TSCALARMAPONDEFORMEDSHAPE;
+ };
+
+ typedef VISU::ScalarMapOnDeformedShape TInterface;
+
+ virtual void SetScale(CORBA::Double theScale);
+ virtual CORBA::Double GetScale();
+
+ virtual CORBA::Boolean IsColored() { return myIsColored; }
+ virtual void ShowColored(CORBA::Boolean theColored) { myIsColored = theColored; }
+
+ virtual SALOMEDS::Color GetColor() { return myColor;}
+ virtual void SetColor(const SALOMEDS::Color& theColor) { myColor = theColor;}
+
+ virtual void SetSourceRange(CORBA::Double theMinRange,CORBA::Double theMaxRange);
+ virtual CORBA::Double GetSourceRangeMin();
+ virtual CORBA::Double GetSourceRangeMax();
+
+ virtual
+ void
+ SameAs(const Prs3d_i* theOrigin);
+
+ VISU_ScalarMapOnDeformedShapePL* GetScalarMapOnDeformedShapePL(){ return myScalarMapOnDeformedShapePL;}
+
+ protected:
+
+ virtual
+ void
+ DoHook();
+
+ VISU_ScalarMapOnDeformedShapePL *myScalarMapOnDeformedShapePL;
+ SALOMEDS::Color myColor;
+ bool myIsColored;
+ std::string myScalarMeshName;
+ std::string myScalarFieldName;
+ VISU::TEntity myScalarEntity;
+ int myScalarIteration;
+
+ public:
+ static int IsPossible(Result_i* theResult, const char* theMeshName, VISU::Entity theEntity,
+ const char* theFieldName, int theIteration, int isMemoryCheck = true);
+ virtual Storable* Create(const char* theMeshName, VISU::Entity theEntity,
+ const char* theFieldName, int theIteration);
+
+ virtual void ToStream(std::ostringstream& theStr);
+
+ virtual Storable* Restore(const Storable::TRestoringMap& theMap);
+
+ static Storable* Restore(SALOMEDS::SObject_ptr theSObject,
+ const std::string& thePrefix, const Storable::TRestoringMap& theMap);
+
+ static const std::string myComment;
+ virtual const char* GetComment() const;
+ virtual QString GenerateName();
+
+ virtual VISU_Actor* CreateActor(const Handle(SALOME_InteractiveObject)& theIO = NULL);
+
+ virtual void UpdateActor(VISU_Actor* theActor) ;
+
+ virtual void SetScalarField(const char* theMeshName,
+ const char* theFieldName,
+ const int theIteration,
+ const VISU::TEntity theEntity);
+
+ virtual void SetScalarFieldName(const char* theName);
+ virtual std::string GetScalarFieldName();
+ virtual void SetScalarIteration(const int theValue);
+ virtual int GetScalarIteration();
+ virtual void SetScalarMeshName(const char* theName);
+ virtual std::string GetScalarMeshName();
+ virtual void SetScalarEntity(const VISU::TEntity theValue);
+ virtual VISU::TEntity GetScalarEntity();
+ };
+}
+#endif
#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"
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*
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 ScalarMap_i* theOrigin)
+//----------------------------------------------------------------------------
+void
+VISU::ScalarMap_i
+::SameAs(const Prs3d_i* theOrigin)
{
- ScalarMap_i* aScalarMap = const_cast<ScalarMap_i*>(theOrigin);
- DoHook();
- VISU::Prs3d_i::SameAs(aScalarMap);
- 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);
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();
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());
aScalarBar->Modified();
}
-}
-
-
-void VISU::ScalarMap_i::SetSourceRange(){
- myScalarMapPL->SetSourceRange();
- myIsFixedRange = false;
+ TSuperClass::UpdateActor(theActor);
}
#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 ScalarMap_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);
};
}
// 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>
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){
bool theAddToStudy) :
PrsObject_i(theResult->GetStudyDocument()),
Prs3d_i(theResult,theAddToStudy),
+ ColoredPrs3d_i(theResult,theAddToStudy),
ScalarMap_i(theResult,theAddToStudy),
DeformedShape_i(theResult,theAddToStudy),
myStreamLinesPL(NULL),
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),
}
-void VISU::StreamLines_i::SameAs(const StreamLines_i* theOrigin) {
- StreamLines_i* aStreamLines = const_cast<StreamLines_i*>(theOrigin);
- VISU::DeformedShape_i::SameAs(theOrigin);
- SetSource(aStreamLines->GetSource());
+void VISU::StreamLines_i::SameAs(const Prs3d_i* theOrigin)
+{
+ TSuperClass::SameAs(theOrigin);
+
+ if(const StreamLines_i* aPrs3d = dynamic_cast<const StreamLines_i*>(theOrigin)) {
+ StreamLines_i* anOrigin = const_cast<StreamLines_i*>(aPrs3d);
+ SetSource(anOrigin->GetSource());
+ }
}
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();
VISU::StreamLines::Direction(aDirection));
mySourceEntry = VISU::Storable::FindValue(theMap,"mySourceEntry").latin1();
- return aStorable;
+ return this;
}
}
-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;
}
static int myNbPresent;
StreamLines_i();
StreamLines_i(const StreamLines_i&);
+
public:
+ typedef DeformedShape_i TSuperClass;
+
explicit
StreamLines_i(Result_i* theResult,
bool theAddToStudy);
explicit
StreamLines_i(Result_i* theResult,
SALOMEDS::SObject_ptr theSObject);
- virtual void SameAs(const StreamLines_i* theOriginal);
+ virtual void SameAs(const Prs3d_i* theOriginal);
virtual ~StreamLines_i();
virtual VISU::VISUType GetType() { return VISU::TSTREAMLINES;}
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);
#include "VISU_Result_i.hh"
#include "VISU_ViewManager_i.hh"
+#include "SALOME_Event.hxx"
#include "SPlot2d_Curve.h"
#include <memory>
#include <qfileinfo.h>
#include <qstring.h>
+#include <qregexp.h>
#include <qfile.h>
using namespace std;
return "";
}
+//---------------------------------------------------------------
void VISU::Table_i::RemoveFromStudy()
{
+ struct TRemoveFromStudy: public SALOME_Event
+ {
+ VISU::Table_i* myRemovable;
+ TRemoveFromStudy(VISU::Table_i* theRemovable):
+ myRemovable(theRemovable)
+ {}
+
+ virtual
+ void
+ Execute()
+ {
+ VISU::RemoveFromStudy(myRemovable->GetSObject(),false);
+ }
+ };
+
// Remove the table with all curves
- VISU::RemoveFromStudy(mySObj,false);
+ ProcessVoidEvent(new TRemoveFromStudy(this));
}
//----------------------------------------------------------------
void VISU::Curve_i::RemoveFromStudy()
{
- VISU::DeleteActors(this);
- VISU::RemoveFromStudy(mySObj,false);
+ struct TRemoveFromStudy: public SALOME_Event
+ {
+ VISU::Curve_i* myRemovable;
+ TRemoveFromStudy(VISU::Curve_i* theRemovable):
+ myRemovable(theRemovable)
+ {}
+
+ virtual
+ void
+ Execute()
+ {
+ VISU::DeleteActors(myRemovable);
+ VISU::RemoveFromStudy(myRemovable->GetSObject(),false);
+ }
+ };
+
+ ProcessVoidEvent(new TRemoveFromStudy(this));
}
SALOMEDS::SObject_var VISU::Curve_i::GetSObject()
void VISU::Container_i::RemoveFromStudy()
{
- VISU::RemoveFromStudy(mySObj,false);
+ struct TRemoveFromStudy: public SALOME_Event
+ {
+ VISU::Container_i* myRemovable;
+ TRemoveFromStudy(VISU::Container_i* theRemovable):
+ myRemovable(theRemovable)
+ {}
+
+ virtual
+ void
+ Execute()
+ {
+ VISU::RemoveFromStudy(myRemovable->GetSObject(),false);
+ }
+ };
+
+ ProcessVoidEvent(new TRemoveFromStudy(this));
+}
+
+SALOMEDS::SObject_var VISU::Container_i::GetSObject()
+{
+ return mySObj;
}
//-------------------------------------------------------------
aRow.myTitle = cmt.latin1();
if(MYDEBUG) cout << "......ROW TITLE is: " << cmt.latin1() << endl;
}
- QStringList aValList = QStringList::split( " ", data );
+ QString datar1 = data.replace(QRegExp("\t"), " ");
+ QStringList aValList = QStringList::split( " ", datar1 );
for ( int i = 0; i < aValList.count(); i++ ) {
if ( aValList[i].stripWhiteSpace() != "" ) {
TValue aVal = aValList[i].stripWhiteSpace().latin1();
virtual void RemoveFromStudy();
+ virtual SALOMEDS::SObject_var GetSObject();
+
protected:
Storable* Build(int theRestoring);
#include "VISU_ScalarMap_i.hh"
#include "VISU_IsoSurfaces_i.hh"
#include "VISU_DeformedShape_i.hh"
+#include "VISU_ScalarMapOnDeformedShape_i.hh"
#include "VISU_CutPlanes_i.hh"
#include "VISU_Plot3D_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 "SALOMEDSClient_AttributeName.hxx"
#include <qpixmap.h>
+#include <qimage.h>
+#include <qstrlist.h>
using namespace std;
-//************************************************************************
+//------------------------------------------------------------------------
VISU_TimeAnimation::VISU_TimeAnimation (_PTR(Study) theStudy,
VISU::View3D_ptr theView3D)
{
}
-//************************************************************************
+//------------------------------------------------------------------------
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;
}
}
-//************************************************************************
+//------------------------------------------------------------------------
void VISU_TimeAnimation::addField (SALOMEDS::SObject_ptr theField)
{
SALOMEDS::SObject_var theFieldDup = SALOMEDS::SObject::_duplicate(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();
}
-//************************************************************************
+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;
+ case VISU::TSCALARMAPONDEFORMEDSHAPE: // Scalar map on deformed shape
+ GeneratePresentations<ScalarMapOnDeformedShape_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");
return aNoError;
}
-//************************************************************************
+//------------------------------------------------------------------------
void VISU_TimeAnimation::clearView() {
if (!myView) {
MESSAGE("Viewer is not defined for animation");
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();
VISU::RepaintView(myView);
}
-//************************************************************************
+//------------------------------------------------------------------------
void VISU_TimeAnimation::stopAnimation() {
myIsActive = false;
}
-//************************************************************************
+//------------------------------------------------------------------------
void VISU_TimeAnimation::startAnimation() {
if (!myIsActive) {
myIsActive = true;
}
}
-//************************************************************************
+//------------------------------------------------------------------------
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;
}
}
-//************************************************************************
+//------------------------------------------------------------------------
void VISU_TimeAnimation::prevFrame() {
- if( !myView )
+ if (!myView) {
+ MESSAGE("Viewer is not defined for animation");
return;
+ }
stopAnimation();
if (myFrame > 0) {
int i;
}
}
-//************************************************************************
+//------------------------------------------------------------------------
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++)
}
}
-//************************************************************************
+//------------------------------------------------------------------------
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++)
}
-//************************************************************************
+//------------------------------------------------------------------------
// 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();
}
-//************************************************************************
-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) {
}
myView->Repaint(false);
+ k = 1;
+ if (myProportional) {
+ switch (myFrame) {
+ case 0:
+ break;
+ case 1:
+ if (myFieldsLst[0].myNbFrames > 2)
+ k = (myFieldsLst[0].myTiming[myFrame+1] -
+ myFieldsLst[0].myTiming[myFrame]) / aOneVal;
+ break;
+ default:
+ if (myFrame < (myFieldsLst[0].myNbFrames - 1))
+ k = (myFieldsLst[0].myTiming[myFrame+1] -
+ myFieldsLst[0].myTiming[myFrame]) / aOneVal;
+ }
+ }
+ int delay = (int)(1000. * k / mySpeed);
+ if (delay < 1 && isDumping) {
+ // We must unlock mutex for some time before grabbing to allow view updating
+ delay = 1;
+ }
+ qApp->unlock();
+ msleep(delay);
+ qApp->lock();
+
if (isDumping) {
// We must unlock mutex for some time before grabbing to allow view updating
qApp->unlock();
while ((aPos = aName.find(".")) > -1 )
aName.replace(aPos, 1, "_");
aFile += aName;
- aFile += ".jpeg";
- px.save(aFile, "JPEG");
- } else {
- k = 1;
- if (myProportional) {
- switch (myFrame) {
- case 0:
- break;
- case 1:
- if (myFieldsLst[0].myNbFrames > 2)
- k = (myFieldsLst[0].myTiming[myFrame+1] -
- myFieldsLst[0].myTiming[myFrame]) / aOneVal;
- break;
- default:
- if (myFrame < (myFieldsLst[0].myNbFrames - 1))
- k = (myFieldsLst[0].myTiming[myFrame+1] -
- myFieldsLst[0].myTiming[myFrame]) / aOneVal;
- }
- }
- int delay = (int)(1000. * k / mySpeed);
- qApp->unlock();
- msleep(delay);
- qApp->lock();
+ aFile += ".";
+ aFile += myDumpFormat.lower();
+ px.save(aFile, myDumpFormat);
}
if (!myIsActive) break;
QThread::exit();
}
-//************************************************************************
+//------------------------------------------------------------------------
VISU::Result_i* VISU_TimeAnimation::createPresent (_PTR(SObject) theField)
{
_PTR(SObject) aSObj = theField->GetFather();
return dynamic_cast<VISU::Result_i*>(VISU::GetServant(anObject).in());
}
-//************************************************************************
+//------------------------------------------------------------------------
VISU::Storable::TRestoringMap VISU_TimeAnimation::getMapOfValue (_PTR(SObject) theSObject)
{
VISU::Storable::TRestoringMap aMap;
return aMap;
}
-//************************************************************************
+//------------------------------------------------------------------------
double VISU_TimeAnimation::getTimeValue (_PTR(SObject) theTimeStamp)
{
_PTR(GenericAttribute) anAttr;
return -1.0;
}
-//************************************************************************
+//------------------------------------------------------------------------
void VISU_TimeAnimation::setSpeed(CORBA::Long theSpeed)
{
mySpeed = (theSpeed<1)? 1 : theSpeed;
}
+std::string VISU_TimeAnimation::setDumpFormat(const char* theFormat)
+{
+ myDumpFormat = theFormat;
+ QStrList aDumpFormats = QImageIO::outputFormats();
+ if (myDumpFormat.isEmpty() || aDumpFormats.find(theFormat) < 0) {
+ if (aDumpFormats.find("JPEG"))
+ myDumpFormat = "JPEG";
+ else
+ myDumpFormat = aDumpFormats.at(0);
+ }
+ return myDumpFormat.latin1();
+}
+
//************************************************************************
int VISU_TimeAnimation::myNBAnimations = 0;
QString VISU_TimeAnimation::GenerateName()
return VISU::GenerateName("Animation", myNBAnimations++);
}
-//************************************************************************
+//------------------------------------------------------------------------
std::string GetPresentationComment (VISU::VISUType thePrsType)
{
std::string aPrsCmt;
case VISU::TSTREAMLINES:
aPrsCmt = VISU::StreamLines_i::myComment;
break;
+ case VISU::TGAUSSPOINTS:
+ aPrsCmt = VISU::GaussPoints_i::myComment;
+ break;
+ case VISU::TSCALARMAPONDEFORMEDSHAPE:
+ aPrsCmt = VISU::ScalarMapOnDeformedShape_i::myComment;
+ break;
default:
aPrsCmt = "Unknown presentation";
break;
return aPrsCmt;
}
-//************************************************************************
+//------------------------------------------------------------------------
SALOMEDS::SObject_ptr VISU_TimeAnimation::publishInStudy()
{
if (myStudy->GetProperties()->IsLocked())
return VISU::GetSObject(aAnimSObject);
}
-//************************************************************************
+//------------------------------------------------------------------------
void VISU_TimeAnimation::saveAnimation()
{
if (myStudy->GetProperties()->IsLocked()) return;
aStudyBuilder->CommitCommand();
}
-//************************************************************************
+//------------------------------------------------------------------------
void VISU_TimeAnimation::restoreFromStudy(SALOMEDS::SObject_ptr theField)
{
_PTR(SObject) aAnimSObject = VISU::GetClientSObject(theField, myStudy);
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 if (strName == VISU::ScalarMapOnDeformedShape_i::myComment.c_str())
+ aData.myPrsType = VISU::TSCALARMAPONDEFORMEDSHAPE;
else
continue;
generatePresentations(getNbFields()-1);
aData.myPrs[0]->GetOffset(aData.myOffset);
for (int i = 1; i < aData.myNbFrames; i++) {
//jfa 03.08.2005:aData.myPrs[i]->SameAs(aData.myPrs[0]);
- aData.myPrs[i]->SameAsParams(aData.myPrs[0]);//jfa 03.08.2005
+ //enk 06.02.2006:aData.myPrs[i]->SameAsParams(aData.myPrs[0]);//jfa 03.08.2005
+ aData.myPrs[i]->SameAsParams(aData.myPrs[i-1]);//enk 06.02.2006: initializing from previous presentation
}
}
string aStr = aAnimSObject->GetID();
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);
myAnim->dumpTo(thePath);
}
+char* VISU_TimeAnimation_i::setDumpFormat (const char* theFormat)
+{
+ string aDumpFormat = myAnim->setDumpFormat(theFormat);
+ return CORBA::string_dup(aDumpFormat.c_str());
+}
+
CORBA::Boolean VISU_TimeAnimation_i::isCycling()
{
return myAnim->isCycling();
namespace VISU{
class Result_i;
- class ScalarMap_i;
+ class ColoredPrs3d_i;
}
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];
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; }
CORBA::Boolean isRangeDefined() { return !((myMaxVal==0) && (myMinVal == myMaxVal)); }
void dumpTo(const char* thePath) { myDumpPath = thePath; }
+ std::string setDumpFormat(const char* theFormat);
QString getLastErrorMsg() { return myLastError; }
double myMaxVal, myMinVal;
double myTimeMin, myTimeMax;
QString myDumpPath;
+ QString myDumpFormat;
SVTK_ViewWindow* myView;
QString myAnimEntry;
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);
virtual CORBA::Boolean isRangeDefined();
virtual void dumpTo(const char* thePath);
+ virtual char* setDumpFormat(const char* theFormat);
virtual CORBA::Boolean isCycling();
// 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"
+
+#include <vtkProperty.h>
using namespace VISU;
using namespace std;
bool theAddToStudy) :
PrsObject_i(theResult->GetStudyDocument()),
Prs3d_i(theResult,theAddToStudy),
+ ColoredPrs3d_i(theResult,theAddToStudy),
ScalarMap_i(theResult,theAddToStudy),
DeformedShape_i(theResult,theAddToStudy),
myVectorsPL(NULL)
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)
}
-void VISU::Vectors_i::SameAs(const VISU::Vectors_i* theOrigin) {
- Vectors_i* aVectors = const_cast<Vectors_i*>(theOrigin);
- VISU::DeformedShape_i::SameAs(theOrigin);
+void VISU::Vectors_i::SameAs(const VISU::Prs3d_i* theOrigin)
+{
+ TSuperClass::SameAs(theOrigin);
- 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());
+ }
}
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;
}
VISU_PipeLine* VISU::Vectors_i::GetPipeLine(){
VISU_PipeLine* aPipeLine = VISU_VectorsPL::New();
+ aPipeLine->SetIDMapper(myPipeLine->GetIDMapper());
aPipeLine->ShallowCopy(myPipeLine);
aPipeLine->Update();
return aPipeLine;
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());
static int myNbPresent;
Vectors_i();
Vectors_i(const Vectors_i&);
+
public:
+ typedef DeformedShape_i TSuperClass;
+
explicit
Vectors_i(Result_i* theResult,
bool theAddToStudy);
explicit
Vectors_i(Result_i* theResult,
SALOMEDS::SObject_ptr theSObject);
- virtual void SameAs(const Vectors_i* theOrigin);
+ virtual void SameAs(const Prs3d_i* theOrigin);
virtual ~Vectors_i();
virtual VISU::VISUType GetType() { return VISU::TVECTORS;};
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) ;
};
#include "SUIT_ViewWindow.h"
#include "SUIT_ViewManager.h"
-#include "SVTK_RenderWindow.h"
#include "SVTK_ViewWindow.h"
#include "SVTK_ViewModel.h"
#include "SPlot2d_Curve.h"
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())
{}
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();
}
};
{
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)
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
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;
}
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();
}
}
}
#include "SVTK_ViewWindow.h"
#include "SVTK_ViewModel.h"
-#include "SVTK_RenderWindow.h"
#include "SPlot2d_ViewModel.h"
#include "Plot2d_ViewFrame.h"
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)
const double myYMax;
Plot2d_ViewFrame* myView;
};
-
+
void XYPlot_i::FitXRange(const CORBA::Double xMin,const CORBA::Double xMax)
{
const CORBA::Long mode = 1;
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;
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)
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;
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]);
}
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@
: 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);
print "SObjectToObject - IOR = ''"
return anObj;
-def CreatePrsForMed(theVisu, theFileName, thePrsTypeList, thePictureDir, thePictureExt) :
+def CreatePrsForMed(theVisu, theFileName, thePrsTypeList, thePictureDir, thePictureExt, theIsAutoDelete = 0) :
# try:
global myLifeCycleCORBA
print "lcc.FindOrLoadComponent...",
aResult = theVisu.ImportMed(aMedSObj)
if aResult is None : raise RuntimeError, "Error"
else : print "OK"
- aVISUObjList.append(aResult)
- aVISUObjList.extend(CreatePrsForResult(theVisu, aResult, myView, thePrsTypeList, thePictureDir, thePictureExt))
+
+ aVISUObjList.extend(CreatePrsForResult(theVisu, aResult, myView, thePrsTypeList, thePictureDir, thePictureExt, theIsAutoDelete))
+ if theIsAutoDelete :
+ aResult.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aResult)
aFolderIter = myLocalStudy.NewChildIterator(aMedSObj.GetFather());
while aFolderIter.More() :
aResult = theVisu.ImportMed(aFieldSObj)
if aResult is None : raise RuntimeError, "Error"
else : print "OK"
- aVISUObjList.append(aResult)
- aVISUObjList.extend(CreatePrsForResult(theVisu, aResult, myView, thePrsTypeList, thePictureDir, thePictureExt))
+
+ aVISUObjList.extend(CreatePrsForResult(theVisu, aResult, myView, thePrsTypeList, thePictureDir, thePictureExt, theIsAutoDelete))
+ if theIsAutoDelete :
+ aResult.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aResult)
aTimeStampIter = myLocalStudy.NewChildIterator(aFieldSObj);
if aTimeStampIter.More() :
aResult = theVisu.ImportMedField(aMedField)
if aResult is None : raise RuntimeError, "Error"
else : print "OK"
- aVISUObjList.append(aResult)
- aVISUObjList.extend(CreatePrsForResult(theVisu, aResult, myView, thePrsTypeList, thePictureDir, thePictureExt))
+
+ aVISUObjList.extend(CreatePrsForResult(theVisu, aResult, myView, thePrsTypeList, thePictureDir, thePictureExt, theIsAutoDelete))
+ if theIsAutoDelete :
+ aResult.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aResult)
return aVISUObjList
# except Exception, e:
# print str(e)
-def CreatePrsForFile(theVisu, theFileName, thePrsTypeList, thePictureDir, thePictureExt) :
+def CreatePrsForFile(theVisu, theFileName, thePrsTypeList, thePictureDir, thePictureExt, theIsAutoDelete = 0) :
# try:
aVISUObjList = [myLocalStudy, myViewManager, myView] = CreateStudyForMed(theVisu, theFileName)
if aResult is None : raise RuntimeError, "Error"
else : print "OK"
- aVISUObjList.extend(CreatePrsForResult(theVisu, aResult, myView, thePrsTypeList, thePictureDir, thePictureExt))
-
+ aVISUObjList.extend(CreatePrsForResult(theVisu, aResult, myView, thePrsTypeList, thePictureDir, thePictureExt, theIsAutoDelete))
+
+ if theIsAutoDelete :
+ aResult.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aResult)
+
return aVISUObjList
# except Exception, e:
# print str(e)
-def CreatePrsForResult(theVisu, theResult, theView, thePrsTypeList, thePictureDir, thePictureExt) :
- aVISUObjList = []
+def CreatePrsForResult(theVisu, theResult, theView, thePrsTypeList, thePictureDir, thePictureExt, theIsAutoDelete = 0) :
+ aVISUObjList = None
+ if theIsAutoDelete is not None :
+ aVISUObjList = []
+ pass
+
print "CreatePrsForResult - myLocalStudy.FindObjectIOR...",
myLocalStudy = theVisu.GetCurrentStudy()
+
aSObj = myLocalStudy.FindObjectIOR(theResult.GetID())
if aSObj is None : raise RuntimeError, "Error"
else : print "OK"
aPictureName = thePictureDir + aMeshNamePic + "_" + anEntityId + "." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName);
theView.SavePicture(aPictureName)
- aVISUObjList.append(aMesh)
+ if theIsAutoDelete :
+ aMesh.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aMesh)
anFamilyIter = myLocalStudy.NewChildIterator(anEntitySObj);
while anFamilyIter.More() :
aPictureName = thePictureDir + aMeshNamePic + "_" + anEntityId + "_" + anFamilyName + "." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName);
theView.SavePicture(aPictureName)
- aVISUObjList.append(aMesh)
+ if theIsAutoDelete :
+ aMesh.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aMesh)
if aFolderName == 'Groups' :
aGroupIter = myLocalStudy.NewChildIterator(aFolderSObj);
aPictureName = thePictureDir + aMeshNamePic + "_" + aGroupName + "." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName);
theView.SavePicture(aPictureName)
- aVISUObjList.append(aMesh)
+ if theIsAutoDelete :
+ aMesh.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aMesh)
if aFolderName == 'Fields' :
aFieldIter = myLocalStudy.NewChildIterator(aFolderSObj);
aPictureName = thePictureDir + aMeshNamePic + "_" + anEntityId + "_" + aFieldName + "_" + str(aTimeStampId) + "_TSCALARMAP." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName);
theView.SavePicture(aPictureName)
- aVISUObjList.append(aPrsObj)
-
+ if theIsAutoDelete :
+ aPrsObj.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aPrsObj)
+
if HasValue(thePrsTypeList,VISU.TISOSURFACE) :
print " Creating IsoSurfacesOnField",
aPrsObj = theVisu.IsoSurfacesOnField(theResult,aMeshName,anEntity,aFieldName,aTimeStampId)
aPictureName = thePictureDir + aMeshNamePic + "_" + anEntityId + "_" + aFieldName + "_" + str(aTimeStampId) + "_TISOSURFACE." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName);
theView.SavePicture(aPictureName)
- aVISUObjList.append(aPrsObj)
+ if theIsAutoDelete :
+ aPrsObj.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aPrsObj)
if HasValue(thePrsTypeList,VISU.TCUTPLANES) :
print " Creating CutPlanesOnField",
aPictureName = thePictureDir + aMeshNamePic + "_" + anEntityId + "_" + aFieldName + "_" + str(aTimeStampId) + "_TCUTPLANES." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName)
theView.SavePicture(aPictureName)
- aVISUObjList.append(aPrsObj)
+ if theIsAutoDelete :
+ aPrsObj.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aPrsObj)
if HasValue(thePrsTypeList,VISU.TCUTLINES) :
print " Creating CutLinesOnField",
aPictureName = thePictureDir + aMeshNamePic + "_" + anEntityId + "_" + aFieldName + "_" + str(aTimeStampId) + "_TCUTLINES." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName)
theView.SavePicture(aPictureName)
- aVISUObjList.append(aPrsObj)
+ if theIsAutoDelete :
+ aPrsObj.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aPrsObj)
if HasValue(thePrsTypeList,VISU.TPLOT3D) :
print " Creating Plot3DOnField",
aPictureName = thePictureDir + aMeshNamePic + "_" + anEntityId + "_" + aFieldName + "_" + str(aTimeStampId) + "_TPLOT3D." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName)
theView.SavePicture(aPictureName)
- aVISUObjList.append(aPrsObj)
+ if theIsAutoDelete :
+ aPrsObj.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aPrsObj)
aNumComponent = atoi(aMap["myNumComponent"])
if aNumComponent > 1 :
aPictureName = thePictureDir + aMeshNamePic + "_" + anEntityId + "_" + aFieldName + "_" + str(aTimeStampId) + "_TDEFORMEDSHAPE." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName)
theView.SavePicture(aPictureName)
- aVISUObjList.append(aPrsObj)
+ if theIsAutoDelete :
+ aPrsObj.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aPrsObj)
if HasValue(thePrsTypeList,VISU.TVECTORS) :
print " Creating VectorsOnField",
aPictureName = thePictureDir + aMeshNamePic + "_" + anEntityId + "_" + aFieldName + "_" + str(aTimeStampId) + "_TVECTORS." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName)
theView.SavePicture(aPictureName)
- aVISUObjList.append(aPrsObj)
+ if theIsAutoDelete :
+ aPrsObj.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aPrsObj)
if HasValue(thePrsTypeList,VISU.TSTREAMLINES) :
print " Creating StreamLinesOnField",
aPictureName = thePictureDir + aMeshNamePic + "_" + anEntityId + "_" + aFieldName + "_" + str(aTimeStampId) + "_TSTREAMLINES." + thePictureExt
aPictureName = re.sub("\s+","_", aPictureName)
theView.SavePicture(aPictureName)
- aVISUObjList.append(aPrsObj)
-
+ if theIsAutoDelete :
+ aPrsObj.RemoveFromStudy()
+ else :
+ aVISUObjList.append(aPrsObj)
return aVISUObjList
# ----------------------
def try_cutplanes_parameters(thePattern) :
- if thePattern is None : return aList
+ if thePattern is None : return None
import copy
import random
--- /dev/null
+# 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@
--- /dev/null
+#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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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);
+}
--- /dev/null
+// 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
--- /dev/null
+// 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)));
+}
+
--- /dev/null
+#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
--- /dev/null
+// 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 );
+}
--- /dev/null
+// 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
--- /dev/null
+// 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 ) );
+}
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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
--- /dev/null
+// 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;
+}
--- /dev/null
+// 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
--- /dev/null
+// 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);
+ }
+}
--- /dev/null
+// 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
--- /dev/null
+// 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() );
+}
--- /dev/null
+// 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
--- /dev/null
+// 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 );
+}
--- /dev/null
+// 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
--- /dev/null
+#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 ) );
+}
--- /dev/null
+#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
--- /dev/null
+#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();
+ }
+ }
+}
+
--- /dev/null
+#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
--- /dev/null
+// 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 );
+}
+
--- /dev/null
+#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