- Timestamp:
- 08/10/06 09:20:15 (18 years ago)
- Location:
- trunk/SRC
- Files:
-
- 2 added
- 82 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SRC/Documentation/idldoc_html_output/Interpolation/testinterp.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/Matrix/cmset_op.html
r138 r153 681 681 <div id="secondary_navbar"> 682 682 683 <a href="cmapply.html?format=raw"><<prev file</a> | <a href=" congridseb.html?format=raw">next file >></a> <a href="cmset_op.html?format=raw" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a>683 <a href="cmapply.html?format=raw"><<prev file</a> | <a href="different.html?format=raw">next file >></a> <a href="cmset_op.html?format=raw" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a> 684 684 685 685 </div> -
trunk/SRC/Documentation/idldoc_html_output/Matrix/congridseb.html
r138 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/Matrix/different.html
r138 r153 681 681 <div id="secondary_navbar"> 682 682 683 <a href="c ongridseb.html?format=raw"><<prev file</a> | <a href="extrac2.html?format=raw">next file >></a> <a href="different.html?format=raw" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a>683 <a href="cmset_op.html?format=raw"><<prev file</a> | <a href="extrac2.html?format=raw">next file >></a> <a href="different.html?format=raw" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a> 684 684 685 685 </div> -
trunk/SRC/Documentation/idldoc_html_output/Matrix/dir-files.html
r138 r153 67 67 <li><a href="cmapply.html?format=raw" target="file_frame">cmapply.pro</a></li> 68 68 <li><a href="cmset_op.html?format=raw" target="file_frame">cmset_op.pro</a></li> 69 <li><a href="congridseb.html?format=raw" target="file_frame">congridseb.pro</a></li>70 69 <li><a href="different.html?format=raw" target="file_frame">different.pro</a></li> 71 70 <li><a href="extrac2.html?format=raw" target="file_frame">extrac2.pro</a></li> … … 76 75 </ul> 77 76 78 <div id="tagline"> 9files</div>77 <div id="tagline">8 files</div> 79 78 80 79 -
trunk/SRC/Documentation/idldoc_html_output/Matrix/directory-overview.html
r138 r153 704 704 <dd> Simplified version of CMSET_OP_UNIQ which sorts, and takes the "first" value, whatever that may mean.</dd> 705 705 706 <dt><a href="congridseb.html?format=raw">congridseb.pro</a></dt>707 <dd> Like congrid but here, it works.</dd>708 709 706 <dt><a href="different.html?format=raw">different.pro</a></dt> 710 707 <dd> calculate the different elements of 2 matrix of positif whole numbers.</dd> -
trunk/SRC/Documentation/idldoc_html_output/Obsolete/common.html
r138 r153 681 681 <div id="secondary_navbar"> 682 682 683 << prev file | <a href="c p.html?format=raw">next file >></a> <a href="common.html?format=raw" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a>683 << prev file | <a href="congridseb.html?format=raw">next file >></a> <a href="common.html?format=raw" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a> 684 684 685 685 </div> -
trunk/SRC/Documentation/idldoc_html_output/Obsolete/cp.html
r138 r153 681 681 <div id="secondary_navbar"> 682 682 683 <a href="co mmon.html?format=raw"><<prev file</a> | <a href="extrait.html?format=raw">next file >></a> <a href="cp.html?format=raw" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a>683 <a href="congridseb.html?format=raw"><<prev file</a> | <a href="extrait.html?format=raw">next file >></a> <a href="cp.html?format=raw" target="_TOP">view single page</a> | <a href="./../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a> 684 684 685 685 </div> -
trunk/SRC/Documentation/idldoc_html_output/Obsolete/dir-files.html
r138 r153 66 66 67 67 <li><a href="common.html?format=raw" target="file_frame">common.pro</a></li> 68 <li><a href="congridseb.html?format=raw" target="file_frame">congridseb.pro</a></li> 68 69 <li><a href="cp.html?format=raw" target="file_frame">cp.pro</a></li> 69 70 <li><a href="extrait.html?format=raw" target="file_frame">extrait.pro</a></li> … … 88 89 </ul> 89 90 90 <div id="tagline">2 1files</div>91 <div id="tagline">22 files</div> 91 92 92 93 -
trunk/SRC/Documentation/idldoc_html_output/Obsolete/directory-overview.html
r138 r153 701 701 <dd></dd> 702 702 703 <dt><a href="congridseb.html?format=raw">congridseb.pro</a></dt> 704 <dd> Used to avoid a bug in congrid in a old version of IDL Useless now.</dd> 705 703 706 <dt><a href="cp.html?format=raw">cp.pro</a></dt> 704 707 <dd> copy files file_copy should be used instead.</dd> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALENDRIER/caldat.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/CALENDRIER/julday.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/color24.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/colorbar.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/getcolor.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/lct.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/newpalette.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/xlct.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/COULEURS/xpal.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/IMAGE/image_viewer.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/IMAGE/imdisp.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/IMAGE/saveimage.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/IMAGE/showimage.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/cmapply.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/cmset_op.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/congridseb.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/different.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/extrait.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/inter.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/make_selection.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/union.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/MATRICE/zeroun.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/dir-files.html
r109 r153 71 71 <li><a href="pltsc.html?format=raw" target="file_frame">pltsc.pro</a></li> 72 72 <li><a href="pltt.html?format=raw" target="file_frame">pltt.pro</a></li> 73 <li><a href="pltv.html?format=raw" target="file_frame">pltv.pro</a></li> 73 74 <li><a href="pltz.html?format=raw" target="file_frame">pltz.pro</a></li> 74 75 <li><a href="sbar_plot.html?format=raw" target="file_frame">sbar_plot.pro</a></li> … … 78 79 </ul> 79 80 80 <div id="tagline">1 1files</div>81 <div id="tagline">12 files</div> 81 82 82 83 -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/directory-overview.html
r142 r153 702 702 703 703 <dt><a href="plt.html?format=raw">plt.pro</a></dt> 704 <dd> Draw horizontal graph (map) </dd>704 <dd> Draw horizontal graph (map) with CONTOUR procedure </dd> 705 705 706 706 <dt><a href="plt1d.html?format=raw">plt1d.pro</a></dt> … … 716 716 <dd> Trace hovmoller graphs: xt,yt,zt,t </dd> 717 717 718 <dt><a href="pltv.html?format=raw">pltv.pro</a></dt> 719 <dd> Draw 2d plots with TV procedure </dd> 720 718 721 <dt><a href="pltz.html?format=raw">pltz.pro</a></dt> 719 722 <dd> Trace vertical graphs.</dd> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/plt.html
r143 r153 697 697 698 698 <div id="file_comments"> 699 Draw horizontal graph (map) 699 Draw horizontal graph (map) with CONTOUR procedure 700 700 </div> 701 701 … … 741 741 742 742 <div class="comments"> 743 The field whose we want to make the horizontal map can be 2 kind of thing:743 The field whose we want to make the horizontal map can be: 744 744 1) an array. if needed, its mean along the z and t direction 745 745 will be automatically performed. … … 1101 1101 1102 1102 <div class="comments"> 1103 Allows to specify the min value we want to consider in the drawing of contour1104 helping by the keyword instead of the argument min. If the argument and the keyword are1105 specified in the same time, it is the value specified by the keyword whichis retained.1103 to specify the min value we want to plot with a keyword instead of with the 1104 input parameter min. If min is defined by both, parameter and keyword, the 1105 keyword is retained. 1106 1106 </div> 1107 1107 … … 1118 1118 1119 1119 <div class="comments"> 1120 Allows to specify the max value we want to consider in the drawing of contour1121 helping by the keyword instead of the argument max. If the argument and the keyword are1122 specified in the same time, it is the value specified by the keyword whichis retained.1120 to specify the max value we want to plot with a keyword instead of with the 1121 input parameter max. If max is defined by both, parameter and keyword, the 1122 keyword is retained. 1123 1123 </div> 1124 1124 … … 1287 1287 1288 1288 <h4>Version</h4><div class="preformat"> 1289 $Id: plt.pro 1 42 2006-07-21 12:47:49Z navarro$1289 $Id: plt.pro 152 2006-08-10 07:01:35Z smasson $ 1290 1290 </div> 1291 1291 <h4>History</h4><div class="preformat"> </div> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/pltt.html
r143 r153 681 681 <div id="secondary_navbar"> 682 682 683 <a href="pltsc.html?format=raw"><<prev file</a> | <a href="plt z.html?format=raw">next file >></a> <a href="pltt.html?format=raw" target="_TOP">view single page</a> | <a href="./../../../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a>683 <a href="pltsc.html?format=raw"><<prev file</a> | <a href="pltv.html?format=raw">next file >></a> <a href="pltt.html?format=raw" target="_TOP">view single page</a> | <a href="./../../../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a> 684 684 685 685 </div> … … 1123 1123 1124 1124 <div class="comments"> 1125 Allows to specify the min value we want to consider in the drawing of contour1126 helping by the keyword instead of the argument min. If the argument and the keyword are1127 specified in the same time, it is the value specified by the keyword whichis retained.1125 to specify the min value we want to plot with a keyword instead of with the 1126 input parameter min. If min is defined by both, parameter and keyword, the 1127 keyword is retained. 1128 1128 </div> 1129 1129 … … 1140 1140 1141 1141 <div class="comments"> 1142 Allows to specify the max value we want to consider in the drawing of contour1143 helping by the keyword instead of the argument max. If the argument and the keyword are1144 specified in the same time, it is the value specified by the keyword whichis retained.1142 to specify the max value we want to plot with a keyword instead of with the 1143 input parameter max. If max is defined by both, parameter and keyword, the 1144 keyword is retained. 1145 1145 </div> 1146 1146 … … 1342 1342 1343 1343 <h4>Version</h4><div class="preformat"> 1344 $Id: pltt.pro 1 42 2006-07-21 12:47:49Z navarro$1344 $Id: pltt.pro 152 2006-08-10 07:01:35Z smasson $ 1345 1345 </div> 1346 1346 <h4>History</h4><div class="preformat"> </div> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/pltz.html
r143 r153 681 681 <div id="secondary_navbar"> 682 682 683 <a href="plt t.html?format=raw"><<prev file</a> | <a href="sbar_plot.html?format=raw">next file >></a> <a href="pltz.html?format=raw" target="_TOP">view single page</a> | <a href="./../../../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a>683 <a href="pltv.html?format=raw"><<prev file</a> | <a href="sbar_plot.html?format=raw">next file >></a> <a href="pltz.html?format=raw" target="_TOP">view single page</a> | <a href="./../../../index.html?format=raw" target="_TOP">view frames</a> summary: fields | routine details: <a href="#routine_details">routine</a> 684 684 685 685 </div> … … 1179 1179 1180 1180 <div class="comments"> 1181 Allows to specify the min value we want to consider in the drawing of contour1182 helping by the keyword instead of the argument min. If the argument and the keyword are1183 specified in the same time, it is the value specified by the keyword whichis retained.1181 to specify the min value we want to plot with a keyword instead of with the 1182 input parameter min. If min is defined by both, parameter and keyword, the 1183 keyword is retained. 1184 1184 </div> 1185 1185 … … 1196 1196 1197 1197 <div class="comments"> 1198 Allows to specify the max value we want to consider in the drawing of contour1199 helping by the keyword instead of the argument max. If the argument and the keyword are1200 specified in the same time, it is the value specified by the keyword whichis retained.1198 to specify the max value we want to plot with a keyword instead of with the 1199 input parameter max. If max is defined by both, parameter and keyword, the 1200 keyword is retained. 1201 1201 </div> 1202 1202 … … 1296 1296 1297 1297 <h4>Version</h4><div class="preformat"> 1298 $Id: pltz.pro 1 42 2006-07-21 12:47:49Z navarro$1298 $Id: pltz.pro 152 2006-08-10 07:01:35Z smasson $ 1299 1299 </div> 1300 1300 <h4>History</h4><div class="preformat"></div> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DESSINE/tvplus.html
r143 r153 781 781 782 782 783 783 <span class="attr">default:</span> <span class="value">1</span> 784 784 785 785 </h4> 786 786 787 787 <div class="comments"> 788 The lowest color index of the colors to be loaded in 789 the bar. default is 0. 788 The lowest color index of the colors to be used 790 789 </div> 791 790 … … 797 796 798 797 799 798 <span class="attr">default:</span> <span class="value">0</span> 800 799 801 800 </h4> … … 803 802 <div class="comments"> 804 803 The color number that should be used for the mask values. 805 default value is 0806 804 </div> 807 805 … … 813 811 814 812 815 813 <span class="attr">default:</span> <span class="value">!d.n_colors < 255</span> 816 814 817 815 </h4> … … 819 817 <div class="comments"> 820 818 The color number that should be used for the NaN values. 821 default value is !d.n_colors < 255822 819 </div> 823 820 … … 849 846 </h4> 850 847 851 <div class="comments"> 852 Scalar used to specify the min value of the color bar. default is 0848 <div class="comments"> 849 Scalar used to specify the min value to be drawn. 853 850 </div> 854 851 … … 865 862 866 863 <div class="comments"> 867 Scalar used to specify the max value of the color bar. default is !d.n_colors < 255864 Scalar used to specify the max value to be drawn. 868 865 </div> 869 866 … … 925 922 926 923 927 924 <span class="attr">default:</span> <span class="value">(d.n_colors < 256) - 1 - bottom</span> 928 925 929 926 </h4> 930 927 931 928 <div class="comments"> 932 This is the number of colors in the color bar. default is !d.n_colors<255 -1929 number of colors to be used. 933 930 </div> 934 931 … … 946 943 <div class="comments"> 947 944 Used this keyword if you don't whant that the values 948 are interpolated between 0 (or min) and !d.n_colors < 255 (or max).945 are interpolated from BOTTOM using NCOLORS colors. 949 946 This can be for example usefull when working on byte type arrays. 950 947 </div> … … 961 958 </h4> 962 959 963 <div class="comments"></div> 960 <div class="comments"> 961 used to pass keywords to TV, PLOT, COLORBAR 962 </div> 964 963 965 964 … … 971 970 972 971 <h4>Version</h4><div class="preformat"> 973 $Id: tvplus.pro 1 42 2006-07-21 12:47:49Z navarro$972 $Id: tvplus.pro 152 2006-08-10 07:01:35Z smasson $ 974 973 </div> 975 974 <h4>History</h4><div class="preformat"></div> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/DIVERS/barrecouleur.html
r143 r153 718 718 719 719 <p class="header"> 720 barrecouleur<span class="result">, <a href="#_barrecouleur_param_colnumb">colnumb</a>, <a href="#_barrecouleur_param_clbinf">clbinf</a>, <a href="#_barrecouleur_param_clbsup">clbsup</a>, <a href="#_barrecouleur_param_clbdiv">clbdiv</a></span>, <a href="#_barrecouleur_keyword_NOCOLORBAR">NOCOLORBAR</a>=<span class="result">NOCOLORBAR</span>, <a href="#_barrecouleur_keyword_CB_TITLE">CB_TITLE</a>=<span class="result">CB_TITLE</span>, <a href="#_barrecouleur_keyword_NOFILL">NOFILL</a>=<span class="result">NOFILL</span>, <a href="#_barrecouleur_keyword_COLOR_c">COLOR_c</a>=<span class="result">COLOR_c</span>, <a href="#_barrecouleur_keyword_ min">min</a>=<span class="result">min</span>, <a href="#_barrecouleur_keyword_max">max</a>=<span class="result">max</span>, <a href="#_barrecouleur_keyword_divisions">divisions</a>=<span class="result">divisions</span>, <a href="#_barrecouleur_keyword_CB_SUBTITLE">CB_SUBTITLE</a>=<span class="result">CB_SUBTITLE</span>, <a href="#_barrecouleur_keyword_POST">POST</a>=<span class="result">POST</span>, <a href="#_barrecouleur_keyword__extra">_extra</a>=<span class="result">_extra</span></p>720 barrecouleur<span class="result">, <a href="#_barrecouleur_param_colnumb">colnumb</a>, <a href="#_barrecouleur_param_clbinf">clbinf</a>, <a href="#_barrecouleur_param_clbsup">clbsup</a>, <a href="#_barrecouleur_param_clbdiv">clbdiv</a></span>, <a href="#_barrecouleur_keyword_NOCOLORBAR">NOCOLORBAR</a>=<span class="result">NOCOLORBAR</span>, <a href="#_barrecouleur_keyword_CB_TITLE">CB_TITLE</a>=<span class="result">CB_TITLE</span>, <a href="#_barrecouleur_keyword_NOFILL">NOFILL</a>=<span class="result">NOFILL</span>, <a href="#_barrecouleur_keyword_COLOR_c">COLOR_c</a>=<span class="result">COLOR_c</span>, <a href="#_barrecouleur_keyword_MIN">MIN</a>=<span class="result">MIN</span>, <a href="#_barrecouleur_keyword_MAX">MAX</a>=<span class="result">MAX</span>, <a href="#_barrecouleur_keyword_divisions">divisions</a>=<span class="result">divisions</span>, <a href="#_barrecouleur_keyword_CB_SUBTITLE">CB_SUBTITLE</a>=<span class="result">CB_SUBTITLE</span>, <a href="#_barrecouleur_keyword_POST">POST</a>=<span class="result">POST</span>, <a href="#_barrecouleur_keyword__extra">_extra</a>=<span class="result">_extra</span></p> 721 721 722 722 <div class="comments"> … … 840 840 <div class="comments"></div> 841 841 842 <h4 id="_barrecouleur_keyword_ min">min 842 <h4 id="_barrecouleur_keyword_MIN">MIN 843 843 844 844 … … 853 853 <div class="comments"></div> 854 854 855 <h4 id="_barrecouleur_keyword_ max">max 855 <h4 id="_barrecouleur_keyword_MAX">MAX 856 856 857 857 … … 924 924 925 925 <h4>Version</h4><div class="preformat"> 926 $Id: barrecouleur.pro 1 42 2006-07-21 12:47:49Z navarro$926 $Id: barrecouleur.pro 152 2006-08-10 07:01:35Z smasson $ 927 927 </div> 928 928 <h4>History</h4><div class="preformat"></div> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/axe.html
r143 r153 881 881 882 882 <h4>Version</h4><div class="preformat"> 883 $Id: axe.pro 1 42 2006-07-21 12:47:49Z navarro$883 $Id: axe.pro 152 2006-08-10 07:01:35Z smasson $ 884 884 </div> 885 885 <h4>History</h4><div class="preformat"></div> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/PLOTS/legende.html
r143 r153 912 912 913 913 <h4>Version</h4><div class="preformat"> 914 $Id: legende.pro 1 42 2006-07-21 12:47:49Z navarro$914 $Id: legende.pro 152 2006-08-10 07:01:35Z smasson $ 915 915 </div> 916 916 <h4>History</h4><div class="preformat"></div> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strcnt.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/STRING/strtrans.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/fitintobox.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/linearequation.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/lineintersection.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/pwd.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/report.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/routine_name.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/test.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/testvar.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/text_box.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/undefine.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/xfile.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/UTILITAIRE/xhelp.html
r151 r153 328 328 table.variables td.image { width: 64px; } 329 329 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 330 div#file_comments { white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; white-space: pre; 331 331 margin: 2em; 332 332 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd.html
r151 r153 791 791 792 792 <h4>Version</h4><div class="preformat"> 793 $Id: buildcmd.pro 15 0 2006-08-09 10:12:54Z navarro$793 $Id: buildcmd.pro 152 2006-08-10 07:01:35Z smasson $ 794 794 </div> 795 795 <h4>History</h4><div class="preformat"></div> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/WIDGET/AUTOUR_de_XXX/longclickaction.html
r151 r153 756 756 757 757 <h4>Version</h4><div class="preformat"> 758 $Id: longclickaction.pro 15 0 2006-08-09 10:12:54Z navarro$758 $Id: longclickaction.pro 152 2006-08-10 07:01:35Z smasson $ 759 759 </div> 760 760 <h4>History</h4><div class="preformat"> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html
r151 r153 878 878 879 879 <h4>Version</h4><div class="preformat"> 880 $Id: selectfile.pro 15 0 2006-08-09 10:12:54Z navarro$880 $Id: selectfile.pro 152 2006-08-10 07:01:35Z smasson $ 881 881 </div> 882 882 <h4>History</h4><div class="preformat"> -
trunk/SRC/Documentation/idldoc_html_output/ToBeReviewed/WIDGET/xxx.html
r151 r153 947 947 948 948 <h4>Version</h4><div class="preformat"> 949 $Id: xxx.pro 15 0 2006-08-09 10:12:54Z navarro$949 $Id: xxx.pro 152 2006-08-10 07:01:35Z smasson $ 950 950 </div> 951 951 <h4>History</h4><div class="preformat"></div> -
trunk/SRC/Documentation/idldoc_html_output/Utilities/find.html
r138 r153 722 722 723 723 <p class="header"> 724 <span class="result">result = </span>find(<span class="result"><a href="#_find_param_filein">filein</a></span>, <a href="#_find_keyword_IODIRECTORY">IODIRECTORY</a>=<span class="result">IODIRECTORY</span>, <a href="#_find_keyword_RECURSIVE">RECURSIVE</a>=<span class="result">RECURSIVE</span>, <a href="#_find_keyword_REPERTOIRE">REPERTOIRE</a>=<span class="result">REPERTOIRE</span>, <a href="#_find_keyword_NOPRO">NOPRO</a>=<span class="result">NOPRO</span>, <a href="#_find_keyword_ONLYPRO">ONLYPRO</a>=<span class="result">ONLYPRO</span>, <a href="#_find_keyword_ONLYNC">ONLYNC</a>=<span class="result">ONLYNC</span>, <a href="#_find_keyword_UNIQUE">UNIQUE</a>=<span class="result">UNIQUE</span>, <a href="#_find_keyword_FIRSTFOUND">FIRSTFOUND</a>=<span class="result">FIRSTFOUND</span>, <a href="#_find_keyword_LOOKALLDIR">LOOKALLDIR</a>=<span class="result">LOOKALLDIR</span>, <a href="#_find_keyword_ _extra">_extra</a>=<span class="result">_extra</span>)</p>724 <span class="result">result = </span>find(<span class="result"><a href="#_find_param_filein">filein</a></span>, <a href="#_find_keyword_IODIRECTORY">IODIRECTORY</a>=<span class="result">IODIRECTORY</span>, <a href="#_find_keyword_RECURSIVE">RECURSIVE</a>=<span class="result">RECURSIVE</span>, <a href="#_find_keyword_REPERTOIRE">REPERTOIRE</a>=<span class="result">REPERTOIRE</span>, <a href="#_find_keyword_NOPRO">NOPRO</a>=<span class="result">NOPRO</span>, <a href="#_find_keyword_ONLYPRO">ONLYPRO</a>=<span class="result">ONLYPRO</span>, <a href="#_find_keyword_ONLYNC">ONLYNC</a>=<span class="result">ONLYNC</span>, <a href="#_find_keyword_UNIQUE">UNIQUE</a>=<span class="result">UNIQUE</span>, <a href="#_find_keyword_FIRSTFOUND">FIRSTFOUND</a>=<span class="result">FIRSTFOUND</span>, <a href="#_find_keyword_LOOKALLDIR">LOOKALLDIR</a>=<span class="result">LOOKALLDIR</span>, <a href="#_find_keyword_TRYFIND">TRYFIND</a>=<span class="result">TRYFIND</span>, <a href="#_find_keyword__extra">_extra</a>=<span class="result">_extra</span>)</p> 725 725 726 726 <div class="comments"></div> … … 771 771 772 772 773 <span class="attr">default:</span> <span class="value"> !path</span>773 <span class="attr">default:</span> <span class="value">['.',!path]</span> 774 774 775 775 </h4> … … 904 904 905 905 <div class="comments"> 906 activate to look for the file with a recursive search 907 in iodir, homedir, !path + the DATA:TestsData directory if it exists. 906 activate to look for the file (with a recursive search if needed) 907 in . iodir, homedir, !path + the DATA:TestsData directory if it exists. 908 </div> 909 910 <h4 id="_find_keyword_TRYFIND">TRYFIND 911 912 913 914 915 916 917 918 919 </h4> 920 921 <div class="comments"> 922 if the file was not found and this keyword is activated, find will call 923 itself with the keywords /LOOKALLDIR and /FIRSTFOUND to try to find 924 the file we are looking for. Note that if the file was found at the 925 first try this keyword as no effect (which is not the case with LOOKALLDIR) 908 926 </div> 909 927 … … 954 972 <h3>Version history</h3> 955 973 956 <h4>Version</h4><div class="preformat"> $Id: find.pro 1 36 2006-07-10 15:20:19Z pinsard$</div>974 <h4>Version</h4><div class="preformat"> $Id: find.pro 152 2006-08-10 07:01:35Z smasson $</div> 957 975 <h4>History</h4><div class="preformat"> Sebastien Masson (smasson@lodyc.jussieu.fr) 958 976 28/4/1999 -
trunk/SRC/Documentation/idldoc_html_output/all-files.html
r138 r153 126 126 <li><a href="./Grid/computegrid.html?format=raw" target="file_frame">computegrid.pro</a></li> 127 127 <li><a href="./ToBeReviewed/HOPE/computehopegrid.html?format=raw" target="file_frame">computehopegrid.pro</a></li> 128 <li><a href="./ Matrix/congridseb.html?format=raw" target="file_frame">congridseb.pro</a></li>128 <li><a href="./Obsolete/congridseb.html?format=raw" target="file_frame">congridseb.pro</a></li> 129 129 <li><a href="./Obsolete/cp.html?format=raw" target="file_frame">cp.pro</a></li> 130 130 <li><a href="./Utilities/createfunc.html?format=raw" target="file_frame">createfunc.pro</a></li> … … 300 300 <li><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw" target="file_frame">pltsc.pro</a></li> 301 301 <li><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw" target="file_frame">pltt.pro</a></li> 302 <li><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw" target="file_frame">pltv.pro</a></li> 302 303 <li><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw" target="file_frame">pltz.pro</a></li> 303 304 <li><a href="./Postscript/printps.html?format=raw" target="file_frame">printps.pro</a></li> … … 466 467 </ul> 467 468 468 <div id="tagline">39 1files</div>469 <div id="tagline">392 files</div> 469 470 470 471 -
trunk/SRC/Documentation/idldoc_html_output/idldoc-categories.html
r151 r153 1159 1159 1160 1160 </ul> 1161 </li> <li id="idldoc-find_a_file_graphic">find a file graphic <span class="result">(1 routine)</span> 1162 <ul> 1163 1164 <li><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">pltv</a></li> 1165 1166 </ul> 1161 1167 </li> <li id="idldoc-finding_where_is_a_point_on_a_grid">finding where is a point on a grid <span class="result">(1 routine)</span> 1162 1168 <ul> … … 1507 1513 1508 1514 </ul> 1509 </li> <li id="idldoc-utilities">utilities <span class="result">(2 1routines)</span>1515 </li> <li id="idldoc-utilities">utilities <span class="result">(20 routines)</span> 1510 1516 <ul> 1511 1517 … … 1515 1521 1516 1522 <li><a href="./ToBeReviewed/MATRICE/colle.html?format=raw#_colle">colle</a></li> 1517 1518 <li><a href="./Matrix/congridseb.html?format=raw#_congridseb">congridseb</a></li>1519 1523 1520 1524 <li><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">decoupeterre</a></li> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-B.html
r151 r153 787 787 <dd>a keyword from the routine placedessin</dd> 788 788 789 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">BASIC</a></dt> 790 <dd>a keyword from the routine triangule_e</dd> 791 789 792 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">BASIC</a></dt> 790 793 <dd>a keyword from the routine triangule</dd> … … 793 796 <dd>a keyword from the routine triangule_c</dd> 794 797 795 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">BASIC</a></dt>796 <dd>a keyword from the routine triangule_e</dd>797 798 798 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">BASICMARGES</a></dt> 799 799 <dd>a keyword from the routine placedessin</dd> … … 811 811 <dd>a keyword from the routine SAVEIMAGE</dd> 812 812 813 <dt><a href="./Obsolete/nlec5j.html?format=raw#_nlec5j">BOITE</a></dt> 814 <dd>a keyword from the routine nlec5j</dd> 815 816 <dt><a href="./Obsolete/lec.html?format=raw#_lec">BOITE</a></dt> 817 <dd>a keyword from the routine lec</dd> 818 819 <dt><a href="./Obsolete/lect.html?format=raw#_lect">BOITE</a></dt> 820 <dd>a keyword from the routine lect</dd> 821 813 822 <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">BOITE</a></dt> 814 823 <dd>a keyword from the routine nlec</dd> 815 824 816 <dt><a href="./Obsolete/nlec5j.html?format=raw#_nlec5j">BOITE</a></dt>817 <dd>a keyword from the routine nlec5j</dd>818 819 825 <dt><a href="./Obsolete/nlecan.html?format=raw#_nlecan">BOITE</a></dt> 820 826 <dd>a keyword from the routine nlecan</dd> … … 829 835 <dd>a keyword from the routine nlecserie</dd> 830 836 831 <dt><a href="./ Obsolete/lec.html?format=raw#_lec">BOITE</a></dt>832 <dd>a keyword from the routine lec</dd>833 834 <dt><a href="./ Obsolete/lect.html?format=raw#_lect">BOITE</a></dt>835 <dd>a keyword from the routine lect</dd>837 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP_IMSCALE">BOTTOM</a></dt> 838 <dd>a keyword from the routine IMDISP_IMSCALE</dd> 839 840 <dt><a href="./Colors/xlct.html?format=raw#_XLct">BOTTOM</a></dt> 841 <dd>a keyword from the routine XLct</dd> 836 842 837 843 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP">BOTTOM</a></dt> … … 844 850 <dd>a keyword from the routine tvplus</dd> 845 851 846 <dt><a href="./Colors/xlct.html?format=raw#_XLct">BOTTOM</a></dt> 847 <dd>a keyword from the routine XLct</dd> 848 849 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP_IMSCALE">BOTTOM</a></dt> 850 <dd>a keyword from the routine IMDISP_IMSCALE</dd> 852 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">BOTTOM</a></dt> 853 <dd>a keyword from the routine pltv</dd> 851 854 852 855 <dt><a href="./ReadWrite/read_grads.html?format=raw#_read_grads">BOX</a></dt> 853 856 <dd>a keyword from the routine read_grads</dd> 854 857 858 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">BOXZOOM</a></dt> 859 <dd>a keyword from the routine pltz</dd> 860 861 <dt><a href="./ToBeReviewed/WIDGET/slec.html?format=raw#_slec">BOXZOOM</a></dt> 862 <dd>a keyword from the routine slec</dd> 863 864 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html?format=raw#_cw_domain">BOXZOOM</a></dt> 865 <dd>a keyword from the routine cw_domain</dd> 866 867 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html?format=raw#_read_vermair">BOXZOOM</a></dt> 868 <dd>a keyword from the routine read_vermair</dd> 869 870 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile.html?format=raw#_changefile">BOXZOOM</a></dt> 871 <dd>a keyword from the routine changefile</dd> 872 873 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">BOXZOOM</a></dt> 874 <dd>a keyword from the routine grossemoyenne</dd> 875 876 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">BOXZOOM</a></dt> 877 <dd>a keyword from the routine moyenne</dd> 878 879 <dt><a href="./ToBeReviewed/CALCULS/norme.html?format=raw#_norme">BOXZOOM</a></dt> 880 <dd>a keyword from the routine norme</dd> 881 882 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield.html?format=raw#_changefield">BOXZOOM</a></dt> 883 <dd>a keyword from the routine changefield</dd> 884 885 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html?format=raw#_buildreadcmd">BOXZOOM</a></dt> 886 <dd>a keyword from the routine buildreadcmd</dd> 887 888 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd.html?format=raw#_buildcmd">BOXZOOM</a></dt> 889 <dd>a keyword from the routine buildcmd</dd> 890 891 <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">BOXZOOM</a></dt> 892 <dd>a keyword from the routine section</dd> 893 894 <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">BOXZOOM</a></dt> 895 <dd>a keyword from the routine read_ncdf</dd> 896 855 897 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">BOXZOOM</a></dt> 856 898 <dd>a keyword from the routine checkfield</dd> 857 899 858 <dt><a href="./ToBeReviewed/WIDGET/slec.html?format=raw#_slec">BOXZOOM</a></dt>859 <dd>a keyword from the routine slec</dd>860 861 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html?format=raw#_cw_domain">BOXZOOM</a></dt>862 <dd>a keyword from the routine cw_domain</dd>863 864 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html?format=raw#_read_vermair">BOXZOOM</a></dt>865 <dd>a keyword from the routine read_vermair</dd>866 867 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile.html?format=raw#_changefile">BOXZOOM</a></dt>868 <dd>a keyword from the routine changefile</dd>869 870 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">BOXZOOM</a></dt>871 <dd>a keyword from the routine grossemoyenne</dd>872 873 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">BOXZOOM</a></dt>874 <dd>a keyword from the routine moyenne</dd>875 876 <dt><a href="./ToBeReviewed/CALCULS/norme.html?format=raw#_norme">BOXZOOM</a></dt>877 <dd>a keyword from the routine norme</dd>878 879 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield.html?format=raw#_changefield">BOXZOOM</a></dt>880 <dd>a keyword from the routine changefield</dd>881 882 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html?format=raw#_buildreadcmd">BOXZOOM</a></dt>883 <dd>a keyword from the routine buildreadcmd</dd>884 885 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd.html?format=raw#_buildcmd">BOXZOOM</a></dt>886 <dd>a keyword from the routine buildcmd</dd>887 888 <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">BOXZOOM</a></dt>889 <dd>a keyword from the routine section</dd>890 891 <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">BOXZOOM</a></dt>892 <dd>a keyword from the routine read_ncdf</dd>893 894 900 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">BOXZOOM</a></dt> 895 901 <dd>a keyword from the routine plt</dd> … … 904 910 <dd>a keyword from the routine pltt</dd> 905 911 906 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt z.html?format=raw#_pltz">BOXZOOM</a></dt>907 <dd>a keyword from the routine plt z</dd>912 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">BOXZOOM</a></dt> 913 <dd>a keyword from the routine pltv</dd> 908 914 909 915 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">BUTTON_UVALUE</a></dt> 910 916 <dd>a keyword from the routine CW_BGROUP</dd> 911 917 918 <dt><a href="./Matrix/inter.html?format=raw#_inter">b</a></dt> 919 <dd>a parameter from the routine ./Matrix/inter</dd> 920 912 921 <dt><a href="./Matrix/different.html?format=raw#_different">b</a></dt> 913 922 <dd>a parameter from the routine ./Matrix/different</dd> … … 922 931 <dd>a parameter from the routine ./Matrix/union</dd> 923 932 924 <dt><a href="./Matrix/inter.html?format=raw#_inter">b</a></dt>925 <dd>a parameter from the routine ./Matrix/inter</dd>926 927 933 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/bar_plot.html?format=raw#_bar_plot">background</a></dt> 928 934 <dd>a keyword from the routine bar_plot</dd> … … 952 958 <dd>a keyword from the routine bar_plot</dd> 953 959 960 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.html?format=raw#_letsdraw">base</a></dt> 961 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw</dd> 962 963 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.html?format=raw#_inserthistory">base</a></dt> 964 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory</dd> 965 966 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory.html?format=raw#_createhistory">base</a></dt> 967 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory</dd> 968 969 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile.html?format=raw#_changefile">base</a></dt> 970 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile</dd> 971 972 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield.html?format=raw#_changefield">base</a></dt> 973 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield</dd> 974 975 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd.html?format=raw#_buildcmd">base</a></dt> 976 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd</dd> 977 978 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html?format=raw#_buildreadcmd">base</a></dt> 979 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd</dd> 980 954 981 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/updatewidget.html?format=raw#_updatewidget">base</a></dt> 955 982 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/updatewidget</dd> 956 983 957 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.html?format=raw#_letsdraw">base</a></dt>958 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw</dd>959 960 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.html?format=raw#_inserthistory">base</a></dt>961 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory</dd>962 963 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory.html?format=raw#_createhistory">base</a></dt>964 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory</dd>965 966 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile.html?format=raw#_changefile">base</a></dt>967 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile</dd>968 969 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield.html?format=raw#_changefield">base</a></dt>970 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield</dd>971 972 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd.html?format=raw#_buildcmd">base</a></dt>973 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd</dd>974 975 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html?format=raw#_buildreadcmd">base</a></dt>976 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd</dd>977 978 984 <dt><a href="./ToBeReviewed/HOPE/domainpart.html?format=raw#_domainpart">basedomain</a></dt> 979 985 <dd>a parameter from the routine ./ToBeReviewed/HOPE/domainpart</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-C.html
r151 r153 814 814 <dd>a keyword from the routine barrecouleur</dd> 815 815 816 <dt><a href="./Colors/colorbar.html?format=raw#_COLORBAR">CB_TITLE</a></dt> 817 <dd>a keyword from the routine COLORBAR</dd> 818 816 819 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html?format=raw#_barrecouleur">CB_TITLE</a></dt> 817 820 <dd>a keyword from the routine barrecouleur</dd> 818 821 819 <dt><a href="./Colors/colorbar.html?format=raw#_COLORBAR">CB_TITLE</a></dt>820 <dd>a keyword from the routine COLORBAR</dd>821 822 822 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">CB_TITLE</a></dt> 823 823 <dd>a keyword from the routine placedessin</dd> … … 859 859 <dd>a keyword from the routine vecteur</dd> 860 860 861 <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">COAST_COLOR</a></dt> 862 <dd>a keyword from the routine drawsectionbottom</dd> 863 864 <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">COAST_COLOR</a></dt> 865 <dd>a keyword from the routine tracemask</dd> 866 861 867 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html?format=raw#_drawcoast_c">COAST_COLOR</a></dt> 862 868 <dd>a keyword from the routine drawcoast_c</dd> 863 869 864 <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">COAST_COLOR</a></dt>865 <dd>a keyword from the routine tracemask</dd>866 867 870 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">COAST_COLOR</a></dt> 868 871 <dd>a keyword from the routine drawcoast_e</dd> 869 872 870 <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">COAST_COLOR</a></dt>871 <dd>a keyword from the routine drawsectionbottom</dd>872 873 873 <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">COAST_THICK</a></dt> 874 874 <dd>a keyword from the routine tracemask</dd> … … 883 883 <dd>a keyword from the routine drawcoast_c</dd> 884 884 885 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_c.html?format=raw#_triangule_c">COINDESCEND</a></dt> 886 <dd>a keyword from the routine triangule_c</dd> 887 888 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">COINDESCEND</a></dt> 889 <dd>a keyword from the routine decoupeterre</dd> 890 891 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">COINDESCEND</a></dt> 892 <dd>a keyword from the routine triangule_e</dd> 893 894 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">COINDESCEND</a></dt> 895 <dd>a keyword from the routine triangule</dd> 896 897 <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">COINDESCEND</a></dt> 898 <dd>a keyword from the routine completecointerre</dd> 899 885 900 <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">COINDESCEND</a></dt> 886 901 <dd>a keyword from the routine fillcornermask</dd> 887 902 888 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">COINDESCEND</a></dt>889 <dd>a keyword from the routine triangule_e</dd>890 891 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_c.html?format=raw#_triangule_c">COINDESCEND</a></dt>892 <dd>a keyword from the routine triangule_c</dd>893 894 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">COINDESCEND</a></dt>895 <dd>a keyword from the routine triangule</dd>896 897 <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">COINDESCEND</a></dt>898 <dd>a keyword from the routine completecointerre</dd>899 900 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">COINDESCEND</a></dt>901 <dd>a keyword from the routine decoupeterre</dd>902 903 903 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">COINDESCENDMASK</a></dt> 904 904 <dd>a keyword from the routine pltbase</dd> … … 907 907 <dd>a keyword from the routine pltbase</dd> 908 908 909 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">COINMONTE</a></dt> 910 <dd>a keyword from the routine decoupeterre</dd> 911 909 912 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">COINMONTE</a></dt> 910 913 <dd>a keyword from the routine triangule_e</dd> 911 914 915 <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">COINMONTE</a></dt> 916 <dd>a keyword from the routine completecointerre</dd> 917 918 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">COINMONTE</a></dt> 919 <dd>a keyword from the routine triangule</dd> 920 912 921 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_c.html?format=raw#_triangule_c">COINMONTE</a></dt> 913 922 <dd>a keyword from the routine triangule_c</dd> 914 923 915 <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">COINMONTE</a></dt>916 <dd>a keyword from the routine completecointerre</dd>917 918 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">COINMONTE</a></dt>919 <dd>a keyword from the routine triangule</dd>920 921 924 <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">COINMONTE</a></dt> 922 925 <dd>a keyword from the routine fillcornermask</dd> 923 926 924 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">COINMONTE</a></dt>925 <dd>a keyword from the routine decoupeterre</dd>926 927 927 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">COINMONTEMASK</a></dt> 928 928 <dd>a keyword from the routine pltbase</dd> … … 931 931 <dd>a keyword from the routine pltbase</dd> 932 932 933 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">COL1D</a></dt> 934 <dd>a keyword from the routine pltsc</dd> 935 936 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">COL1D</a></dt> 937 <dd>a keyword from the routine plt1d</dd> 938 933 939 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">COL1D</a></dt> 934 940 <dd>a keyword from the routine pltt</dd> 935 941 936 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">COL1D</a></dt>937 <dd>a keyword from the routine plt1d</dd>938 939 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">COL1D</a></dt>940 <dd>a keyword from the routine pltsc</dd>941 942 942 <dt><a href="./Interpolation/clickincell.html?format=raw#_clickincell">COLOR</a></dt> 943 943 <dd>a keyword from the routine clickincell</dd> … … 967 967 <dd>a keyword from the routine pltbase</dd> 968 968 969 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html?format=raw#_barrecouleur">COLOR_c</a></dt> 970 <dd>a keyword from the routine barrecouleur</dd> 971 969 972 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">COLOR_c</a></dt> 970 973 <dd>a keyword from the routine placedessin</dd> 971 974 972 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html?format=raw#_barrecouleur">COLOR_c</a></dt> 973 <dd>a keyword from the routine barrecouleur</dd> 975 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html?format=raw#_cw_pagelayout">COLUMN</a></dt> 976 <dd>a keyword from the routine cw_pagelayout</dd> 977 978 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html?format=raw#_cw_droplist_pm">COLUMN</a></dt> 979 <dd>a keyword from the routine cw_droplist_pm</dd> 980 981 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html?format=raw#_cw_slide_slice">COLUMN</a></dt> 982 <dd>a keyword from the routine cw_slide_slice</dd> 974 983 975 984 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html?format=raw#_cw_specifie">COLUMN</a></dt> … … 982 991 <dd>a keyword from the routine cw_combobox_pm</dd> 983 992 984 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html?format=raw#_cw_droplist_pm">COLUMN</a></dt>985 <dd>a keyword from the routine cw_droplist_pm</dd>986 987 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html?format=raw#_cw_pagelayout">COLUMN</a></dt>988 <dd>a keyword from the routine cw_pagelayout</dd>989 990 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html?format=raw#_cw_slide_slice">COLUMN</a></dt>991 <dd>a keyword from the routine cw_slide_slice</dd>992 993 993 <dt><a href="./buildinit.html?format=raw#_CW_FIELD2">COLUMN</a></dt> 994 994 <dd>a keyword from the routine CW_FIELD2</dd> … … 1000 1000 <dd>a keyword from the routine buildreadcmd</dd> 1001 1001 1002 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">CONTINTERVALLE</a></dt> 1003 <dd>a keyword from the routine plt</dd> 1004 1005 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">CONTINTERVALLE</a></dt> 1006 <dd>a keyword from the routine pltz</dd> 1007 1002 1008 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">CONTINTERVALLE</a></dt> 1003 1009 <dd>a keyword from the routine pltt</dd> 1004 1010 1005 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">CONTINTERVALLE</a></dt> 1006 <dd>a keyword from the routine plt</dd> 1007 1008 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">CONTINTERVALLE</a></dt> 1011 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">CONTLABEL</a></dt> 1009 1012 <dd>a keyword from the routine pltz</dd> 1013 1014 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">CONTLABEL</a></dt> 1015 <dd>a keyword from the routine pltt</dd> 1010 1016 1011 1017 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">CONTLABEL</a></dt> 1012 1018 <dd>a keyword from the routine plt</dd> 1013 1019 1014 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">CONTLABEL</a></dt>1015 <dd>a keyword from the routine pltt</dd>1016 1017 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">CONTLABEL</a></dt>1018 <dd>a keyword from the routine pltz</dd>1019 1020 1020 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">CONTMAX</a></dt> 1021 1021 <dd>a keyword from the routine pltz</dd> 1022 1022 1023 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">CONTMAX</a></dt> 1024 <dd>a keyword from the routine pltt</dd> 1025 1023 1026 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">CONTMAX</a></dt> 1024 1027 <dd>a keyword from the routine plt</dd> 1025 1028 1026 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt t.html?format=raw#_pltt">CONTMAX</a></dt>1027 <dd>a keyword from the routine plt t</dd>1029 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">CONTMIN</a></dt> 1030 <dd>a keyword from the routine pltz</dd> 1028 1031 1029 1032 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">CONTMIN</a></dt> 1030 1033 <dd>a keyword from the routine pltt</dd> 1031 1034 1032 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">CONTMIN</a></dt>1033 <dd>a keyword from the routine pltz</dd>1034 1035 1035 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">CONTMIN</a></dt> 1036 1036 <dd>a keyword from the routine plt</dd> 1037 1037 1038 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">CONTNLEVEL</a></dt> 1039 <dd>a keyword from the routine plt</dd> 1040 1038 1041 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">CONTNLEVEL</a></dt> 1039 1042 <dd>a keyword from the routine pltt</dd> 1040 1043 1041 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">CONTNLEVEL</a></dt>1042 <dd>a keyword from the routine plt</dd>1043 1044 1044 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">CONTNLEVEL</a></dt> 1045 1045 <dd>a keyword from the routine pltz</dd> 1046 1046 1047 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">CONTOUR</a></dt> 1048 <dd>a keyword from the routine pltbase</dd> 1049 1050 <dt><a href="./ToBeReviewed/PLOTS/legende.html?format=raw#_legende">CONTOUR</a></dt> 1051 <dd>a keyword from the routine legende</dd> 1052 1053 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">CONTOUR</a></dt> 1054 <dd>a keyword from the routine placedessin</dd> 1055 1056 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">CONTOUR</a></dt> 1057 <dd>a keyword from the routine pltt</dd> 1058 1047 1059 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">CONTOUR</a></dt> 1048 1060 <dd>a keyword from the routine plt</dd> 1049 1061 1050 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">CONTOUR</a></dt>1051 <dd>a keyword from the routine pltt</dd>1052 1053 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">CONTOUR</a></dt>1054 <dd>a keyword from the routine placedessin</dd>1055 1056 1062 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">CONTOUR</a></dt> 1057 1063 <dd>a keyword from the routine pltz</dd> 1058 1064 1059 <dt><a href="./ToBeReviewed/PLOTS/legende.html?format=raw#_legende">CONTOUR</a></dt>1060 <dd>a keyword from the routine legende</dd>1061 1062 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">CONTOUR</a></dt>1063 <dd>a keyword from the routine pltbase</dd>1064 1065 1065 <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">CONT_COLOR</a></dt> 1066 1066 <dd>a keyword from the routine completecointerre</dd> 1067 1067 1068 <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">CONT_COLOR</a></dt> 1069 <dd>a keyword from the routine drawsectionbottom</dd> 1070 1068 1071 <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_draw_corner_triangle">CONT_COLOR</a></dt> 1069 1072 <dd>a keyword from the routine draw_corner_triangle</dd> 1070 1073 1071 <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">CONT_COLOR</a></dt>1072 <dd>a keyword from the routine drawsectionbottom</dd>1073 1074 1074 <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">CONT_COLOR</a></dt> 1075 1075 <dd>a keyword from the routine fillcornermask</dd> … … 1078 1078 <dd>a keyword from the routine pltbase</dd> 1079 1079 1080 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">CONT_NOFILL</a></dt> 1081 <dd>a keyword from the routine pltbase</dd> 1082 1080 1083 <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">CONT_NOFILL</a></dt> 1081 1084 <dd>a keyword from the routine drawsectionbottom</dd> 1082 1085 1086 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">CONT_NOFILL</a></dt> 1087 <dd>a keyword from the routine plt</dd> 1088 1083 1089 <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">CONT_NOFILL</a></dt> 1084 1090 <dd>a keyword from the routine read_ncdf</dd> 1085 1091 1086 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">CONT_NOFILL</a></dt>1087 <dd>a keyword from the routine pltbase</dd>1088 1089 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">CONT_NOFILL</a></dt>1090 <dd>a keyword from the routine plt</dd>1091 1092 1092 <dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html?format=raw#_xncdf_lec">COUNT</a></dt> 1093 1093 <dd>a keyword from the routine xncdf_lec</dd> … … 1120 1120 <dd>a function from the file buildinit.pro</dd> 1121 1121 1122 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">C_MASK</a></dt> 1123 <dd>a keyword from the routine pltv</dd> 1124 1122 1125 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">C_MASK</a></dt> 1123 1126 <dd>a keyword from the routine tvplus</dd> … … 1126 1129 <dd>a keyword from the routine tvplus</dd> 1127 1130 1131 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">C_NAN</a></dt> 1132 <dd>a keyword from the routine pltv</dd> 1133 1128 1134 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">C_Timecorrelate</a></dt> 1129 1135 <dd>a function from the file c_timecorrelate.pro</dd> … … 1135 1141 <dd>a parameter from the routine ./ToBeReviewed/STRING/strwhere</dd> 1136 1142 1143 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">Covariance</a></dt> 1144 <dd>a keyword from the routine C_Timecorrelate</dd> 1145 1137 1146 <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_A_Correlate2d">Covariance</a></dt> 1138 1147 <dd>a keyword from the routine A_Correlate2d</dd> 1139 1148 1140 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">Covariance</a></dt>1141 <dd>a keyword from the routine C_Timecorrelate</dd>1142 1143 1149 <dt><a href="./ToBeReviewed/CALCULS/determ2.html?format=raw#_determ2">c</a></dt> 1144 1150 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/determ2</dd> … … 1426 1432 <dd>a file from the directory ./ToBeReviewed/HOPE</dd> 1427 1433 1428 <dt><a href="./ Matrix/congridseb.html?format=raw#_congridseb">congridseb</a></dt>1434 <dt><a href="./Obsolete/congridseb.html?format=raw#_congridseb">congridseb</a></dt> 1429 1435 <dd>a function from the file congridseb.pro</dd> 1430 1436 1431 <dt><a href=" Matrix/congridseb.html?format=raw">congridseb.pro</a></dt>1432 <dd>a file from the directory ./ Matrix</dd>1437 <dt><a href="Obsolete/congridseb.html?format=raw">congridseb.pro</a></dt> 1438 <dd>a file from the directory ./Obsolete</dd> 1433 1439 1434 1440 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_gmt.html?format=raw#_label_gmt">coul</a></dt> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-D.html
r151 r153 862 862 <dd>a keyword from the routine SHOWIMAGE</dd> 863 863 864 <dt><a href="./Picture/saveimage.html?format=raw#_SAVEIMAGE">DITHER</a></dt> 865 <dd>a keyword from the routine SAVEIMAGE</dd> 866 864 867 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP">DITHER</a></dt> 865 868 <dd>a keyword from the routine IMDISP</dd> 866 869 867 <dt><a href="./Picture/saveimage.html?format=raw#_SAVEIMAGE">DITHER</a></dt>868 <dd>a keyword from the routine SAVEIMAGE</dd>869 870 870 <dt><a href="./Colors/colorbar.html?format=raw#_COLORBAR">DIVISIONS</a></dt> 871 871 <dd>a keyword from the routine COLORBAR</dd> … … 874 874 <dd>a keyword from the routine A_TimeCorrelate</dd> 875 875 876 <dt><a href="./Obsolete/meshlec.html?format=raw#_meshlec">DOUBLE</a></dt> 877 <dd>a keyword from the routine meshlec</dd> 878 879 <dt><a href="./Interpolation/get_gridparams.html?format=raw#_get_gridparams">DOUBLE</a></dt> 880 <dd>a keyword from the routine get_gridparams</dd> 881 876 882 <dt><a href="./Interpolation/angle.html?format=raw#_fsnspp">DOUBLE</a></dt> 877 883 <dd>a keyword from the routine fsnspp</dd> 878 884 885 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">DOUBLE</a></dt> 886 <dd>a keyword from the routine inquad</dd> 887 879 888 <dt><a href="./Interpolation/angle.html?format=raw#_angle">DOUBLE</a></dt> 880 889 <dd>a keyword from the routine angle</dd> 881 890 882 <dt><a href="./Interpolation/get_gridparams.html?format=raw#_get_gridparams">DOUBLE</a></dt>883 <dd>a keyword from the routine get_gridparams</dd>884 885 <dt><a href="./Obsolete/meshlec.html?format=raw#_meshlec">DOUBLE</a></dt>886 <dd>a keyword from the routine meshlec</dd>887 888 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">DOUBLE</a></dt>889 <dd>a keyword from the routine inquad</dd>890 891 891 <dt><a href="./Interpolation/clickincell.html?format=raw#_clickincell">DRAWCELL</a></dt> 892 892 <dd>a keyword from the routine clickincell</dd> … … 904 904 <dd>a keyword from the routine VELOVECT</dd> 905 905 906 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_TimeCross_Cov">Double</a></dt> 907 <dd>a keyword from the routine TimeCross_Cov</dd> 908 909 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">Double</a></dt> 910 <dd>a keyword from the routine C_Timecorrelate</dd> 911 912 <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_Auto_Cov2d">Double</a></dt> 913 <dd>a keyword from the routine Auto_Cov2d</dd> 914 915 <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_A_Correlate2d">Double</a></dt> 916 <dd>a keyword from the routine A_Correlate2d</dd> 917 906 918 <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">Double</a></dt> 907 919 <dd>a keyword from the routine TimeAuto_Cov</dd> 908 920 909 <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_A_Correlate2d">Double</a></dt>910 <dd>a keyword from the routine A_Correlate2d</dd>911 912 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_TimeCross_Cov">Double</a></dt>913 <dd>a keyword from the routine TimeCross_Cov</dd>914 915 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_C_Timecorrelate">Double</a></dt>916 <dd>a keyword from the routine C_Timecorrelate</dd>917 918 <dt><a href="./ToBeReviewed/STATISTICS/a_correlate2d.html?format=raw#_Auto_Cov2d">Double</a></dt>919 <dd>a keyword from the routine Auto_Cov2d</dd>920 921 921 <dt><a href="./ToBeReviewed/CALCULS/determ2.html?format=raw#_determ2">d</a></dt> 922 922 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/determ2</dd> … … 928 928 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_read</dd> 929 929 930 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">data</a></dt> 931 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltv</dd> 932 930 933 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html?format=raw#_selectfile">datafilename</a></dt> 931 934 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile</dd> … … 940 943 <dd>a parameter from the routine ./Interpolation/fromirr</dd> 941 944 945 <dt><a href="./ToBeReviewed/CALENDRIER/def_month.html?format=raw#_def_month">date</a></dt> 946 <dd>a parameter from the routine ./ToBeReviewed/CALENDRIER/def_month</dd> 947 942 948 <dt><a href="./Obsolete/vraidate.html?format=raw#_vraidate">date</a></dt> 943 949 <dd>a parameter from the routine ./Obsolete/vraidate</dd> … … 946 952 <dd>a parameter from the routine ./Obsolete/lec</dd> 947 953 948 <dt><a href="./ToBeReviewed/CALENDRIER/def_month.html?format=raw#_def_month">date</a></dt>949 <dd>a parameter from the routine ./ToBeReviewed/CALENDRIER/def_month</dd>950 951 954 <dt><a href="./Calendar/date2jul.html?format=raw#_date2jul">date</a></dt> 952 955 <dd>a parameter from the routine ./Calendar/date2jul</dd> … … 955 958 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar</dd> 956 959 960 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib.html?format=raw#_read_grib">date1</a></dt> 961 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib</dd> 962 957 963 <dt><a href="./Obsolete/lect.html?format=raw#_lect">date1</a></dt> 958 964 <dd>a parameter from the routine ./Obsolete/lect</dd> 959 965 960 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib.html?format=raw#_read_grib">date1</a></dt>961 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib</dd>962 963 966 <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">date1</a></dt> 964 967 <dd>a parameter from the routine ./Obsolete/nlecserie</dd> … … 967 970 <dd>a parameter from the routine ./ReadWrite/read_grads</dd> 968 971 972 <dt><a href="./ReadWrite/read_grads.html?format=raw#_read_grads">date2</a></dt> 973 <dd>a parameter from the routine ./ReadWrite/read_grads</dd> 974 975 <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">date2</a></dt> 976 <dd>a parameter from the routine ./Obsolete/nlecserie</dd> 977 969 978 <dt><a href="./Obsolete/lect.html?format=raw#_lect">date2</a></dt> 970 979 <dd>a parameter from the routine ./Obsolete/lect</dd> 971 980 972 <dt><a href="./ReadWrite/read_grads.html?format=raw#_read_grads">date2</a></dt>973 <dd>a parameter from the routine ./ReadWrite/read_grads</dd>974 975 <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">date2</a></dt>976 <dd>a parameter from the routine ./Obsolete/nlecserie</dd>977 978 981 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib.html?format=raw#_read_grib">date2</a></dt> 979 982 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib</dd> … … 1006 1009 <dd>a file from the directory ./Calendar</dd> 1007 1010 1011 <dt><a href="./ToBeReviewed/WIDGET/slec.html?format=raw#_slec">debut</a></dt> 1012 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/slec</dd> 1013 1008 1014 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html?format=raw#_read_vermair">debut</a></dt> 1009 1015 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair</dd> … … 1012 1018 <dd>a parameter from the routine ./Obsolete/nlec</dd> 1013 1019 1014 <dt><a href="./ToBeReviewed/WIDGET/slec.html?format=raw#_slec">debut</a></dt>1015 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/slec</dd>1016 1017 1020 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html?format=raw#_decind">decind</a></dt> 1018 1021 <dd>a function from the file cw_slider_pm.pro</dd> … … 1159 1162 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/read_ftp</dd> 1160 1163 1164 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">direc</a></dt> 1165 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/grossemoyenne</dd> 1166 1167 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">direc</a></dt> 1168 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/moyenne</dd> 1169 1170 <dt><a href="./ToBeReviewed/CALCULS/grad.html?format=raw#_grad">direc</a></dt> 1171 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/grad</dd> 1172 1161 1173 <dt><a href="./Obsolete/lect.html?format=raw#_lect">direc</a></dt> 1162 1174 <dd>a parameter from the routine ./Obsolete/lect</dd> 1163 1175 1164 <dt><a href="./ToBeReviewed/CALCULS/grad.html?format=raw#_grad">direc</a></dt>1165 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/grad</dd>1166 1167 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">direc</a></dt>1168 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/moyenne</dd>1169 1170 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">direc</a></dt>1171 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/grossemoyenne</dd>1172 1173 1176 <dt><a href="./Utilities/isadirectory.html?format=raw#_isadirectory">directoryin</a></dt> 1174 1177 <dd>a parameter from the routine ./Utilities/isadirectory</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-G.html
r151 r153 362 362 table.variables td.image { width: 64px; } 363 363 364 div#file_comments { white-space: pre; white-space: pre; 364 div#file_comments { white-space: pre; white-space: pre; white-space: pre; 365 365 margin: 2em; 366 366 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-H.html
r151 r153 362 362 table.variables td.image { width: 64px; } 363 363 364 div#file_comments { white-space: pre; white-space: pre; 364 div#file_comments { white-space: pre; white-space: pre; white-space: pre; 365 365 margin: 2em; 366 366 font-size: 80%; -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-M.html
r151 r153 781 781 <dl> 782 782 783 <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">M</a></dt> 784 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd> 785 783 786 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_TimeCross_Cov">M</a></dt> 784 787 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate</dd> 785 788 786 <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">M</a></dt>787 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd>788 789 789 <dt><a href="./ToBeReviewed/STRING/strsci.html?format=raw#_StrSci">MANTISSA_ONLY</a></dt> 790 790 <dd>a keyword from the routine StrSci</dd> 791 791 792 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">MAP</a></dt> 793 <dd>a keyword from the routine placedessin</dd> 794 795 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">MAP</a></dt> 796 <dd>a keyword from the routine CW_BGROUP</dd> 797 792 798 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">MAP</a></dt> 793 799 <dd>a keyword from the routine plt</dd> 794 800 795 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">MAP</a></dt>796 <dd>a keyword from the routine placedessin</dd>797 798 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">MAP</a></dt>799 <dd>a keyword from the routine CW_BGROUP</dd>800 801 801 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">MARGES</a></dt> 802 802 <dd>a keyword from the routine placedessin</dd> 803 803 804 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP_IMSIZE">MARGIN</a></dt> 805 <dd>a keyword from the routine IMDISP_IMSIZE</dd> 806 807 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP">MARGIN</a></dt> 808 <dd>a keyword from the routine IMDISP</dd> 809 804 810 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP_GETPOS">MARGIN</a></dt> 805 811 <dd>a keyword from the routine IMDISP_GETPOS</dd> 806 812 807 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP_IMSIZE">MARGIN</a></dt> 808 <dd>a keyword from the routine IMDISP_IMSIZE</dd> 809 810 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP">MARGIN</a></dt> 811 <dd>a keyword from the routine IMDISP</dd> 813 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">MASK</a></dt> 814 <dd>a keyword from the routine tvplus</dd> 812 815 813 816 <dt><a href="./ToBeReviewed/LECTURE/litchamp.html?format=raw#_litchamp">MASK</a></dt> … … 817 820 <dd>a keyword from the routine computegrid</dd> 818 821 819 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/ tvplus.html?format=raw#_tvplus">MASK</a></dt>820 <dd>a keyword from the routine tvplus</dd>822 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">MASKFILL</a></dt> 823 <dd>a keyword from the routine pltz</dd> 821 824 822 825 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">MASKFILL</a></dt> 823 826 <dd>a keyword from the routine plt</dd> 824 827 825 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">MASKFILL</a></dt>826 <dd>a keyword from the routine pltz</dd>827 828 828 <dt><a href="./ToBeReviewed/INIT/initncdf.html?format=raw#_initncdf">MASKNAME</a></dt> 829 829 <dd>a keyword from the routine initncdf</dd> … … 832 832 <dd>a keyword from the routine pltbase</dd> 833 833 834 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">MASKVAL</a></dt> 835 <dd>a keyword from the routine pltv</dd> 836 837 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html?format=raw#_barrecouleur">MAX</a></dt> 838 <dd>a keyword from the routine barrecouleur</dd> 839 840 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">MAX</a></dt> 841 <dd>a keyword from the routine tvplus</dd> 842 834 843 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">MAX</a></dt> 835 844 <dd>a keyword from the routine checktypeminmax</dd> 836 845 837 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">MAX</a></dt>838 <dd>a keyword from the routine tvplus</dd>839 840 846 <dt><a href="./Colors/colorbar.html?format=raw#_COLORBAR">MAX</a></dt> 841 847 <dd>a keyword from the routine COLORBAR</dd> … … 844 850 <dd>a keyword from the routine cw_slider_pm</dd> 845 851 852 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">MAXIN</a></dt> 853 <dd>a keyword from the routine pltz</dd> 854 855 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">MAXIN</a></dt> 856 <dd>a keyword from the routine pltv</dd> 857 846 858 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">MAXIN</a></dt> 847 859 <dd>a keyword from the routine pltt</dd> … … 850 862 <dd>a keyword from the routine determineminmax</dd> 851 863 852 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">MAXIN</a></dt>853 <dd>a keyword from the routine pltz</dd>854 855 864 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">MAXIN</a></dt> 856 865 <dd>a keyword from the routine plt1d</dd> … … 877 886 <dd>a keyword from the routine Map_npoints</dd> 878 887 888 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html?format=raw#_barrecouleur">MIN</a></dt> 889 <dd>a keyword from the routine barrecouleur</dd> 890 879 891 <dt><a href="./Colors/colorbar.html?format=raw#_COLORBAR">MIN</a></dt> 880 892 <dd>a keyword from the routine COLORBAR</dd> … … 892 904 <dd>a keyword from the routine pltt</dd> 893 905 906 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">MININ</a></dt> 907 <dd>a keyword from the routine pltz</dd> 908 909 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">MININ</a></dt> 910 <dd>a keyword from the routine determineminmax</dd> 911 912 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">MININ</a></dt> 913 <dd>a keyword from the routine pltv</dd> 914 894 915 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">MININ</a></dt> 895 916 <dd>a keyword from the routine plt</dd> … … 898 919 <dd>a keyword from the routine plt1d</dd> 899 920 900 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">MININ</a></dt>901 <dd>a keyword from the routine pltz</dd>902 903 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">MININ</a></dt>904 <dd>a keyword from the routine determineminmax</dd>905 906 921 <dt><a href="./Interpolation/extrapolate.html?format=raw#_extrapolate">MINVAL</a></dt> 907 922 <dd>a keyword from the routine extrapolate</dd> … … 964 979 <dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/calibre</dd> 965 980 981 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">mask</a></dt> 982 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase</dd> 983 966 984 <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">mask</a></dt> 967 985 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/grille</dd> 968 986 987 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">mask</a></dt> 988 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/decoupeterre</dd> 989 990 <dt><a href="./ToBeReviewed/CALCULS/remplit.html?format=raw#_remplit">mask</a></dt> 991 <dd>a keyword from the routine remplit</dd> 992 993 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">mask</a></dt> 994 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/axis4pltz</dd> 995 996 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">mask</a></dt> 997 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/determineminmax</dd> 998 969 999 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html?format=raw#_drawcoast_c">mask</a></dt> 970 1000 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_c</dd> 971 1001 972 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">mask</a></dt>973 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/axis4pltz</dd>974 975 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">mask</a></dt>976 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/determineminmax</dd>977 978 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">mask</a></dt>979 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltbase</dd>980 981 <dt><a href="./ToBeReviewed/CALCULS/remplit.html?format=raw#_remplit">mask</a></dt>982 <dd>a keyword from the routine remplit</dd>983 984 1002 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">mask</a></dt> 985 1003 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawcoast_e</dd> 986 1004 987 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">mask</a></dt> 988 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/decoupeterre</dd> 1005 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">maskentree</a></dt> 1006 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/triangule_e</dd> 1007 1008 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_c.html?format=raw#_triangule_c">maskentree</a></dt> 1009 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/triangule_c</dd> 1010 1011 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">maskentree</a></dt> 1012 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/triangule</dd> 989 1013 990 1014 <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">maskentree</a></dt> 991 1015 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/tracemask</dd> 992 1016 993 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_c.html?format=raw#_triangule_c">maskentree</a></dt>994 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/triangule_c</dd>995 996 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule_e.html?format=raw#_triangule_e">maskentree</a></dt>997 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/triangule_e</dd>998 999 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">maskentree</a></dt>1000 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/triangule</dd>1001 1002 1017 <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">maskin</a></dt> 1003 1018 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/drawsectionbottom</dd> … … 1009 1024 <dd>a file from the directory ./Textoidl</dd> 1010 1025 1011 <dt><a href="./ToBeReviewed/PLOTS/ DIVERS/barrecouleur.html?format=raw#_barrecouleur">max</a></dt>1012 <dd>a keyword from the routine barrecouleur</dd>1026 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_gmt.html?format=raw#_label_gmt">max</a></dt> 1027 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_gmt</dd> 1013 1028 1014 1029 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/autoscale.html?format=raw#_autoscale">max</a></dt> 1015 1030 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/autoscale</dd> 1016 1031 1017 <dt><a href="./ToBeReviewed/PLOTS/ LABEL/label_gmt.html?format=raw#_label_gmt">max</a></dt>1018 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/ LABEL/label_gmt</dd>1032 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">max</a></dt> 1033 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltv</dd> 1019 1034 1020 1035 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">max</a></dt> … … 1060 1075 <dd>a file from the directory ./Grid</dd> 1061 1076 1062 <dt><a href="./ToBeReviewed/PLOTS/ DIVERS/barrecouleur.html?format=raw#_barrecouleur">min</a></dt>1063 <dd>a keyword from the routine barrecouleur</dd>1077 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">min</a></dt> 1078 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label</dd> 1064 1079 1065 1080 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_gmt.html?format=raw#_label_gmt">min</a></dt> 1066 1081 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label_gmt</dd> 1067 1082 1083 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">min</a></dt> 1084 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltv</dd> 1085 1068 1086 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/autoscale.html?format=raw#_autoscale">min</a></dt> 1069 1087 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/autoscale</dd> 1070 1088 1071 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">min</a></dt>1072 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/LABEL/label</dd>1073 1074 1089 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">min1</a></dt> 1075 1090 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltsc</dd> … … 1090 1105 <dd>a parameter from the routine ./Obsolete/jourdsmois</dd> 1091 1106 1107 <dt><a href="./Calendar/daysinmonth.html?format=raw#_daysinmonth">month</a></dt> 1108 <dd>a parameter from the routine ./Calendar/daysinmonth</dd> 1109 1110 <dt><a href="./Calendar/monthname.html?format=raw#_monthname">month</a></dt> 1111 <dd>a parameter from the routine ./Calendar/monthname</dd> 1112 1092 1113 <dt><a href="./Calendar/caldat.html?format=raw#_CALDAT">month</a></dt> 1093 1114 <dd>a parameter from the routine ./Calendar/caldat</dd> 1094 1115 1095 <dt><a href="./Calendar/monthname.html?format=raw#_monthname">month</a></dt>1096 <dd>a parameter from the routine ./Calendar/monthname</dd>1097 1098 <dt><a href="./Calendar/daysinmonth.html?format=raw#_daysinmonth">month</a></dt>1099 <dd>a parameter from the routine ./Calendar/daysinmonth</dd>1100 1101 1116 <dt><a href="./Calendar/monthname.html?format=raw#_monthname">monthname</a></dt> 1102 1117 <dd>a function from the file monthname.pro</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-N.html
r151 r153 793 793 <dd>a keyword from the routine GETCOLOR</dd> 794 794 795 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">NAN</a></dt> 796 <dd>a keyword from the routine moyenne</dd> 797 798 <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">NAN</a></dt> 799 <dd>a keyword from the routine nlec</dd> 800 801 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">NAN</a></dt> 802 <dd>a keyword from the routine grossemoyenne</dd> 803 804 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">NAN</a></dt> 805 <dd>a keyword from the routine pltbase</dd> 806 795 807 <dt><a href="./ToBeReviewed/CALCULS/remplit.html?format=raw#_remplit">NAN</a></dt> 796 808 <dd>a keyword from the routine remplit</dd> 797 809 798 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">NAN</a></dt>799 <dd>a keyword from the routine pltbase</dd>800 801 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">NAN</a></dt>802 <dd>a keyword from the routine grossemoyenne</dd>803 804 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">NAN</a></dt>805 <dd>a keyword from the routine moyenne</dd>806 807 <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">NAN</a></dt>808 <dd>a keyword from the routine nlec</dd>809 810 810 <dt><a href="./Obsolete/imprime.html?format=raw#_imprime">NB</a></dt> 811 811 <dd>a keyword from the routine imprime</dd> 812 812 813 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">NCOLORS</a></dt> 814 <dd>a keyword from the routine pltv</dd> 815 813 816 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP_IMSCALE">NCOLORS</a></dt> 814 817 <dd>a keyword from the routine IMDISP_IMSCALE</dd> 815 818 819 <dt><a href="./Colors/xlct.html?format=raw#_XLct">NCOLORS</a></dt> 820 <dd>a keyword from the routine XLct</dd> 821 822 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">NCOLORS</a></dt> 823 <dd>a keyword from the routine tvplus</dd> 824 825 <dt><a href="./Colors/colorbar.html?format=raw#_COLORBAR">NCOLORS</a></dt> 826 <dd>a keyword from the routine COLORBAR</dd> 827 816 828 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP">NCOLORS</a></dt> 817 829 <dd>a keyword from the routine IMDISP</dd> 818 830 819 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">NCOLORS</a></dt> 820 <dd>a keyword from the routine tvplus</dd> 821 822 <dt><a href="./Colors/colorbar.html?format=raw#_COLORBAR">NCOLORS</a></dt> 823 <dd>a keyword from the routine COLORBAR</dd> 824 825 <dt><a href="./Colors/xlct.html?format=raw#_XLct">NCOLORS</a></dt> 826 <dd>a keyword from the routine XLct</dd> 831 <dt><a href="./Calendar/caldat.html?format=raw#_CALDAT">NDAYSPM</a></dt> 832 <dd>a keyword from the routine CALDAT</dd> 827 833 828 834 <dt><a href="./Calendar/julday.html?format=raw#_JULDAY">NDAYSPM</a></dt> 829 835 <dd>a keyword from the routine JULDAY</dd> 830 836 831 <dt><a href="./ Calendar/caldat.html?format=raw#_CALDAT">NDAYSPM</a></dt>832 <dd>a keyword from the routine CALDAT</dd>837 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP">NEGATIVE</a></dt> 838 <dd>a keyword from the routine IMDISP</dd> 833 839 834 840 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP_IMSCALE">NEGATIVE</a></dt> 835 841 <dd>a keyword from the routine IMDISP_IMSCALE</dd> 836 842 837 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP">NEGATIVE</a></dt>838 <dd>a keyword from the routine IMDISP</dd>839 840 843 <dt><a href="./Utilities/isafile.html?format=raw#_isafile">NEW</a></dt> 841 844 <dd>a keyword from the routine isafile</dd> … … 847 850 <dd>a keyword from the routine remplit</dd> 848 851 852 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">NLEVEL</a></dt> 853 <dd>a keyword from the routine pltz</dd> 854 855 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">NLEVEL</a></dt> 856 <dd>a keyword from the routine pltt</dd> 857 858 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">NLEVEL</a></dt> 859 <dd>a keyword from the routine label</dd> 860 849 861 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">NLEVEL</a></dt> 850 862 <dd>a keyword from the routine plt</dd> 851 863 852 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">NLEVEL</a></dt>853 <dd>a keyword from the routine pltz</dd>854 855 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label.html?format=raw#_label">NLEVEL</a></dt>856 <dd>a keyword from the routine label</dd>857 858 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">NLEVEL</a></dt>859 <dd>a keyword from the routine pltt</dd>860 861 864 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/updatewidget.html?format=raw#_updatewidget">NOBOXZOOM</a></dt> 862 865 <dd>a keyword from the routine updatewidget</dd> … … 889 892 <dd>a keyword from the routine placedessin</dd> 890 893 894 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">NOFILL</a></dt> 895 <dd>a keyword from the routine placedessin</dd> 896 891 897 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html?format=raw#_barrecouleur">NOFILL</a></dt> 892 898 <dd>a keyword from the routine barrecouleur</dd> … … 895 901 <dd>a keyword from the routine pltbase</dd> 896 902 897 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">NOFILL</a></dt>898 <dd>a keyword from the routine placedessin</dd>899 900 903 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">NOINTERP</a></dt> 901 904 <dd>a keyword from the routine tvplus</dd> 902 905 906 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">NOINTERP</a></dt> 907 <dd>a keyword from the routine pltv</dd> 908 909 <dt><a href="./ToBeReviewed/CALCULS/level2depth.html?format=raw#_level2depth">NOMASK</a></dt> 910 <dd>a keyword from the routine level2depth</dd> 911 912 <dt><a href="./ToBeReviewed/CALCULS/depth2floatlevel.html?format=raw#_depth2floatlevel">NOMASK</a></dt> 913 <dd>a keyword from the routine depth2floatlevel</dd> 914 915 <dt><a href="./ToBeReviewed/CALCULS/depth2level.html?format=raw#_depth2level">NOMASK</a></dt> 916 <dd>a keyword from the routine depth2level</dd> 917 903 918 <dt><a href="./ToBeReviewed/CALCULS/floatlevel2depth.html?format=raw#_floatlevel2depth">NOMASK</a></dt> 904 919 <dd>a keyword from the routine floatlevel2depth</dd> 905 920 906 <dt><a href="./ToBeReviewed/CALCULS/depth2floatlevel.html?format=raw#_depth2floatlevel">NOMASK</a></dt>907 <dd>a keyword from the routine depth2floatlevel</dd>908 909 <dt><a href="./ToBeReviewed/CALCULS/level2depth.html?format=raw#_level2depth">NOMASK</a></dt>910 <dd>a keyword from the routine level2depth</dd>911 912 <dt><a href="./ToBeReviewed/CALCULS/depth2level.html?format=raw#_depth2level">NOMASK</a></dt>913 <dd>a keyword from the routine depth2level</dd>914 915 921 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">NONEXCLUSIVE</a></dt> 916 922 <dd>a keyword from the routine CW_BGROUP</dd> 917 923 924 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">NONORTHERNLINE</a></dt> 925 <dd>a keyword from the routine compute_fromreg_imoms3_weigaddr</dd> 926 927 <dt><a href="./Interpolation/fromreg.html?format=raw#_fromreg">NONORTHERNLINE</a></dt> 928 <dd>a keyword from the routine fromreg</dd> 929 918 930 <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">NONORTHERNLINE</a></dt> 919 931 <dd>a keyword from the routine compute_fromreg_bilinear_weigaddr</dd> 920 932 921 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">NONORTHERNLINE</a></dt> 922 <dd>a keyword from the routine compute_fromreg_imoms3_weigaddr</dd> 923 924 <dt><a href="./Interpolation/fromreg.html?format=raw#_fromreg">NONORTHERNLINE</a></dt> 925 <dd>a keyword from the routine fromreg</dd> 933 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">NOPRINT</a></dt> 934 <dd>a keyword from the routine inquad</dd> 926 935 927 936 <dt><a href="./ToBeReviewed/STRUCTURE/where_tag.html?format=raw#_where_Tag">NOPRINT</a></dt> 928 937 <dd>a keyword from the routine where_Tag</dd> 929 938 930 <dt><a href="./Interpolation/inquad.html?format=raw#_inquad">NOPRINT</a></dt>931 <dd>a keyword from the routine inquad</dd>932 933 939 <dt><a href="./Utilities/find.html?format=raw#_find">NOPRO</a></dt> 934 940 <dd>a keyword from the routine find</dd> … … 937 943 <dd>a keyword from the routine checkfield</dd> 938 944 945 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">NOREINITPLT</a></dt> 946 <dd>a keyword from the routine splot</dd> 947 948 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">NOREINITPLT</a></dt> 949 <dd>a keyword from the routine scontour</dd> 950 939 951 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html?format=raw#_sbar_plot">NOREINITPLT</a></dt> 940 952 <dd>a keyword from the routine sbar_plot</dd> 941 953 942 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">NOREINITPLT</a></dt>943 <dd>a keyword from the routine splot</dd>944 945 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">NOREINITPLT</a></dt>946 <dd>a keyword from the routine scontour</dd>947 948 954 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP">NORESIZE</a></dt> 949 955 <dd>a keyword from the routine IMDISP</dd> … … 955 961 <dd>a keyword from the routine IMDISP</dd> 956 962 963 <dt><a href="./Interpolation/fromreg.html?format=raw#_fromreg">NOSOUTHERNLINE</a></dt> 964 <dd>a keyword from the routine fromreg</dd> 965 957 966 <dt><a href="./Interpolation/compute_fromreg_imoms3_weigaddr.html?format=raw#_compute_fromreg_imoms3_weigaddr">NOSOUTHERNLINE</a></dt> 958 967 <dd>a keyword from the routine compute_fromreg_imoms3_weigaddr</dd> 959 968 960 <dt><a href="./Interpolation/fromreg.html?format=raw#_fromreg">NOSOUTHERNLINE</a></dt>961 <dd>a keyword from the routine fromreg</dd>962 963 969 <dt><a href="./Interpolation/compute_fromreg_bilinear_weigaddr.html?format=raw#_compute_fromreg_bilinear_weigaddr">NOSOUTHERNLINE</a></dt> 964 970 <dd>a keyword from the routine compute_fromreg_bilinear_weigaddr</dd> 965 971 972 <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">NOSTRUCT</a></dt> 973 <dd>a keyword from the routine read_ncdf</dd> 974 966 975 <dt><a href="./ReadWrite/read_grads.html?format=raw#_read_grads">NOSTRUCT</a></dt> 967 976 <dd>a keyword from the routine read_grads</dd> 968 977 969 <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">NOSTRUCT</a></dt>970 <dd>a keyword from the routine read_ncdf</dd>971 972 978 <dt><a href="./Colors/colorbar.html?format=raw#_COLORBAR">NOTITLE</a></dt> 973 979 <dd>a keyword from the routine COLORBAR</dd> … … 1000 1006 <dd>a parameter from the routine ./ToBeReviewed/STRING/getwrd</dd> 1001 1007 1008 <dt><a href="./ReadWrite/readoldopadistcoast.html?format=raw#_readoldopadistcoast">NUMREC</a></dt> 1009 <dd>a keyword from the routine readoldopadistcoast</dd> 1010 1002 1011 <dt><a href="./ReadWrite/readoldoparestart.html?format=raw#_readoldoparestart">NUMREC</a></dt> 1003 1012 <dd>a keyword from the routine readoldoparestart</dd> 1004 1013 1005 <dt><a href="./ ReadWrite/readoldopadistcoast.html?format=raw#_readoldopadistcoast">NUMREC</a></dt>1006 <dd>a keyword from the routine readoldopadistcoast</dd>1014 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html?format=raw#_ROTATION">NX</a></dt> 1015 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation</dd> 1007 1016 1008 1017 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP_IMREGRID">NX</a></dt> 1009 1018 <dd>a parameter from the routine ./Picture/imdisp</dd> 1010 1019 1011 <dt><a href="./ ToBeReviewed/PLOTS/DIVERS/rotation.html?format=raw#_ROTATION">NX</a></dt>1012 <dd>a parameter from the routine ./ ToBeReviewed/PLOTS/DIVERS/rotation</dd>1020 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP_IMREGRID">NY</a></dt> 1021 <dd>a parameter from the routine ./Picture/imdisp</dd> 1013 1022 1014 1023 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/rotation.html?format=raw#_ROTATION">NY</a></dt> 1015 1024 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/rotation</dd> 1016 1025 1017 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP_IMREGRID">NY</a></dt>1018 <dd>a parameter from the routine ./Picture/imdisp</dd>1019 1020 1026 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_TimeCross_Cov">Ndim</a></dt> 1021 1027 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate</dd> … … 1024 1030 <dd>a parameter from the routine ./ToBeReviewed/STRUCTURE/where_tag</dd> 1025 1031 1032 <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">n</a></dt> 1033 <dd>a parameter from the routine ./Interpolation/cutsegment</dd> 1034 1026 1035 <dt><a href="./Interpolation/cutpar.html?format=raw#_cutpar">n</a></dt> 1027 1036 <dd>a parameter from the routine ./Interpolation/cutpar</dd> 1028 1037 1029 <dt><a href="./Interpolation/cutsegment.html?format=raw#_cutsegment">n</a></dt> 1030 <dd>a parameter from the routine ./Interpolation/cutsegment</dd> 1038 <dt><a href="./Obsolete/zeroun.html?format=raw#_zeroun">n1</a></dt> 1039 <dd>a parameter from the routine ./Obsolete/zeroun</dd> 1040 1041 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_1d">n1</a></dt> 1042 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 1031 1043 1032 1044 <dt><a href="./ToBeReviewed/POSTSCRIPT/chcolps.html?format=raw#_chcolps">n1</a></dt> 1033 1045 <dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/chcolps</dd> 1034 1046 1035 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_1d">n1</a></dt>1036 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>1037 1038 <dt><a href="./Obsolete/zeroun.html?format=raw#_zeroun">n1</a></dt>1039 <dd>a parameter from the routine ./Obsolete/zeroun</dd>1040 1041 1047 <dt><a href="./Matrix/zero_one.html?format=raw#_zero_one">n1</a></dt> 1042 1048 <dd>a parameter from the routine ./Matrix/zero_one</dd> … … 1084 1090 <dd>a file from the directory ./Grid</dd> 1085 1091 1092 <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">nT</a></dt> 1093 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd> 1094 1086 1095 <dt><a href="./ToBeReviewed/STATISTICS/c_timecorrelate.html?format=raw#_TimeCross_Cov">nT</a></dt> 1087 1096 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/c_timecorrelate</dd> 1088 1097 1089 <dt><a href="./ToBeReviewed/STATISTICS/a_timecorrelate.html?format=raw#_TimeAuto_Cov">nT</a></dt> 1090 <dd>a parameter from the routine ./ToBeReviewed/STATISTICS/a_timecorrelate</dd> 1098 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.html?format=raw#_findline">name</a></dt> 1099 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline</dd> 1100 1101 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_1d">name</a></dt> 1102 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 1103 1104 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html?format=raw#_read_vermair">name</a></dt> 1105 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair</dd> 1091 1106 1092 1107 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#_ncdf_quickwrite_typename">name</a></dt> 1093 1108 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2</dd> 1094 1109 1095 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.html?format=raw#_findline">name</a></dt> 1096 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline</dd> 1097 1098 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html?format=raw#_read_vermair">name</a></dt> 1099 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair</dd> 1100 1101 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_1d">name</a></dt> 1102 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 1110 <dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html?format=raw#_xncdf_lec">name</a></dt> 1111 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/xncdf_lec</dd> 1112 1113 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt.html?format=raw#_extractatt">name</a></dt> 1114 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt</dd> 1103 1115 1104 1116 <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">name</a></dt> … … 1108 1120 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/slec</dd> 1109 1121 1110 <dt><a href="./ToBeReviewed/LECTURE/xncdf_lec.html?format=raw#_xncdf_lec">name</a></dt>1111 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/xncdf_lec</dd>1112 1113 1122 <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">name</a></dt> 1114 1123 <dd>a parameter from the routine ./Obsolete/nlec</dd> 1115 1124 1116 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt.html?format=raw#_extractatt">name</a></dt>1117 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt</dd>1118 1119 1125 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.html?format=raw#_cutcmd">nameexp</a></dt> 1120 1126 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd</dd> … … 1129 1135 <dd>a parameter from the routine ./Postscript/openps</dd> 1130 1136 1137 <dt><a href="./Matrix/make_selection.html?format=raw#_make_selection">names</a></dt> 1138 <dd>a parameter from the routine ./Matrix/make_selection</dd> 1139 1131 1140 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">names</a></dt> 1132 1141 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup</dd> 1133 1142 1134 <dt><a href="./Matrix/make_selection.html?format=raw#_make_selection">names</a></dt>1135 <dd>a parameter from the routine ./Matrix/make_selection</dd>1136 1137 1143 <dt><a href="./Interpolation/extrapolate.html?format=raw#_extrapolate">nb_iteration</a></dt> 1138 1144 <dd>a parameter from the routine ./Interpolation/extrapolate</dd> 1139 1145 1146 <dt><a href="./Obsolete/nlecmois.html?format=raw#_nlecmois">nbretps</a></dt> 1147 <dd>a parameter from the routine ./Obsolete/nlecmois</dd> 1148 1140 1149 <dt><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">nbretps</a></dt> 1141 1150 <dd>a parameter from the routine ./Obsolete/nlecsaison</dd> … … 1144 1153 <dd>a parameter from the routine ./Obsolete/nlec5j</dd> 1145 1154 1146 <dt><a href="./Obsolete/nlecmois.html?format=raw#_nlecmois">nbretps</a></dt>1147 <dd>a parameter from the routine ./Obsolete/nlecmois</dd>1148 1149 1155 <dt><a href="./Obsolete/nlecan.html?format=raw#_nlecan">nbretps</a></dt> 1150 1156 <dd>a parameter from the routine ./Obsolete/nlecan</dd> … … 1261 1267 <dd>a parameter from the routine ./ToBeReviewed/INIT/initncdf</dd> 1262 1268 1269 <dt><a href="./Grid/smallmeshmask.html?format=raw#_smallmeshmask">ncfilein</a></dt> 1270 <dd>a parameter from the routine ./Grid/smallmeshmask</dd> 1271 1263 1272 <dt><a href="./Grid/micromeshmask.html?format=raw#_micromeshmask">ncfilein</a></dt> 1264 1273 <dd>a parameter from the routine ./Grid/micromeshmask</dd> 1265 1274 1266 <dt><a href="./Grid/smallmeshmask.html?format=raw#_smallmeshmask">ncfilein</a></dt>1267 <dd>a parameter from the routine ./Grid/smallmeshmask</dd>1268 1269 1275 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#_ncdf_quickwrite_helper2">ncfilename</a></dt> 1270 1276 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2</dd> 1271 1277 1278 <dt><a href="./Grid/smallmeshmask.html?format=raw#_smallmeshmask">ncfileout</a></dt> 1279 <dd>a parameter from the routine ./Grid/smallmeshmask</dd> 1280 1272 1281 <dt><a href="./Grid/micromeshmask.html?format=raw#_micromeshmask">ncfileout</a></dt> 1273 1282 <dd>a parameter from the routine ./Grid/micromeshmask</dd> 1274 1283 1275 <dt><a href="./Grid/smallmeshmask.html?format=raw#_smallmeshmask">ncfileout</a></dt>1276 <dd>a parameter from the routine ./Grid/smallmeshmask</dd>1277 1278 1284 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_listvars.html?format=raw#_ncdf_listvars">ncid</a></dt> 1279 1285 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_listvars</dd> … … 1393 1399 <dd>a keyword from the routine ncdf_struct</dd> 1394 1400 1401 <dt><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">nom</a></dt> 1402 <dd>a parameter from the routine ./Obsolete/nlecsaison</dd> 1403 1404 <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">nom</a></dt> 1405 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/ncdf_lec</dd> 1406 1407 <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">nom</a></dt> 1408 <dd>a parameter from the routine ./Obsolete/nlecserie</dd> 1409 1395 1410 <dt><a href="./Obsolete/nlecmois.html?format=raw#_nlecmois">nom</a></dt> 1396 1411 <dd>a parameter from the routine ./Obsolete/nlecmois</dd> … … 1402 1417 <dd>a parameter from the routine ./Obsolete/nlec5j</dd> 1403 1418 1404 <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">nom</a></dt>1405 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/ncdf_lec</dd>1406 1407 <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">nom</a></dt>1408 <dd>a parameter from the routine ./Obsolete/nlecserie</dd>1409 1410 <dt><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">nom</a></dt>1411 <dd>a parameter from the routine ./Obsolete/nlecsaison</dd>1412 1413 1419 <dt><a href="./buildinit.html?format=raw#_getdir">nomark</a></dt> 1414 1420 <dd>a keyword from the routine getdir</dd> 1415 1421 1422 <dt><a href="./Obsolete/lect.html?format=raw#_lect">nomchamp</a></dt> 1423 <dd>a parameter from the routine ./Obsolete/lect</dd> 1424 1416 1425 <dt><a href="./Obsolete/lec.html?format=raw#_lec">nomchamp</a></dt> 1417 1426 <dd>a parameter from the routine ./Obsolete/lec</dd> 1418 1427 1419 <dt><a href="./Obsolete/lect.html?format=raw#_lect">nomchamp</a></dt>1420 <dd>a parameter from the routine ./Obsolete/lect</dd>1421 1422 1428 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html?format=raw#_read_vermair">nomexp</a></dt> 1423 1429 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair</dd> 1424 1430 1431 <dt><a href="./Obsolete/ficdate.html?format=raw#_ficdate">nomexp</a></dt> 1432 <dd>a parameter from the routine ./Obsolete/ficdate</dd> 1433 1434 <dt><a href="./Obsolete/lec.html?format=raw#_lec">nomexp</a></dt> 1435 <dd>a parameter from the routine ./Obsolete/lec</dd> 1436 1437 <dt><a href="./Obsolete/lect.html?format=raw#_lect">nomexp</a></dt> 1438 <dd>a parameter from the routine ./Obsolete/lect</dd> 1439 1425 1440 <dt><a href="./ToBeReviewed/WIDGET/slec.html?format=raw#_slec">nomexp</a></dt> 1426 1441 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/slec</dd> 1427 1442 1428 <dt><a href="./Obsolete/lect.html?format=raw#_lect">nomexp</a></dt>1429 <dd>a parameter from the routine ./Obsolete/lect</dd>1430 1431 <dt><a href="./Obsolete/lec.html?format=raw#_lec">nomexp</a></dt>1432 <dd>a parameter from the routine ./Obsolete/lec</dd>1433 1434 <dt><a href="./Obsolete/ficdate.html?format=raw#_ficdate">nomexp</a></dt>1435 <dd>a parameter from the routine ./Obsolete/ficdate</dd>1436 1437 1443 <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">nomexperience</a></dt> 1438 1444 <dd>a parameter from the routine ./Obsolete/nlec</dd> … … 1474 1480 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/symbols</dd> 1475 1481 1482 <dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_nbits.html?format=raw#_scan_grib_nbits">num</a></dt> 1483 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_nbits</dd> 1484 1485 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#_ncdf_quickwrite_typename">num</a></dt> 1486 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2</dd> 1487 1488 <dt><a href="./ReadWrite/readoldopadistcoast.html?format=raw#_read3fromopa">num</a></dt> 1489 <dd>a parameter from the routine ./ReadWrite/readoldopadistcoast</dd> 1490 1491 <dt><a href="./ReadWrite/readoldoparestart.html?format=raw#_read2fromopa">num</a></dt> 1492 <dd>a parameter from the routine ./ReadWrite/readoldoparestart</dd> 1493 1494 <dt><a href="./ReadWrite/readoldoparestart.html?format=raw#_read3fromopa">num</a></dt> 1495 <dd>a parameter from the routine ./ReadWrite/readoldoparestart</dd> 1496 1497 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_bds.html?format=raw#_read_grib_bds">num</a></dt> 1498 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_bds</dd> 1499 1500 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_end.html?format=raw#_read_grib_end">num</a></dt> 1501 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_end</dd> 1502 1503 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_gds.html?format=raw#_read_grib_gds">num</a></dt> 1504 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_gds</dd> 1505 1506 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_is.html?format=raw#_read_grib_is">num</a></dt> 1507 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_is</dd> 1508 1509 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_pds.html?format=raw#_read_grib_pds">num</a></dt> 1510 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_pds</dd> 1511 1512 <dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_code.html?format=raw#_scan_grib_code">num</a></dt> 1513 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_code</dd> 1514 1515 <dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_date.html?format=raw#_scan_grib_date">num</a></dt> 1516 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_date</dd> 1517 1476 1518 <dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_messize.html?format=raw#_scan_grib_messize">num</a></dt> 1477 1519 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_messize</dd> 1478 1520 1479 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#_ncdf_quickwrite_typename">num</a></dt>1480 <dd>a parameter from the routine ./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2</dd>1481 1482 <dt><a href="./ReadWrite/readoldopadistcoast.html?format=raw#_read3fromopa">num</a></dt>1483 <dd>a parameter from the routine ./ReadWrite/readoldopadistcoast</dd>1484 1485 <dt><a href="./ReadWrite/readoldoparestart.html?format=raw#_read2fromopa">num</a></dt>1486 <dd>a parameter from the routine ./ReadWrite/readoldoparestart</dd>1487 1488 <dt><a href="./ReadWrite/readoldoparestart.html?format=raw#_read3fromopa">num</a></dt>1489 <dd>a parameter from the routine ./ReadWrite/readoldoparestart</dd>1490 1491 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_bds.html?format=raw#_read_grib_bds">num</a></dt>1492 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_bds</dd>1493 1494 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_end.html?format=raw#_read_grib_end">num</a></dt>1495 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_end</dd>1496 1497 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_gds.html?format=raw#_read_grib_gds">num</a></dt>1498 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_gds</dd>1499 1500 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_is.html?format=raw#_read_grib_is">num</a></dt>1501 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_is</dd>1502 1503 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_grib_pds.html?format=raw#_read_grib_pds">num</a></dt>1504 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/read_grib_pds</dd>1505 1506 <dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_code.html?format=raw#_scan_grib_code">num</a></dt>1507 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_code</dd>1508 1509 <dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_date.html?format=raw#_scan_grib_date">num</a></dt>1510 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_date</dd>1511 1512 <dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_nbits.html?format=raw#_scan_grib_nbits">num</a></dt>1513 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_nbits</dd>1514 1515 1521 <dt><a href="./ToBeReviewed/LECTURE/GRIB/scan_grib_recstart.html?format=raw#_scan_grib_recstart">num</a></dt> 1516 1522 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/GRIB/scan_grib_recstart</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-P.html
r151 r153 922 922 <dd>a parameter from the routine ./ReadWrite/readoldoparestart</dd> 923 923 924 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html?format=raw#_cw_slider_pm">parent</a></dt> 925 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm</dd> 926 927 <dt><a href="./ToBeReviewed/HOPE/cw_selectinterval.html?format=raw#_cw_selectinterval">parent</a></dt> 928 <dd>a parameter from the routine ./ToBeReviewed/HOPE/cw_selectinterval</dd> 929 930 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim.html?format=raw#_xcreateanim">parent</a></dt> 931 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim</dd> 932 933 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">parent</a></dt> 934 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup</dd> 935 936 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html?format=raw#_cw_calendar">parent</a></dt> 937 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar</dd> 938 939 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html?format=raw#_cw_combobox_pm">parent</a></dt> 940 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm</dd> 941 942 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html?format=raw#_cw_domain">parent</a></dt> 943 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain</dd> 944 945 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html?format=raw#_cw_droplist_pm">parent</a></dt> 946 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm</dd> 947 948 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html?format=raw#_cw_pagelayout">parent</a></dt> 949 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout</dd> 950 951 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html?format=raw#_cw_slide_slice">parent</a></dt> 952 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice</dd> 953 924 954 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html?format=raw#_cw_specifie">parent</a></dt> 925 955 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie</dd> 926 956 927 <dt><a href="./ToBeReviewed/HOPE/cw_selectinterval.html?format=raw#_cw_selectinterval">parent</a></dt>928 <dd>a parameter from the routine ./ToBeReviewed/HOPE/cw_selectinterval</dd>929 930 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim.html?format=raw#_xcreateanim">parent</a></dt>931 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim</dd>932 933 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html?format=raw#_CW_BGROUP">parent</a></dt>934 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup</dd>935 936 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html?format=raw#_cw_calendar">parent</a></dt>937 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar</dd>938 939 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html?format=raw#_cw_combobox_pm">parent</a></dt>940 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm</dd>941 942 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html?format=raw#_cw_domain">parent</a></dt>943 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain</dd>944 945 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html?format=raw#_cw_droplist_pm">parent</a></dt>946 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm</dd>947 948 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html?format=raw#_cw_pagelayout">parent</a></dt>949 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout</dd>950 951 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html?format=raw#_cw_slide_slice">parent</a></dt>952 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice</dd>953 954 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html?format=raw#_cw_slider_pm">parent</a></dt>955 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm</dd>956 957 957 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_gribtable.html?format=raw#_read_gribtable">parmtabl</a></dt> 958 958 <dd>a keyword from the routine read_gribtable</dd> … … 1021 1021 <dd>a file from the directory ./ToBeReviewed/PLOTS/DESSINE</dd> 1022 1022 1023 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">pltv</a></dt> 1024 <dd>a procedure from the file pltv.pro</dd> 1025 1026 <dt><a href="ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw">pltv.pro</a></dt> 1027 <dd>a file from the directory ./ToBeReviewed/PLOTS/DESSINE</dd> 1028 1023 1029 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">pltz</a></dt> 1024 1030 <dd>a procedure from the file pltz.pro</dd> … … 1033 1039 <dd>a parameter from the routine ./Utilities/linearequation</dd> 1034 1040 1041 <dt><a href="./ToBeReviewed/LECTURE/read_ftp.html?format=raw#_read_ftp">port</a></dt> 1042 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/read_ftp</dd> 1043 1035 1044 <dt><a href="./ToBeReviewed/LECTURE/read_ftp.html?format=raw#_ftp_parse_pasv">port</a></dt> 1036 1045 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/read_ftp</dd> 1037 1046 1038 <dt><a href="./ToBeReviewed/LECTURE/read_ftp.html?format=raw#_read_ftp">port</a></dt>1039 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/read_ftp</dd>1040 1041 1047 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placecolor.html?format=raw#_placecolor">pos</a></dt> 1042 1048 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/placecolor</dd> … … 1045 1051 <dd>a keyword from the routine text_box</dd> 1046 1052 1053 <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">posbar</a></dt> 1054 <dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/calibre</dd> 1055 1047 1056 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">posbar</a></dt> 1048 1057 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/placedessin</dd> 1049 1058 1050 <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">pos bar</a></dt>1059 <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">posfenetre</a></dt> 1051 1060 <dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/calibre</dd> 1052 1061 … … 1054 1063 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/placedessin</dd> 1055 1064 1056 <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">posfenetre</a></dt>1057 <dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/calibre</dd>1058 1059 1065 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html?format=raw#_addaxe">posfenetre</a></dt> 1060 1066 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/addaxe</dd> … … 1063 1069 <dd>a parameter from the routine ./Interpolation/angle</dd> 1064 1070 1071 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.html?format=raw#_cutcmd">prefix</a></dt> 1072 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd</dd> 1073 1065 1074 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickread/ncdf_quickread_helper.html?format=raw#_ncdf_quickread_helper">prefix</a></dt> 1066 1075 <dd>a keyword from the routine ncdf_quickread_helper</dd> 1067 1076 1068 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.html?format=raw#_cutcmd">prefix</a></dt>1069 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd</dd>1070 1071 1077 <dt><a href="./buildinit.html?format=raw#_printerdef_event">printerdef_event</a></dt> 1072 1078 <dd>a procedure from the file buildinit.pro</dd> … … 1084 1090 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checktypeminmax</dd> 1085 1091 1092 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">procedure</a></dt> 1093 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 1094 1086 1095 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html?format=raw#_buildreadcmd">procedure</a></dt> 1087 1096 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd</dd> 1088 1097 1089 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">procedure</a></dt>1090 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>1091 1092 1098 <dt><a href="./ToBeReviewed/CALCULS/projectondepth.html?format=raw#_projectondepth">projectondepth</a></dt> 1093 1099 <dd>a function from the file projectondepth.pro</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-T.html
r151 r153 829 829 <dd>a keyword from the routine COLORBAR</dd> 830 830 831 <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">TOUT</a></dt> 832 <dd>a keyword from the routine nlec</dd> 833 834 <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">TOUT</a></dt> 835 <dd>a keyword from the routine grille</dd> 836 837 <dt><a href="./Obsolete/lec.html?format=raw#_lec">TOUT</a></dt> 838 <dd>a keyword from the routine lec</dd> 839 840 <dt><a href="./Obsolete/nlec5j.html?format=raw#_nlec5j">TOUT</a></dt> 841 <dd>a keyword from the routine nlec5j</dd> 842 843 <dt><a href="./Obsolete/nlecan.html?format=raw#_nlecan">TOUT</a></dt> 844 <dd>a keyword from the routine nlecan</dd> 845 846 <dt><a href="./Obsolete/nlecmois.html?format=raw#_nlecmois">TOUT</a></dt> 847 <dd>a keyword from the routine nlecmois</dd> 848 849 <dt><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">TOUT</a></dt> 850 <dd>a keyword from the routine nlecsaison</dd> 851 852 <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">TOUT</a></dt> 853 <dd>a keyword from the routine nlecserie</dd> 854 831 855 <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">TOUT</a></dt> 832 856 <dd>a keyword from the routine read_ncdf</dd> 833 857 834 <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">TOUT</a></dt>835 <dd>a keyword from the routine grille</dd>836 837 <dt><a href="./Obsolete/lec.html?format=raw#_lec">TOUT</a></dt>838 <dd>a keyword from the routine lec</dd>839 840 <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">TOUT</a></dt>841 <dd>a keyword from the routine nlec</dd>842 843 <dt><a href="./Obsolete/nlec5j.html?format=raw#_nlec5j">TOUT</a></dt>844 <dd>a keyword from the routine nlec5j</dd>845 846 <dt><a href="./Obsolete/nlecan.html?format=raw#_nlecan">TOUT</a></dt>847 <dd>a keyword from the routine nlecan</dd>848 849 <dt><a href="./Obsolete/nlecmois.html?format=raw#_nlecmois">TOUT</a></dt>850 <dd>a keyword from the routine nlecmois</dd>851 852 <dt><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">TOUT</a></dt>853 <dd>a keyword from the routine nlecsaison</dd>854 855 <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">TOUT</a></dt>856 <dd>a keyword from the routine nlecserie</dd>857 858 858 <dt><a href="./Obsolete/imprime.html?format=raw#_imprime">TRANS</a></dt> 859 859 <dd>a keyword from the routine imprime</dd> … … 877 877 <dd>a keyword from the routine Str_token</dd> 878 878 879 <dt><a href="./ToBeReviewed/STRING/strtok.html?format=raw#_Strtok">TRIM</a></dt> 880 <dd>a keyword from the routine Strtok</dd> 881 879 882 <dt><a href="./ToBeReviewed/STRING/strsci.html?format=raw#_StrSci">TRIM</a></dt> 880 883 <dd>a keyword from the routine StrSci</dd> 881 884 882 <dt><a href="./ToBeReviewed/STRING/strtok.html?format=raw#_Strtok">TRIM</a></dt>883 <dd>a keyword from the routine Strtok</dd>884 885 885 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">TRIMSK</a></dt> 886 886 <dd>a keyword from the routine pltbase</dd> … … 892 892 <dd>a keyword from the routine GETCOLOR</dd> 893 893 894 <dt><a href="./Utilities/find.html?format=raw#_find">TRYFIND</a></dt> 895 <dd>a keyword from the routine find</dd> 896 897 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">TT</a></dt> 898 <dd>a keyword from the routine pltt</dd> 899 900 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">TT</a></dt> 901 <dd>a keyword from the routine plt1d</dd> 902 894 903 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">TT</a></dt> 895 904 <dd>a keyword from the routine checktypeminmax</dd> 896 905 897 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">TT</a></dt>898 <dd>a keyword from the routine plt1d</dd>899 900 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">TT</a></dt>901 <dd>a keyword from the routine pltt</dd>902 903 906 <dt><a href="./Interpolation/map_npoints.html?format=raw#_Map_npoints">TWO_BY_TWO</a></dt> 904 907 <dd>a keyword from the routine Map_npoints</dd> … … 907 910 <dd>a parameter from the routine ./ToBeReviewed/STRING/getwrd</dd> 908 911 912 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">TYPE</a></dt> 913 <dd>a keyword from the routine decoupeterre</dd> 914 915 <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">TYPE</a></dt> 916 <dd>a keyword from the routine section</dd> 917 918 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">TYPE</a></dt> 919 <dd>a keyword from the routine domdef</dd> 920 921 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">TYPE</a></dt> 922 <dd>a keyword from the routine placedessin</dd> 923 924 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">TYPE</a></dt> 925 <dd>a keyword from the routine checktypeminmax</dd> 926 909 927 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">TYPE</a></dt> 910 928 <dd>a keyword from the routine checkfield</dd> 911 929 912 <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">TYPE</a></dt> 913 <dd>a keyword from the routine section</dd> 914 915 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">TYPE</a></dt> 916 <dd>a keyword from the routine placedessin</dd> 917 918 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">TYPE</a></dt> 919 <dd>a keyword from the routine checktypeminmax</dd> 920 921 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">TYPE</a></dt> 922 <dd>a keyword from the routine decoupeterre</dd> 923 924 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">TYPE</a></dt> 925 <dd>a keyword from the routine domdef</dd> 930 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">TYPEIN</a></dt> 931 <dd>a keyword from the routine pltz</dd> 926 932 927 933 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">TYPEIN</a></dt> … … 931 937 <dd>a keyword from the routine pltt</dd> 932 938 933 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">TYPEIN</a></dt>934 <dd>a keyword from the routine pltz</dd>935 936 939 <dt><a href="./ToBeReviewed/PLOTS/legende.html?format=raw#_legende">TYPE_YZ</a></dt> 937 940 <dd>a keyword from the routine legende</dd> … … 955 958 <dd>a file from the directory ./ToBeReviewed/GRILLE</dd> 956 959 960 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">tab</a></dt> 961 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/determineminmax</dd> 962 963 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">tab</a></dt> 964 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltt</dd> 965 966 <dt><a href="./ToBeReviewed/CALCULS/depth2floatlevel.html?format=raw#_depth2floatlevel">tab</a></dt> 967 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2floatlevel</dd> 968 969 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">tab</a></dt> 970 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/moyenne</dd> 971 972 <dt><a href="./ToBeReviewed/CALCULS/level2mask.html?format=raw#_level2mask">tab</a></dt> 973 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2mask</dd> 974 975 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">tab</a></dt> 976 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltz</dd> 977 978 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">tab</a></dt> 979 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/plt1d</dd> 980 981 <dt><a href="./ToBeReviewed/CALCULS/level2depth.html?format=raw#_level2depth">tab</a></dt> 982 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2depth</dd> 983 957 984 <dt><a href="./Obsolete/extrait.html?format=raw#_extrait">tab</a></dt> 958 985 <dd>a parameter from the routine ./Obsolete/extrait</dd> 959 986 987 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">tab</a></dt> 988 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/grossemoyenne</dd> 989 990 <dt><a href="./ToBeReviewed/CALCULS/floatlevel2depth.html?format=raw#_floatlevel2depth">tab</a></dt> 991 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/floatlevel2depth</dd> 992 993 <dt><a href="./ToBeReviewed/CALCULS/depth2mask.html?format=raw#_depth2mask">tab</a></dt> 994 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2mask</dd> 995 996 <dt><a href="./ToBeReviewed/CALCULS/depth2level.html?format=raw#_depth2level">tab</a></dt> 997 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2level</dd> 998 960 999 <dt><a href="./Grid/changemsk.html?format=raw#_changemsk">tab</a></dt> 961 1000 <dd>a parameter from the routine ./Grid/changemsk</dd> 962 1001 963 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">tab</a></dt> 964 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/determineminmax</dd> 965 966 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">tab</a></dt> 967 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltz</dd> 968 969 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">tab</a></dt> 970 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/moyenne</dd> 971 972 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">tab</a></dt> 973 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltt</dd> 974 975 <dt><a href="./ToBeReviewed/CALCULS/level2mask.html?format=raw#_level2mask">tab</a></dt> 976 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2mask</dd> 977 978 <dt><a href="./ToBeReviewed/CALCULS/level2depth.html?format=raw#_level2depth">tab</a></dt> 979 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/level2depth</dd> 980 981 <dt><a href="./ToBeReviewed/CALCULS/floatlevel2depth.html?format=raw#_floatlevel2depth">tab</a></dt> 982 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/floatlevel2depth</dd> 983 984 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">tab</a></dt> 985 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/plt1d</dd> 986 987 <dt><a href="./ToBeReviewed/CALCULS/depth2mask.html?format=raw#_depth2mask">tab</a></dt> 988 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2mask</dd> 989 990 <dt><a href="./ToBeReviewed/CALCULS/depth2level.html?format=raw#_depth2level">tab</a></dt> 991 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2level</dd> 992 993 <dt><a href="./ToBeReviewed/CALCULS/depth2floatlevel.html?format=raw#_depth2floatlevel">tab</a></dt> 994 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/depth2floatlevel</dd> 995 996 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">tab</a></dt> 997 <dd>a parameter from the routine ./ToBeReviewed/CALCULS/grossemoyenne</dd> 1002 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">tab1</a></dt> 1003 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltsc</dd> 998 1004 999 1005 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">tab1</a></dt> 1000 1006 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/plt</dd> 1001 1007 1002 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">tab1</a></dt>1003 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltsc</dd>1004 1005 1008 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">tab2</a></dt> 1006 1009 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DESSINE/pltsc</dd> … … 1009 1012 <dd>a parameter from the routine ./ToBeReviewed/POSTSCRIPT/chcolps</dd> 1010 1013 1011 <dt><a href="./ Matrix/congridseb.html?format=raw#_congridseb">tableau</a></dt>1012 <dd>a parameter from the routine ./ Matrix/congridseb</dd>1014 <dt><a href="./Obsolete/congridseb.html?format=raw#_congridseb">tableau</a></dt> 1015 <dd>a parameter from the routine ./Obsolete/congridseb</dd> 1013 1016 1014 1017 <dt><a href="./ToBeReviewed/LECTURE/GRIB/read_gribtable.html?format=raw#_read_gribtable">tablename</a></dt> … … 1033 1036 <dd>a keyword from the routine readoldoparestart</dd> 1034 1037 1038 <dt><a href="./ToBeReviewed/GRILLE/f2v.html?format=raw#_f2v">temp</a></dt> 1039 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/f2v</dd> 1040 1041 <dt><a href="./ToBeReviewed/GRILLE/u2t.html?format=raw#_u2t">temp</a></dt> 1042 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/u2t</dd> 1043 1044 <dt><a href="./ToBeReviewed/GRILLE/v2t.html?format=raw#_v2t">temp</a></dt> 1045 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/v2t</dd> 1046 1035 1047 <dt><a href="./ToBeReviewed/GRILLE/t2v.html?format=raw#_t2v">temp</a></dt> 1036 1048 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/t2v</dd> 1037 1049 1038 <dt><a href="./ToBeReviewed/GRILLE/v2t.html?format=raw#_v2t">temp</a></dt>1039 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/v2t</dd>1040 1041 <dt><a href="./ToBeReviewed/GRILLE/u2t.html?format=raw#_u2t">temp</a></dt>1042 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/u2t</dd>1043 1044 <dt><a href="./ToBeReviewed/GRILLE/f2v.html?format=raw#_f2v">temp</a></dt>1045 <dd>a parameter from the routine ./ToBeReviewed/GRILLE/f2v</dd>1046 1047 1050 <dt><a href="./ToBeReviewed/PLOTS/axe.html?format=raw#_axe">tempsmax</a></dt> 1048 1051 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/axe</dd> … … 1063 1066 <dd>a file from the directory ./Utilities</dd> 1064 1067 1068 <dt><a href="./ToBeReviewed/WIDGET/xnotice.html?format=raw#_xnotice">text</a></dt> 1069 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/xnotice</dd> 1070 1071 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.html?format=raw#_inserthistory">text</a></dt> 1072 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory</dd> 1073 1074 <dt><a href="./Utilities/report.html?format=raw#_report">text</a></dt> 1075 <dd>a parameter from the routine ./Utilities/report</dd> 1076 1065 1077 <dt><a href="./Utilities/text_box.html?format=raw#_text_box">text</a></dt> 1066 1078 <dd>a parameter from the routine ./Utilities/text_box</dd> 1067 1079 1068 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.html?format=raw#_inserthistory">text</a></dt>1069 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory</dd>1070 1071 <dt><a href="./ToBeReviewed/WIDGET/xnotice.html?format=raw#_xnotice">text</a></dt>1072 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/xnotice</dd>1073 1074 1080 <dt><a href="./ToBeReviewed/LECTURE/read_ftp.html?format=raw#_ftp_parse_pasv">text</a></dt> 1075 1081 <dd>a parameter from the routine ./ToBeReviewed/LECTURE/read_ftp</dd> 1076 1082 1077 <dt><a href="./Utilities/report.html?format=raw#_report">text</a></dt>1078 <dd>a parameter from the routine ./Utilities/report</dd>1079 1080 1083 <dt><a href="./Utilities/text_box.html?format=raw#_text_box">text_box</a></dt> 1081 1084 <dd>a procedure from the file text_box.pro</dd> … … 1126 1129 <dd>a parameter from the routine ./Textoidl/strtrans</dd> 1127 1130 1131 <dt><a href="./ToBeReviewed/STRING/strtok.html?format=raw#_Strtok">token</a></dt> 1132 <dd>a parameter from the routine ./ToBeReviewed/STRING/strtok</dd> 1133 1128 1134 <dt><a href="./Textoidl/translate_sub_super.html?format=raw#_Sub_sup_idl">token</a></dt> 1129 1135 <dd>a parameter from the routine ./Textoidl/translate_sub_super</dd> 1130 1136 1131 <dt><a href="./ToBeReviewed/STRING/strtok.html?format=raw#_Strtok">token</a></dt>1132 <dd>a parameter from the routine ./ToBeReviewed/STRING/strtok</dd>1133 1134 1137 <dt><a href="./Textoidl/sub_sup_idl.html?format=raw#_Sub_sup_idl">token</a></dt> 1135 1138 <dd>a parameter from the routine ./Textoidl/sub_sup_idl</dd> … … 1147 1150 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt</dd> 1148 1151 1152 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.html?format=raw#_findline">top_uvalue</a></dt> 1153 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline</dd> 1154 1149 1155 <dt><a href="./ToBeReviewed/HOPE/domainpart.html?format=raw#_domainpart">top_uvalue</a></dt> 1150 1156 <dd>a parameter from the routine ./ToBeReviewed/HOPE/domainpart</dd> 1151 1157 1152 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.html?format=raw#_findline">top_uvalue</a></dt>1153 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline</dd>1154 1155 1158 <dt><a href="./ToBeReviewed/HOPE/rh_alldomains.html?format=raw#_rh_alldomains">topid</a></dt> 1156 1159 <dd>a parameter from the routine ./ToBeReviewed/HOPE/rh_alldomains</dd> … … 1381 1384 <dd>a parameter from the routine ./ToBeReviewed/STRING/nwrds</dd> 1382 1385 1386 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html?format=raw#_addaxe">type</a></dt> 1387 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/addaxe</dd> 1388 1389 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">type</a></dt> 1390 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/axis4pltz</dd> 1391 1392 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_1d">type</a></dt> 1393 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 1394 1395 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_2d">type</a></dt> 1396 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 1397 1398 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_3d">type</a></dt> 1399 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 1400 1401 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html?format=raw#_buildreadcmd">type</a></dt> 1402 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd</dd> 1403 1383 1404 <dt><a href="./Colors/xpal.html?format=raw#_XP_REPLOT">type</a></dt> 1384 1405 <dd>a parameter from the routine ./Colors/xpal</dd> 1385 1406 1386 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">type</a></dt> 1387 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/axis4pltz</dd> 1388 1389 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_1d">type</a></dt> 1390 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 1391 1392 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_2d">type</a></dt> 1393 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd> 1407 <dt><a href="./Matrix/cmapply.html?format=raw#_cmapply">type</a></dt> 1408 <dd>a keyword from the routine cmapply</dd> 1394 1409 1395 1410 <dt><a href="./Colors/xpal.html?format=raw#_XP_CHANGE_COLOR">type</a></dt> 1396 1411 <dd>a parameter from the routine ./Colors/xpal</dd> 1397 1412 1398 <dt><a href="./Matrix/cmapply.html?format=raw#_cmapply">type</a></dt>1399 <dd>a keyword from the routine cmapply</dd>1400 1401 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_err_3d">type</a></dt>1402 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/checkfield</dd>1403 1404 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html?format=raw#_buildreadcmd">type</a></dt>1405 <dd>a parameter from the routine ./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd</dd>1406 1407 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html?format=raw#_addaxe">type</a></dt>1408 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/addaxe</dd>1409 1410 1413 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">typedessin</a></dt> 1411 1414 <dd>a parameter from the routine ./ToBeReviewed/PLOTS/DIVERS/placedessin</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-X.html
r151 r153 949 949 <dd>a parameter from the routine ./ToBeReviewed/TRIANGULATION/dessinetri</dd> 950 950 951 <dt><a href="./ Matrix/congridseb.html?format=raw#_congridseb">x</a></dt>952 <dd>a parameter from the routine ./ Matrix/congridseb</dd>951 <dt><a href="./Obsolete/congridseb.html?format=raw#_congridseb">x</a></dt> 952 <dd>a parameter from the routine ./Obsolete/congridseb</dd> 953 953 954 954 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">x</a></dt> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-Y.html
r151 r153 904 904 <dd>a parameter from the routine ./Interpolation/inquad</dd> 905 905 906 <dt><a href="./ Matrix/congridseb.html?format=raw#_congridseb">y</a></dt>907 <dd>a parameter from the routine ./ Matrix/congridseb</dd>906 <dt><a href="./Obsolete/congridseb.html?format=raw#_congridseb">y</a></dt> 907 <dd>a parameter from the routine ./Obsolete/congridseb</dd> 908 908 909 909 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">y</a></dt> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-index-_.html
r151 r153 781 781 <dl> 782 782 783 <dt><a href="./Obsolete/ncdf_meshlec.html?format=raw#_ncdf_meshlec">_EXTRA</a></dt> 784 <dd>a keyword from the routine ncdf_meshlec</dd> 785 786 <dt><a href="./ToBeReviewed/PLOTS/axe.html?format=raw#_axe">_EXTRA</a></dt> 787 <dd>a keyword from the routine axe</dd> 788 789 <dt><a href="./ToBeReviewed/PLOTS/legende.html?format=raw#_legende">_EXTRA</a></dt> 790 <dd>a keyword from the routine legende</dd> 791 792 <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">_EXTRA</a></dt> 793 <dd>a keyword from the routine nlec</dd> 794 795 <dt><a href="./Obsolete/nlec5j.html?format=raw#_nlec5j">_EXTRA</a></dt> 796 <dd>a keyword from the routine nlec5j</dd> 797 798 <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">_EXTRA</a></dt> 799 <dd>a keyword from the routine grille</dd> 800 801 <dt><a href="./ToBeReviewed/TRIANGULATION/ciseauxtri.html?format=raw#_ciseauxtri">_EXTRA</a></dt> 802 <dd>a keyword from the routine ciseauxtri</dd> 803 804 <dt><a href="./Obsolete/nlecan.html?format=raw#_nlecan">_EXTRA</a></dt> 805 <dd>a keyword from the routine nlecan</dd> 806 807 <dt><a href="./Obsolete/nlecmois.html?format=raw#_nlecmois">_EXTRA</a></dt> 808 <dd>a keyword from the routine nlecmois</dd> 809 810 <dt><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">_EXTRA</a></dt> 811 <dd>a keyword from the routine nlecsaison</dd> 812 813 <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">_EXTRA</a></dt> 814 <dd>a keyword from the routine nlecserie</dd> 815 816 <dt><a href="./ToBeReviewed/INIT/initncdf.html?format=raw#_initncdf">_EXTRA</a></dt> 817 <dd>a keyword from the routine initncdf</dd> 818 819 <dt><a href="./Obsolete/vairdate.html?format=raw#_vairdate">_EXTRA</a></dt> 820 <dd>a keyword from the routine vairdate</dd> 821 822 <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">_EXTRA</a></dt> 823 <dd>a keyword from the routine read_ncdf</dd> 824 825 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/bar_plot.html?format=raw#_bar_plot">_EXTRA</a></dt> 826 <dd>a keyword from the routine bar_plot</dd> 827 828 <dt><a href="./ToBeReviewed/TRIANGULATION/tracecote.html?format=raw#_tracecote">_EXTRA</a></dt> 829 <dd>a keyword from the routine tracecote</dd> 830 831 <dt><a href="./Obsolete/vraidate.html?format=raw#_vraidate">_EXTRA</a></dt> 832 <dd>a keyword from the routine vraidate</dd> 833 834 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP">_EXTRA</a></dt> 835 <dd>a keyword from the routine IMDISP</dd> 836 837 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">_EXTRA</a></dt> 838 <dd>a keyword from the routine pltbase</dd> 839 840 <dt><a href="./Colors/newpalette.html?format=raw#_newpalette">_EXTRA</a></dt> 841 <dd>a keyword from the routine newpalette</dd> 842 843 <dt><a href="./Calendar/date2string.html?format=raw#_date2string">_EXTRA</a></dt> 844 <dd>a keyword from the routine date2string</dd> 845 846 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html?format=raw#_read_vermair">_EXTRA</a></dt> 847 <dd>a keyword from the routine read_vermair</dd> 848 849 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">_EXTRA</a></dt> 850 <dd>a keyword from the routine pltv</dd> 851 852 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">_EXTRA</a></dt> 853 <dd>a keyword from the routine pltz</dd> 854 855 <dt><a href="./ReadWrite/ncdf_timeget.html?format=raw#_ncdf_timeget">_EXTRA</a></dt> 856 <dd>a keyword from the routine ncdf_timeget</dd> 857 858 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">_EXTRA</a></dt> 859 <dd>a keyword from the routine scontour</dd> 860 861 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">_EXTRA</a></dt> 862 <dd>a keyword from the routine splot</dd> 863 864 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">_EXTRA</a></dt> 865 <dd>a keyword from the routine tvplus</dd> 866 867 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html?format=raw#_addaxe">_EXTRA</a></dt> 868 <dd>a keyword from the routine addaxe</dd> 869 870 <dt><a href="./ReadWrite/read_grads.html?format=raw#_read_grads">_EXTRA</a></dt> 871 <dd>a keyword from the routine read_grads</dd> 872 873 <dt><a href="./ReadWrite/scanctl.html?format=raw#_scanctl">_EXTRA</a></dt> 874 <dd>a keyword from the routine scanctl</dd> 875 876 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">_EXTRA</a></dt> 877 <dd>a keyword from the routine checkfield</dd> 878 879 <dt><a href="./ToBeReviewed/WIDGET/slec.html?format=raw#_slec">_EXTRA</a></dt> 880 <dd>a keyword from the routine slec</dd> 881 882 <dt><a href="./Calendar/monthname.html?format=raw#_monthname">_EXTRA</a></dt> 883 <dd>a keyword from the routine monthname</dd> 884 885 <dt><a href="./Grid/ncdf_meshread.html?format=raw#_ncdf_meshread">_EXTRA</a></dt> 886 <dd>a keyword from the routine ncdf_meshread</dd> 887 888 <dt><a href="./ToBeReviewed/WIDGET/xxx.html?format=raw#_xxx">_EXTRA</a></dt> 889 <dd>a keyword from the routine xxx</dd> 890 891 <dt><a href="./Utilities/createfunc.html?format=raw#_createfunc">_EXTRA</a></dt> 892 <dd>a keyword from the routine createfunc</dd> 893 894 <dt><a href="./Utilities/createpro.html?format=raw#_createpro">_EXTRA</a></dt> 895 <dd>a keyword from the routine createpro</dd> 896 897 <dt><a href="./Interpolation/clickincell.html?format=raw#_clickincell">_EXTRA</a></dt> 898 <dd>a keyword from the routine clickincell</dd> 899 900 <dt><a href="./Colors/lct.html?format=raw#_lct">_EXTRA</a></dt> 901 <dd>a keyword from the routine lct</dd> 902 903 <dt><a href="./Obsolete/juldate.html?format=raw#_juldate">_EXTRA</a></dt> 904 <dd>a keyword from the routine juldate</dd> 905 906 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html?format=raw#_LABEL_DATE">_EXTRA</a></dt> 907 <dd>a keyword from the routine LABEL_DATE</dd> 908 909 <dt><a href="./Utilities/text_box.html?format=raw#_text_box">_EXTRA</a></dt> 910 <dd>a keyword from the routine text_box</dd> 911 912 <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html?format=raw#_ajoutvect">_EXTRA</a></dt> 913 <dd>a keyword from the routine ajoutvect</dd> 914 783 915 <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/velovect.html?format=raw#_VELOVECT">_EXTRA</a></dt> 784 916 <dd>a keyword from the routine VELOVECT</dd> 785 917 786 <dt><a href="./ToBeReviewed/PLOTS/legende.html?format=raw#_legende">_EXTRA</a></dt> 787 <dd>a keyword from the routine legende</dd> 788 789 <dt><a href="./Obsolete/nlec.html?format=raw#_nlec">_EXTRA</a></dt> 790 <dd>a keyword from the routine nlec</dd> 791 792 <dt><a href="./Obsolete/nlec5j.html?format=raw#_nlec5j">_EXTRA</a></dt> 793 <dd>a keyword from the routine nlec5j</dd> 794 795 <dt><a href="./ToBeReviewed/GRILLE/grille.html?format=raw#_grille">_EXTRA</a></dt> 796 <dd>a keyword from the routine grille</dd> 797 798 <dt><a href="./ToBeReviewed/TRIANGULATION/ciseauxtri.html?format=raw#_ciseauxtri">_EXTRA</a></dt> 799 <dd>a keyword from the routine ciseauxtri</dd> 800 801 <dt><a href="./Obsolete/nlecan.html?format=raw#_nlecan">_EXTRA</a></dt> 802 <dd>a keyword from the routine nlecan</dd> 803 804 <dt><a href="./Obsolete/nlecmois.html?format=raw#_nlecmois">_EXTRA</a></dt> 805 <dd>a keyword from the routine nlecmois</dd> 806 807 <dt><a href="./Obsolete/nlecsaison.html?format=raw#_nlecsaison">_EXTRA</a></dt> 808 <dd>a keyword from the routine nlecsaison</dd> 809 810 <dt><a href="./Obsolete/nlecserie.html?format=raw#_nlecserie">_EXTRA</a></dt> 811 <dd>a keyword from the routine nlecserie</dd> 812 813 <dt><a href="./ToBeReviewed/INIT/initncdf.html?format=raw#_initncdf">_EXTRA</a></dt> 814 <dd>a keyword from the routine initncdf</dd> 815 816 <dt><a href="./Obsolete/vairdate.html?format=raw#_vairdate">_EXTRA</a></dt> 817 <dd>a keyword from the routine vairdate</dd> 818 819 <dt><a href="./ToBeReviewed/LECTURE/read_ncdf.html?format=raw#_read_ncdf">_EXTRA</a></dt> 820 <dd>a keyword from the routine read_ncdf</dd> 821 822 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/bar_plot.html?format=raw#_bar_plot">_EXTRA</a></dt> 823 <dd>a keyword from the routine bar_plot</dd> 824 825 <dt><a href="./ToBeReviewed/TRIANGULATION/tracecote.html?format=raw#_tracecote">_EXTRA</a></dt> 826 <dd>a keyword from the routine tracecote</dd> 827 828 <dt><a href="./Obsolete/vraidate.html?format=raw#_vraidate">_EXTRA</a></dt> 829 <dd>a keyword from the routine vraidate</dd> 830 831 <dt><a href="./Picture/imdisp.html?format=raw#_IMDISP">_EXTRA</a></dt> 832 <dd>a keyword from the routine IMDISP</dd> 833 834 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltbase.html?format=raw#_pltbase">_EXTRA</a></dt> 835 <dd>a keyword from the routine pltbase</dd> 836 837 <dt><a href="./Colors/newpalette.html?format=raw#_newpalette">_EXTRA</a></dt> 838 <dd>a keyword from the routine newpalette</dd> 839 840 <dt><a href="./Calendar/date2string.html?format=raw#_date2string">_EXTRA</a></dt> 841 <dd>a keyword from the routine date2string</dd> 842 843 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html?format=raw#_read_vermair">_EXTRA</a></dt> 844 <dd>a keyword from the routine read_vermair</dd> 845 846 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw#_pltz">_EXTRA</a></dt> 847 <dd>a keyword from the routine pltz</dd> 848 849 <dt><a href="./ReadWrite/ncdf_timeget.html?format=raw#_ncdf_timeget">_EXTRA</a></dt> 850 <dd>a keyword from the routine ncdf_timeget</dd> 851 852 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/scontour.html?format=raw#_scontour">_EXTRA</a></dt> 853 <dd>a keyword from the routine scontour</dd> 854 855 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">_EXTRA</a></dt> 856 <dd>a keyword from the routine splot</dd> 857 858 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">_EXTRA</a></dt> 859 <dd>a keyword from the routine tvplus</dd> 860 861 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/addaxe.html?format=raw#_addaxe">_EXTRA</a></dt> 862 <dd>a keyword from the routine addaxe</dd> 863 864 <dt><a href="./ReadWrite/read_grads.html?format=raw#_read_grads">_EXTRA</a></dt> 865 <dd>a keyword from the routine read_grads</dd> 866 867 <dt><a href="./ReadWrite/scanctl.html?format=raw#_scanctl">_EXTRA</a></dt> 868 <dd>a keyword from the routine scanctl</dd> 869 870 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checkfield.html?format=raw#_checkfield">_EXTRA</a></dt> 871 <dd>a keyword from the routine checkfield</dd> 872 873 <dt><a href="./Calendar/monthname.html?format=raw#_monthname">_EXTRA</a></dt> 874 <dd>a keyword from the routine monthname</dd> 875 876 <dt><a href="./ToBeReviewed/WIDGET/slec.html?format=raw#_slec">_EXTRA</a></dt> 877 <dd>a keyword from the routine slec</dd> 878 879 <dt><a href="./Grid/ncdf_meshread.html?format=raw#_ncdf_meshread">_EXTRA</a></dt> 880 <dd>a keyword from the routine ncdf_meshread</dd> 881 882 <dt><a href="./Interpolation/clickincell.html?format=raw#_clickincell">_EXTRA</a></dt> 883 <dd>a keyword from the routine clickincell</dd> 884 885 <dt><a href="./ToBeReviewed/WIDGET/xxx.html?format=raw#_xxx">_EXTRA</a></dt> 886 <dd>a keyword from the routine xxx</dd> 887 888 <dt><a href="./Utilities/createfunc.html?format=raw#_createfunc">_EXTRA</a></dt> 889 <dd>a keyword from the routine createfunc</dd> 890 891 <dt><a href="./Utilities/createpro.html?format=raw#_createpro">_EXTRA</a></dt> 892 <dd>a keyword from the routine createpro</dd> 893 894 <dt><a href="./Colors/lct.html?format=raw#_lct">_EXTRA</a></dt> 895 <dd>a keyword from the routine lct</dd> 896 897 <dt><a href="./Obsolete/juldate.html?format=raw#_juldate">_EXTRA</a></dt> 898 <dd>a keyword from the routine juldate</dd> 899 900 <dt><a href="./ToBeReviewed/PLOTS/LABEL/label_date.html?format=raw#_LABEL_DATE">_EXTRA</a></dt> 901 <dd>a keyword from the routine LABEL_DATE</dd> 902 903 <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html?format=raw#_ajoutvect">_EXTRA</a></dt> 904 <dd>a keyword from the routine ajoutvect</dd> 905 906 <dt><a href="./Utilities/text_box.html?format=raw#_text_box">_EXTRA</a></dt> 907 <dd>a keyword from the routine text_box</dd> 908 909 <dt><a href="./Obsolete/ncdf_meshlec.html?format=raw#_ncdf_meshlec">_EXTRA</a></dt> 910 <dd>a keyword from the routine ncdf_meshlec</dd> 911 912 <dt><a href="./ToBeReviewed/PLOTS/axe.html?format=raw#_axe">_EXTRA</a></dt> 913 <dd>a keyword from the routine axe</dd> 918 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.html?format=raw#_letsdraw">_extra</a></dt> 919 <dd>a keyword from the routine letsdraw</dd> 920 921 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.html?format=raw#_loadgrid">_extra</a></dt> 922 <dd>a keyword from the routine loadgrid</dd> 923 924 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/scanfile.html?format=raw#_scanfile">_extra</a></dt> 925 <dd>a keyword from the routine scanfile</dd> 926 927 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html?format=raw#_selectfile">_extra</a></dt> 928 <dd>a keyword from the routine selectfile</dd> 929 930 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html?format=raw#_cw_calendar">_extra</a></dt> 931 <dd>a keyword from the routine cw_calendar</dd> 932 933 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html?format=raw#_cw_combobox_pm">_extra</a></dt> 934 <dd>a keyword from the routine cw_combobox_pm</dd> 935 936 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html?format=raw#_cw_domain">_extra</a></dt> 937 <dd>a keyword from the routine cw_domain</dd> 938 939 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html?format=raw#_cw_droplist_pm">_extra</a></dt> 940 <dd>a keyword from the routine cw_droplist_pm</dd> 941 942 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html?format=raw#_cw_pagelayout">_extra</a></dt> 943 <dd>a keyword from the routine cw_pagelayout</dd> 944 945 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html?format=raw#_cw_slide_slice">_extra</a></dt> 946 <dd>a keyword from the routine cw_slide_slice</dd> 947 948 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html?format=raw#_cw_slider_pm">_extra</a></dt> 949 <dd>a keyword from the routine cw_slider_pm</dd> 950 951 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html?format=raw#_cw_specifie">_extra</a></dt> 952 <dd>a keyword from the routine cw_specifie</dd> 953 954 <dt><a href="./ToBeReviewed/WIDGET/xquestion.html?format=raw#_xquestion">_extra</a></dt> 955 <dd>a keyword from the routine xquestion</dd> 956 957 <dt><a href="./ToBeReviewed/WIDGET/xx.html?format=raw#_xx">_extra</a></dt> 958 <dd>a keyword from the routine xx</dd> 959 960 <dt><a href="./Utilities/find.html?format=raw#_find">_extra</a></dt> 961 <dd>a keyword from the routine find</dd> 962 963 <dt><a href="./Utilities/isadirectory.html?format=raw#_isadirectory">_extra</a></dt> 964 <dd>a keyword from the routine isadirectory</dd> 965 966 <dt><a href="./Utilities/isafile.html?format=raw#_isafile">_extra</a></dt> 967 <dd>a keyword from the routine isafile</dd> 968 969 <dt><a href="./Utilities/report.html?format=raw#_report">_extra</a></dt> 970 <dd>a keyword from the routine report</dd> 971 972 <dt><a href="./Utilities/xfile.html?format=raw#_xfile">_extra</a></dt> 973 <dd>a keyword from the routine xfile</dd> 974 975 <dt><a href="./Utilities/xhelp.html?format=raw#_xhelp">_extra</a></dt> 976 <dd>a keyword from the routine xhelp</dd> 977 978 <dt><a href="./buildinit.html?format=raw#_xask">_extra</a></dt> 979 <dd>a keyword from the routine xask</dd> 980 981 <dt><a href="./Colors/colorbar.html?format=raw#_COLORBAR">_extra</a></dt> 982 <dd>a keyword from the routine COLORBAR</dd> 983 984 <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">_extra</a></dt> 985 <dd>a keyword from the routine computegrid</dd> 986 987 <dt><a href="./Obsolete/cp.html?format=raw#_cp">_extra</a></dt> 988 <dd>a keyword from the routine cp</dd> 989 990 <dt><a href="./Postscript/openps.html?format=raw#_openps">_extra</a></dt> 991 <dd>a keyword from the routine openps</dd> 992 993 <dt><a href="./ToBeReviewed/CALCULS/depth2level.html?format=raw#_depth2level">_extra</a></dt> 994 <dd>a keyword from the routine depth2level</dd> 995 996 <dt><a href="./ToBeReviewed/CALCULS/depth2mask.html?format=raw#_depth2mask">_extra</a></dt> 997 <dd>a keyword from the routine depth2mask</dd> 998 999 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">_extra</a></dt> 1000 <dd>a keyword from the routine grossemoyenne</dd> 1001 1002 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">_extra</a></dt> 1003 <dd>a keyword from the routine moyenne</dd> 1004 1005 <dt><a href="./ToBeReviewed/CALCULS/norme.html?format=raw#_norme">_extra</a></dt> 1006 <dd>a keyword from the routine norme</dd> 1007 1008 <dt><a href="./ToBeReviewed/CALCULS/remplit.html?format=raw#_remplit">_extra</a></dt> 1009 <dd>a keyword from the routine remplit</dd> 1010 1011 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">_extra</a></dt> 1012 <dd>a keyword from the routine decoupeterre</dd> 1013 1014 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">_extra</a></dt> 1015 <dd>a keyword from the routine domdef</dd> 1016 1017 <dt><a href="./ToBeReviewed/GRILLE/tracegrille.html?format=raw#_tracegrille">_extra</a></dt> 1018 <dd>a keyword from the routine tracegrille</dd> 1019 1020 <dt><a href="./ToBeReviewed/HOPE/cw_selectinterval.html?format=raw#_cw_selectinterval">_extra</a></dt> 1021 <dd>a keyword from the routine cw_selectinterval</dd> 1022 1023 <dt><a href="./ToBeReviewed/HOPE/read_hope.html?format=raw#_read_hope">_extra</a></dt> 1024 <dd>a keyword from the routine read_hope</dd> 1025 1026 <dt><a href="./ToBeReviewed/HOPE/xrh.html?format=raw#_xrh">_extra</a></dt> 1027 <dd>a keyword from the routine xrh</dd> 1028 1029 <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">_extra</a></dt> 1030 <dd>a keyword from the routine ncdf_lec</dd> 1031 1032 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">_extra</a></dt> 1033 <dd>a keyword from the routine plt</dd> 1034 1035 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">_extra</a></dt> 1036 <dd>a keyword from the routine plt1d</dd> 1037 1038 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">_extra</a></dt> 1039 <dd>a keyword from the routine pltsc</dd> 1040 1041 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">_extra</a></dt> 1042 <dd>a keyword from the routine pltt</dd> 1043 1044 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html?format=raw#_sbar_plot">_extra</a></dt> 1045 <dd>a keyword from the routine sbar_plot</dd> 1046 1047 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">_extra</a></dt> 1048 <dd>a keyword from the routine axis4pltz</dd> 1049 1050 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html?format=raw#_barrecouleur">_extra</a></dt> 1051 <dd>a keyword from the routine barrecouleur</dd> 1052 1053 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">_extra</a></dt> 1054 <dd>a keyword from the routine checktypeminmax</dd> 1055 1056 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">_extra</a></dt> 1057 <dd>a keyword from the routine determineminmax</dd> 1058 1059 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placecolor.html?format=raw#_placecolor">_extra</a></dt> 1060 <dd>a keyword from the routine placecolor</dd> 1061 1062 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">_extra</a></dt> 1063 <dd>a keyword from the routine placedessin</dd> 1064 1065 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/terminedessin.html?format=raw#_terminedessin">_extra</a></dt> 1066 <dd>a keyword from the routine terminedessin</dd> 1067 1068 <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/vecteur.html?format=raw#_vecteur">_extra</a></dt> 1069 <dd>a keyword from the routine vecteur</dd> 1070 1071 <dt><a href="./ToBeReviewed/PLOTS/plotsym.html?format=raw#_plotsym">_extra</a></dt> 1072 <dd>a keyword from the routine plotsym</dd> 1073 1074 <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">_extra</a></dt> 1075 <dd>a keyword from the routine calibre</dd> 1076 1077 <dt><a href="./ToBeReviewed/STRING/string2struct.html?format=raw#_too_cool">_extra</a></dt> 1078 <dd>a keyword from the routine too_cool</dd> 1079 1080 <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_draw_corner_triangle">_extra</a></dt> 1081 <dd>a keyword from the routine draw_corner_triangle</dd> 1082 1083 <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">_extra</a></dt> 1084 <dd>a keyword from the routine completecointerre</dd> 1085 1086 <dt><a href="./ToBeReviewed/TRIANGULATION/dessinetri.html?format=raw#_dessinetri">_extra</a></dt> 1087 <dd>a keyword from the routine dessinetri</dd> 1088 1089 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html?format=raw#_drawcoast_c">_extra</a></dt> 1090 <dd>a keyword from the routine drawcoast_c</dd> 1091 1092 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">_extra</a></dt> 1093 <dd>a keyword from the routine drawcoast_e</dd> 1094 1095 <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">_extra</a></dt> 1096 <dd>a keyword from the routine drawsectionbottom</dd> 1097 1098 <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">_extra</a></dt> 1099 <dd>a keyword from the routine fillcornermask</dd> 1100 1101 <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">_extra</a></dt> 1102 <dd>a keyword from the routine section</dd> 1103 1104 <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">_extra</a></dt> 1105 <dd>a keyword from the routine tracemask</dd> 1106 1107 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">_extra</a></dt> 1108 <dd>a keyword from the routine triangule</dd> 914 1109 915 1110 <dt><a href="./ToBeReviewed/UTILITAIRE/get_extra.html?format=raw#_get_extra">_extra</a></dt> 916 1111 <dd>a keyword from the routine get_extra</dd> 917 1112 918 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.html?format=raw#_letsdraw">_extra</a></dt>919 <dd>a keyword from the routine letsdraw</dd>920 921 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.html?format=raw#_loadgrid">_extra</a></dt>922 <dd>a keyword from the routine loadgrid</dd>923 924 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/scanfile.html?format=raw#_scanfile">_extra</a></dt>925 <dd>a keyword from the routine scanfile</dd>926 927 <dt><a href="./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html?format=raw#_selectfile">_extra</a></dt>928 <dd>a keyword from the routine selectfile</dd>929 930 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html?format=raw#_cw_calendar">_extra</a></dt>931 <dd>a keyword from the routine cw_calendar</dd>932 933 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html?format=raw#_cw_combobox_pm">_extra</a></dt>934 <dd>a keyword from the routine cw_combobox_pm</dd>935 936 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html?format=raw#_cw_domain">_extra</a></dt>937 <dd>a keyword from the routine cw_domain</dd>938 939 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html?format=raw#_cw_droplist_pm">_extra</a></dt>940 <dd>a keyword from the routine cw_droplist_pm</dd>941 942 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html?format=raw#_cw_pagelayout">_extra</a></dt>943 <dd>a keyword from the routine cw_pagelayout</dd>944 945 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html?format=raw#_cw_slide_slice">_extra</a></dt>946 <dd>a keyword from the routine cw_slide_slice</dd>947 948 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html?format=raw#_cw_slider_pm">_extra</a></dt>949 <dd>a keyword from the routine cw_slider_pm</dd>950 951 <dt><a href="./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html?format=raw#_cw_specifie">_extra</a></dt>952 <dd>a keyword from the routine cw_specifie</dd>953 954 <dt><a href="./ToBeReviewed/WIDGET/xquestion.html?format=raw#_xquestion">_extra</a></dt>955 <dd>a keyword from the routine xquestion</dd>956 957 <dt><a href="./ToBeReviewed/WIDGET/xx.html?format=raw#_xx">_extra</a></dt>958 <dd>a keyword from the routine xx</dd>959 960 <dt><a href="./Utilities/find.html?format=raw#_find">_extra</a></dt>961 <dd>a keyword from the routine find</dd>962 963 <dt><a href="./Utilities/isadirectory.html?format=raw#_isadirectory">_extra</a></dt>964 <dd>a keyword from the routine isadirectory</dd>965 966 <dt><a href="./Utilities/isafile.html?format=raw#_isafile">_extra</a></dt>967 <dd>a keyword from the routine isafile</dd>968 969 <dt><a href="./Utilities/report.html?format=raw#_report">_extra</a></dt>970 <dd>a keyword from the routine report</dd>971 972 <dt><a href="./Utilities/xfile.html?format=raw#_xfile">_extra</a></dt>973 <dd>a keyword from the routine xfile</dd>974 975 <dt><a href="./Utilities/xhelp.html?format=raw#_xhelp">_extra</a></dt>976 <dd>a keyword from the routine xhelp</dd>977 978 <dt><a href="./buildinit.html?format=raw#_xask">_extra</a></dt>979 <dd>a keyword from the routine xask</dd>980 981 <dt><a href="./Colors/colorbar.html?format=raw#_COLORBAR">_extra</a></dt>982 <dd>a keyword from the routine COLORBAR</dd>983 984 <dt><a href="./Grid/computegrid.html?format=raw#_computegrid">_extra</a></dt>985 <dd>a keyword from the routine computegrid</dd>986 987 <dt><a href="./Obsolete/cp.html?format=raw#_cp">_extra</a></dt>988 <dd>a keyword from the routine cp</dd>989 990 <dt><a href="./Postscript/openps.html?format=raw#_openps">_extra</a></dt>991 <dd>a keyword from the routine openps</dd>992 993 <dt><a href="./ToBeReviewed/CALCULS/depth2level.html?format=raw#_depth2level">_extra</a></dt>994 <dd>a keyword from the routine depth2level</dd>995 996 <dt><a href="./ToBeReviewed/CALCULS/depth2mask.html?format=raw#_depth2mask">_extra</a></dt>997 <dd>a keyword from the routine depth2mask</dd>998 999 <dt><a href="./ToBeReviewed/CALCULS/grossemoyenne.html?format=raw#_grossemoyenne">_extra</a></dt>1000 <dd>a keyword from the routine grossemoyenne</dd>1001 1002 <dt><a href="./ToBeReviewed/CALCULS/moyenne.html?format=raw#_moyenne">_extra</a></dt>1003 <dd>a keyword from the routine moyenne</dd>1004 1005 <dt><a href="./ToBeReviewed/CALCULS/norme.html?format=raw#_norme">_extra</a></dt>1006 <dd>a keyword from the routine norme</dd>1007 1008 <dt><a href="./ToBeReviewed/CALCULS/remplit.html?format=raw#_remplit">_extra</a></dt>1009 <dd>a keyword from the routine remplit</dd>1010 1011 <dt><a href="./ToBeReviewed/GRILLE/decoupeterre.html?format=raw#_decoupeterre">_extra</a></dt>1012 <dd>a keyword from the routine decoupeterre</dd>1013 1014 <dt><a href="./ToBeReviewed/GRILLE/domdef.html?format=raw#_domdef">_extra</a></dt>1015 <dd>a keyword from the routine domdef</dd>1016 1017 <dt><a href="./ToBeReviewed/GRILLE/tracegrille.html?format=raw#_tracegrille">_extra</a></dt>1018 <dd>a keyword from the routine tracegrille</dd>1019 1020 <dt><a href="./ToBeReviewed/HOPE/cw_selectinterval.html?format=raw#_cw_selectinterval">_extra</a></dt>1021 <dd>a keyword from the routine cw_selectinterval</dd>1022 1023 <dt><a href="./ToBeReviewed/HOPE/read_hope.html?format=raw#_read_hope">_extra</a></dt>1024 <dd>a keyword from the routine read_hope</dd>1025 1026 <dt><a href="./ToBeReviewed/HOPE/xrh.html?format=raw#_xrh">_extra</a></dt>1027 <dd>a keyword from the routine xrh</dd>1028 1029 <dt><a href="./ToBeReviewed/LECTURE/ncdf_lec.html?format=raw#_ncdf_lec">_extra</a></dt>1030 <dd>a keyword from the routine ncdf_lec</dd>1031 1032 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt.html?format=raw#_plt">_extra</a></dt>1033 <dd>a keyword from the routine plt</dd>1034 1035 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/plt1d.html?format=raw#_plt1d">_extra</a></dt>1036 <dd>a keyword from the routine plt1d</dd>1037 1038 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltsc.html?format=raw#_pltsc">_extra</a></dt>1039 <dd>a keyword from the routine pltsc</dd>1040 1041 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/pltt.html?format=raw#_pltt">_extra</a></dt>1042 <dd>a keyword from the routine pltt</dd>1043 1044 <dt><a href="./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html?format=raw#_sbar_plot">_extra</a></dt>1045 <dd>a keyword from the routine sbar_plot</dd>1046 1047 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html?format=raw#_axis4pltz">_extra</a></dt>1048 <dd>a keyword from the routine axis4pltz</dd>1049 1050 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html?format=raw#_barrecouleur">_extra</a></dt>1051 <dd>a keyword from the routine barrecouleur</dd>1052 1053 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html?format=raw#_checktypeminmax">_extra</a></dt>1054 <dd>a keyword from the routine checktypeminmax</dd>1055 1056 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/determineminmax.html?format=raw#_determineminmax">_extra</a></dt>1057 <dd>a keyword from the routine determineminmax</dd>1058 1059 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placecolor.html?format=raw#_placecolor">_extra</a></dt>1060 <dd>a keyword from the routine placecolor</dd>1061 1062 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/placedessin.html?format=raw#_placedessin">_extra</a></dt>1063 <dd>a keyword from the routine placedessin</dd>1064 1065 <dt><a href="./ToBeReviewed/PLOTS/DIVERS/terminedessin.html?format=raw#_terminedessin">_extra</a></dt>1066 <dd>a keyword from the routine terminedessin</dd>1067 1068 <dt><a href="./ToBeReviewed/PLOTS/VECTEUR/vecteur.html?format=raw#_vecteur">_extra</a></dt>1069 <dd>a keyword from the routine vecteur</dd>1070 1071 <dt><a href="./ToBeReviewed/PLOTS/plotsym.html?format=raw#_plotsym">_extra</a></dt>1072 <dd>a keyword from the routine plotsym</dd>1073 1074 <dt><a href="./ToBeReviewed/POSTSCRIPT/calibre.html?format=raw#_calibre">_extra</a></dt>1075 <dd>a keyword from the routine calibre</dd>1076 1077 <dt><a href="./ToBeReviewed/STRING/string2struct.html?format=raw#_too_cool">_extra</a></dt>1078 <dd>a keyword from the routine too_cool</dd>1079 1080 <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_draw_corner_triangle">_extra</a></dt>1081 <dd>a keyword from the routine draw_corner_triangle</dd>1082 1083 <dt><a href="./ToBeReviewed/TRIANGULATION/completecointerre.html?format=raw#_completecointerre">_extra</a></dt>1084 <dd>a keyword from the routine completecointerre</dd>1085 1086 <dt><a href="./ToBeReviewed/TRIANGULATION/dessinetri.html?format=raw#_dessinetri">_extra</a></dt>1087 <dd>a keyword from the routine dessinetri</dd>1088 1089 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_c.html?format=raw#_drawcoast_c">_extra</a></dt>1090 <dd>a keyword from the routine drawcoast_c</dd>1091 1092 <dt><a href="./ToBeReviewed/TRIANGULATION/drawcoast_e.html?format=raw#_drawcoast_e">_extra</a></dt>1093 <dd>a keyword from the routine drawcoast_e</dd>1094 1095 <dt><a href="./ToBeReviewed/TRIANGULATION/drawsectionbottom.html?format=raw#_drawsectionbottom">_extra</a></dt>1096 <dd>a keyword from the routine drawsectionbottom</dd>1097 1098 <dt><a href="./ToBeReviewed/TRIANGULATION/fillcornermask.html?format=raw#_fillcornermask">_extra</a></dt>1099 <dd>a keyword from the routine fillcornermask</dd>1100 1101 <dt><a href="./ToBeReviewed/TRIANGULATION/section.html?format=raw#_section">_extra</a></dt>1102 <dd>a keyword from the routine section</dd>1103 1104 <dt><a href="./ToBeReviewed/TRIANGULATION/tracemask.html?format=raw#_tracemask">_extra</a></dt>1105 <dd>a keyword from the routine tracemask</dd>1106 1107 <dt><a href="./ToBeReviewed/TRIANGULATION/triangule.html?format=raw#_triangule">_extra</a></dt>1108 <dd>a keyword from the routine triangule</dd>1109 1110 1113 <dt><a href="./ReadWrite/idl-NetCDF/ncdf_quickwrite/ncdf_quickwrite_helper2.html?format=raw#__str">_str</a></dt> 1111 1114 <dd>a function from the file ncdf_quickwrite_helper2.pro</dd> -
trunk/SRC/Documentation/idldoc_html_output/idldoc-warnings.html
r151 r153 1409 1409 </tr> 1410 1410 1411 </table><a href="./Obsolete/congridseb.html?format=raw">./Obsolete/congridseb.pro</a> 1412 <table> 1413 1414 <tr> 1415 <td class="docroutine"><a href="./Obsolete/congridseb.html?format=raw#_congridseb">congridseb</a></td> 1416 <td class="docstat partialdoc">partially documented</td> 1417 </tr> 1418 1411 1419 </table><a href="./Obsolete/fictype.html?format=raw">./Obsolete/fictype.pro</a> 1412 1420 <table> … … 2129 2137 </tr> 2130 2138 2139 </table><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw">./ToBeReviewed/PLOTS/DESSINE/pltv.pro</a> 2140 <table> 2141 2142 <tr> 2143 <td class="docroutine"><a href="./ToBeReviewed/PLOTS/DESSINE/pltv.html?format=raw#_pltv">pltv</a></td> 2144 <td class="docstat partialdoc">partially documented</td> 2145 </tr> 2146 2131 2147 </table><a href="./ToBeReviewed/PLOTS/DESSINE/pltz.html?format=raw">./ToBeReviewed/PLOTS/DESSINE/pltz.pro</a> 2132 2148 <table> … … 2158 2174 <tr> 2159 2175 <td class="docroutine"><a href="./ToBeReviewed/PLOTS/DESSINE/splot.html?format=raw#_splot">splot</a></td> 2160 <td class="docstat partialdoc">partially documented</td>2161 </tr>2162 2163 </table><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw">./ToBeReviewed/PLOTS/DESSINE/tvplus.pro</a>2164 <table>2165 2166 <tr>2167 <td class="docroutine"><a href="./ToBeReviewed/PLOTS/DESSINE/tvplus.html?format=raw#_tvplus">tvplus</a></td>2168 2176 <td class="docstat partialdoc">partially documented</td> 2169 2177 </tr> … … 2816 2824 </table></div> 2817 2825 <div id="obsolete"> 2818 <h2>Obsolete routines</h2><a href="./Obsolete/cp.html?format=raw">./Obsolete/cp.pro</a> 2826 <h2>Obsolete routines</h2><a href="./Obsolete/congridseb.html?format=raw">./Obsolete/congridseb.pro</a> 2827 <table> 2828 2829 <tr> 2830 <td class="obsroutine"><a href="./Obsolete/congridseb.html?format=raw#_congridseb">congridseb</a></td> 2831 </tr> 2832 2833 </table><a href="./Obsolete/cp.html?format=raw">./Obsolete/cp.pro</a> 2819 2834 <table> 2820 2835 -
trunk/SRC/Documentation/idldoc_html_output/overview.html
r151 r153 968 968 <tr> 969 969 <td>PRO files</td> 970 <td class="value"> 39 1</td>970 <td class="value"> 392</td> 971 971 </tr> 972 972 <tr> … … 980 980 <tr> 981 981 <td>Routines/methods</td> 982 <td class="value"> 73 1</td>982 <td class="value"> 732</td> 983 983 </tr> 984 984 <tr> 985 985 <td>Lines of code</td> 986 <td class="value"> 5 8915</td>986 <td class="value"> 59136</td> 987 987 </tr> 988 988 </table> -
trunk/SRC/Documentation/idldoc_html_output/search.js
r151 r153 30 30 a[28] = new Array("./ForOldVersion/updatenew.html", "updatenew.pro", "", ""); 31 31 a[29] = new Array("./ForOldVersion/updateold.html", "updateold.pro", "", ""); 32 a[30] = new Array("./Grid/changemsk.html", "changemsk.pro", "", " file_comments add land points on a 2D land sea mask categories grid param msk in required a 2D land sea mask with 1 on sea and 0 on land keyword CELLSIZE size in pixel of the square representing one point of the mask keyword NOUSEINFOS activite to supress the printed message explaining how to use tvplus returns newmsk the new 2D land sea mask examples IDL a changemsk tmask 0 to add ocean points IDL a 1 changemsk 1 tmask 0 history Sebastien Masson smasson lodyc jussieu fr June 2006 version Id: changemsk pro 1 24 2006 07 06 13:46:17Z pinsard function changemsk tab CELLSIZE cellsize compile_opt idl2 strictarrsubs newmsk 1 taille size tab if taille 0 NE 2 then return newmsk newmsk byte tab if keyword_set cellsize THEN cellsize long cellsize ELSE cellsize long 2 window xsize taille 1 cellsize ysize taille 2 cellsize tvscl congridsebnewmsk taille 1 cellsize taille 2 cellsize if NOT keyword_set nouseinfos then begin print left button : use it twice to define the diagonal of the rectangle to be set to 0 land print middle button: put 0 land on the clicked point print right button : quit endif cursor x1 y1 device up while mouse button ne 4 do begin case mouse button of 0:return newmsk 1:BEGIN cursor x2 y2 device up x x1 x2 x x sort x x round x cellsize y y1 y2 y y sort y y round y cellsize newmsk x 0 :x 1 y 0 :y 1 0 tvscl replicate 0 x 1 x 0 1 cellsize y 1 y 0 1 cellsize x 0 cellsize y 0 cellsize end 2:BEGIN x1 round x1 cellsize y1 round y1 cellsize newmsk x1 y1 0 tvscl replicate 0 cellsize cellsize x1 cellsize y1 cellsize END ELSE: endcase cursor x1 y1 device up endwhile return newmsk end ");32 a[30] = new Array("./Grid/changemsk.html", "changemsk.pro", "", " file_comments add land points on a 2D land sea mask categories grid param msk in required a 2D land sea mask with 1 on sea and 0 on land keyword CELLSIZE size in pixel of the square representing one point of the mask keyword NOUSEINFOS activite to supress the printed message explaining how to use tvplus returns newmsk the new 2D land sea mask examples IDL a changemsk tmask 0 to add ocean points IDL a 1 changemsk 1 tmask 0 history Sebastien Masson smasson lodyc jussieu fr June 2006 version Id: changemsk pro 152 2006 08 10 07:01:35Z smasson function changemsk tab CELLSIZE cellsize compile_opt idl2 strictarrsubs newmsk 1 taille size tab if taille 0 NE 2 then return newmsk newmsk byte tab if keyword_set cellsize THEN cellsize long cellsize ELSE cellsize long 2 window xsize taille 1 cellsize ysize taille 2 cellsize tvscl congrid newmsk taille 1 cellsize taille 2 cellsize if NOT keyword_set nouseinfos then begin print left button : use it twice to define the diagonal of the rectangle to be set to 0 land print middle button: put 0 land on the clicked point print right button : quit endif cursor x1 y1 device up while mouse button ne 4 do begin case mouse button of 0:return newmsk 1:BEGIN cursor x2 y2 device up x x1 x2 x x sort x x round x cellsize y y1 y2 y y sort y y round y cellsize newmsk x 0 :x 1 y 0 :y 1 0 tvscl replicate 0 x 1 x 0 1 cellsize y 1 y 0 1 cellsize x 0 cellsize y 0 cellsize end 2:BEGIN x1 round x1 cellsize y1 round y1 cellsize newmsk x1 y1 0 tvscl replicate 0 cellsize cellsize x1 cellsize y1 cellsize END ELSE: endcase cursor x1 y1 device up endwhile return newmsk end "); 33 33 a[31] = new Array("./Grid/computegrid.html", "computegrid.pro", "", " file_comments compute the grid parameters from cm_4mesh common: computegrid startx starty stepx stepy nx ny computegrid startx starty stepx stepy computegrid xaxis xaxis yaxis yaxis or a suitable mix glamt glamf gphit gphit e1t e2t horizontal parameters glamu in glamv in gphiu in gphiv in e1u in e1v in e1f in e2u in e2v in e2f in horizontal parameters if FULLCGRID keyword is defined gdept gdepw e3t e3w verticals parameters tmask masks umaskred in vmaskred in fmaskredx in fmaskredy in masks if FULLCGRID keyword is defined triangles_list triangulation categories grid param startx in required scalar x starting point param starty in required scalar y starting point param stepxin in required scalar or vector: x direction step must be 0 if vector nx is not used param stepyin in required scalar or vector: y direction step could be 0 south to north or lon1 and lon2 lon1 le 360 key_shift will be defined automaticaly computed according to glamboundary by using the FIRST LINE of glamt but key_shift will 0 only if key_periodic 1 keyword MASK to specify the mask with a 2 or 3 dimension array keyword ONEARTH 0 or 1 to force the manual definition of key_onearth to specify if the data are on earth use longitude latitude etc By default key_onearth 1 note that ONEARTH 0 forces PERIODIC 0 SHIFT 0 and is cancelling GLAMBOUNDARY keyword PERIODIC 0 or 1 to force the manual definition of key_periodic By default key_periodic is automaticaly computed by using the first line of glamt keyword PLAIN force PERIODIC 0 SHIFT 0 STRIDE 1 1 1 and suppress the automatic redefinition of the domain in case of x periodicity overlap y periodicity overlap ORCA type only and mask border to 0 keyword SHIFT scalar to force the manual definition of key_shift By default key_shift is automaticaly computed according to glamboundary when defined by using the FIRST LINE of glamt if key_periodic 0 then in any case key_shift 0 keyword STRCALLING a string containing the calling command used to call computegrid this is used by xxx pro keyword STRIDE default 1 1 1 a 3 elements vector to specify the stride in x y z direction The resulting value will be stored in the common cm_4mesh variable key_stride keyword XAXIS to specify longitude1 with a 1 or 2 dimension array in this case startx stepx and nx are not used but could be necessary if the y axis is not defined with yaxis It must be possible to sort the first line of xaxis in the increasing order by shifting its elements keyword YAXIS to specify latitudes with a 1 or 2 dimension array in this case starty stepy and ny are not used but starty and stepy could be necessary if the x axis is not defined with xaxis It must be sorted in the increasing or deceasing order along each column if 2d array keyword XYINDEX activate to specify that the horizontal grid should be simply defined by using the index of the points xaxis findgen nx and yaxis findgen ny using this keyword forces key_onearth 0 keyword XMINMESH default 0L keyword YMINMESH default 0L keyword ZMINMESH default 0L to define the common variables i xyz minmesh used to define the grid only in a zoomed part of the original grid max value is XYZ MAXMESH keyword XMAXMESH default jpiglo 1 keyword YMAXMESH default jpjglo 1 keyword ZMAXMESH default jpkglo 1 to define the common variables i xyz maxmesh used to define the grid only in a zoomed part of the original grid max value is jp ijk glo 1 if XYZ MAXMESH is negative then we define i xyz maxmesh as jp ijk glo 1 XYZ MAXMESH instead of XYZ MAXMESH keyword FBASE2TBASE keyword STRCALLING keyword ZAXIS to specify the vertical axis with a 1 dimension array Must be sorted in the increasing or deceasing order keyword _EXTRA used to pass your keywords to the created function uses cm_4mesh cm_4data cm_4cal restrictions if the grid has x y periodicity orverlap and or if the mask has 0 everywhere at the border like a close sea and if we did not activate plain and xminmesh xmaxmesh yminmesh ymaxmesh keywords are defined to their default values we redefine xminmesh xmaxmesh yminmesh ymaxmesh in order to reove the overlapping part and or to open the domain avoid ti be forced to use cell_fill 1 restrictions FUV points definition history Sebastien Masson smasson lodyc jussieu fr 2000 04 20 Sept 2004 several bug fixs to suit C grid type Aug 2005 rewritte almost everything version Id: computegrid pro 134 2006 07 07 10:19:08Z navarro PRO computegrid startx starty stepxin stepyin nxin nyin XAXIS xaxis YAXIS yaxis ZAXIS zaxis MASK mask GLAMBOUNDARY glamboundary XMINMESH xminmesh XMAXMESH xmaxmesh YMINMESH yminmesh YMAXMESH ymaxmesh ZMINMESH zminmesh ZMAXMESH zmaxmesh ONEARTH onearth PERIODIC periodic PLAIN plain SHIFT shift STRIDE stride FULLCGRID fullcgrid XYINDEX xyindex FBASE2TBASE fbase2tbase STRCALLING strcalling _extra ex compile_opt idl2 strictarrsubs cm_4mesh cm_4data cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF time1 systime 1 for key_performance Check input parameters xaxis related parameters if n_elements xaxis NE 0 then BEGIN CASE size xaxis 0 OF 0:nx 1L 1:nx size xaxis 1 2:nx size xaxis 1 ENDCASE ENDIF ELSE BEGIN IF n_elements startx EQ 0 THEN BEGIN dummy report If xaxis is not given startx must be defined return ENDIF CASE n_elements stepxin OF 0:BEGIN dummy report If xaxis is not given stepxin must be defined return END 1:BEGIN IF n_elements nxin EQ 0 THEN BEGIN dummy report If xaxis is not given and stepxin has only one element nx must be defined return ENDIF ELSE nx nxin END ELSE:nx n_elements stepxin ENDCASE ENDELSE yaxis related parameters if n_elements yaxis NE 0 then BEGIN CASE size yaxis 0 OF 0:ny 1L 1:ny size yaxis 1 2:ny size yaxis 2 ENDCASE ENDIF ELSE BEGIN IF n_elements starty EQ 0 THEN BEGIN dummy report If yaxis is not given starty must be defined return ENDIF CASE n_elements stepyin OF 0:BEGIN dummy report If yaxis is not given stepyin must be defined return END 1:BEGIN IF n_elements nyin EQ 0 THEN BEGIN dummy report If yaxis is not given and stepyin has only one element ny must be defined return ENDIF ELSE ny nyin END ELSE:ny n_elements stepyin ENDCASE ENDELSE zaxis related parameters if n_elements zaxis NE 0 then BEGIN CASE size zaxis 0 OF 0:nz 1L 1:nz size zaxis 1 ELSE:BEGIN print not coded stop END ENDCASE ENDIF ELSE nz 1L Others automatic definitions jpiglo long nx jpjglo long ny jpkglo long nz impact of plain keyword: IF keyword_set plain THEN BEGIN periodic 0 shift 0 stride 1 1 1 ENDIF IF n_elements xminmesh NE 0 THEN ixminmesh long xminmesh 0 ELSE ixminmesh 0l IF n_elements xmaxmesh NE 0 THEN ixmaxmesh long xmaxmesh 0 ELSE ixmaxmesh jpiglo 1 IF n_elements yminmesh NE 0 THEN iyminmesh long yminmesh 0 ELSE iyminmesh 0l IF n_elements ymaxmesh NE 0 THEN iymaxmesh long ymaxmesh 0 ELSE iymaxmesh jpjglo 1 IF n_elements zminmesh NE 0 THEN izminmesh long zminmesh 0 ELSE izminmesh 0l IF n_elements zmaxmesh NE 0 THEN izmaxmesh long zmaxmesh 0 ELSE izmaxmesh jpkglo 1 iymaxmesh iymaxmesh keyword_set fbase2tbase IF ixmaxmesh LT 0 THEN ixmaxmesh jpiglo 1 ixmaxmesh IF iymaxmesh LT 0 THEN iymaxmesh jpjglo 1 iymaxmesh IF izmaxmesh LT 0 THEN izmaxmesh jpkglo 1 izmaxmesh avoid basics errors ixmaxmesh 0 ixmaxmesh ixminmesh iymaxmesh iyminmesh izmaxmesh izminmesh temporary glamf gphif temporary glamu gphiu temporary glamv gphiv gdept stepz 2 ENDIF ELSE BEGIN stepz 1 gdepw gdept ENDELSE e3 tw : e3t stepz IF n_elements stepz GT 1 THEN BEGIN e3w 0 5 stepz shift stepz 1 e3w 0 0 5 e3t 0 ENDIF ELSE e3w e3t Mask default mask eq 1 if NOT keyword_set mask then mask 1 if mask 0 NE 1 then BEGIN tmask byte mask ixminmesh:ixmaxmesh iyminmesh:iymaxmesh izminmesh:izmaxmesh tmask reform tmask jpi jpj jpk over if key_shift NE 0 then tmask shift tmask key_shift 0 0 because tmask reverse tmask 2 is not working if the 3rd dimension of tmask 1 we call reform IF jpk EQ 1 THEN tmask reform tmask over IF key_yreverse EQ 1 THEN tmask reverse tmask 2 IF jpk EQ 1 THEN tmask reform tmask jpi jpj jpk over IF key_zreverse EQ 1 THEN tmask reverse tmask 3 IF jpk EQ 1 THEN tmask reform tmask jpi jpj jpk over IF keyword_set fullcgrid THEN BEGIN IF keyword_set key_periodic THEN BEGIN msk tmask shift tmask 1 0 0 umaskred msk jpi 1 ENDIF ELSE umaskred tmask jpi 1 vmaskred tmask jpj 1 fmaskredy tmask jpi 1 fmaskredx tmask jpj 1 ENDIF ENDIF ELSE BEGIN tmask replicate 1b jpi jpj jpk IF keyword_set fullcgrid THEN BEGIN umaskred replicate 1b jpj jpk vmaskred replicate 1b jpi jpk fmaskredy replicate 1b jpj jpk fmaskredx replicate 1b jpi jpk ENDIF ENDELSE IF jpi GT 2 AND jpj GT 2 AND NOT keyword_set plain AND ixminmesh EQ 0l AND ixmaxmesh eq jpiglo 1 AND iyminmesh EQ 0l AND iymaxmesh eq jpjglo 1 AND total tmask 0 EQ 0 AND total tmask jpj 1 EQ 0 AND total tmask 0 EQ 0 AND total tmask jpi 1 EQ 0 THEN BEGIN xminmesh 1 xmaxmesh 1 yminmesh 1 ymaxmesh 1 computegrid XAXIS glamt YAXIS gphit ZAXIS zaxis MASK mask GLAMBOUNDARY glamboundary XMINMESH xminmesh XMAXMESH xmaxmesh YMINMESH yminmesh YMAXMESH ymaxmesh ZMINMESH zminmesh ZMAXMESH zmaxmesh ONEARTH onearth PERIODIC periodic PLAIN plain SHIFT shift STRIDE stride FULLCGRID fullcgrid XYINDEX xyindex FBASE2TBASE fbase2tbase STRCALLING strcalling _extra ex return ENDIF IF NOT keyword_set fullcgrid THEN BEGIN umaskred values f_nan vmaskred values f_nan fmaskredy values f_nan fmaskredx values f_nan ENDIF stride IF total key_stride GT 3 THEN BEGIN IF key_shift NE 0 THEN BEGIN for explanation see header of read_ncdf_varget pro jpiright key_shift jpileft jpi key_shift key_stride 0 1 key_shift 1 MOD key_stride 0 jpi jpiright 1 key_stride 0 1 jpileft 1 key_stride 0 1 ENDIF ELSE jpi jpi 1 key_stride 0 1 jpj jpj 1 key_stride 1 1 jpk jpk 1 key_stride 2 1 glamt temporary glamt 0: :stride 0 0: :stride 1 gphit temporary gphit 0: :stride 0 0: :stride 1 e1t temporary e1t 0: :stride 0 0: :stride 1 e2t temporary e2t 0: :stride 0 0: :stride 1 tmask temporary tmask 0: :stride 0 0: :stride 1 0: :stride 2 gdept gdept 0: :stride 2 gdepw gdepw 0: :stride 2 e3t e3t 0: :stride 2 e3w e3w 0: :stride 2 we must recompute glamf and gphif IF jpi GT 1 THEN BEGIN if keyword_set key_onearth AND keyword_set xnotsorted OR keyword_set key_periodic AND key_irregular then BEGIN stepxf glamt 720 MOD 360 stepxf shift stepxf 1 1 stepxf stepxf stepxf stepxf 360 stepxf 360 stepxf min abs stepxf dimension 3 IF NOT keyword_set key_periodic THEN stepxf jpi 1 stepxf jpi 2 ENDIF ELSE BEGIN stepxf shift glamt 1 1 glamt IF keyword_set key_periodic THEN stepxf jpi 1 360 stepxf jpi 1 ELSE stepxf jpi 1 stepxf jpi 2 ENDELSE IF jpj GT 1 THEN BEGIN stepxf jpj 1 stepxf jpj 2 stepxf jpi 1 jpj 1 stepxf jpi 2 jpj 2 ENDIF glamf glamt 0 5 stepxf ENDIF ELSE glamf glamt 0 5 IF jpj GT 1 THEN BEGIN we must compute stepyf: y distance between T i j T i 1 j 1 stepyf shift gphit 1 1 gphit stepyf jpj 1 stepyf jpj 2 IF jpi GT 1 THEN BEGIN if NOT keyword_set key_periodic THEN stepyf jpi 1 stepyf jpi 2 stepyf jpi 1 jpj 1 stepyf jpi 2 jpj 2 ENDIF gphif gphit 0 5 stepyf ENDIF ELSE gphif gphit 0 5 IF jpj EQ 1 THEN BEGIN glamt reform glamt jpi jpj over gphit reform gphit jpi jpj over glamf reform glamf jpi jpj over gphif reform gphif jpi jpj over e1t reform e1t jpi jpj over e2t reform e2t jpi jpj over ENDIF IF keyword_set fullcgrid THEN BEGIN glamu temporary glamu 0: :stride 0 0: :stride 1 gphiu temporary gphiu 0: :stride 0 0: :stride 1 e1u temporary e1u 0: :stride 0 0: :stride 1 e2u temporary e2u 0: :stride 0 0: :stride 1 glamv temporary glamv 0: :stride 0 0: :stride 1 gphiv temporary gphiv 0: :stride 0 0: :stride 1 e1v temporary e1v 0: :stride 0 0: :stride 1 e2v temporary e2v 0: :stride 0 0: :stride 1 e1f temporary e1f 0: :stride 0 0: :stride 1 e2f temporary e2f 0: :stride 0 0: :stride 1 umaskred temporary umaskred 0 0: :stride 1 0: :stride 2 vmaskred temporary vmaskred 0: :stride 0 0 0: :stride 2 fmaskredy temporary fmaskredy 0 0: :stride 1 0: :stride 2 fmaskredx temporary fmaskredx 0: :stride 0 0 0: :stride 2 IF jpj EQ 1 THEN BEGIN glamu reform glamu jpi jpj over gphiu reform gphiu jpi jpj over e1u reform e1u jpi jpj over e2u reform e2u jpi jpj over glamv reform glamv jpi jpj over gphiv reform gphiv jpi jpj over e1v reform e1v jpi jpj over e2v reform e2v jpi jpj over e1f reform e1f jpi jpj over e2f reform e2f jpi jpj over ENDIF ENDIF ENDIF apply all the grid parameters updateold domdef Triangulation IF total tmask EQ jpi jpj jpk AND NOT keyword_set key_irregular THEN triangles_list 1 ELSE BEGIN are we using ORCA2 IF jpiglo EQ 182 AND jpi EQ 181 AND jpjglo EQ 149 AND jpj EQ 148 THEN triangles_list triangule ELSE triangles_list triangule keep_cont ENDELSE time axis default definition IF n_elements time EQ 0 OR n_elements jpt EQ 0 THEN BEGIN jpt 1 time 0 ENDIF IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF grid parameters used by xxx IF NOT keyword_set strcalling THEN BEGIN IF n_elements ccmeshparameters EQ 0 THEN strcalling computegrid ELSE strcalling ccmeshparameters filename ENDIF IF n_elements glamt GE 2 THEN BEGIN glaminfo moment glamt IF finite glaminfo 2 EQ 0 THEN glaminfo glaminfo 0:1 gphiinfo moment gphit IF finite gphiinfo 2 EQ 0 THEN gphiinfo gphiinfo 0:1 ENDIF ELSE BEGIN glaminfo glamt gphiinfo gphit ENDELSE ccmeshparameters filename:strcalling glaminfo:float string glaminfo format E11 4 gphiinfo:float string gphiinfo format E11 4 jpiglo:jpiglo jpjglo:jpjglo jpkglo:jpkglo jpi:jpi jpj:jpj jpk:jpk ixminmesh:ixminmesh ixmaxmesh:ixmaxmesh iyminmesh:iyminmesh iymaxmesh:iymaxmesh izminmesh:izminmesh izmaxmesh:izmaxmesh key_shift:key_shift key_periodic:key_periodic key_stride:key_stride key_gridtype:key_gridtype key_yreverse:key_yreverse key_zreverse:key_zreverse key_partialstep:key_partialstep key_onearth:key_onearth ccreadparameters funclec_name: read_ncdf jpidta:jpidta jpjdta:jpjdta jpkdta:jpkdta ixmindta:ixmindta ixmaxdta:ixmaxdta iymindta:iymindta iymaxdta:iymaxdta izmindta:izmindta izmaxdta:izmaxdta IF keyword_set key_performance EQ 1 THEN print time computegrid systime 1 time1 return end"); 34 34 a[32] = new Array("./Grid/micromeshmask.html", "micromeshmask.pro", "", " file_comments reduce the size of the NetCDF meshmask created by OPA by using bit and not byte format for the masks and the float format for the other fields categories for OPA meshmask files param inid in required param outid in required param inname in required param outname in optional history July 2004 Sebastien Masson smasson lodyc jussieu fr version Id: micromeshmask pro 134 2006 07 07 10:19:08Z navarro PRO ncdf_transfer inid outid inname outname compile_opt idl2 strictarrsubs IF n_elements outname EQ 0 THEN outname inname ncdf_varget inid inname zzz ncdf_varput outid outname float reform zzz over RETURN END param ncfilein in required 1 the name of the meshmask file to be reduced In that case there is only one meshmask file OR 2 the xxx part in the names: xxx mesh_hgr nc xxx mesh_zgr nc xxx mask nc In that case the meshmask is split into 3 files param ncfileout in optional the name of the uniq reduced meshmask file default definition is micromeshmask nc keyword IODIR to define the files path examples IDL meshdir d1fes2 raid2 smasson DATA ORCA05 IDL micromeshmask meshmask_ORCA_R05 nc iodir meshdir PRO micromeshmask ncfilein ncfileout IODIR iodir compile_opt idl2 strictarrsubs filein isafile FILE ncfilein IODIR iodir NEW test findfile filein 0 IF test EQ THEN BEGIN filein_hgr findfile filein mesh_hgr nc 0 filein_zgr findfile filein mesh_zgr nc 0 filein_msk findfile filein mask nc 0 IF filein_hgr EQ OR filein_zgr EQ OR filein_msk EQ THEN BEGIN print meshmask file s not found print filein does not exist print filein mesh_hgr nc does not exist print filein mesh_zgr nc does not exist print filein mask nc does not exist return ENDIF ENDIF ELSE filein test get the horizontal dimensions IF n_elements filein_hgr NE 0 THEN cdfid ncdf_open filein_hgr ELSE cdfid ncdf_open filein ncdf_diminq cdfid x name jpi ncdf_diminq cdfid y name jpj for the mask we use its byte representation its y dimension will be extended to be a multiple of 8 then it will be divided by 8 if jpj mod 8 eq 0 the jpj_m jpi 8 else jpj_m jpi 8 1 jpj_m jpj 7 8 get the vertical dimensions IF n_elements filein_zgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_zgr ENDIF listdims strlowcase ncdf_listdims cdfid IF where listdims EQ z 0 NE 1 THEN ncdf_diminq cdfid z name jpk ELSE BEGIN dimid where strmid listdims 0 5 EQ depth 0 IF dimid NE 1 THEN ncdf_diminq cdfid dimid name jpk ELSE BEGIN dummy report We could not find the vertical dimension its name must be z or start with depth return ENDELSE ENDELSE get the variables list related to the partial steps varlist_ps ncdf_listvars cdfid varlist_ps strtrim strlowcase varlist_ps 2 define the output file IF n_elements ncfileout EQ 0 THEN ncfileout micromeshmask nc cdfidout ncdf_create isafile FILE ncfileout IODIR iodir NEW clobber ncdf_control cdfidout nofill dimension dimidx ncdf_dimdef cdfidout x jpi dimidy ncdf_dimdef cdfidout y jpj dimidy_m ncdf_dimdef cdfidout y_m jpj_m dimidz ncdf_dimdef cdfidout z jpk global attributs ncdf_attput cdfidout IDL_Program_Name micromeshmask pro GLOBAL ncdf_attput cdfidout Creation_Date systime GLOBAL declaration des variables varid lonarr 20 horizontal variables hgrlist glamt glamu glamv glamf gphit gphiu gphiv gphif e1t e1u e1v e1f e2t e2u e2v e2f FOR h 0 n_elements hgrlist 1 DO varid h ncdf_vardef cdfidout hgrlist h dimidx dimidy float vertical variables zgrlist e3t e3w gdept gdepw FOR z 0 n_elements zgrlist 1 DO varid 16 z ncdf_vardef cdfidout zgrlist z dimidz float variables related to the partial steps IF where varlist_ps EQ hdept 0 NE 1 THEN varid varid ncdf_vardef cdfidout hdept dimidx dimidy float IF where varlist_ps EQ hdepw 0 NE 1 THEN varid varid ncdf_vardef cdfidout hdepw dimidx dimidy float old variable name keep for compatibility with old run Change e3tp to e3t_ps IF where varlist_ps EQ e3tp 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3t_ps dimidx dimidy float old variable name keep for compatibility with old run Change e3wp to e3w_ps IF where varlist_ps EQ e3wp 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3w_ps dimidx dimidy float IF where varlist_ps EQ e3t_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3t_ps dimidx dimidy float IF where varlist_ps EQ e3w_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3w_ps dimidx dimidy float IF where varlist_ps EQ e3u_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3u_ps dimidx dimidy float IF where varlist_ps EQ e3v_ps 0 NE 1 THEN varid varid ncdf_vardef cdfidout e3v_ps dimidx dimidy float mask variable msklist tmask umask vmask fmask FOR m 0 n_elements msklist 1 DO BEGIN varid varid ncdf_vardef cdfidout msklist m dimidx dimidy_m dimidz byte ncdf_attput cdfidout varid n_elements varid 1 Comment the mask is stored as bit You must use the binary representation of the byte to get back the data ENDFOR ncdf_control cdfidout endef get the horizontal variables IF n_elements filein_hgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_hgr ENDIF FOR h 0 n_elements hgrlist 1 DO ncdf_transfer cdfid cdfidout hgrlist h get the vertical variables IF n_elements filein_zgr NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_zgr ENDIF FOR z 0 n_elements zgrlist 1 DO ncdf_transfer cdfid cdfidout zgrlist z partial step variables IF where varlist_ps EQ hdept 0 NE 1 THEN ncdf_transfer cdfid cdfidout hdept IF where varlist_ps EQ hdepw 0 NE 1 THEN ncdf_transfer cdfid cdfidout hdepw IF where varlist_ps EQ e3tp 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3tp e3t_ps IF where varlist_ps EQ e3wp 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3wp e3w_ps IF where varlist_ps EQ e3t_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3t_ps IF where varlist_ps EQ e3w_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3w_ps IF where varlist_ps EQ e3u_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3u_ps IF where varlist_ps EQ e3v_ps 0 NE 1 THEN ncdf_transfer cdfid cdfidout e3v_ps mask IF n_elements filein_msk NE 0 THEN BEGIN ncdf_close cdfid cdfid ncdf_open filein_msk ENDIF loop on the vertical levels to limit the memory use FOR k 0 jpk 1 DO BEGIN FOR m 0 3 DO BEGIN CASE ncdf_varinq cdfid msklist m ndims OF 3:ncdf_varget cdfid msklist m zzz offset 0 0 k count jpi jpj 1 4:ncdf_varget cdfid msklist m zzz offset 0 0 k 0 count jpi jpj 1 1 ENDCASE zzz byte temporary zzz zzz must contain only 0 or 1 zzz temporary zzz MOD 2 we transpose zzz because we need to work with the y dimension as the first dimension zzz transpose temporary zzz extend jpj to be a multiple of 8 jpjadd jpj_m 8 jpj IF jpjadd NE 0 THEN zzz temporary zzz bytarr jpjadd jpi reform zzz to look like output of binary pro zzz reform zzz 8 1 jpj_m jpi over convert into its byte form zzz inverse_binary temporary zzz ncdf_varput cdfidout msklist m transpose temporary zzz offset 0 0 k count jpi jpj_m 1 ENDFOR ENDFOR ncdf_close cdfid ncdf_close cdfidout RETURN END"); … … 66 66 a[64] = new Array("./Matrix/cmapply.html", "cmapply.pro", "", " file_comments Utility function adapted from CMPRODUCT version Id: cmapply pro 136 2006 07 10 15:20:19Z pinsard todo seb function cmapply_product x compile_opt idl2 strictarrsubs sz size x n sz 1 while n GT 1 do begin if n mod 2 EQ 1 then x 0 x 0 x n 1 n2 floor n 2 x x 0:n2 1 x n2: n n2 endwhile return reform x 0 overwrite end file_comments cmapply_redim : Utility function used to collect collaped dimensions todo seb pro cmapply_redim newarr dimapply dimkeep nkeep totcol totkeep compile_opt idl2 strictarrsubs sz size newarr First task: rearrange dimensions so that the dimensions that are kept ie uncollapsed are at the back dimkeep where histogram dimapply min 1 max sz 0 ne 1 nkeep if nkeep EQ 0 then return newarr transpose temporary newarr dimapply 1 dimkeep totcol is the total number of collapsed elements totcol sz dimapply 0 for i 1 n_elements dimapply 1 do totcol totcol sz dimapply i totkeep sz dimkeep 0 1 for i 1 n_elements dimkeep 1 do totkeep totkeep sz dimkeep i 1 this new array has two dimensions: the first all elements that will be collapsed the second all dimensions that will be preserved the ordering is so that all elements to be collapsed are adjacent in memory newarr reform newarr totcol totkeep overwrite end Main function file_comments Applies a function to specified dimensions of an array Description: CMAPPLY will apply one of a few select functions to specified dimensions of an array Unlike some IDL functions you do have a choice of which dimensions that are to be collapsed by this function Iterative loops are avoided where possible for performance reasons The possible functions are: and number of loop iterations: Performs a sum as in TOTAL number of collapsed dimensions AND Finds LOGICAL AND not bitwise same OR Finds LOGICAL OR not bitwise same Performs a product LOG_2 no of collapsed elts MIN Finds the minimum value smaller of no of collapsed MAX Finds the maximum value or output elements USER Applies user defined function no of output elements It is possible to perform user defined operations arrays using CMAPPLY The OP parameter is set to USER:FUNCTNAME where FUNCTNAME is the name of a user defined function The user defined function should be defined such that it accepts a single parameter a vector and returns a single scalar value Here is a prototype for the function definition: FUNCTION FUNCTNAME x KEYWORD1 key1 scalar function of x or keywords RETURN scalar END The function may accept keywords Keyword values are passed in to CMAPPLY through the FUNCTARGS keywords parameter and passed to the user function via the _EXTRA mechanism Thus while the definition of the user function is highly constrained in the number of positional parameters there is absolute freedom in passing keyword parameters It s worth noting however that the implementation of user defined functions is not particularly optimized for speed Users are encouraged to implement their own array if the number of output elements is large categories Arrays param OP in required The operation to perform as a string May be upper or lower case If a user defined operation is to be passed then OP is of the form USER:FUNCTNAME where FUNCTNAME is the name of the user defined function param ARRAY in required An array of values to be operated on Must not be of type STRING 7 or STRUCTURE 8 param dimapply in optional default 1 ie first dimension An array of dimensions that are to be collapsed where the the first dimension starts with 1 ie same convention as IDL function TOTAL Whereas TOTAL only allows one dimension to be added you can specify multiple dimensions to CMAPPLY Order does not matter since all operations are associative and transitive NOTE: the dimensions refer to the input array not the output array IDL allows a maximum of 8 dimensions keyword DOUBLE default not set Set this if you wish the internal computations to be done in double precision if necessary If ARRAY is double precision real or complex then DOUBLE 1 is implied keyword TYPE Set this to the IDL code of the desired output type refer to documentation of SIZE Internal results will be rounded to the nearest integer if the output type is an integer type DEFAULT: same is input type keyword FUNCTARGS If OP is USER: then the contents of this keyword are passed to the user function using the _EXTRA mechanism This way you can pass additional data to your user supplied function via keywords without using common blocks DEFAULT: undefined i e no keywords passed by _EXTRA returns An array of the required TYPE whose elements are the result of the requested operation Depending on the operation and number of elements in the input array the result may be vulnerable to overflow or underflow examples First example: Shows how CMAPPLY can be used to total the second dimension of the array called IN This is equivalent to OUT TOTAL IN 2 IDL IN INDGEN 5 5 IDL OUT CMAPPLY IN 2 IDL HELP OUT OUT INT Array 5 Second example: Input is assumed to be an 5x100 array of 1 s and 0 s indicating the status of 5 detectors at 100 points in time The desired output is an array of 100 values indicating whether all 5 detectors are on 1 at one time Use the logical AND operation IDL IN detector_status 5x100 array IDL OUT CMAPPLY AND IN 1 collapses 1st dimension IDL HELP OUT OUT BYTE Array 100 note that MIN could also have been used in this particular case although there would have been more loop iterations Third example: Shows sum over first and third dimensions in an array with dimensions 4x4x4: IDL IN INDGEN 4 4 4 IDL OUT CMAPPLY IN 1 3 IDL PRINT OUT 408 472 536 600 Fourth example: A user function MEDIAN is used: IDL IN RANDOMN SEED 10 10 5 IDL OUT CMAPPLY USER:MEDIAN IN 3 IDL HELP OUT OUT FLOAT Array 10 10 OUT i j is the median value of IN i j history Mar 1998 Written CM Changed usage message to not bomb 24 Mar 2000 CM Signficant rewrite for MIN and MAX inspired by Todd Clements FOR loop indices are now type LONG copying terms are liberalized CM 22 Aug 2000 More efficient MAX MIN inspired by Alex Schuster CM 25 Jan 2002 Make new MAX MIN actually work with 3d arrays CM 08 Feb 2002 Add user defined functions ON_ERROR CM 09 Feb 2002 Correct bug in MAX MIN initialization of RESULT CM 05 Dec 2002 Author: Craig B Markwardt NASA GSFC Code 662 Greenbelt MD 20770 craigm lheamail gsfc nasa gov version Id: cmapply pro 136 2006 07 10 15:20:19Z pinsard function cmapply op array dimapply double dbl type type functargs functargs nocatch nocatch compile_opt idl2 strictarrsubs if n_params LT 2 then begin message USAGE: XX CMAPPLY OP ARRAY 2 info message where OP is AND OR MIN MAX info return 1L endif if NOT keyword_set nocatch then on_error 2 else on_error 0 Parameter checking 1 the dimensions of the array sz size array if sz 0 EQ 0 then message ERROR: ARRAY must be an array 2 The type of the array if sz sz 0 1 EQ 0 OR sz sz 0 1 EQ 7 OR sz sz 0 1 EQ 8 then message ERROR: Cannot apply to UNDEFINED STRING or STRUCTURE if n_elements type EQ 0 then type sz sz 0 1 3 The type of the operation szop size op if szop szop 0 1 NE 7 then message ERROR: operation OP was not a string 4 The dimensions to apply default is to apply to first dim if n_params EQ 2 then dimapply 1 dimapply dimapply dimapply dimapply sort dimapply Sort in ascending order napply n_elements dimapply 5 Use double precision if requested or if needed if n_elements dbl EQ 0 then begin dbl 0 if type EQ 5 OR type EQ 9 then dbl 1 endif newop strupcase op newarr array newarr reform newarr sz 1:sz 0 overwrite case 1 of Addition newop EQ : begin for i 0L napply 1 do begin newarr total temporary newarr dimapply i i double dbl endfor end Multiplication newop EQ : begin Multiplication by summation of logarithms cmapply_redim newarr dimapply dimkeep nkeep totcol totkeep if nkeep EQ 0 then begin newarr reform newarr n_elements newarr 1 overwrite return cmapply_product newarr 0 endif result cmapply_product newarr result reform result sz dimkeep 1 overwrite return result end LOGICAL AND or OR newop EQ AND OR newop EQ OR : begin newarr temporary newarr NE 0 totelt 1L for i 0L napply 1 do begin newarr total temporary newarr dimapply i i totelt totelt sz dimapply i endfor if newop EQ AND then return round newarr EQ totelt if newop EQ OR then return round newarr NE 0 end Operations requiring a little more attention over how to iterate newop EQ MAX OR newop EQ MIN : begin cmapply_redim newarr dimapply dimkeep nkeep totcol totkeep if nkeep EQ 0 then begin if newop EQ MAX then return max newarr if newop EQ MIN then return min newarr endif Next task: create result array result make_array totkeep type type Now either iterate over the number of output elements or the number of collapsed elements whichever is smaller if totcol LT totkeep then begin Iterate over the number of collapsed elements result 0 reform newarr 0 totkeep overwrite case newop of MAX : for i 1L totcol 1 do result 0 result newarr i MIN : for i 1L totcol 1 do result 0 result newarr i endcase endif else begin Iterate over the number of output elements case newop of MAX : for i 0L totkeep 1 do result i max newarr i MIN : for i 0L totkeep 1 do result i min newarr i endcase endelse result reform result sz dimkeep 1 overwrite return result end User function strmid newop 0 4 EQ USER : begin functname strmid newop 5 if functname EQ then message ERROR: newop is not a valid operation cmapply_redim newarr dimapply dimkeep nkeep totcol totkeep if nkeep EQ 0 then begin if n_elements functargs GT 0 then return call_function functname newarr _EXTRA functargs return call_function functname newarr endif Next task: create result array result make_array totkeep type type Iterate over the number of output elements if n_elements functargs GT 0 then begin for i 0L totkeep 1 do result i call_function functname newarr i _EXTRA functargs endif else begin for i 0L totkeep 1 do result i call_function functname newarr i endelse result reform result sz dimkeep 1 overwrite return result end endcase newsz size newarr if type EQ newsz newsz 0 1 then return newarr Cast the result into the desired type if necessary castfns UNDEF BYTE FIX LONG FLOAT DOUBLE COMPLEX UNDEF UNDEF DCOMPLEX if type GE 1 AND type LE 3 then return call_function castfns type round newarr else return call_function castfns type newarr end"); 67 67 a[65] = new Array("./Matrix/cmset_op.html", "cmset_op.pro", "", " hidden file_comments Simplified version of CMSET_OP_UNIQ which sorts and takes the first value whatever that may mean todo seb function cmset_op_uniq a compile_opt idl2 strictarrsubs if n_elements a LE 1 then return 0L ii sort a b a ii wh where b NE shift b 1L ct if ct GT 0 then return ii wh return 0L end file_comments Performs an AND OR or XOR operation between two sets Description: SET_OP performs three common operations between two sets The three supported functions of OP are: OP Meaning AND to find the intersection of A and B OR to find the union of A and B XOR to find the those elements who are members of A or B but not both Sets as defined here are one dimensional arrays composed of numeric or string types Comparisons of equality between elements are done using the IDL EQ operator The complements of either set can be taken as well by using the NOT1 and NOT2 keywords For example it may be desireable to find the elements in A but not B or B but not A they are different The following IDL expressions achieve each of those effects: SET CMSET_OP A AND NOT2 B A but not B SET CMSET_OP NOT1 A AND B B but not A Note the distinction between NOT1 and NOT2 NOT1 refers to the first set A and NOT2 refers to the second B Their ordered placement in the calling sequence is entirely optional but the above ordering makes the logical meaning explicit NOT1 and NOT2 can only be set for the AND operator and never simultaneously This is because the results of an operation with OR or XOR and any combination of NOTs or with AND and both NOTs formally cannot produce a defined result The implementation depends on the type of operands For integer types a fast technique using HISTOGRAM is used However this algorithm becomes inefficient when the dynamic range in the data is large For those cases and for other data types a technique based on SORT is used Thus the compute time should scale roughly as A B ALOG A B or better rather than A B for the brute force approach For large arrays this is a significant benefit categories array param A in required The two sets to be operated on A one dimensional array of either numeric or string type A and B must be of the same type Empty sets are permitted and are either represented as an undefined variable or by setting EMPTY1 or EMPTY2 param B in required See A param OP0 in required a string the operation to be performed Must be one of AND OR or XOR lower or mixed case is permitted Other operations will cause an error message to be produced keyword NOT1 If set and OP is AND then the complement of A for NOT1 or B for NOT2 will be used in the operation NOT1 and NOT2 cannot be set simultaneously keyword NOT2 See NOT1 keyword EMPTY1 If set then A for EMPTY1 or B for EMPTY2 are assumed to be the empty set The actual values passed as A or B are then ignored keyword EMPTY2 See EMPTY1 keyword INDEX if set then return a list of indices instead of the array values themselves The slower set operations are always performed in this case The indices refer to the combined array A B To clarify in the following call: I CMSET_OP INDEX returned values from 0 to NA 1 refer to A I and values from NA to NA NB 1 refer to B I NA keyword COUNT upon return the number of elements in the result set This is only important when the result set is the empty set in which case COUNT is set to zero returns The resulting set as a one dimensional array The set may be represented by either an array of data values default or an array of indices if INDEX is set Duplicate elements if any are removed and element order may not be preserved The empty set is represented as a return value of 1L and COUNT is set to zero Note that the only way to recognize the empty set is to examine COUNT SEE ALSO: SET_UTILS PRO by RSI history Written CM 23 Feb 2000 Added empty set capability CM 25 Feb 2000 Documentation clarification CM 02 Mar 2000 Incompatible but more consistent reworking of EMPTY keywords CM 04 Mar 2000 Minor documentation clarifications CM 26 Mar 2000 Corrected bug in empty_arg special case CM 06 Apr 2000 Add INDEX keyword CM 31 Jul 2000 Clarify INDEX keyword documentation CM 06 Sep 2000 Made INDEX keyword always force SLOW_SET_OP CM 06 Sep 2000 Added CMSET_OP_UNIQ and ability to select FIRST_UNIQUE or LAST_UNIQUE values CM 18 Sep 2000 Removed FIRST_UNIQUE and LAST_UNIQUE and streamlined CMSET_OP_UNIQ until problems with SORT can be understood CM 20 Sep 2000 thanks to Ben Tupper Still trying to get documentation of INDEX and NOT right CM 28 Sep 2000 no code changes Correct bug for AND case when input sets A and B each only have one unique value and the values are equal CM 04 Mar 2004 thanks to James B jbattat at cfa dot harvard dot edu Add support for the cases where the input data types are mixed but still compatible also attempt to return the same data type that was passed in CM 05 Feb 2005 Fix bug in type checking thanks to marit CM 10 Dec 2005 Work around a stupidity in the built in IDL HISTOGRAM routine which tries to help you by restricting the MIN MAX to the range of the input variable thanks to Will Maddox CM 16 Jan 2006 Author: Craig B Markwardt NASA GSFC Code 662 Greenbelt MD 20770 craigm lheamail gsfc nasa gov version Id: cmset_op pro 136 2006 07 10 15:20:19Z pinsard examples Utility function similar to UNIQ but allowing choice of taking first or last unique element or non unique elements Unfortunately this doesn t work because of implementation dependent versions of the SORT function function cmset_op_uniq a first first non non count ct sort sortit if n_elements a LE 1 then return 0L sh 2L keyword_set first 1L 2L keyword_set non 1 if keyword_set sortit then begin Sort it manually ii sort a b a ii if keyword_set non then wh where b EQ shift b sh ct else wh where b NE shift b sh ct if ct GT 0 then return ii wh endif else begin Use the user s values directly if keyword_set non then wh where a EQ shift a sh ct else wh where a NE shift a sh ct if ct GT 0 then return wh endelse if keyword_set first then return 0L else return n_elements a 1 end Simplified version of CMSET_OP_UNIQ which sorts and takes the first value whatever that may mean function cmset_op a op0 b not1 not1 not2 not2 count count empty1 empty1 empty2 empty2 maxarray ma index index compile_opt idl2 strictarrsubs on_error 2 return on error count 0L index0 1L Histogram technique is used for array sizes max2 nbins maxx minn 1 if maxx minn GT floor ma 0 then goto SLOW_SET_OP Work around a stupidity in the built in IDL HISTOGRAM routine if tp1 EQ 2 OR tp2 EQ 2 AND minn LT 32768 OR maxx GT 32767 then goto SLOW_SET_OP Following operations create a histogram of the integer values ha histogram a min minn max maxx 1 hb histogram b min minn max maxx 1 Compute NOT cases if keyword_set not1 then ha 1b ha if keyword_set not2 then hb 1b hb case op of Boolean operations AND : mask temporary ha AND temporary hb OR : mask temporary ha OR temporary hb XOR : mask temporary ha XOR temporary hb endcase wh where temporary mask count if count EQ 0 then return 1L result temporary wh minn if tp1 NE tp2 then return result szr size result tpr szr szr 0 1 Cast to the original type if necessary if tpr NE tp1 then begin fresult make_array n_elements result type tp1 fresult 0 temporary result result temporary fresult endif return result endelse return 1L DEFAULT CASE end Here is how I did the INDEX stuff with fast histogramming It works but is complicated so I forced it to go to SLOW_SET_OP ha histogram a min minn max maxx reverse ra 1 rr ra 0:nbins mask rr NE rr 1: ra ra rr mask 1L mask hb histogram b min minn max maxx reverse rb 1 rr rb 0:nbins mask rr NE rr 1: rb rb rr mask 1L mask AND OR XOR NOT masking here ra ra wh rb rb wh return ra ra GE 0 rb n1 ra LT 0 is last ra right "); 68 a[66] = new Array("./Matrix/ congridseb.html", "congridseb.pro", "", " file_comments Like congrid but here it works example: IDL print congrid 1 2 3 4 5 6 7 8 12 4 1 1 1 2 2 2 3 3 3 3 4 4 1 1 1 2 2 2 3 3 3 3 4 4 5 5 5 6 6 6 7 7 7 7 8 8 5 5 5 6 6 6 7 7 7 7 8 8 IDL print rebin 1 2 3 4 5 6 7 8 12 4 1 1 1 2 2 2 3 3 3 4 4 4 3 3 3 4 4 4 5 5 5 6 6 6 5 5 5 6 6 6 7 7 7 8 8 8 5 5 5 6 6 6 7 7 7 8 8 8 IDL print congridseb 1 2 3 4 5 6 7 8 12 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 5 5 5 6 6 6 7 7 7 8 8 8 categories utilities param tableau in required A table 1 ou 2d param x in required dimension in x of the result which must be a multiple of the dimension in x of the table param y in required dimension in y of the result which must be a multiple of the dimension in y of the table returns a table dim x y history Sebastien Masson smasson lodyc jussieu fr 20 3 98 18 6 1999 supression d une horrible boucle version Id: congridseb pro 136 2006 07 10 15:20:19Z pinsard function congridseb tableau x y compile_opt idl2 strictarrsubs res tableau taille size tableau CASE N_PARAMS OF 2: begin res replicate 1 1 x taille 1 res return res end 3: begin res transpose res res replicate 1 1 y taille 2 res res reform res y taille 1 over res transpose res res replicate 1 1 x taille 1 res return reform res x y overwrite end else: return report Mauvais nombre de parametre dans l appel de CONGRIDSEB endcase end");69 a[67] = new Array("./Matrix/ different.html", "different.pro", "", " file_comments calculate the different elements of 2 matrix of positif whole numbers categories Calculation of matrixes param a in required arrays of positive integers which need not be sorted Duplicate elements are ignored as they have no effect on the result param b in required see a returns tableau restrictions The empty set is denoted by an array with the first element equal to 1 restrictions These functions will not be efficient on sparse sets with wide ranges as they trade memory for efficiency The HISTOGRAM function is used which creates arrays of size equal to the range of the resulting set examples a 2 4 6 8 b 6 1 3 2 different a b 4 8 Elements in A but not in B history http: www dfanning com tips set_operations html version Id: different pro 134 2006 07 07 10:19:08Z navarro FUNCTION different a b compile_opt idl2 strictarrsubs a and not b elements in A but not in B mina Min a Max maxa minb Min b Max maxb IF minb GT maxa OR maxb LT mina THEN RETURN a No intersection r Where Histogram a Min mina Max maxa 1 Histogram b Min mina Max maxa count IF count eq 0 THEN RETURN 1 ELSE RETURN r mina END");70 a[68] = new Array("./Matrix/ extrac2.html", "extrac2.pro", "", " file_comments extraction of subdomains of matrixes Even if the subdomain is pierced see the example By default IDL can make extractions of subdomain: IDL a indgen 5 5 IDL print a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 IDL print a 0 2 3 15 17 IDL print a 0 2 0 2 5 7 10 12 15 17 20 22 but IDL print a 0 2 3 4 15 22 while IDL print extrac2 a 0 2 3 4 15 17 20 22 categories utilities param array in required a 1 2 3 or 4 dim input array param index1 in required can have 2 forms: 1 a vector containing indexes of lines we want to keep 2 the string if we want to keep all lines param index2 in required the same thing that index1 but for dim 2 param index3 in required the same thing that index1 but for dim 3 param index4 in required the same thing that index1 but for dim 4 returns a matrix 1 2 3 or 4d extract from input array restrictions 1 in case of mistake examples I have a dim 2 matrix named A I want extract a small intersection matrix 2d of the line 2 3 and 7 and of the column 0 and 1: IDL res extrac2 A 2 3 7 0 1 other ex: IDL print a a b c d e f g h i IDL print extrac2 a 0 2 0 2 a c g i history Sebastien Masson smasson lodyc jussieu fr 12 1 1999 29 4 1999: correction of a bug and complement of the heading version Id: extrac2 pro 136 2006 07 10 15:20:19Z pinsard FUNCTION extrac2 array index1 index2 index3 index4 compile_opt idl2 strictarrsubs taille size array test of the numbre of parameters and of the nature of the index for THE case x if n_params NE taille 0 1 THEN return report we need as many indexes as the number of dimensions of the input array IF n_params GE 5 THEN BEGIN if size index4 type EQ 7 then index4 lindgen taille 4 ELSE index4 long index4 nt n_elements index4 ENDIF IF n_params GE 4 THEN BEGIN if size index3 type EQ 7 then index3 lindgen taille 3 ELSE index3 long index3 nz n_elements index3 ENDIF IF n_params GE 3 THEN BEGIN if size index2 type EQ 7 then index2 lindgen taille 2 ELSE index2 long index2 ny n_elements index2 ENDIF IF n_params GE 2 THEN BEGIN if size index1 type EQ 7 then index1 lindgen taille 1 ELSE index1 long index1 nx n_elements index1 ENDIF construction of an array of indexes and of results following the size of array case taille 0 of 1:res array index1 2:BEGIN index index1 replicate 1 ny taille 1 replicate 1 nx index2 res array index END 3:BEGIN index index1 replicate 1 ny taille 1 replicate 1 nx index2 index temporary index replicate 1 nz taille 1 taille 2 replicate 1 nx ny index3 res array reform index nx ny nz over END 4:BEGIN index index1 replicate 1 ny taille 1 replicate 1 nx index2 index temporary index replicate 1 nz taille 1 taille 2 replicate 1 nx ny index3 index temporary index replicate 1 nt taille 1 taille 2 taille 3 replicate 1 nx ny nz index4 res array reform index nx ny nz nz over END endcase return res end");71 a[69] = new Array("./Matrix/ inter.html", "inter.pro", "", " file_comments calculate the intersection between 2 matrixes of whole numbers categories calculation of matrixes param a in required arrays of positive integers which need not to be sorted Duplicate elements are ignored as they have noeffect on the result param b in required see a returns tableau restrictions The empty set is denoted by an array with the first element equal to 1 restrictions These functions will not be efficient on sparse sets with wide ranges as they trade memory for efficiency The HISTOGRAM function is used which creates arrays of size equal to the range of the resulting set examples a 2 4 6 8 b 6 1 3 2 inter a b 2 6 Common elements history http: www dfanning com tips set_operations html version Id: inter pro 134 2006 07 07 10:19:08Z navarro FUNCTION inter a b compile_opt idl2 strictarrsubs case 1 of n_elements a EQ 0:return 1 n_elements b EQ 0:return 1 n_elements a EQ 1 AND n_elements b NE 1: if where b EQ a 0 0 EQ 1 then return 1 ELSE return a 0 n_elements b EQ 1 AND n_elements a NE 1: if where a EQ b 0 0 EQ 1 then return 1 ELSE return b 0 n_elements a EQ 1 AND n_elements b EQ 1: if where a 0 EQ b 0 0 EQ 1 then return 1 ELSE return a 0 ELSE: ENDCASE minab Min a Max maxa Min b Max maxb Only need intersection of ranges maxab maxa maxb If either set is empty or their ranges don t intersect: result NULL IF maxab LT minab OR maxab LT 0 THEN RETURN 1 r Where Histogram a Min minab Max maxab Histogram b Min minab Max maxab count IF count EQ 0 THEN RETURN 1 ELSE RETURN r minab END");72 a[70] = new Array("./Matrix/ make_selection.html", "make_selection.pro", "", " file_comments Convert an array of selected values to an index array that identifies the selected values in a list or data array categories tools param NAMES in required A list or array of values to choose from param SELNAMES in required A list of selected values keyword ONLY_VALID Return only indices of found values Values not found are skipped Default is to return 1 index value for each SELNAME which is 1 if SELNAME is not contained in NAMES If ONLY_VALID is set the 1 values will be deleted and a value of 1 indicates that no SELNAME has been found at all keyword REQUIRED Normally MAKE_SELECTION will return indices for all values that are found simply ignoring the selected values that are not in the NAMES array although an error message is displayed Set this keyword to return with 1 as soon as a selected value is not found keyword QUIET Suppress printing of the error message if a selected value is not found the error condition will still be set returns A long array with indices to reference the selected values in the NAMES array restrictions If the NAMES array contains multiple entries of the same value only the index to the first entry will be returned A selection can contain multiple instances of the same value The index array will contain one entry per selected item See example below examples names Alfred Anton Peter John Mary index MAKE_SELECTION names Peter Mary print index prints 2 4 vals indgen 20 index MAKE_SELECTION vals 9 5 8 7 7 8 9 print index prints 9 1 8 7 7 8 9 index MAKE_SELECTION vals 9 5 8 7 7 8 9 ONLY_VALID print index prints 9 8 7 7 8 9 index MAKE_SELECTION vals 9 5 8 7 7 8 9 REQUIRED print index prints 1 history mgs 28 Aug 1998: VERSION 1 00 mgs 29 Aug 1998: changed behaviour and added ONLY_VALID keyword version Id: make_selection pro 134 2006 07 07 10:19:08Z navarro Copyright C 1998 Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to mgs io harvard edu with subject IDL routine make_selection function make_selection names selnames only_valid only_valid required required quiet quiet compile_opt idl2 strictarrsubs return an index array with a number for each element in selnames that is found in names Set the REQUIRED keyword to return 1 if one element is not found otherwise 1 will only be returned if no element is found reset error state to 0 message reset quiet keyword_set quiet result 1L for i 0 n_elements selnames 1 do begin test where names eq selnames i result result test 0 if test 0 lt 0 then begin if keyword_set ONLY_VALID OR keyword_set REQUIRED then message Selected name not found in names array strtrim selnames i 2 CONT NOPRINT quiet if keyword_set required then return 1L endif endfor if n_elements result gt 1 then result result 1: if keyword_set only_valid then begin ind where result ge 0 if ind 0 ge 0 then result result ind else result 1L endif return result end");73 a[71] = new Array("./Matrix/ union.html", "union.pro", "", " file_comments calculate tne union between 2 matrixes of whole numbers categories calculation of matrixes param a in required arrays of positive integers which need not be sorted Duplicate elements are ignored as they have no effect on the result param b in required see a returns tableau restrictions The empty set is denoted by an array with the first element equal to 1 restrictions These functions will not be efficient on sparse sets with wide ranges as they trade memory for efficiency The HISTOGRAM function is used which creates arrays of size equal to the range of the resulting set examples a 2 4 6 8 b 6 1 3 2 union a b 1 2 3 4 6 8 Elements in either set history http: www dfanning com tips set_operations html version Id: union pro 134 2006 07 07 10:19:08Z navarro FUNCTION union a b compile_opt idl2 strictarrsubs IF a 0 LT 0 THEN RETURN b A union NULL a IF b 0 LT 0 THEN RETURN a B union NULL b RETURN Where Histogram a b OMin omin omin Return combined set END");74 a[72] = new Array("./ Matrix/zero_one.html", "zero_one.pro", "", " file_comments Send back a vector or a matrix constituate of 0 and 1 in alternation categories function matrixes param n1 in required number of elements in the first dimension param n2 in required numbre of elements in the second dimension returns resultat history Sebastien Masson smasson lodyc jussieu fr 1 12 98 version Id: zero_one pro 134 2006 07 07 10:19:08Z navarro function zero_one n1 n2 compile_opt idl2 strictarrsubs CASE N_PARAMS OF 1:return findgen n1 mod 2 2:BEGIN if fix n1 2 EQ n1 2 then BEGIN even number of columns res findgen n1 1 n2 mod 2 return res 0:n1 1 ENDIF ELSE return findgen n1 n2 mod 2 odd number of columns END else: return report bad number of arguments endcase end");75 a[73] = new Array("./Obsolete/co mmon.html", "common.pro", "", "");68 a[66] = new Array("./Matrix/different.html", "different.pro", "", " file_comments calculate the different elements of 2 matrix of positif whole numbers categories Calculation of matrixes param a in required arrays of positive integers which need not be sorted Duplicate elements are ignored as they have no effect on the result param b in required see a returns tableau restrictions The empty set is denoted by an array with the first element equal to 1 restrictions These functions will not be efficient on sparse sets with wide ranges as they trade memory for efficiency The HISTOGRAM function is used which creates arrays of size equal to the range of the resulting set examples a 2 4 6 8 b 6 1 3 2 different a b 4 8 Elements in A but not in B history http: www dfanning com tips set_operations html version Id: different pro 134 2006 07 07 10:19:08Z navarro FUNCTION different a b compile_opt idl2 strictarrsubs a and not b elements in A but not in B mina Min a Max maxa minb Min b Max maxb IF minb GT maxa OR maxb LT mina THEN RETURN a No intersection r Where Histogram a Min mina Max maxa 1 Histogram b Min mina Max maxa count IF count eq 0 THEN RETURN 1 ELSE RETURN r mina END"); 69 a[67] = new Array("./Matrix/extrac2.html", "extrac2.pro", "", " file_comments extraction of subdomains of matrixes Even if the subdomain is pierced see the example By default IDL can make extractions of subdomain: IDL a indgen 5 5 IDL print a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 IDL print a 0 2 3 15 17 IDL print a 0 2 0 2 5 7 10 12 15 17 20 22 but IDL print a 0 2 3 4 15 22 while IDL print extrac2 a 0 2 3 4 15 17 20 22 categories utilities param array in required a 1 2 3 or 4 dim input array param index1 in required can have 2 forms: 1 a vector containing indexes of lines we want to keep 2 the string if we want to keep all lines param index2 in required the same thing that index1 but for dim 2 param index3 in required the same thing that index1 but for dim 3 param index4 in required the same thing that index1 but for dim 4 returns a matrix 1 2 3 or 4d extract from input array restrictions 1 in case of mistake examples I have a dim 2 matrix named A I want extract a small intersection matrix 2d of the line 2 3 and 7 and of the column 0 and 1: IDL res extrac2 A 2 3 7 0 1 other ex: IDL print a a b c d e f g h i IDL print extrac2 a 0 2 0 2 a c g i history Sebastien Masson smasson lodyc jussieu fr 12 1 1999 29 4 1999: correction of a bug and complement of the heading version Id: extrac2 pro 136 2006 07 10 15:20:19Z pinsard FUNCTION extrac2 array index1 index2 index3 index4 compile_opt idl2 strictarrsubs taille size array test of the numbre of parameters and of the nature of the index for THE case x if n_params NE taille 0 1 THEN return report we need as many indexes as the number of dimensions of the input array IF n_params GE 5 THEN BEGIN if size index4 type EQ 7 then index4 lindgen taille 4 ELSE index4 long index4 nt n_elements index4 ENDIF IF n_params GE 4 THEN BEGIN if size index3 type EQ 7 then index3 lindgen taille 3 ELSE index3 long index3 nz n_elements index3 ENDIF IF n_params GE 3 THEN BEGIN if size index2 type EQ 7 then index2 lindgen taille 2 ELSE index2 long index2 ny n_elements index2 ENDIF IF n_params GE 2 THEN BEGIN if size index1 type EQ 7 then index1 lindgen taille 1 ELSE index1 long index1 nx n_elements index1 ENDIF construction of an array of indexes and of results following the size of array case taille 0 of 1:res array index1 2:BEGIN index index1 replicate 1 ny taille 1 replicate 1 nx index2 res array index END 3:BEGIN index index1 replicate 1 ny taille 1 replicate 1 nx index2 index temporary index replicate 1 nz taille 1 taille 2 replicate 1 nx ny index3 res array reform index nx ny nz over END 4:BEGIN index index1 replicate 1 ny taille 1 replicate 1 nx index2 index temporary index replicate 1 nz taille 1 taille 2 replicate 1 nx ny index3 index temporary index replicate 1 nt taille 1 taille 2 taille 3 replicate 1 nx ny nz index4 res array reform index nx ny nz nz over END endcase return res end"); 70 a[68] = new Array("./Matrix/inter.html", "inter.pro", "", " file_comments calculate the intersection between 2 matrixes of whole numbers categories calculation of matrixes param a in required arrays of positive integers which need not to be sorted Duplicate elements are ignored as they have noeffect on the result param b in required see a returns tableau restrictions The empty set is denoted by an array with the first element equal to 1 restrictions These functions will not be efficient on sparse sets with wide ranges as they trade memory for efficiency The HISTOGRAM function is used which creates arrays of size equal to the range of the resulting set examples a 2 4 6 8 b 6 1 3 2 inter a b 2 6 Common elements history http: www dfanning com tips set_operations html version Id: inter pro 134 2006 07 07 10:19:08Z navarro FUNCTION inter a b compile_opt idl2 strictarrsubs case 1 of n_elements a EQ 0:return 1 n_elements b EQ 0:return 1 n_elements a EQ 1 AND n_elements b NE 1: if where b EQ a 0 0 EQ 1 then return 1 ELSE return a 0 n_elements b EQ 1 AND n_elements a NE 1: if where a EQ b 0 0 EQ 1 then return 1 ELSE return b 0 n_elements a EQ 1 AND n_elements b EQ 1: if where a 0 EQ b 0 0 EQ 1 then return 1 ELSE return a 0 ELSE: ENDCASE minab Min a Max maxa Min b Max maxb Only need intersection of ranges maxab maxa maxb If either set is empty or their ranges don t intersect: result NULL IF maxab LT minab OR maxab LT 0 THEN RETURN 1 r Where Histogram a Min minab Max maxab Histogram b Min minab Max maxab count IF count EQ 0 THEN RETURN 1 ELSE RETURN r minab END"); 71 a[69] = new Array("./Matrix/make_selection.html", "make_selection.pro", "", " file_comments Convert an array of selected values to an index array that identifies the selected values in a list or data array categories tools param NAMES in required A list or array of values to choose from param SELNAMES in required A list of selected values keyword ONLY_VALID Return only indices of found values Values not found are skipped Default is to return 1 index value for each SELNAME which is 1 if SELNAME is not contained in NAMES If ONLY_VALID is set the 1 values will be deleted and a value of 1 indicates that no SELNAME has been found at all keyword REQUIRED Normally MAKE_SELECTION will return indices for all values that are found simply ignoring the selected values that are not in the NAMES array although an error message is displayed Set this keyword to return with 1 as soon as a selected value is not found keyword QUIET Suppress printing of the error message if a selected value is not found the error condition will still be set returns A long array with indices to reference the selected values in the NAMES array restrictions If the NAMES array contains multiple entries of the same value only the index to the first entry will be returned A selection can contain multiple instances of the same value The index array will contain one entry per selected item See example below examples names Alfred Anton Peter John Mary index MAKE_SELECTION names Peter Mary print index prints 2 4 vals indgen 20 index MAKE_SELECTION vals 9 5 8 7 7 8 9 print index prints 9 1 8 7 7 8 9 index MAKE_SELECTION vals 9 5 8 7 7 8 9 ONLY_VALID print index prints 9 8 7 7 8 9 index MAKE_SELECTION vals 9 5 8 7 7 8 9 REQUIRED print index prints 1 history mgs 28 Aug 1998: VERSION 1 00 mgs 29 Aug 1998: changed behaviour and added ONLY_VALID keyword version Id: make_selection pro 134 2006 07 07 10:19:08Z navarro Copyright C 1998 Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to mgs io harvard edu with subject IDL routine make_selection function make_selection names selnames only_valid only_valid required required quiet quiet compile_opt idl2 strictarrsubs return an index array with a number for each element in selnames that is found in names Set the REQUIRED keyword to return 1 if one element is not found otherwise 1 will only be returned if no element is found reset error state to 0 message reset quiet keyword_set quiet result 1L for i 0 n_elements selnames 1 do begin test where names eq selnames i result result test 0 if test 0 lt 0 then begin if keyword_set ONLY_VALID OR keyword_set REQUIRED then message Selected name not found in names array strtrim selnames i 2 CONT NOPRINT quiet if keyword_set required then return 1L endif endfor if n_elements result gt 1 then result result 1: if keyword_set only_valid then begin ind where result ge 0 if ind 0 ge 0 then result result ind else result 1L endif return result end"); 72 a[70] = new Array("./Matrix/union.html", "union.pro", "", " file_comments calculate tne union between 2 matrixes of whole numbers categories calculation of matrixes param a in required arrays of positive integers which need not be sorted Duplicate elements are ignored as they have no effect on the result param b in required see a returns tableau restrictions The empty set is denoted by an array with the first element equal to 1 restrictions These functions will not be efficient on sparse sets with wide ranges as they trade memory for efficiency The HISTOGRAM function is used which creates arrays of size equal to the range of the resulting set examples a 2 4 6 8 b 6 1 3 2 union a b 1 2 3 4 6 8 Elements in either set history http: www dfanning com tips set_operations html version Id: union pro 134 2006 07 07 10:19:08Z navarro FUNCTION union a b compile_opt idl2 strictarrsubs IF a 0 LT 0 THEN RETURN b A union NULL a IF b 0 LT 0 THEN RETURN a B union NULL b RETURN Where Histogram a b OMin omin omin Return combined set END"); 73 a[71] = new Array("./Matrix/zero_one.html", "zero_one.pro", "", " file_comments Send back a vector or a matrix constituate of 0 and 1 in alternation categories function matrixes param n1 in required number of elements in the first dimension param n2 in required numbre of elements in the second dimension returns resultat history Sebastien Masson smasson lodyc jussieu fr 1 12 98 version Id: zero_one pro 134 2006 07 07 10:19:08Z navarro function zero_one n1 n2 compile_opt idl2 strictarrsubs CASE N_PARAMS OF 1:return findgen n1 mod 2 2:BEGIN if fix n1 2 EQ n1 2 then BEGIN even number of columns res findgen n1 1 n2 mod 2 return res 0:n1 1 ENDIF ELSE return findgen n1 n2 mod 2 odd number of columns END else: return report bad number of arguments endcase end"); 74 a[72] = new Array("./Obsolete/common.html", "common.pro", "", ""); 75 a[73] = new Array("./Obsolete/congridseb.html", "congridseb.pro", "", " file_comments Used to avoid a bug in congrid in a old version of IDL Useless now old example: based on a old version of IDL 5 IDL print congrid 1 2 3 4 5 6 7 8 12 4 1 1 1 2 2 2 3 3 3 3 4 4 1 1 1 2 2 2 3 3 3 3 4 4 5 5 5 6 6 6 7 7 7 7 8 8 5 5 5 6 6 6 7 7 7 7 8 8 IDL print rebin 1 2 3 4 5 6 7 8 12 4 1 1 1 2 2 2 3 3 3 4 4 4 3 3 3 4 4 4 5 5 5 6 6 6 5 5 5 6 6 6 7 7 7 8 8 8 5 5 5 6 6 6 7 7 7 8 8 8 IDL print congridseb 1 2 3 4 5 6 7 8 12 4 1 1 1 2 2 2 3 3 3 4 4 4 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 6 6 6 7 7 7 8 8 8 5 5 5 6 6 6 7 7 7 8 8 8 obsolete param arr in required 1 or 2d array param x in required first dimension of the result which must be a multiple of the first dimension of the input array param y in required second dimension of the result which must be a multiple of the second dimension of the input array returns an array which dimensions are x y history Sebastien Masson smasson lodyc jussieu fr 20 3 98 18 6 1999 supression d une horrible boucle version Id: congridseb pro 152 2006 08 10 07:01:35Z smasson function congridseb tableau x y compile_opt idl2 strictarrsubs CASE N_PARAMS OF 2: return congrid tableau x 3:return congrid tableau x y else: return report Bad number or arguments in the call of congridseb endcase end"); 76 76 a[74] = new Array("./Obsolete/cp.html", "cp.pro", "", " file_comments copy files file_copy should be used instead obsolete param filenamein in required param filenameout in required keyword _EXTRA used to pass your keywords history June 2005: Sebastien Masson obsolete routine version Id: cp pro 134 2006 07 07 10:19:08Z navarro PRO cp filenamein filenameout _extra ex compile_opt idl2 strictarrsubs obsolete file_copy filenamein filenameout _extra ex RETURN END"); 77 77 a[75] = new Array("./Obsolete/extrait.html", "extrait.pro", "", " file_comments extraction of subdomains of matrixes Even if the subdomain is pierced see the example By default IDL can make extractions of subdomain: IDL a indgen 5 5 IDL print a 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 IDL print a 0 2 3 15 17 IDL print a 0 2 0 2 5 7 10 12 15 17 20 22 but IDL print a 0 2 3 4 15 22 while IDL print extrait a 0 2 3 4 15 17 20 22 you better use extrac2 obsolete categories utilities param tab in required a 1 2 3 or 4 dim table param indicex in required can have 2 forms: 1 a vector containing indexes of lines we want to keep 2 the string if we want to keep all lines param indicey in required the same thing that indicex but for dim 2 param indicez in required the same thing that indicex but for dim 3 param indicet in required the same thing that indicex but for dim 4 returns a matrix 1 2 3 or 4d extract from tab restrictions res 1 in case of mistake examples I have a dim 2 matrix named A I want extract a small intersection matrix 2d of the line 2 3 and 7 and of the column 0 and 1: IDL res extrait A 2 3 7 0 1 other ex: IDL print a a b c d e f g h i IDL print extrait a 0 2 0 2 a c g i history Sebastien Masson smasson lodyc jussieu fr 12 1 1999 29 4 1999: correction of a bug and complement of the heading version Id: extrait pro 136 2006 07 10 15:20:19Z pinsard FUNCTION extrait tab indicex indicey indicez indicet compile_opt idl2 strictarrsubs case n_params of 0:return extrac2 1:return extrac2 tab 2:return extrac2 tab indicex 3:return extrac2 tab indicex indicey 4:return extrac2 tab indicex indicey indicez 5:return extrac2 tab indicex indicey indicez indicet endcase end"); … … 248 248 a[246] = new Array("./ToBeReviewed/MATRICE/colle.html", "colle.pro", "", " file_comments This concatenation function exist in IDL so long as we do not try to stick with a dimension superior or equal at 4 categories utilities param a0 in required param a1 in required param a2 in required param a3 in required param a4 in required param a5 in required param a6 in required param a7 in required param a8 in required param a9 in required param a10 in required param a11 in required param a12 in required param a13 in required param a14 in required param a15 in required param a16 in required param a17 in required param a18 in required param a19 in required param a20 in required keyword SAUVE mot cle qui force a sauvegarder le tableau de pointeur et les tableaux a coller returns res matrice resultat examples IDL print colle replicate 1 2 2 2 indgen 2 2 2 2 1 1 1 1 0 1 2 3 1 1 1 1 4 5 6 7 history Sebastien Masson smasson lodyc jussieu fr 13 1 98 version Id: colle pro 142 2006 07 21 12:47:49Z navarro FUNCTION colle a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 SAUVE sauve compile_opt idl2 strictarrsubs res 1 We put in place ptrtab and direc in function of input arguments case 1 of n_params EQ 2:BEGIN case where we directly give the pointer array ptrtab a0 direc a1 if NOT keyword_set sauve then undefine a0 on recuperate the number of array to be pasted nbretab size ptrtab 1 end n_params GT 2:BEGIN on recuperate the number of array to be pasted nbretab n_params 1 bidon execute direc a strtrim n_params 1 2 We write the pointer array whose each element point on an array ptrtab ptrarr nbretab allocate_heap for n 0 nbretab 1 do begin bidon execute ptrtab n a strtrim n 2 if NOT keyword_set sauve then bidon execute undefine a strtrim n 2 endfor sauve 0 end ELSE: endcase case on the direct s value case direc of 1:BEGIN we paste following the dimension 1 res ptrtab 0 if NOT keyword_set sauve then ptr_free ptrtab 0 FOR n 1 nbretab 1 DO BEGIN res temporary res ptrtab n if NOT keyword_set sauve then ptr_free ptrtab n ENDFOR END 2:BEGIN we paste following the dimension 2 res ptrtab 0 if NOT keyword_set sauve then ptr_free ptrtab 0 FOR n 1 nbretab 1 DO BEGIN res temporary res ptrtab n if NOT keyword_set sauve then ptr_free ptrtab n ENDFOR END 3:BEGIN we paste following the dimension 3 res ptrtab 0 if NOT keyword_set sauve then ptr_free ptrtab 0 FOR n 1 nbretab 1 DO BEGIN res temporary res ptrtab n if NOT keyword_set sauve then ptr_free ptrtab n ENDFOR END ELSE:BEGIN We transpose res in order to put the dimension to be pasted number 1 To this we contain the permuter vector which give the place that dimension in the transposed matrix must take siz size ptrtab 0 0 if siz LT direc then ptrtab 0 reform ptrtab 0 size ptrtab 0 1:siz replicate 1 direc siz over permute indgen size ptrtab 0 0 permute 0 direc 1 permute direc 1 0 res transpose ptrtab 0 permute if NOT keyword_set sauve then ptr_free ptrtab 0 FOR n 1 nbretab 1 DO BEGIN we paste following the dimension 1on colle suivant la dimension 1 if size ptrtab n 0 LT direc then ptrtab n reform ptrtab n size ptrtab n 1:siz replicate 1 direc siz res temporary res transpose ptrtab n permute if NOT keyword_set sauve then ptr_free ptrtab n ENDFOR res transpose temporary res permute END ENDCASE if NOT keyword_set sauve then undefine ptrtab sortie: return res END "); 249 249 a[247] = new Array("./ToBeReviewed/PLOTS/DESSINE/bar_plot.html", "bar_plot.pro", "", " file_comments Create a bar graph or overplot on an existing one categories Graphics param Values in required A vector containing the values to be represented by the bars Each element in VALUES corresponds to a single bar in the output keyword BASELINES A vector the same size as VALUES that contains the base value associated with each bar If not specified a base value of zero is used for all bars keyword COLORS A vector the same size as VALUES containing the color index to be used for each bar If not specified the colors are selected based on spacing the color indices as widely as possible within the available colors specified by D N_COLORS keyword BARNAMES A string array containing one string label per bar If the bars are vertical the labels are placed beneath them If horizontal rotated bars are specified the labels are placed to the left of the bars keyword TITLE A string containing the main title to for the bar plot keyword XTITLE A string containing the title for the X axis keyword YTITLE A string containing the title for the Y axis keyword BASERANGE A floating point scalar in the range 0 0 to 1 0 that determines the fraction of the total available plotting area in the direction perpendicular to the bars to be used If not specified the full available area is used keyword BARWIDTH A floating point value that specifies the width of the bars in units of nominal bar width The nominal bar width is computed so that all the bars and the space between them set by default to 20 of the width of the bars will fill the available space optionally controlled with the BASERANGE keyword keyword BARSPACE A scalar that specifies in units of nominal bar width the spacing between bars For example if BARSPACE is 1 0 then all bars will have one bar width of space between them If not specified the bars are spaced apart by 20 of the bar width keyword BAROFFSET A scalar that specifies the offset to be applied to the first bar in units of nominal bar width This keyword allows for example different groups of bars to be overplotted on the same graph If not specified the default offset is equal to BARSPACE keyword OUTLINE If set this keyword specifies that an outline should be drawn around each bar keyword OVERPLOT If set this keyword specifies that the bar plot should be overplotted on an existing graph keyword BACKGROUND A scalar that specifies the color index to be used for the background color By default the normal IDL background color is used keyword ROTATE If set this keyword indicates that horizontal rather than vertical bars should be drawn The bases of horizontal bars are on the left Y axis and the bars extend to the right examples By using the overplotting capability it is relatively easy to create stacked bar charts or different groups of bars on the same graph For example if ARRAY is a two dimensional array of 5 columns and 8 rows it is natural to make a plot with 5 bars each of which is a stacked composite of 8 sections First create a 2D COLORS array equal in size to ARRAY that has identical color index values across each row to ensure that the same item is represented by the same color in all bars With ARRAYS and COLORS defined the following code fragment illustrates the creation of stacked bars note that the number of rows and columns is arbitrary : Y RANGE 0 ymax Scale range to accommodate the total bar lengths BASE INTARR NROWS FOR I 0 NROWS 1 DO BEGIN BAR_PLOT ARRAY I COLORS COLORS I BASELINES BASE BARWIDTH 0 75 BARSPACE 0 25 OVER I GT 0 BASE BASE ARRAY I ENDFOR To plot each row of ARRAY as a clustered group of bars within the same graph use the BASERANGE keyword to restrict the available plotting region for each set of bars The sample code fragment below illustrates this method: FOR I 0 NROWS 1 DO BAR_PLOT ARRAY I COLORS COLORVECT BARWIDTH 0 8 BARSPACE 0 2 BAROFFSET I 1 0 BARSPACE NCOLS OVER I GT 0 BASERANGE 0 19 where NCOLS is the number of columns in ARRAY and COLORVECT is a vector containing the color indices to be used for each group of bars In this example each group uses the same set of colors but this could easily be changed history August 1990 T J Armitage RSI initial programming Replacement for PLOTBAR and OPLOTBAR routines written by William Thompson September 1990 Steve Richards RSI changed defaults to improve the appearance of the bar plots in the default mode Included spacing the bars slightly Id: bar_plot pro 142 2006 07 21 12:47:49Z navarro pro bar_plot values baselines baselines colors colors barnames barnames title title xtitle xtitle ytitle ytitle baserange baserange barwidth barwidth barspace barspace baroffset baroffset outline outline overplot overplot background background rotate rotate _EXTRA ex compile_opt idl2 strictarrsubs if n_params d eq 0 then begin Print call return if no parameters print bar_test values baselines baselines colors colors barnames barnames print title title xtitle xtitle ytitle ytitle baserange baserange print barwidth barwidth barspace barspace baroffset baroffset print outline outline overplot overplot background background print rotate rotate return endif nbars n_elements values Determine number of bars Baselines bars extend from baselines through values default 0 if not keyword_set baselines then baselines intarr nbars Default colors spaced evenly in current color table if not keyword_set colors then colors fix d n_colors float nbars indgen nbars 0 5 Labels for the individual bars none by default if not keyword_set barnames then barnames strarr nbars Main title if not keyword_set title then title Centered title under X axis if not keyword_set xtitle then xtitle Title for Y axis if not keyword_set ytitle then ytitle Fraction 0 1 of full X range to use if not keyword_set baserange then baserange 1 0 Space betw bars taken from nominal bar widths default is none If not keyword_set barspace then barspace 0 2 Bar width scaling factor relative to nominal if not keyword_set barwidth then barwidth 1 0 barspace barspace nbars Initial X offset in scaled bar widths default is none if not keyword_set baroffset then baroffset barspace barwidth Outline of bars default is none outline keyword_set outline Overplot do not erase the existing display default is to create new plot overplot keyword_set overplot Background color index defaults to 0 usually black if not specified if not keyword_set background then background 0 Rotate make horizontal bars default is vertical bars rotate keyword_set rotate mnB MIN baselines MAX mxB NAN mnV MIN values MAX mxV NAN range mnB mxV Maximum of bases values if rotate then begin Horizontal bars if x range 0 eq 0 and x range 1 eq 0 Determine range for X axis then xrange range else xrange x range Or use range specified if y range 0 eq 0 and y range 1 eq 0 Plot will calculate then defaults for X but not yrange 0 n_elements values for Ys so fill in here else yrange y range Axis perpend to bars yticks 1 Suppress ticks in plot ytickname strarr 2 xticks 0 xtickname strarr 1 endif else begin Vertical bars if y range 0 eq 0 and y range 1 eq 0 Determine range for Y axis then yrange range else yrange y range Or use range specified xrange x range Axis perpend to bars xticks 1 Suppress ticks in plot xtickname strarr 2 yticks 0 ytickname strarr 1 endelse if overplot eq 0 then Create new plot no data plot values nodata title title xtitle xtitle ytitle ytitle noerase overplot xrange xrange yrange yrange xticks xticks xtickname xtickname yticks yticks ytickname ytickname xstyle 1 ystyle 1 data background background _EXTRA ex if rotate then begin Horizontal bars base_win y window Window range in Y scal_fact x s Scaling factors tick_scal_fact y s Tick scaling factors endif else begin Vertical bars base_win x window Window range in X scal_fact y s Scaling factors tick_scal_fact x s Tick scaling factors endelse winrange baserange base_win 1 base_win 0 Normal window range barsize barwidth winrange nbars Normal bar width winoffset base_win 0 baroffset barsize Normal first offset bases scal_fact 0 scal_fact 1 baselines Baselines in normal coor normal scal_fact 0 scal_fact 1 values Values in normal coor barstart indgen nbars barsize barspace winrange nbars Coor at left edges tickv winoffset barstart 0 5 barsize Tick coor centered for i 0 nbars 1 do begin Draw the bars width winoffset barstart i barstart i Compute bar width barstart i barsize barstart i barsize length bases i normal i normal i bases i Compute bar length if rotate then begin Horizontal bars x length X axis is length axis y width Y axis is width axis endif else begin Vertical bars x width X axis is width axis y length Y axis is length axis endelse polyfill x y color colors i normal Polyfill with color if outline then plots x y normal Outline using p color endfor tickv tickv tick_scal_fact 0 tick_scal_fact 1 Locations of the ticks if rotate then Label the bars Y axis axis yaxis 0 ystyle 1 yticks nbars 1 ytickv tickv ytickname barnames yticklen 0 0 else Label the bars X axis axis xaxis 0 xstyle 1 xticks nbars 1 xtickv tickv xtickname barnames xticklen 0 0 return end"); 250 a[248] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt.html", "plt.pro", "", " file_comments Draw horizontal graph map categories graphic param TAB1 in required The field whose we want to make the horizontal map can be 2 kind of thing: 1 an array if needed its mean along the z and t direction will be automatically performed 2 a structure respecting all criterions specified by litchamp pro cf IDL xhelp litchamp param PARAM2 in optional default min of tab1 on ocean points Min value we want to consider in the contour s drawing Note: Could also be the type of plot that can be only xy for plt param PARAM3 in optional default max of tab1 on ocean points Max value we want to consider in the contour s drawing Note: if param2 is defined as xy then param3 is used to define the min see param2 param PARAM4 in optional default xy Type of plot can be only xy for plt Note: if param2 is defined as xy then param4 is used to define the max see param3 keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword REALCONT Allow to draw continents defined in IDL REALCONT can have 2 form: REALCONT: we draww continents in place of the mask REALCONT 2 we draw cnotinents s contour over the mask this allows to see if the mask correspond at real continents keyword CONTINTERVALLE When CONTOUR is activated it is the value between 2 isolines traced by a trait So it can be different from the one specified by INTERVALLE which in this case does not control colored isolines in color anymore If there is noone specified min we choose a contour min which goes well with the specified interval If this keyword is not specified we trace 20 isolines from the min to the max keyword CONTLABEL It is an integer n When CONTOUR is actvated if n is different of 0 choose the label type corresponding to n cases for the traced by a traitisolines To specify the type of label of the colored contour use LABEL keyword CONTMAX When CONTOUR is activated max value we want to consider in the isoline traced by a trait s line By default we take the max on ocean points of the array passed in the keyword CONTOUR keyword CONTMIN When CONTOUR is activated min value we want to consider in the isoline traced by a trait s line By default we take the min on ocean points of the array passed in the keyword CONTOUR keyword CONTNLEVEL When CONTOUR is activated it is the numbre of contours traced by a trait for drawing active if CONTLABEL 0 by default 20 keyword CONTOUR If we want to trace contours of a different field than the one whose we have the colored drawing by examlpe E P in color and QSR in contours It must be a field respecting same caracteristics than the argument number one of plt keyword GRIDTYPE U T V W or F to specify possibly the grid on wiche the field is joined Comment: In this case we should use a structure like field keyword INTERVALLE Value of an internal between to isoline If there is none specified min we choose a min contour which goes well with the specified interval If this keyword is not specified we trace 20 isoline from the min to the max Comment: When CONTOUR is activated INTERVALLE only specify the interval between 2 colored isoline To specify the interval between 2 isolines traced by a trait use CONTINTERVALLE keyword INV Invert the color vector used to color the graph without use the black the white and the used palette keyword LABEL It is an integer n If n different of 0 it choose the label s type corresponding to cases n cf label pro Comment: When CONTOUR is activated it only specify the label s type for colored isolines For tese one traced by a trait use CONTLABEL keyword MAP We use it when we want to do a projection This keyword can be of two types: MAP P0lat P0lon Rot For the descrption of these 3 values see the online help of MAP_SET MAP: In this case map is automatically caculated have the value: map 0 lon1 lon2 2 0 Comment: A good way to choose the type of the projection we want to do is to have a look at IDL demo: IDL demo Then choose earth sciences and mapping Comment2: By default it is a cindrical projection which is effectuated with or without the keyword map If we want an other projection MAP must be activated and we have to add the keyword: nom_projection For example for a polar projection centered on the south pole: IDL domdef 180 180 90 45 IDL plt tab stereo map 90 0 0 keyword LABMAP Corresponds to label keywords of map_set Defaut definition is labmap 1 keyword MAXIN Allows to specify the max value we want to consider in the drawing of contour helping by the keyword instead of the argument max If the argument and the keyword are specified in the same time it is the value specified by the keyword which is retained keyword MININ Allows to specify the min value we want to consider in the drawing of contour helping by the keyword instead of the argument min If the argument and the keyword are specified in the same time it is the value specified by the keyword which is retained keyword NLEVEL Number of contour to draw by default 20 active if LABEL 0 or is not specified keyword NOTRI To force not to use the triangulation Beware in this case the drawing only works if the grid is undeformed It means that each point of a longitude give one latitude and each point of a latitude give one longitude exept if we use the keyword CELL_FILL 2 Comment: if the field contain points values f_nan then we even do a triangulation keyword OVERPLOT To make a plot over an other one Comment: Contrarily to the use of CONTOUR or VECTEUR the use of this keyword does not the caption and or the color bar keyword STRICTFILL Activate this keyword to that the filling of contours be precisely done between the min and the max specified letting values inferior at the specified min and values superior at the specified max in white keyword STYLE Contour s style to adopt to draw isolines by default style 0 see style pro keyword VECTEUR It is a structure composed by 2 elements containing the 2 fields U and V of values of the zonal and meridian component of the vector of the fields to draw These fields can be an array or a structure For example: vecteur matriceu:lec unsurface matricev:lec vnsurface Comment: name of elements of vectors are inconsenquential vecteur u:lec unsurface v:lec vnsurface is also appropriated keyword _EXTRA used to pass your keywords keyword CONT_NOFILL Activate it not to fill the point mask to let them transparent Comment: Nevertheless we trace mask s contour keyword USETRI To force using triangulation keyword MASKFILL keyword DUPLICATE keyword DECIMATETRI uses common pro history Sebastien Masson smasson lodyc jussieu fr 7 1999 Sebastien Masson 08 02 2000 checkfield and notri keyword or triangule 1 version Id: plt pro 142 2006 07 21 12:47:49Z navarrotodo seb Changer param tab1 keyword REMPLI UNLABSUR UNSUR2 UNVECTSUR quelques trucs dans la routine pro plt tab1 param2 param3 param4 REALCONT realcont CONTOUR contour INTERVALLE intervalle INV inv GRIDTYPE gridtype BOXZOOM boxzoom CONTINTERVALLE contintervalle LABEL label CONTLABEL contlabel STYLE style CONTMAX contmax CONTMIN contmin NLEVEL nlevel CONTNLEVEL contnlevel VECTEUR vecteur MAP map MININ minin MAXIN maxin CONT_NOFILL cont_nofill USETRI usetri NOTRI notri MASKFILL maskfill DUPLICATE duplicate STRICTFILL strictfill OVERPLOT overplot DECIMATETRI decimatetri LABMAP labmap _extra ex include common compile_opt idl2 strictarrsubs cm_4mesh cm_4data IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 To key_performance I preparation of the graphic environment and small verifications I1 verification of the grid s type associated to tab1 if keyword_set gridtype then vargrid gridtype if keyword_set vecteur AND NOT keyword_set gridtype then BEGIN vargrid litchamp tab1 grid if vargrid eq then BEGIN vargrid xquestion What is the grid associated to the data to contour T chkwidget vargrid strupcase vargrid endif ENDIF I2 Reading of the field and checkup if keyword_set boxzoom AND n_elements contour ne 4 then BEGIN savedbox 1b saveboxparam boxparam4plt dat END if n_elements param2 NE 0 then type param2 if n_elements param3 NE 0 then min param3 if n_elements param4 NE 0 then max param4 if n_elements minin NE 0 then min minin if n_elements maxin NE 0 then max maxin checktypeminmax plt TYPE type MIN min MAX max _extra ex z2d checkfield tab1 plt TYPE type BOXZOOM boxzoom DIREC direc VECTEUR vecteur _extra ex if z2d 0 EQ 1 then BEGIN IF keyword_set savedbox THEN restoreboxparam boxparam4plt dat return ENDIF IF n_elements usetri EQ 0 THEN BEGIN do we have holes in the triangulation holeintri n_elements triangles_list 3 LT jpi 1 keyword_set key_periodic jpj 1 2 the triangulation must be used to draw the field do we have a triangulation wehavetri triangles_list 0 NE 1 the triangulation must be used to draw the continents if we make a map are we periodic and nx jpi CASE strupcase vargrid OF T :nx nxt W :nx nxt U :nx nxu V :nx nxv F :nx nxf ENDCASE mapperio keyword_set map keyword_set key_periodic nx eq jpi usetri wehavetri wehavetri holeintri mapperio keyword_set key_irregular 2 notri ENDIF I3 reinitialization p x y Comment: We do not reinitializate when we call bck plt in loop to use contour if n_elements contour ne 4 AND NOT keyword_set overplot then reinitplt z invert I4 attribution of the mask and of longitude and latitude arrays IF strupcase vargrid EQ W THEN profond firstzw NE 0 ELSE profond firstzt NE 0 do we need to extract now the triangulation that will be use for contouring the field if keyword_set profond OR usetri EQ 0 AND vargrid EQ T OR vargrid EQ W OR usetri NE 2 AND vargrid NE T AND vargrid NE W THEN BEGIN grille mask glam gphi gdep nx ny nz firstx firsty firstz lastx lasty lastz forplt _extra ex ENDIF ELSE BEGIN grille mask glam gphi gdep nx ny nz firstx firsty firstz lastx lasty lastz TRI trifield forplt _extra ex ENDELSE I5 determination of the mi:min and of the ma:max of z2d in the same way as max: max and min: min for the drawing masknan finite z2d nan total masknan NE n_elements z2d Do we need to do an autoscale autoscale testvar var min EQ testvar var max AND NOT keyword_set intervalle determineminmax z2d mask mi ma glam gphi MININ min MAXIN max nan nan INTERVALLE intervalle usetri usetri _extra ex if z2d 0 EQ 1 THEN GOTO sortie We do an autoscale if needed if autoscale then autoscale min max intervalle II We put the drawing in its place on the window or the page and possible opening of the window or of the page if n_elements contour NE 4 AND NOT keyword_set overplot THEN placedessin plt posfenetre posbar CONTOUR contour VECTEUR vecteur MAP map DIREC direc _extra ex III Covering of the drawing labels style axis III1 Choice of labels if keyword_set intervalle AND NOT keyword_set label then label 1 if keyword_set label eq 0 then cas 0 else cas label label cas min max ncontour level_z2d colnumb NLEVEL nlevel INTERVALLE intervalle strictfill strictfill III2 Choice of style if not keyword_set style then style 0 style style level_z2d linestyle thick if keyword_set inv then colnumb reverse colnumb III3 Definition of axis if NOT keyword_set overplot THEN axe xy _EXTRA ex IV Drawing extrapolation of field on lands and setup of min max values if keyword_set nan then begin z2d where masknan EQ 0 max ENDIF ELSE masknan 1 filling the mask values we fill only masknan or we fill mask masknan IF keyword_set nan AND keyword_set cont_nofill THEN z2d remplit z2d nite 1 vargrid NE T AND vargrid NE W mask masknan _extra ex ELSE z2d remplit z2d nite 1 vargrid NE T AND vargrid NE W keyword_set nan 1 keyword_set cont_nofill 1 n_elements maskfill NE 0 mask mask masknan _extra ex IF keyword_set strictfill EQ 0 AND n_elements maskfill EQ 0 then z2d min z2d max if n_elements maskfill NE 0 then BEGIN z2d temporary z2d mask masknan if maskfill NE 0 then z2d temporary z2d maskfill 1 mask masknan ENDIF check the mask and the triangulation according to the grid type and nan values If we make a drawing in depth we redifine a triangulation on the zoom this triangulation will be used to trace the field We use tmask in order to holes of this triangulation are the same than these used for the mask and correspond to holes there is in this new depth if keyword_set profond OR keyword_set cont_nofill AND usetri GE 1 AND vargrid EQ T OR vargrid EQ W OR usetri EQ 2 AND vargrid NE T AND vargrid NE W then BEGIN trifield triangule tmask firstx:lastx firsty:lasty firstz coinmonte coinmontemask coindescend coindescendmask keep_cont cont_nofill _extra ex indicezoommask lindgen jpi jpj firstx:lastx firsty:lasty ENDIF triangulation for nan mask if keyword_set nan then BEGIN trinan triangule masknan keep_cont coinmonte coinmontenan coindescend coindescendnan indicezoomnan lindgen jpi jpj firstx:lastx firsty:lasty ENDIF IF n_elements twin_corners_up EQ 0 THEN coinmontemask 1 ELSE coinmontemask twin_corners_up IF n_elements twin_corners_dn EQ 0 THEN coindescendmask 1 ELSE coindescendmask twin_corners_dn if vargrid EQ T OR vargrid EQ W then BEGIN glammsk glam gphimsk gphi ENDIF ELSE begin decoupe terre: For the drawing of the coast be clean we try to take additionally points for the land Like that we do not see grid s gap It is what decoupeterre do We profit of it to redefine trimsk decoupeterre mask glammsk gphimsk type xy TRI trimsk usetri usetri indicezoom indicezoommask coinmonte coinmontemask coindescend coindescendmask _EXTRA ex ENDELSE IV1 Choice of type of drawing typetrace classique if keyword_set map AND key_onearth then BEGIN Call of mapset when we want to do projections IF n_elements map NE 3 THEN map 0 lon1 lon2 2 MOD 360 0 typetrace projection map_lat map 0 map_lon map 1 map_rot map 2 if chkstru ex TITLE then begin maptitre ex title ex title endif map_set map_lat map_lon map_rot _extra ex position posfenetre iso limit lat1 lon1 lat2 lon2 noborder if n_elements maptitre ne 0 then ex title maptitre if n_elements trifield GE 2 then trifield ciseauxtri trifield glam gphi _EXTRA ex if n_elements trimsk GE 2 then trimsk ciseauxtri trimsk glammsk gphimsk _EXTRA ex if n_elements trinan GE 2 then BEGIN trinan ciseauxtri trinan glam gphi _EXTRA ex if trinan 0 EQ 1 then undefine trinan endif ENDIF ELSE BEGIN To axes of coordinates be considerated if x type EQ 0 AND n_elements contour LE 4 then plot 0 0 nodata xstyle 5 ystyle 5 title subtitle noerase if keyword_set key_periodic then BEGIN In this case triangulation is closed in x and cover all the sphere We have to cut it at the level where we cut the sphere to make the drawing if n_elements trifield GE 2 then trifield ciseauxtri trifield glam gphi _EXTRA ex if n_elements trimsk GE 2 then trimsk ciseauxtri trimsk glammsk gphimsk _EXTRA ex if n_elements trinan GE 2 then trinan ciseauxtri trinan glam gphi _EXTRA ex ENDIF endelse IV2 Contours and coloring if keyword_set duplicate then BEGIN pour marina uniquement ATTENTION C EST TRES MAL CODE lon glam 0 decalage max lon min lon lon shift lon 1 n_elements lon 1 x range 1 x range 1 duplicate 1 decalage for i 1 duplicate 1 do BEGIN z2d z2d z2d gphi gphi gphi mask mask mask gphimsk gphimsk gphimsk glam glam glam i decalage glammsk glammsk glammsk ENDFOR endif save glam gphi trifield file tri dat if keyword_set decimatetri then BEGIN tempsdeux systime 1 To key_performance IF n_elements trimsk EQ 0 THEN trimsk trifield Verts transpose temporary glam temporary gphi temporary z2d Conn replicate 3 1 n_elements trifield 3 trifield Result mesh_decimate temporary verts temporary Conn Connout vertices Vertsout percent_vertices decimatetri connout reform connout 4 n_elements connout 4 over trifield temporary connout 1:3 glam reform Vertsout 0 gphi reform Vertsout 1 z2d reform Vertsout 2 undefine Vertsout print temps decimatetri systime 1 tempsdeux ENDIF pltbase z2d glam gphi mask glammsk gphimsk trichamp trifield trimsk trimsk forplt level_z2d colnumb contour contour usetri usetri realcont realcont overplot keyword_set overplot keyword_set map c_linestyle linestyle c_labels 1 indgen n_elements level_z2d MOD 2 c_thick thick cont_nofill cont_nofill nan nan coinmontemask coinmontemask coindescendmask coindescendmask coinmontenan coinmontenan coindescendnan coindescendnan indicezoommask indicezoommask indicezoomnan indicezoomnan masknan masknan trinan trinan _extra ex IV3 Recall of plt in loop when contour is activated if n_elements contour eq 4 then BEGIN c est la 2eme fois que je passe ds pltt contour mietma: mi ma unit:varunit inter:intervalle je renvoie le min le max et l unite return endif if keyword_set contour THEN BEGIN pourlegende 1 1 1 1 oldattributs saveatt oldcolnumb colnumb plt contour contmin contmax CONTOUR pourlegende NOERASE USETRI usetri INTERVALLE contintervalle LABEL contlabel STYLE style NLEVEL contnlevel DUPLICATE duplicate STRICTFILL strictfill MASKFILL maskfill _extra ex restoreatt oldattributs colnumb oldcolnumb ENDIF V Small functions V1 Possible add of vectors in double exposure if keyword_set vecteur then BEGIN oldattributs saveatt ajoutvect vecteur vectlegende _extra ex restoreatt oldattributs ENDIF if keyword_set overplot then GOTO fini V2 Trace the line of change of date the equator and the greenwich meridian if NOT keyword_set map AND key_onearth then meridienparallele xy V3 To trace IDL s continents if keyword_set realcont then BEGIN si noease est passe de _extra on s assure qu il est a 1 if chkstru ex NOERASE then begin oldnoerase ex noerase ex noerase 1 ENDIF if chkstru ex coast_thick then mlinethick ex coast_thick ELSE mlinethick 1 if chkstru ex coast_color then mcolor ex coast_color ELSE mcolor 0 IF NOT keyword_set map THEN map_set 0 lon1 lon2 2 MOD 360 0 position posfenetre limit lat1 lon1 lat2 lon2 NOERASE noborder color 0 _extra ex if realcont NE 2 AND NOT keyword_set cont_nofill then BEGIN if chkstru ex cont_color then cntcol ex coast_color ELSE cntcol d n_colors 1 255 map_continents fill_continents color cntcol _extra ex noerase ENDIF map_continents continents color mcolor MLINETHICK mlinethick noerase _extra ex if chkstru ex NOERASE THEN ex noerase oldnoerase ENDIF V4 caption display of these legende mi ma xy CONTOUR pourlegende VECTLEGENDE vectlegende INTERVALLE intervalle DIREC direc _EXTRA ex if n_elements ex NE 0 then BEGIN To keep frame s axes in black if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR coast_color endif case typetrace of classique : plot 0 0 nodata noerase color 0 xstyle 1 ystyle 1 _extra ex projection : BEGIN if chkstru ex NOERASE then begin oldnoerase ex noerase ex noerase 1 endif if chkstru ex SUBTITLE then p subtitle ex SUBTITLE if n_elements maptitre ne 0 then ex title maptitre map_set map_lat map_lon map_rot _extra ex iso limit lat1 lon1 lat2 lon2 NOERASE noborder title p title color 0 map_proj_info numproj current map_proj_info numproj name nomproj if nomproj EQ Mercator OR nomproj EQ Cylindrical OR nomproj EQ LambertConic OR nomproj EQ Gnomic OR nomproj EQ AlbersEqualAreaConic OR nomproj EQ TransverseMercator OR nomproj EQ MillerCylindrical OR nomproj EQ LambertConicEllipsoid then map_grid box_axes 1 latdel 10 londel 10 ELSE map_grid charsize 0 75 label latalign 1 lonalign 1 latdel 10 londel 30 IF n_elements labmap EQ 0 THEN labmap 1 map_grid charsize 0 75 label labmap latalign 1 lonalign 1 latdel 10 londel 30 color 0 _extra ex if chkstru ex NOERASE THEN ex noerase oldnoerase end endcase V5 Colorbar colnumb colnumb 0:ncontour 1 keyword_set strictfill barrecouleur colnumb min max ncontour keyword_set strictfill 2 position posbar _extra ex VI Possible print fini: terminedessin _extra ex sortie: if keyword_set savedbox THEN restoreboxparam boxparam4plt dat if keyword_set key_performance NE 0 THEN print temps plt systime 1 tempsun return end ");250 a[248] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt.html", "plt.pro", "", " file_comments Draw horizontal graph map with CONTOUR procedure categories graphic param TAB1 in required The field whose we want to make the horizontal map can be: 1 an array if needed its mean along the z and t direction will be automatically performed 2 a structure respecting all criterions specified by litchamp pro cf IDL xhelp litchamp param PARAM2 in optional default min of tab1 on ocean points Min value we want to consider in the contour s drawing Note: Could also be the type of plot that can be only xy for plt param PARAM3 in optional default max of tab1 on ocean points Max value we want to consider in the contour s drawing Note: if param2 is defined as xy then param3 is used to define the min see param2 param PARAM4 in optional default xy Type of plot can be only xy for plt Note: if param2 is defined as xy then param4 is used to define the max see param3 keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword REALCONT Allow to draw continents defined in IDL REALCONT can have 2 form: REALCONT: we draww continents in place of the mask REALCONT 2 we draw cnotinents s contour over the mask this allows to see if the mask correspond at real continents keyword CONTINTERVALLE When CONTOUR is activated it is the value between 2 isolines traced by a trait So it can be different from the one specified by INTERVALLE which in this case does not control colored isolines in color anymore If there is noone specified min we choose a contour min which goes well with the specified interval If this keyword is not specified we trace 20 isolines from the min to the max keyword CONTLABEL It is an integer n When CONTOUR is actvated if n is different of 0 choose the label type corresponding to n cases for the traced by a traitisolines To specify the type of label of the colored contour use LABEL keyword CONTMAX When CONTOUR is activated max value we want to consider in the isoline traced by a trait s line By default we take the max on ocean points of the array passed in the keyword CONTOUR keyword CONTMIN When CONTOUR is activated min value we want to consider in the isoline traced by a trait s line By default we take the min on ocean points of the array passed in the keyword CONTOUR keyword CONTNLEVEL When CONTOUR is activated it is the numbre of contours traced by a trait for drawing active if CONTLABEL 0 by default 20 keyword CONTOUR If we want to trace contours of a different field than the one whose we have the colored drawing by examlpe E P in color and QSR in contours It must be a field respecting same caracteristics than the argument number one of plt keyword GRIDTYPE U T V W or F to specify possibly the grid on wiche the field is joined Comment: In this case we should use a structure like field keyword INTERVALLE Value of an internal between to isoline If there is none specified min we choose a min contour which goes well with the specified interval If this keyword is not specified we trace 20 isoline from the min to the max Comment: When CONTOUR is activated INTERVALLE only specify the interval between 2 colored isoline To specify the interval between 2 isolines traced by a trait use CONTINTERVALLE keyword INV Invert the color vector used to color the graph without use the black the white and the used palette keyword LABEL It is an integer n If n different of 0 it choose the label s type corresponding to cases n cf label pro Comment: When CONTOUR is activated it only specify the label s type for colored isolines For tese one traced by a trait use CONTLABEL keyword MAP We use it when we want to do a projection This keyword can be of two types: MAP P0lat P0lon Rot For the descrption of these 3 values see the online help of MAP_SET MAP: In this case map is automatically caculated have the value: map 0 lon1 lon2 2 0 Comment: A good way to choose the type of the projection we want to do is to have a look at IDL demo: IDL demo Then choose earth sciences and mapping Comment2: By default it is a cindrical projection which is effectuated with or without the keyword map If we want an other projection MAP must be activated and we have to add the keyword: nom_projection For example for a polar projection centered on the south pole: IDL domdef 180 180 90 45 IDL plt tab stereo map 90 0 0 keyword LABMAP Corresponds to label keywords of map_set Defaut definition is labmap 1 keyword MAXIN to specify the max value we want to plot with a keyword instead of with the input parameter max If max is defined by both parameter and keyword the keyword is retained keyword MININ to specify the min value we want to plot with a keyword instead of with the input parameter min If min is defined by both parameter and keyword the keyword is retained keyword NLEVEL Number of contour to draw by default 20 active if LABEL 0 or is not specified keyword NOTRI To force not to use the triangulation Beware in this case the drawing only works if the grid is undeformed It means that each point of a longitude give one latitude and each point of a latitude give one longitude exept if we use the keyword CELL_FILL 2 Comment: if the field contain points values f_nan then we even do a triangulation keyword OVERPLOT To make a plot over an other one Comment: Contrarily to the use of CONTOUR or VECTEUR the use of this keyword does not the caption and or the color bar keyword STRICTFILL Activate this keyword to that the filling of contours be precisely done between the min and the max specified letting values inferior at the specified min and values superior at the specified max in white keyword STYLE Contour s style to adopt to draw isolines by default style 0 see style pro keyword VECTEUR It is a structure composed by 2 elements containing the 2 fields U and V of values of the zonal and meridian component of the vector of the fields to draw These fields can be an array or a structure For example: vecteur matriceu:lec unsurface matricev:lec vnsurface Comment: name of elements of vectors are inconsenquential vecteur u:lec unsurface v:lec vnsurface is also appropriated keyword _EXTRA used to pass your keywords keyword CONT_NOFILL Activate it not to fill the point mask to let them transparent Comment: Nevertheless we trace mask s contour keyword USETRI To force using triangulation keyword MASKFILL keyword DUPLICATE keyword DECIMATETRI uses common pro history Sebastien Masson smasson lodyc jussieu fr 7 1999 Sebastien Masson 08 02 2000 checkfield and notri keyword or triangule 1 version Id: plt pro 152 2006 08 10 07:01:35Z smasson todo seb Changer param tab1 keyword REMPLI UNLABSUR UNSUR2 UNVECTSUR quelques trucs dans la routine pro plt tab1 param2 param3 param4 REALCONT realcont CONTOUR contour INTERVALLE intervalle INV inv GRIDTYPE gridtype BOXZOOM boxzoom CONTINTERVALLE contintervalle LABEL label CONTLABEL contlabel STYLE style CONTMAX contmax CONTMIN contmin NLEVEL nlevel CONTNLEVEL contnlevel VECTEUR vecteur MAP map MININ minin MAXIN maxin CONT_NOFILL cont_nofill USETRI usetri NOTRI notri MASKFILL maskfill DUPLICATE duplicate STRICTFILL strictfill OVERPLOT overplot DECIMATETRI decimatetri LABMAP labmap _extra ex include common compile_opt idl2 strictarrsubs cm_4mesh cm_4data IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 To key_performance I preparation of the graphic environment and small verifications I1 verification of the grid s type associated to tab1 if keyword_set gridtype then vargrid gridtype if keyword_set vecteur AND NOT keyword_set gridtype then BEGIN vargrid litchamp tab1 grid if vargrid eq then BEGIN vargrid xquestion What is the grid associated to the data to contour T chkwidget vargrid strupcase vargrid endif ENDIF I2 Reading of the field and checkup if keyword_set boxzoom AND n_elements contour ne 4 then BEGIN savedbox 1b saveboxparam boxparam4plt dat END if n_elements param2 NE 0 then type param2 if n_elements param3 NE 0 then min param3 if n_elements param4 NE 0 then max param4 if n_elements minin NE 0 then min minin if n_elements maxin NE 0 then max maxin checktypeminmax plt TYPE type MIN min MAX max _extra ex z2d checkfield tab1 plt TYPE type BOXZOOM boxzoom DIREC direc VECTEUR vecteur _extra ex if z2d 0 EQ 1 then BEGIN IF keyword_set savedbox THEN restoreboxparam boxparam4plt dat return ENDIF IF n_elements usetri EQ 0 THEN BEGIN do we have holes in the triangulation holeintri n_elements triangles_list 3 LT jpi 1 keyword_set key_periodic jpj 1 2 the triangulation must be used to draw the field do we have a triangulation wehavetri triangles_list 0 NE 1 the triangulation must be used to draw the continents if we make a map are we periodic and nx jpi CASE strupcase vargrid OF T :nx nxt W :nx nxt U :nx nxu V :nx nxv F :nx nxf ENDCASE mapperio keyword_set map keyword_set key_periodic nx eq jpi usetri wehavetri wehavetri holeintri mapperio keyword_set key_irregular 2 notri ENDIF I3 reinitialization p x y Comment: We do not reinitializate when we call bck plt in loop to use contour if n_elements contour ne 4 AND NOT keyword_set overplot then reinitplt z invert I4 attribution of the mask and of longitude and latitude arrays IF strupcase vargrid EQ W THEN profond firstzw NE 0 ELSE profond firstzt NE 0 do we need to extract now the triangulation that will be use for contouring the field if keyword_set profond OR usetri EQ 0 AND vargrid EQ T OR vargrid EQ W OR usetri NE 2 AND vargrid NE T AND vargrid NE W THEN BEGIN grille mask glam gphi gdep nx ny nz firstx firsty firstz lastx lasty lastz forplt _extra ex ENDIF ELSE BEGIN grille mask glam gphi gdep nx ny nz firstx firsty firstz lastx lasty lastz TRI trifield forplt _extra ex ENDELSE I5 determination of the mi:min and of the ma:max of z2d in the same way as max: max and min: min for the drawing masknan finite z2d nan total masknan NE n_elements z2d Do we need to do an autoscale autoscale testvar var min EQ testvar var max AND NOT keyword_set intervalle determineminmax z2d mask mi ma glam gphi MININ min MAXIN max nan nan INTERVALLE intervalle usetri usetri _extra ex if z2d 0 EQ 1 THEN GOTO sortie We do an autoscale if needed if autoscale then autoscale min max intervalle II We put the drawing in its place on the window or the page and possible opening of the window or of the page if n_elements contour NE 4 AND NOT keyword_set overplot THEN placedessin plt posfenetre posbar CONTOUR contour VECTEUR vecteur MAP map DIREC direc _extra ex III Covering of the drawing labels style axis III1 Choice of labels if keyword_set intervalle AND NOT keyword_set label then label 1 if keyword_set label eq 0 then cas 0 else cas label label cas min max ncontour level_z2d colnumb NLEVEL nlevel INTERVALLE intervalle strictfill strictfill III2 Choice of style if not keyword_set style then style 0 style style level_z2d linestyle thick if keyword_set inv then colnumb reverse colnumb III3 Definition of axis if NOT keyword_set overplot THEN axe xy _EXTRA ex IV Drawing extrapolation of field on lands and setup of min max values if keyword_set nan then begin z2d where masknan EQ 0 max ENDIF ELSE masknan 1 filling the mask values we fill only masknan or we fill mask masknan IF keyword_set nan AND keyword_set cont_nofill THEN z2d remplit z2d nite 1 vargrid NE T AND vargrid NE W mask masknan _extra ex ELSE z2d remplit z2d nite 1 vargrid NE T AND vargrid NE W keyword_set nan 1 keyword_set cont_nofill 1 n_elements maskfill NE 0 mask mask masknan _extra ex IF keyword_set strictfill EQ 0 AND n_elements maskfill EQ 0 then z2d min z2d max if n_elements maskfill NE 0 then BEGIN z2d temporary z2d mask masknan if maskfill NE 0 then z2d temporary z2d maskfill 1 mask masknan ENDIF check the mask and the triangulation according to the grid type and nan values If we make a drawing in depth we redifine a triangulation on the zoom this triangulation will be used to trace the field We use tmask in order to holes of this triangulation are the same than these used for the mask and correspond to holes there is in this new depth if keyword_set profond OR keyword_set cont_nofill AND usetri GE 1 AND vargrid EQ T OR vargrid EQ W OR usetri EQ 2 AND vargrid NE T AND vargrid NE W then BEGIN trifield triangule tmask firstx:lastx firsty:lasty firstz coinmonte coinmontemask coindescend coindescendmask keep_cont cont_nofill _extra ex indicezoommask lindgen jpi jpj firstx:lastx firsty:lasty ENDIF triangulation for nan mask if keyword_set nan then BEGIN trinan triangule masknan keep_cont coinmonte coinmontenan coindescend coindescendnan indicezoomnan lindgen jpi jpj firstx:lastx firsty:lasty ENDIF IF n_elements twin_corners_up EQ 0 THEN coinmontemask 1 ELSE coinmontemask twin_corners_up IF n_elements twin_corners_dn EQ 0 THEN coindescendmask 1 ELSE coindescendmask twin_corners_dn if vargrid EQ T OR vargrid EQ W then BEGIN glammsk glam gphimsk gphi ENDIF ELSE begin decoupe terre: For the drawing of the coast be clean we try to take additionally points for the land Like that we do not see grid s gap It is what decoupeterre do We profit of it to redefine trimsk decoupeterre mask glammsk gphimsk type xy TRI trimsk usetri usetri indicezoom indicezoommask coinmonte coinmontemask coindescend coindescendmask _EXTRA ex ENDELSE IV1 Choice of type of drawing typetrace classique if keyword_set map AND key_onearth then BEGIN Call of mapset when we want to do projections IF n_elements map NE 3 THEN map 0 lon1 lon2 2 MOD 360 0 typetrace projection map_lat map 0 map_lon map 1 map_rot map 2 if chkstru ex TITLE then begin maptitre ex title ex title endif map_set map_lat map_lon map_rot _extra ex position posfenetre iso limit lat1 lon1 lat2 lon2 noborder if n_elements maptitre ne 0 then ex title maptitre if n_elements trifield GE 2 then trifield ciseauxtri trifield glam gphi _EXTRA ex if n_elements trimsk GE 2 then trimsk ciseauxtri trimsk glammsk gphimsk _EXTRA ex if n_elements trinan GE 2 then BEGIN trinan ciseauxtri trinan glam gphi _EXTRA ex if trinan 0 EQ 1 then undefine trinan endif ENDIF ELSE BEGIN To axes of coordinates be considerated if x type EQ 0 AND n_elements contour LE 4 then plot 0 0 nodata xstyle 5 ystyle 5 title subtitle noerase if keyword_set key_periodic then BEGIN In this case triangulation is closed in x and cover all the sphere We have to cut it at the level where we cut the sphere to make the drawing if n_elements trifield GE 2 then trifield ciseauxtri trifield glam gphi _EXTRA ex if n_elements trimsk GE 2 then trimsk ciseauxtri trimsk glammsk gphimsk _EXTRA ex if n_elements trinan GE 2 then trinan ciseauxtri trinan glam gphi _EXTRA ex ENDIF endelse IV2 Contours and coloring if keyword_set duplicate then BEGIN pour marina uniquement ATTENTION C EST TRES MAL CODE lon glam 0 decalage max lon min lon lon shift lon 1 n_elements lon 1 x range 1 x range 1 duplicate 1 decalage for i 1 duplicate 1 do BEGIN z2d z2d z2d gphi gphi gphi mask mask mask gphimsk gphimsk gphimsk glam glam glam i decalage glammsk glammsk glammsk ENDFOR endif save glam gphi trifield file tri dat if keyword_set decimatetri then BEGIN tempsdeux systime 1 To key_performance IF n_elements trimsk EQ 0 THEN trimsk trifield Verts transpose temporary glam temporary gphi temporary z2d Conn replicate 3 1 n_elements trifield 3 trifield Result mesh_decimate temporary verts temporary Conn Connout vertices Vertsout percent_vertices decimatetri connout reform connout 4 n_elements connout 4 over trifield temporary connout 1:3 glam reform Vertsout 0 gphi reform Vertsout 1 z2d reform Vertsout 2 undefine Vertsout print temps decimatetri systime 1 tempsdeux ENDIF pltbase z2d glam gphi mask glammsk gphimsk trichamp trifield trimsk trimsk forplt level_z2d colnumb contour contour usetri usetri realcont realcont overplot keyword_set overplot keyword_set map c_linestyle linestyle c_labels 1 indgen n_elements level_z2d MOD 2 c_thick thick cont_nofill cont_nofill nan nan coinmontemask coinmontemask coindescendmask coindescendmask coinmontenan coinmontenan coindescendnan coindescendnan indicezoommask indicezoommask indicezoomnan indicezoomnan masknan masknan trinan trinan _extra ex IV3 Recall of plt in loop when contour is activated if n_elements contour eq 4 then BEGIN c est la 2eme fois que je passe ds pltt contour mietma: mi ma unit:varunit inter:intervalle je renvoie le min le max et l unite return endif if keyword_set contour THEN BEGIN pourlegende 1 1 1 1 oldattributs saveatt oldcolnumb colnumb plt contour contmin contmax CONTOUR pourlegende NOERASE USETRI usetri INTERVALLE contintervalle LABEL contlabel STYLE style NLEVEL contnlevel DUPLICATE duplicate STRICTFILL strictfill MASKFILL maskfill _extra ex restoreatt oldattributs colnumb oldcolnumb ENDIF V Small functions V1 Possible add of vectors in double exposure if keyword_set vecteur then BEGIN oldattributs saveatt ajoutvect vecteur vectlegende _extra ex restoreatt oldattributs ENDIF if keyword_set overplot then GOTO fini V2 Trace the line of change of date the equator and the greenwich meridian if NOT keyword_set map AND key_onearth then meridienparallele xy V3 To trace IDL s continents if keyword_set realcont then BEGIN si noease est passe de _extra on s assure qu il est a 1 if chkstru ex NOERASE then begin oldnoerase ex noerase ex noerase 1 ENDIF if chkstru ex coast_thick then mlinethick ex coast_thick ELSE mlinethick 1 if chkstru ex coast_color then mcolor ex coast_color ELSE mcolor 0 IF NOT keyword_set map THEN map_set 0 lon1 lon2 2 MOD 360 0 position posfenetre limit lat1 lon1 lat2 lon2 NOERASE noborder color 0 _extra ex if realcont NE 2 AND NOT keyword_set cont_nofill then BEGIN if chkstru ex cont_color then cntcol ex coast_color ELSE cntcol d n_colors 1 255 map_continents fill_continents color cntcol _extra ex noerase ENDIF map_continents continents color mcolor MLINETHICK mlinethick noerase _extra ex if chkstru ex NOERASE THEN ex noerase oldnoerase ENDIF V4 caption display of these legende mi ma xy CONTOUR pourlegende VECTLEGENDE vectlegende INTERVALLE intervalle DIREC direc _EXTRA ex if n_elements ex NE 0 then BEGIN To keep frame s axes in black if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR coast_color endif case typetrace of classique : plot 0 0 nodata noerase color 0 xstyle 1 ystyle 1 _extra ex projection : BEGIN if chkstru ex NOERASE then begin oldnoerase ex noerase ex noerase 1 endif if chkstru ex SUBTITLE then p subtitle ex SUBTITLE if n_elements maptitre ne 0 then ex title maptitre map_set map_lat map_lon map_rot _extra ex iso limit lat1 lon1 lat2 lon2 NOERASE noborder title p title color 0 map_proj_info numproj current map_proj_info numproj name nomproj if nomproj EQ Mercator OR nomproj EQ Cylindrical OR nomproj EQ LambertConic OR nomproj EQ Gnomic OR nomproj EQ AlbersEqualAreaConic OR nomproj EQ TransverseMercator OR nomproj EQ MillerCylindrical OR nomproj EQ LambertConicEllipsoid then map_grid box_axes 1 latdel 10 londel 10 ELSE map_grid charsize 0 75 label latalign 1 lonalign 1 latdel 10 londel 30 IF n_elements labmap EQ 0 THEN labmap 1 map_grid charsize 0 75 label labmap latalign 1 lonalign 1 latdel 10 londel 30 color 0 _extra ex if chkstru ex NOERASE THEN ex noerase oldnoerase end endcase V5 Colorbar colnumb colnumb 0:ncontour 1 keyword_set strictfill barrecouleur colnumb min max ncontour keyword_set strictfill 2 position posbar _extra ex VI Possible print fini: terminedessin _extra ex sortie: if keyword_set savedbox THEN restoreboxparam boxparam4plt dat if keyword_set key_performance NE 0 THEN print temps plt systime 1 tempsun return end "); 251 251 a[249] = new Array("./ToBeReviewed/PLOTS/DESSINE/plt1d.html", "plt1d.pro", "", " file_comments Trace 1d graphes: x y z or t but in this case we recall directly pltt categories Graphics param TAB in required The field whose we want to make the hovmoller map can be 2 kind of thing: 1 An array which can be: 2d 3d or 4d: array xy xyz xyt or xyzt In this case the array will pass in moyenne or grossemoyenne to be averaged and becomme an array 1d 1d:Nevertheless the type must be specified in order to we know which trace it is about To have a correct caption respecify the xctraction zone via BOXZOOM 2 a structure respecting all criterions specified by litchamp pro See IDL xhelp litchamp The array contained in the structure respecting criterions of case 1 param PARAM2 in required Min value we want to consider in the contour s drawing Note: could also be the type of plot: x y z param PARAM3 in optional default min max of tab on ocean points Max value we want to consider in the contour s drawing Note: if param2 is defined as x y z then param3 is used to define the min see param2 param PARAM4 in optional default max of tab on ocean points Type of plot can be only x y z for plt1d Note: if param2 is defined as xy then param4 is used to define the max see param3 keyword BOXZOOM Vector indicating the geographique zone 3d on which the extraction of the field must be done to do the hovmoeller If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom vert1 vert2 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 vert1 vert2 are global variables defined at the last domdef keyword COL1d OBSOLETE Color number when we make a trace 1d by default 0 It is better to use the keyword COLOR used by plot keyword ENDPOINTS keyword specifing that we want to make a vertical cut in diagonal Then coorinated of extremities of these one are difined by the 4 elements of the vector ENDPOINTS: x1 y1 x2 y2 which are coordinates keyword MAXIN Allows to specify the max value we want to consider in the drawing of contour helping by the keyword instead of the argument max If the argument and the keyword are specified in the same time it is the value specified by the keyword which is retained keyword MININ Allows to specify the min value we want to consider in the drawing of contour helping by the keyword instead of the argument min If the argument and the keyword are specified in the same time it is the value specified by the keyword which is retained keyword OV1D Allow the double exposure of an 1d curve to a precedent 1d trace keyword REVERSE_X To invert the x axis so as the drawing keyword REVERSE_Y To invert the y axis so as the drawing keyword SIN Activate this keyword if we want the x axis to be traced in sinus of the latitude when we make a drawing f y keyword STY1D OBSOLETE Number of the style used when we make a 1d drawing We should better use the keyword LINESTYLE which is tho one of the plot Beware this keyword is still useful if we want to d bars instead of curves put sty1d bar keyword TYPEIN allows to specify the type of hovmoller we want to do xt yt zt t with help of a keyword rather than the argument type If the argument andthe keyword are specified in the same time it is the value specified by the keyword which is retained keyword _EXTRA used to pass your keywords history creation 24 6 99 Eric Guilyardi a partir routine pltt de Sebastien Masson 8 7 1999 Sebastien Masson smasson lodyc jussieu fr inspection des travaux finis 8 2 2000 Sebastien Masson: checkfield version Id: plt1d pro 142 2006 07 21 12:47:49Z navarro pro plt1d tab param2 param3 param4 BOXZOOM boxzoom SIN sin MININ minin MAXIN maxin TYPEIN typein ENDPOINTS endpoints COL1D col1d STY1D sty1d OV1D ov1d X x Y y Z z TT tt REVERSE_X reverse_x REVERSE_Y reverse_y SWITCHXY switchxy _extra ex include common compile_opt idl2 strictarrsubs cm_4mesh cm_4data IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 pour key_performance 1st part: initialization small calculations verification of the type s value if n_elements param2 NE 0 then type param2 if n_elements param3 NE 0 then min param3 if n_elements param4 NE 0 then max param4 if n_elements minin NE 0 then min minin if n_elements maxin NE 0 then max maxin if keyword_set tt then typein t if keyword_set typein then BEGIN if size type type NE 7 AND size type type NE 0 then begin if n_elements min NE 0 then max min min type endif type typein endif checktypeminmax plt1d TYPE type MIN min MAX max ENDPOINTS endpoints XX keyword_set x YY keyword_set y ZZ keyword_set z if type EQ t then BEGIN pltt tab type min max BOXZOOM boxzoom SIN sin TYPEIN typein COL1D col1d STY1D sty1d OV1D ov1d ENDPOINTS endpoints _extra ex return endif I2 reinitialization p x y Comment: We do not reinitializate when we call back plt1d if NOT keyword_set ov1d then reinitplt I1 Reading of the field if keyword_set boxzoom OR keyword_set endpoints THEN BEGIN savedbox 1b saveboxparam boxparam4plt1d dat ENDIF if keyword_set endpoints then begin section tab z1d glam gphi ENDPOINTS endpoints TYPE type BOXZOOM boxzoom DIREC direc nx n_elements glam ny nx if strupcase vargrid EQ W then begin z gdepw firstzw:lastzw nz nzw ENDIF ELSE BEGIN z gdept firstzt:lastzt nz nzt ENDELSE ENDIF ELSE BEGIN z1d checkfield tab plt1d TYPE type BOXZOOM boxzoom direc direc _extra ex grille mask glam gphi gdep nx ny nz ENDELSE if z1d 0 EQ 1 then BEGIN IF keyword_set savedbox THEN restoreboxparam boxparam4plt1d dat return endif We build the mask For this the array must be hidden Automaticaly done at valmask value if we pass in moyenne or grossemoyenne mask fltarr n_elements z1d if n_elements valmask EQ 0 then valmask 1e20 nan total finite z1d nan 1 if keyword_set nan then begin notanum where finite z1d EQ 0 z1d notanum 0 mask where z1d LT valmask 10 1 z1d notanum values f_nan ENDIF ELSE mask where z1d LT valmask 10 1 determination of the min and of the max after the average nan total finite z1d nan 1 determineminmax z1d mask mi ma MININ min MAXIN max nan nan INTERVALLE intervalle _extra ex if z1d 0 EQ 1 THEN return if NOT keyword_set ov1d THEN placedessin autre posfenetre posbar contour contour DIREC direc endpoints endpoints _extra ex 2nd part: Drawing definition of the abscisse and ordinate vectors The triangulation is defined in order to the drawing be done from the left bottom to the right up So the matrix have to be shown like this from which some transpose and reverse case type of y : begin yy z1d IF size gphi 0 EQ 1 then xx gphi ELSE BEGIN IF keyword_set key_irregular THEN BEGIN cln where gphi EQ max gphi 0 xx reform gphi cln MOD nx ENDIF ELSE xx reform gphi 0 ENDELSE if keyword_set sin then xx sin pi 180 xx min0 lat1 max0 lat2 END x :begin yy z1d xx glam 0 min0 lon1 max0 lon2 END z :begin yy reverse gdep 1 xx reverse z1d 1 min0 0 max0 0 case n_elements boxzoom of 0: y range vert1 vert2 1: y range 0 boxzoom 2: y range boxzoom 4: y range vert1 vert2 5: y range 0 boxzoom 4 6: y range boxzoom 4:5 endcase if NOT keyword_set ov1d then y range reverse y range END ENDCASE definition of axes if keyword_set integrationtps then axe type time 0 time jpt 1 SIN sin _extra ex ELSE axe type SIN sin if NOT keyword_set ov1d then axe type SIN sin drawing if type EQ z then begin idx where xx NE valmask if NOT keyword_set ov1d then BEGIN if min EQ mi then x range min abs max min 5 max abs max min 5 ELSE x range min max ENDIF ENDIF ELSE BEGIN idx where yy NE valmask if NOT keyword_set ov1d then BEGIN if min EQ mi then y range min abs max min 5 max abs max min 5 ELSE y range min max ENDIF ENDELSE if NOT keyword_set ov1d then BEGIN legende mi ma type CONTOUR contour DIREC direc ENDPOINTS endpoints _EXTRA ex ENDIF IF keyword_set switchxy THEN BEGIN tmp xx xx yy yy temporary tmp if NOT keyword_set ov1d then BEGIN tmp x x y y temporary tmp ENDIF ENDIF if NOT keyword_set ov1d then BEGIN if keyword_set reverse_x then x range reverse x range if keyword_set reverse_y then y range reverse y range ENDIF xx xx idx yy yy idx if not keyword_set col1d then col1d 0 if keyword_set sty1d then BEGIN If we want to make bars IF strlowcase strtrim sty1d EQ bar then begin y range y range 0 y range 1 y range 0 05 y range 1 bar_plot yy background d n_colors 1 255 baselines replicate y range 0 n_elements yy barnames colors replicate col1d n_elements yy outline if n_elements ex NE 0 then BEGIN To have a black frame if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR 0 ENDIF plot 0 0 noerase nodata _extra ex GOTO fini ENDIF ENDIF if NOT keyword_set ov1d then BEGIN plot xx yy color col1d linestyle sty1d thick 2 title subtitle _extra ex if n_elements ex NE 0 then BEGIN To have a 0 colored frame and trace a line at y 0 if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR 0 if where tag_names ex EQ LINESTYLE 0 NE 1 then ex LINESTYLE 0 if where tag_names ex EQ THICK 0 NE 1 then ex THICK 0 ENDIF plot x range 0 0 noerase nodata xstyle 1 4 keyword_set endpoints AND type EQ x AND lat1 NE lat2 OR type EQ y AND lon1 NE lon2 ystyle 1 _extra ex Add of an axis in the case where we use endpoints if keyword_set endpoints then addaxe endpoints type posfenetre _EXTRA ex Trace a line at x 0 plot 0 0 y range noerase nodata title subtitle _extra ex ENDIF ELSE oplot xx yy color col1d linestyle sty1d thick 2 _extra ex 3rd part: Possible print fini: terminedessin _extra ex if keyword_set savedbox THEN restoreboxparam boxparam4plt1d dat if n_elements key_performance NE 0 then IF key_performance EQ 1 THEN print temps plt1d systime 1 tempsun return end "); 252 252 a[250] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltbase.html", "pltbase.pro", "", " file_comments Overlayer contour to trace a field which can be mask Elementary brick of plt pltz et pltt categories graphic param Z2D in required The table to trace param X in required Axis Vector or array of the same size that z2d This is the coordinate of z2d on x param Y in required Axis Vector or array of the same size that z2d This is the coordinate of z2d on y param MASK in required It is the array who mask z2d with 0s on points we want to mask and 1s on others If z2d is not masked put this argument equal to 1 param XM in required Axis of the mask Vector or array of the same size that mask This is the coordinate of mask on x param YM in required Axis of the mask Vector or array of the same size that mask This is the coordinate of mask on y param LEVELS in optional Vectors which contain levels needed at the contour If it is not given we take 20 levels between the min and the max param COLORS in optional Vectors which contain colors needed at the contour If it is not given we take 20 levels between the min and the max keyword COLORTRICHAMP The color we want to use to draw the triangulation which is used to make contours of the field keyword COLORTRIMASK The color we want to use to draw the triangulation which is used to make contours of the mask keyword COLOR_C To draw the contour in color instead of in black with filling in color keyword CONT_NOFILL Activate it not to fill the point mask to let them transparent Comment: Nevertheless we trace mask s contour keyword CONT_COLOR The color of the continent defaut value is d n_colors 1 white keyword DESSTRICHAMP To draw the triangulation which is used to make field s contours keyword DESSTRIMASK To draw the triangulation which is used to make mask s contours keyword FORPLT To activate if we want that the drawing of coast be realized by tracecote rather than tracemask keyword I_COLORS It is a vector specifing the colors to use to trace contours It is the same thing that c_colors which act on contours keyword MORE Number to give to avoid style s bugs: Out of range subscript encountered: Execution halted at: PLTBASE 151 By default more 10 If the bug still exist increase the value of more The explanation and the justification of this method do not have scientific bases yet keyword NOFILL To make just isolines keyword NOCONTOUR To make just colors keyword UNSUR2 To trace one isoline on two keyword UNLABSUR Is an integer n specifying we only label one contour on two keyword CONTOUR To be used since plt pltz or pltt Have a look on these routines keyword _EXTRA Used to pass your keywords uses common pro restrictions In the case of z2d x and y are arrays of same size we hate to put them as vectors: z2d x y history Sebastien Masson smasson lodyc jussieu fr 8 2 2000 check if the tri array is not equal to 1 allow contour with out using a triangulation version Id: pltbase pro 142 2006 07 21 12:47:49Z navarro todo seb L 172 173 PRO pltbase z2d x y mask xm ym levels colors UNSUR2 unsur2 CONTOUR contour NOCONTOUR nocontour NOFILL nofill TRICHAMP trichamp TRIMSK trimsk REALCONT realcont NAN nan usetri usetri COLORTRICHAMP colortrichamp COLORTRIMASK colortrimask COLORTRINAN colortrinan COLORPOINTS colorpoints DRAWPOINTS drawpoints TH_TRICHAMP th_trichamp TH_TRIMASK th_trimask DESSTRICHAMP desstrichamp DESSTRIMASK desstrimask DESSTRINAN desstrinan COLOR_C color_c I_COLORS i_colors CONT_COLOR CONT_COLOR CONT_NOFILL cont_nofill UNLABSUR unlabsur COINMONTEMASK coinmontemask COINDESCENDMASK coindescendmask COINMONTENAN coinmontenan COINDESCENDNAN coindescendnan INDICEZOOMMASK indicezoommask INDICEZOOMNAN indicezoomnan MASKNAN masknan TRINAN trinan FORPLT forplt REALSECTION realsection MORE more EXCHANGE_XY exchange_xy _EXTRA ex compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF Explanation concerning contour This keyword is activated when we trace a colored contour different from the one with black trait If it is activated case n_elements contour NE 0 we pass 2 time in pltbase: 1 We trace colors then we leave it is the case: n_elements contour NE 0 AND n_elements contour NE 4 2 We trace contours in traits then continents it is the case: n_elements contour NE 0 AND n_elements contour EQ 4 tempsun systime 1 To key_performance if n_elements mask EQ 0 then mask 1b if n_elements masknan EQ 0 then masknan 1b IF total mask EQ n_elements z2d THEN mask 1b If levels and colors aren t given if n_params EQ 4 then label 0 min z2d mask max z2d mask ncontour levels colors attention bidouille inexplicable pour que tout se passe bien avec les postcript ds pltz if n_elements contour LE 4 AND x type EQ 0 THEN plot 0 0 xstyle 5 ystyle 5 nodata noerase title subtitle Is cell_fill is a part of _extra we desactive it if it is nt equal to 2 IF chkstru ex CELL_FILL THEN BEGIN cell_fill ex CELL_FILL if ex CELL_FILL NE 2 then ex CELL_FILL 0 ENDIF ELSE cell_fill 0 I Filling of contours in palette colors if NOT keyword_set more then more 10 if NOT keyword_set nofill AND NOT keyword_set color_c then begin if n_elements contour NE 4 THEN BEGIN if usetri EQ 2 then BEGIN IF size x n_dimensions EQ 1 THEN x x replicate 1 size z2d 2 IF size y n_dimensions EQ 1 THEN y replicate 1 size z2d 1 y contour z2d fltarr more x fltarr more y fltarr more levels levels c_color colors noerase fill TRIANGULATION trichamp _extra ex ENDIF ELSE BEGIN IF size x n_dimensions EQ 2 THEN x x 0 IF size y n_dimensions EQ 2 THEN y reform y 0 contour z2d x y levels levels c_color colors noerase fill _extra ex ENDELSE ENDIF ENDIF if n_elements contour NE 0 AND n_elements contour NE 4 THEN GOTO fini IF chkstru ex C_ORIENTATION THEN ex extractstru ex C_ORIENTATION IF chkstru ex C_SPACING THEN ex extractstru ex C_SPACING IF chkstru ex C_COLORS THEN ex extractstru ex C_COLORS II Drawing of contours in traits if n_elements contour EQ 4 OR n_elements contour EQ 0 THEN BEGIN we put the masked values to NaN IF n_elements mask GT 1 OR n_elements masknan GT 1 AND NOT keyword_set cont_nofill THEN BEGIN tonan where mask masknan EQ 0 count tonan where remplit mask masknan nite 1 mask mask masknan basique fillval 0 fillxdir keyword_set realsection EQ 0 count IF count NE 0 THEN z2d temporary tonan values f_nan ENDIF We do not pass if we have to make differents contours In the case of unsur2 is activated we reduce levels if NOT keyword_set nocontour then begin IF keyword_set unsur2 THEN levels levels where zeroun n_elements levels eq 1 Is unlabsur activated Does C_LABEL passed via _EXTRA if keyword_set unlabsur THEN IF chkstru ex C_LABELS THEN ex C_LABELS 1 indgen n_elements ex C_LABELS MOD unlabsur 1 Not to fill when cell_fill is imposed IF chkstru ex CELL_FILL THEN ex CELL_FILL 0 CASE 1 OF keyword_set color_c :c_colors colors keyword_set i_colors :c_colors i_colors ELSE: ENDCASE IF usetri EQ 2 THEN BEGIN IF size x n_dimensions EQ 1 THEN x x replicate 1 size z2d 2 IF size y n_dimensions EQ 1 THEN y replicate 1 size z2d 1 y contour z2d fltarr more x fltarr more y fltarr more levels levels overplot 1 keyword_set nofill noerase keyword_set nofill c_colors c_colors TRIANGULATION trichamp _extra ex ENDIF ELSE BEGIN IF size x n_dimensions EQ 2 THEN x x 0 IF size y n_dimensions EQ 2 THEN y reform y 0 contour z2d x y levels levels overplot 1 keyword_set nofill noerase keyword_set nofill c_colors c_colors _extra ex ENDELSE ENDIF III Filling of colored continents IF chkstru ex CELL_FILL THEN ex CELL_FILL cell_fill 1 IF chkstru ex LEVELS THEN ex extractstru ex LEVELS IF chkstru ex NODATA THEN ex extractstru ex NODATA IF NOT keyword_set cont_color THEN cont_color d n_colors 1 255 If there is points at NaN We trace points in white at NaN bafore drawing coasts with a trait if keyword_set trinan THEN BEGIN IF size x n_dimensions EQ 1 THEN x x replicate 1 size masknan 2 IF size y n_dimensions EQ 1 THEN y replicate 1 size masknan 1 y contour 1b masknan fltarr more x fltarr more y fltarr more levels 0 5 overplot fill c_colors cont_color TRIANGULATION trinan _extra ex IF keyword_set forplt THEN completecointerre COINMONTE coinmontenan COINDESCEND coindescendnan INDICEZOOM indicezoomnan CONT_COLOR cont_color _EXTRA ex ELSE fillcornermask x 0 y 0 COINMONTE coinmontenan COINDESCEND coindescendnan CONT_COLOR cont_color _extra ex ENDIF Filling of continents if keyword_set realcont then if realcont EQ 1 then mask 1b if n_elements mask NE 1 then BEGIN If mask 1 we gap it if NOT keyword_set cont_nofill then BEGIN mask filling case 1 of keyword_set realsection :drawsectionbottom mask xm ym CONT_NOFILL cont_nofill CONT_COLOR cont_color _EXTRA ex usetri GE 1:BEGIN if n_elements trimsk eq 0 then trimsk trichamp IF size xm N_DIMENSIONS EQ 1 THEN xm xm replicate 1 size mask 2 IF size ym N_DIMENSIONS EQ 1 THEN ym replicate 1 size mask 1 ym contour 1b mask fltarr more xm fltarr more ym fltarr more LEVELS 0 5 OVERPLOT FILL C_COLORS cont_color TRIANGULATION trimsk _extra ex IF keyword_set forplt THEN completecointerre COINMONTE coinmontemask COINDESCEND coindescendmask INDICEZOOM indicezoommask CONT_COLOR cont_color _EXTRA ex ELSE fillcornermask xm 0 ym 0 COINMONTE coinmontemask COINDESCEND coindescendmask CONT_COLOR cont_color _extra ex END ELSE:BEGIN IF size xm n_dimensions EQ 2 THEN xm xm 0 IF size ym n_dimensions EQ 2 THEN ym reform ym 0 contour 1b mask xm ym LEVELS 0 5 OVERPLOT FILL C_COLORS cont_color _EXTRA ex END ENDCASE ENDIF NOT keyword_set cont_nofill IV Trace coast in traits case 1 of keyword_set realsection AND NOT keyword_set cont_nofill : keyword_set realsection AND keyword_set cont_nofill : drawsectionbottom mask xm ym CONT_NOFILL cont_nofill _extra ex keyword_set forplt AND map projection GT 0 OR key_irregular OR keyword_set nan :tracecote _extra ex ELSE:tracemask mask xm ym _extra ex endcase ENDIF n_elements mask NE 1 ENDIF draw the triangulations if keyword_set desstrichamp then dessinetri trichamp x y color colortrichamp thick th_trichamp if keyword_set desstrimask then dessinetri trimsk xm ym color colortrimask thick th_trimask if keyword_set desstrinan then dessinetri trinan x y color colortrinan if keyword_set drawpoints then tracegrille x y color colorpoints fini: IF keyword_set key_performance THEN print temps pltbase systime 1 tempsun return end"); 253 253 a[251] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltsc.html", "pltsc.pro", "", " todo seb PRO pltsc tab1 tab2 min1 max1 min2 max2 varname2 BOXZOOM boxzoom COL1D col1d STY1D sty1d OV1D ov1d _extra ex scatter plot inspired from plt1d compile_opt idl2 strictarrsubs include common cm_4mesh cm_4data IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF Comment: We do not reinitializate when we call back pltsc if NOT keyword_set ov1d then reinitplt reduce data xyzt domain if keyword_set boxzoom then BEGIN Case 1 Of N_Elements Boxzoom Eq 1:bte lon1 lon2 lat1 lat2 0 boxzoom 0 N_Elements Boxzoom Eq 2:bte lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 N_Elements Boxzoom Eq 4:bte Boxzoom vert1 vert2 N_Elements Boxzoom Eq 5:bte Boxzoom 0:3 0 Boxzoom 4 N_Elements Boxzoom Eq 6:bte Boxzoom Else: Begin ras report Wrong Definition of Boxzoom return End endcase savedbox 1b saveboxparam boxparam4pltsc dat domdef bte GRIDTYPE vargrid ENDIF extract indexes to plot indexm where tab1 LE valmask 10 tab1 tab1 indexm tab2 tab2 indexm npts size indexm 1 deal with min and max of plot IF finite min1 EQ 0 THEN min1 min tab1 IF finite max1 EQ 0 THEN max1 max tab1 IF finite min2 EQ 0 THEN min2 min tab2 IF finite max2 EQ 0 THEN max2 max tab2 init plot if not overlay IF NOT keyword_set ov1d THEN placedessin yfx posfenetre posbar contour contour _extra ex yy tab1 xx tab2 axis range x range min2 abs max2 min2 5 max2 abs max2 min2 5 y range min1 abs max1 min1 5 max1 abs max1 min1 5 IF NOT keyword_set sty1d THEN sty1d 0 IF NOT keyword_set col1d THEN col1d 0 IF NOT keyword_set ov1d THEN BEGIN legende min1 max1 yfx VARNAME2 varname2 NPTS npts _EXTRA ex plot xx yy background 255 psym sty1d 1 color col1d thick 2 title subtitle _extra ex if n_elements ex NE 0 then BEGIN To have a 0 colored frame and trace a line at y 0 if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR 0 if where tag_names ex EQ LINESTYLE 0 NE 1 then ex LINESTYLE 0 ENDIF plot x range 0 0 noerase nodata xstyle 1 ystyle 1 _extra ex trace a line at x 0 plot 0 0 y range noerase nodata title subtitle _extra ex ENDIF ELSE oplot xx yy color col1d linestyle sty1d thick 2 _extra ex 3rd part: Possible print fini: terminedessin _extra ex if keyword_set savedbox THEN restoreboxparam boxparam4pltsc dat if n_elements key_performance NE 0 then IF key_performance EQ 1 THEN print temps plt1d systime 1 tempsun return end "); 254 a[252] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltt.html", "pltt.pro", "", " file_comments Trace hovmoller graphs: xt yt zt t categories Graphics param TAB in required The field whose we want to make the hovmoller map can be 2 kind of thing: 1 An array which can be: 3d or 4d: array xt yt zt t The last component is the time In this case the array will pass in grossemoyenne to be averaged and become an 1d or 2d array 2d: If the array is already 2d it is not modified beware lands must be masked at the value valmask and nevertheless type must be specified to we know of which trace it is about To have a correct caption respecify the xctraction zone via BOXZOOM 1d: only for traces of the t type Nevertheless type must be specified to we know of which trace it is about To have a correct caption respecify the xctraction zone via BOXZOOM 2 a structure respecting all criterions specified by litchamp pro See IDL xhelp litchamp The array contained in the structure respecting criterions of case 1 PARAM: MAX: valeur maximum que l on veut prendre en compte dans le trace des contours Par defaut on prend le max de tableau sur les pts mer MIN: valeur minimum que l on veut prendre en compte dans le trace des contours Par defaut on prend le min de tableau sur les pts mer DATMIN: c est la borne inf de l axe temporel c est un longinteger de la forme yyyymmdd ou bien yymmdd DATMAX: c est la borne max de l axe temporel c est un longinteger de la forme yyyymmdd ou bien yymmdd keyword BOXZOOM Vector indicating the geographique zone 3d on which the extraction of the field must be done to do the hovmoeller If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom vert1 vert2 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 vert1 vert2 are global variables defined at the last domdef keyword CONTINTERVALLE When CONTOUR is activated it is the value between 2 isolines traced by a trait So it can be different from the one specified by INTERVALLE which in this case does not control colored isolines in color anymore If there is noone specified min we choose a contour min which goes well with the specified interval If this keyword is not specified we trace 20 isolines from the min to the max keyword CONTLABEL It is an integer n When CONTOUR is actvated if n is different of 0 choose the label type corresponding to n cases for the traced by a traitisolines To specify the type of label of the colored contour use LABEL keyword CONTMAX When CONTOUR is activated max value we want to consider in the isoline traced by a trait s line By default we take the max on ocean points of the array passed in the keyword CONTOUR keyword CONTMIN When CONTOUR is activated min value we want to consider in the isoline traced by a trait s line By default we take the min on ocean points of the array passed in the keyword CONTOUR keyword CONTNLEVEL When CONTOUR is activated it is the numbre of contours traced by a trait for drawing active if CONTLABEL 0 by default 20 keyword CONTOUR If we want to trace contours of a different field than the one whose we have the colored drawing by examlpe E P in color and QSR in contours It must be a field respecting same caracteristics than the argument number one of pltt keyword ENDPOINTS keyword specifing that we want to make a vertical cut in diagonal Then coorinated of extremities of these one are difined by the 4 elements of the vector ENDPOINTS: x1 y1 x2 y2 which are coordinates keyword EXCHANGE_XY Allows to invert axes keyword FILTER Apply a slippery average of width FILTER keyword INTERVALLE Value of an internal between to isoline If there is none specified min we choose a min contour which goes well with the specified interval If this keyword is not specified we trace 20 isoline from the min to the max Comment: When CONTOUR is activated INTERVALLE only specify the interval between 2 colored isoline To specify the interval between 2 isolines traced by a trait use CONTINTERVALLE keyword INV Invert the color vector used to color the graph without use the black the white and the used palette keyword LABEL It is an integer n If n different of 0 it choose the label s type corresponding to cases n cf label pro Comment: When CONTOUR is activated it only specify the label s type for colored isolines For tese one traced by a trait use CONTLABEL keyword COL1d OBSOLETE Color number when we make a trace 1d by default 0 It is better to use the keyword COLOR used by plot keyword MAXIN Allows to specify the max value we want to consider in the drawing of contour helping by the keyword instead of the argument max If the argument and the keyword are specified in the same time it is the value specified by the keyword which is retained keyword MININ Allows to specify the min value we want to consider in the drawing of contour helping by the keyword instead of the argument min If the argument and the keyword are specified in the same time it is the value specified by the keyword which is retained keyword NLEVEL Number of contour to draw by default 20 active if LABEL 0 or is not specified keyword CONTNLEVEL When CONTOUR is activated it is the numbre of contours traced by a trait for drawing active if CONTLABEL 0 by default 20 keyword OV1D Allows to overprint a 1d curve over a precedent 1d drawing keyword OVERPLOT To make a plot over an other one Comment: Contrarily to the use of CONTOUR or VECTEUR the use of this keyword does not the caption and or the color bar keyword STRICTFILL Activate this keyword to that the filling of contours be precisely done between the min and the max specified letting values inferior at the specified min and values superior at the specified max in white keyword STYLE Contour s style to adopt to draw isolines by default style 0 see style pro keyword STY1D OBSOLETE Number of the style used when we make a 1d drawing We should better use the keyword LINESTYLE which is tho one of the plot Beware this keyword is still useful if we want to d bars instead of curves put sty1d bar keyword TREND_TYPE Modify field by calling trends pro keyword TYPEIN allows to specify the type of hovmoller we want to do xt yt zt t with help of a keyword rather than the argument type If the argument andthe keyword are specified in the same time it is the value specified by the keyword which is retained uses common pro history Sebastien Masson smasson lodyc jussieu fr 27 5 98 Jerome Vialard adapting plt to hovmoller drawing 2 7 98 Sebastien Masson 14 8 98 continents barres 15 1 98 Adaptation for arrays 3 and 4d to the average be done in pltt rather than during the reading Sebastien Masson 14 8 98 7 1999 Eric Guilyardi 29 7 99 FILTER TREND_TYPE REPEAT_C Sebastien Masson 08 02 2000 checkfield and usetri keyword version Id: pltt pro 142 2006 07 21 12:47:49Z navarro todo seb: L 24 36 L 426 427 L 492 493 pro pltt tab giventype givenmin givenmax datmin datmax BOXZOOM boxzoom CONTOUR contour ENDPOINTS endpoints INTERVALLE intervalle INV inv CONTINTERVALLE contintervalle LABEL label CONTLABEL contlabel STYLE style CONTMAX contmax CONTMIN contmin NLEVEL nlevel CONTNLEVEL contnlevel COL1D col1d STY1D sty1d MININ minin MAXIN maxin OV1D ov1d FILTER filter TREND_TYPE trend_type REPEAT_C repeat_c TYPEIN typein XT XT YT YT ZT zt TT tt STRICTFILL strictfill OVERPLOT overplot EXCHANGE_XY exchange_xy _extra ex include common compile_opt idl2 strictarrsubs cm_4mesh cm_4data cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 For key_performance I2 reinitialization p x y Comment: we do not reinitializate when we call back plt in loop to use contour if n_elements contour ne 4 AND NOT keyword_set overplot AND NOT keyword_set ov1d then reinitplt I1 Reading of the field if keyword_set boxzoom OR keyword_set endpoints AND n_elements contour ne 4 THEN BEGIN savedbox 1b saveboxparam boxparam4pltt dat ENDIF if n_elements giventype NE 0 then type giventype if n_elements givenmin NE 0 then min givenmin if n_elements givenmax NE 0 then max givenmax if n_elements minin NE 0 then min minin if n_elements maxin NE 0 then max maxin if keyword_set typein then BEGIN if size type type NE 7 AND size type type NE 0 then begin if n_elements min NE 0 then max min min type endif type typein ENDIF checktypeminmax pltt TYPE type MIN min MAX max XT XT YT YT ZT zt TT tt ENDPOINTS endpoints _extra ex if keyword_set endpoints then begin section tab z2d glam gphi ENDPOINTS endpoints TYPE type BOXZOOM boxzoom DIREC direc nx n_elements glam ny nx if strupcase vargrid EQ W then begin z gdepw firstzw:lastzw nz nzw ENDIF ELSE BEGIN z gdept firstzt:lastzt nz nzt ENDELSE ENDIF ELSE BEGIN z2d checkfield tab pltt TYPE type BOXZOOM boxzoom direc direc _extra ex if z2d 0 EQ 1 then BEGIN IF keyword_set savedbox THEN restoreboxparam boxparam4pltt dat return endif grille mask glam gphi gdep nx ny nz ENDELSE Calculation of trend anomaly following TREND_TYPE IF NOT keyword_set trend_type THEN trend_type 0 IF trend_type GT 0 THEN z2d trends z2d trend_type type Filtering of fields in the t case IF type EQ t AND keyword_set filter THEN BEGIN print Applying a running mean filter of width string filter format I3 z2d smooth z2d filter z2d 0:filter 2 1 0 z2d size z2d 1 filter 2 1: size z2d 1 1 0 ENDIF Repetition of the temporal series IF NOT keyword_set repeat_c THEN repeat_c 1 temps time 0:jpt 1 IF repeat_c GT 1 THEN BEGIN taille size z2d CASE taille 0 OF 1: z2d reform z2d replicate 1 repeat_c taille 1 repeat_c 2: BEGIN z2d z2d replicate 1 repeat_c z2d reform z2d taille 1 taille 2 repeat_c over END ELSE: ENDCASE temps temps lindgen jpt REPEAT_c 1 1 temps 1 temps 0 temps jpt 1 ENDIF Selection of graphic s type taille size z2d case taille 0 of 2 : typdes 2d 1 : begin z1d z2d typdes 1d if keyword_set OV1D then begin yy z2d if n_elements datmin NE 0 then tempsmin date2jul datmin ELSE tempsmin temps 0 on shift l axe du temps pour des questions de precision sur les dates du calendier julien en long qui sont passes en float ds les axes xx temps tempsmin x range x range tempsmin x tickv x tickv tempsmin We do a false plot to apply these changes plot 0 0 noerase xstyle 5 ystyle 5 title subtitle ytitle xtitle goto trace1d endif end endcase We build the mask For that the table must be masked automaticaly done at the value valmask if we pass in moyenne or grossemoyenne nan total finite z2d nan z2d not very nice when xgridstyle 2 same if xticklen 0 5 not very nice in the middle so we draw the top right axis by hand using axis if n_elements ex NE 0 then BEGIN pour avoir un cadre de la couleur noire if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR 0 ENDIF plot 0 0 nodata noerase _extra ex xstyle 1 4 keyword_set endpoints AND type EQ xt AND lat1 NE lat2 8 type EQ yt OR type EQ zt ystyle 1 4 keyword_set endpoints AND type EQ yt 8 type EQ xt call axis for the missing axis IF type EQ xt AND NOT keyword_set endpoints THEN BEGIN if n_elements ex NE 0 then if where tag_names ex EQ YTICKNAME 0 NE 1 then ex YTICKNAME replicate n_elements ex YTICKNAME axis yaxis 1 ystyle 1 yticklen 0 ytickname replicate y ticks 1 _extra ex ENDIF IF type EQ yt OR type EQ zt AND NOT keyword_set endpoints THEN BEGIN if n_elements ex NE 0 then if where tag_names ex EQ XTICKNAME 0 NE 1 then ex XTICKNAME replicate n_elements ex XTICKNAME axis xaxis 1 xstyle 1 xticklen 0 xtickname replicate x ticks 1 _extra ex ENDIF ajout d un axe ds le cas ou l on utilise endpoints if keyword_set endpoints then addaxe endpoints type posfenetre _EXTRA ex color bar colnumb colnumb 0:ncontour 1 keyword_set strictfill barrecouleur colnumb min max ncontour keyword_set strictfill 2 position posbar _extra ex endif 1d trace1d: if typdes eq 1d then begin if not keyword_set col1d then col1d 0 if keyword_set sty1d then BEGIN if we want to make bars IF strlowcase strtrim sty1d EQ bar then begin y range y range 0 y range 1 y range 0 05 y range 1 bar_plot yy background d n_colors 1 not very nice when xgridstyle 2 same if xticklen 0 5 not very nice in the middle so we draw the top axis by hand using axis if n_elements ex NE 0 then BEGIN To have a black frame if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR 0 ENDIF plot 0 0 nodata noerase xstyle 1 8 1 keyword_set exchange_xy ystyle 1 8 keyword_set exchange_xy _extra ex call axis for the missing axis if n_elements ex NE 0 then BEGIN force tickname to blank array if where tag_names ex EQ YTICKNAME 0 NE 1 AND keyword_set exchange_xy then ex YTICKNAME replicate n_elements ex YTICKNAME if where tag_names ex EQ XTICKNAME 0 NE 1 AND NOT keyword_set exchange_xy then ex XTICKNAME replicate n_elements ex XTICKNAME ENDIF if keyword_set exchange_xy then axis yaxis 1 ystyle 1 yticklen 0 ytickname replicate y ticks 1 _extra ex ELSE axis xaxis 1 xstyle 1 xticklen 0 xtickname replicate x ticks 1 _extra ex ENDIF ELSE oplot xx yy color col1d linestyle sty1d thick 2 _extra ex endif fini: we reput time axis in IDL julian days and not in julian days count from tempsmin if type EQ xt then BEGIN y range y range tempsmin y tickv y tickv tempsmin ENDIF ELSE BEGIN x range x range tempsmin x tickv x tickv tempsmin ENDELSE We do a false plot to these values are considerated plot 0 0 nodata noerase xstyle 5 ystyle 5 title subtitle ytitle xtitle 3rd part: possible print terminedessin _extra ex if keyword_set savedbox THEN restoreboxparam boxparam4pltt dat if n_elements key_performance NE 0 then IF key_performance EQ 1 THEN print temps pltt systime 1 tempsun return end "); 255 a[253] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltz.html", "pltz.pro", "", " file_comments Trace vertical graphs categories Graphics param TAB The field whose we want to make a vertical cut can be 2 kind of thing: 1 An 2d or 3d array If the field is 2d indicate with the keyword BOXZOOM geographic delineations of the boxzoom If the field is 3d we extract the section on we average possibly before to do the plot 2 a structure respecting all criterions specified by litchamp pro See IDL xhelp litchamp The array contin in the structure must be 2 or 3d See case 1 ces arguments ne sont pas obligatoires: MAX: valeur maximum que l on veut prendre en compte dans le trace des contours Par defaut on prend le max de tab1 sur les pts mer MIN: valeur minimum que l on veut prendre en compte dans le trace des contours Par defaut on prend le min de tab1 sur les pts mer keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword CONTINTERVALLE When CONTOUR is activated it is the value between 2 isolines traced by a trait So it can be different from the one specified by INTERVALLE which in this case does not control colored isolines in color anymore If there is noone specified min we choose a contour min which goes well with the specified interval If this keyword is not specified we trace 20 isolines from the min to the max keyword CONTLABEL It is an integer n When CONTOUR is actvated if n is different of 0 choose the label type corresponding to n cases for the traced by a traitisolines To specify the type of label of the colored contour use LABEL keyword CONTMAX When CONTOUR is activated max value we want to consider in the isoline traced by a trait s line By default we take the max on ocean points of the array passed in the keyword CONTOUR keyword CONTMIN When CONTOUR is activated min value we want to consider in the isoline traced by a trait s line By default we take the min on ocean points of the array passed in the keyword CONTOUR keyword CONTNLEVEL When CONTOUR is activated it is the numbre of contours traced by a trait for drawing active if CONTLABEL 0 by default 20 keyword CONTOUR If we want to trace contours of a different field than the one whose we have the colored drawing by examlpe E P in color and QSR in contours It must be a field respecting same caracteristics than the argument number one of plt keyword ENDPOINTS keyword specifing that we want to make a vertical cut in diagonal Then coorinated of extremities of these one are difined by the 4 elements of the vector ENDPOINTS: x1 y1 x2 y2 which are coordinates keyword INTERVALLE Value of an internal between to isoline If there is none specified min we choose a min contour which goes well with the specified interval If this keyword is not specified we trace 20 isoline from the min to the max Comment: When CONTOUR is activated INTERVALLE only specify the interval between 2 colored isoline To specify the interval between 2 isolines traced by a trait use CONTINTERVALLE keyword INV Invert the color vector used to color the graph without use the black the white and the used palette keyword ZRATIO When the drawing has a zoomed part it is the size rapport between the zoomed part hz zoom height and the whole drawing ht total height By default 2 3 keyword LABEL It is an integer n If n different of 0 it choose the label s type corresponding to cases n cf label pro Comment: When CONTOUR is activated it only specify the label s type for colored isolines For tese one traced by a trait use CONTLABEL keyword MAXIN Allows to specify the max value we want to consider in the drawing of contour helping by the keyword instead of the argument max If the argument and the keyword are specified in the same time it is the value specified by the keyword which is retained keyword MININ Allows to specify the min value we want to consider in the drawing of contour helping by the keyword instead of the argument min If the argument and the keyword are specified in the same time it is the value specified by the keyword which is retained keyword NLEVEL Number of contour to draw by default 20 active if LABEL 0 or is not specified keyword NOTRI To force not to use the triangulation Beware in this case the drawing only works if the grid is undeformed It means that each point of a longitude give one latitude and each point of a latitude give one longitude exept if we use the keyword CELL_FILL 2 Comment: if the field contain points values f_nan then we even do a triangulation keyword OVERPLOT To make a plot over an other one Comment: Contrarily to the use of CONTOUR or VECTEUR the use of this keyword does not the caption and or the color bar keyword SIN Activate this keyword if we want the x axis to be traced in sinus of the latitude when we make a drawing f y keyword STRICTFILL Activate this keyword to that the filling of contours be precisely done between the min and the max specified letting values inferior at the specified min and values superior at the specified max in white keyword STYLE Contour s style to adopt to draw isolines by default style 0 see style pro keyword WDEPTH To specify that the field is at W depth instead of T depth automatically activated if vargrid eq W keyword XZ Force to make a cut following xz keyword YZ Force to make a cut following yz keyword ZOOM Depth where i can make our maximum zoom By default 200m or max depth if it is inferior at 200m uses common pro history Sebastien Masson smasson lodyc jussieu fr 7 1999 Sebastien Masson 08 02 2000 checkfield and notri keyword version Id: pltz pro 142 2006 07 21 12:47:49Z navarro todo seb L 20 26 L 215 221 pro pltz tab giventype givenmin givenmax BOXZOOM boxzoom CONTOUR contour ENDPOINTS endpoints INTERVALLE intervalle INV inv ZRATIO zratio CONTINTERVALLE contintervalle LABEL label CONTLABEL contlabel STYLE style CONTMAX contmax SIN sin TYPEIN typein CONTMIN contmin NLEVEL nlevel CONTNLEVEL contnlevel NOTRI notri USETRI usetri FILLXDIR fillxdir ZOOM zoom XZ xz YZ yz MININ minin MAXIN maxin STRICTFILL strictfill OVERPLOT overplot MASKFILL maskfill WDEPTH wdepth REALSECTION realsection _EXTRA ex include common compile_opt idl2 strictarrsubs cm_4mesh cm_4data cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 For key_performance 1st part: initialization small calculations Comment: we do not reinitializate when we call back plt in loop to use contour if n_elements contour ne 4 AND NOT keyword_set overplot then reinitplt if n_elements contour ne 4 THEN saveboxparam boxparam4pltz dat Reading of the field if n_elements giventype NE 0 then type giventype if n_elements givenmin NE 0 then min givenmin if n_elements givenmax NE 0 then max givenmax if n_elements minin NE 0 then min minin if n_elements maxin NE 0 then max maxin if n_elements realsection EQ 0 then realsection 1 IF n_elements usetri EQ 0 THEN BEGIN IF n_elements notri NE 0 THEN usetri 2 notri ELSE usetri 1 ENDIF no need of triangulation IF usetri EQ 1 AND keyword_set realsection THEN usetri 0 did we specify the type if keyword_set typein then BEGIN if size type type NE 7 AND size type type NE 0 then begin if n_elements min NE 0 then max min min type endif type typein ENDIF checktypeminmax pltz TYPE type MIN min MAX max XZ xz YZ yz ENDPOINTS endpoints _extra ex if keyword_set endpoints then begin section tab z2d glam gphi ENDPOINTS endpoints TYPE type BOXZOOM boxzoom DIREC direc WDEPTH wdepth _extra ex if z2d 0 EQ 1 AND n_elements contour ne 4 then BEGIN restoreboxparam boxparam4pltz dat return ENDIF nx n_elements glam ny nx if strupcase vargrid EQ W then begin gdep gdepw firstzw:lastzw nz nzw ENDIF ELSE BEGIN gdep gdept firstzt:lastzt nz nzt ENDELSE mask z2d LE valmask 10 ENDIF ELSE BEGIN z2d checkfield tab pltz TYPE type BOXZOOM boxzoom DIREC direc WDEPTH wdepth _extra ex if z2d 0 EQ 1 AND n_elements contour ne 4 then BEGIN restoreboxparam boxparam4pltz dat return ENDIF IF realsection EQ 1 THEN grille mask glam gphi gdep nx ny nz ifpltz type WDEPTH wdepth ELSE grille mask glam gphi gdep nx ny nz WDEPTH wdepth ENDELSE stop profmax y range 0 profmin y range 1 if not keyword_set zoom then zoom 200 zoom zoom 0 IF zoom LT profmin THEN zoom profmax if zoom GE vert2 then zoom profmax construction of the mask and of the axis axis4pltz type mask glam gphi gdep XXAXIS xxaxis ZZAXIS zzaxis SIN sin ZRATIO zratio ZOOM zoom PROFMAX profmax PROFMIN profmin _extra ex to draw from bottom to top avoid using cell_fill z2d reverse z2d 2 Determination of the mi:min and of the ma:max of z2d in the same way as max: max and min: min for the drawing nan total finite z2d nan z2d max if n_elements maskfill NE 0 then BEGIN z2d z2d mask masknan if maskfill NE 0 then z2d temporary z2d maskfill 1b mask masknan ENDIF check the mask and the triangulation according to the grid type and nan values find the coordinates of the mask if where mask EQ 0 0 EQ 1 AND NOT keyword_set nan then notri 1 if keyword_set notri then trifield 1 ELSE trifield triangule mask basic if usetri GE 1 AND vargrid EQ T OR vargrid EQ W OR usetri EQ 2 AND vargrid NE T AND vargrid NE W THEN trifield triangule mask basic IF NOT keyword_set endpoints THEN BEGIN if keyword_set nan then trinan triangule masknan basic coinmonte coinmontenan coindescend coindescendnan decoupeterre mask glammsk gphimsk gdepmsk type type WDEPTH wdepth REALSECTION realsection axis4pltz type mask glammsk gphimsk gdepmsk XXAXIS xmask ZZAXIS zmask SIN sin ZRATIO zratio ZOOM zoom PROFMAX profmax PROFMIN profmin _extra ex ENDIF ELSE BEGIN xmask xxaxis zmask zzaxis ENDELSE if usetri GE 1 AND vargrid NE T AND vargrid NE W THEN BEGIN IF keyword_set realsection THEN trimsk triangule mask basic ELSE trimsk triangule mask basic coinmonte coinmontemask coindescend coindescendmask ENDIF dessin en lui meme pltbase z2d xxaxis zzaxis mask xmask zmask level_z2d colnumb overplot overplot contour contour trichamp trifield trimsk trimsk c_linestyle linestyle c_labels 1 indgen n_elements level_z2d MOD 2 c_thick thick unsur2 unsur2 masknan masknan trinan trinan coinmontenan coinmontenan coindescendnan coindescendnan coinmontemask coinmontemask coindescendmask coindescendmask REALSECTION realsection USETRI usetri _extra ex recall of pltz in loop when contour is activated if n_elements contour eq 4 then BEGIN It is the second time I pass in pltt contour mietma: mi ma unit:varunit inter:intervalle I send back the min the max and the unity return endif if keyword_set contour THEN BEGIN pourlegende 1 1 1 1 oldattributs saveatt oldcolnumb colnumb pltz contour contmin contmax CONTOUR pourlegende ZRATIO zratio INTERVALLE contintervalle LABEL contlabel STYLE style noerase NLEVEL contnlevel ZOOM zoom BOXZOOM boxzoom ENDPOINTS endpoints STRICTFILL strictfill REALSECTION realsection MASKFILL maskfill USETRI usetri WDEPTH wdepth _extra ex restoreatt oldattributs colnumb oldcolnumb ENDIF 3rd part: drawing of the frame caption colorbar if keyword_set overplot then BEGIN y range zoom profmin We get back on physic coordinates plot 0 0 nodata noerase title subtitle xstyle 5 ystyle 5 GOTO fini endif Caption dysplay of them legende mi ma type CONTOUR pourlegende INTERVALLE intervalle DIREC direc endpoints endpoints _EXTRA ex if type eq yz then xaxe lataxe else xaxe lonaxe if keyword_set sin OR NOT key_onearth then xaxe Frame applied by default plot xxaxis 0 xxaxis n_elements xxaxis 1 zratio zratio noerase xstyle 1 4 keyword_set endpoints AND type EQ xz AND lat1 NE lat2 OR type EQ yz AND lon1 NE lon2 xtickformat xaxe _extra ex Add of an axis in the case of we use endpoints if keyword_set endpoints then addaxe endpoints type posfenetre _EXTRA ex Y axis in 1 or 2 part if n_elements ex NE 0 then BEGIN To do not put title anymore if where tag_names ex EQ TITLE 0 NE 1 then ex TITLE To do not put subtitle anymore if where tag_names ex EQ SUBTITLE 0 NE 1 then ex SUBTITLE To have just one ytitle if where tag_names ex EQ YTITLE 0 NE 1 then BEGIN ytitle ex YTITLE ex YTITLE endif ENDIF htotal posfenetre 3 posfenetre 1 hzoom 1 zratio htotal if zoom LT profmax then plot 0 0 nodata noerase ystyle 1 yrange profmax zoom 0 001 position posfenetre 0 0 0 hzoom _extra ex title subtitle ytitle y range zoom profmin We get back in physic coordinates plot 0 0 nodata noerase ystyle 1 _extra ex title subtitle ytitle position posfenetre 0 htotal hzoom 0 0 to write the ytitle if d name EQ PS then xs max page_size min mi 1 key_portrait mi key_portrait d x_px_cm ELSE xs d x_size if n_elements ytitle NE 0 then y title ytitle charsize chkstru ex ycharsize extract if charsize EQ 1 then charsize p charsize IF chkstru ex charsize THEN ex charsize charsize if chkstru ex ytitle extract NE then decalage string format e10 3 profmax decalage float strmid decalage strpos decalage e 1 posy posfenetre 1 1 htotal 2 posx posfenetre 0 decalage 3 d x_ch_size charsize xs xyouts posx posy y title normal orientation 90 color 0 ALIGNMENT 5 charsize charsize _extra ex colorbar colnumb colnumb 0:ncontour 1 keyword_set strictfill barrecouleur colnumb min max ncontour keyword_set strictfill 2 position posbar _extra ex 4th part: possible print fini: terminedessin _extra ex sortie: restoreboxparam boxparam4pltz dat if keyword_set key_performance NE 0 THEN print temps pltz systime 1 tempsun return end "); 256 a[254] = new Array("./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html", "sbar_plot.pro", "", " file_comments Same thing that bar_plot but compatible with the whole environnement common pro inclued categories graphics INPUTS: cd IDL bar_plot keyword COLORS A vector the same size as VALUES containing the color index to be used for each bar If not specified the colors are selected based on spacing the color indices as widely as possible within the available colors specified by D N_COLORS keyword COLORS Is an integer giving color of all colorbars contrarily to colors which is a vector giving the color of each colorbar keyword NOREINITPLT We active it if we do not want environnement variables p x y z to be reinitilalizted by the procedure reinitplt keyword _EXTRA used to pass your keyword uses common pro restrictions If NOREINITPLT is not activated all environnement variables p x y z are reinitializtedby the procedure reinitplt examples IDL sbar_plot indgen 10 small 2 2 2 rempli IDL sbar_plot indgen 10 small 2 2 3 noerase IDL ps history Sebastien Masson smasson lodyc jussieu fr 10 10 1999 version Id: sbar_plot pro 142 2006 07 21 12:47:49Z navarro PRO sbar_plot Values COLORS colors NOREINITPLT noreinitplt _extra ex compile_opt idl2 strictarrsubs common 1 I reinitialize the graphic environment variables x y et p : if NOT keyword_set NOREINITPLT then reinitplt _extra ex 2 I place the drawing on the screen like on the postscript IF chkstru ex overplot EQ 0 THEN placedessin autre _extra ex 3 Drawing if n_elements COLORS NE 0 then BEGIN if n_elements COLORS EQ n_elements Values then col colors ELSE col replicate colors 0 n_elements Values ENDIF ELSE col congrid indgen d n_colors 256 n_elements Values bar_plot Values background p background colors col xstyle 1 ystyle 1 _extra ex 4 End of drawing terminedessin _extra ex return end"); 257 a[255] = new Array("./ToBeReviewed/PLOTS/DESSINE/scontour.html", "scontour.pro", "", " File_comments Same thing that contour but compatible with the whole environnement common pro inclued categories graphics INPUTS:cd IDL contour keyword NOREINITPLT We active it if we do not want environnement variables p x y z to be reinitilalizted by the procedure reinitplt keyword _EXTRA used to pass your keywords uses common pro examples IDL z dist 100 IDL scontour z nlevels 10 small 1 2 1 xstyle 1 ystyle 1 IDL ps history Sebastien Masson smasson lodyc jussieu fr 10 10 1999 version Id: scontour pro 142 2006 07 21 12:47:49Z navarro PRO scontour x y z NOREINITPLT noreinitplt _EXTRA ex compile_opt idl2 strictarrsubs common 1 I reinitializate the graphic environment variables x y et p : if NOT keyword_set NOREINITPLT then reinitplt _extra ex 2 i put the drawing on the screen like on the postcript if ex contains norease and c_orientation keywords we force ex noerase 0 IF chkstru ex overplot EQ 0 THEN placedessin autre _extra ex fiddle when noerase is used with c_orentation call contour with nodata to get the graphic environment then force noerase 0 and overplot 1 IF size ex type EQ 8 THEN BEGIN check if noerase is used with c_orentation alltags strlowcase tag_names ex dummy where alltags EQ noerase count1 dummy where alltags EQ c_orientation count2 IF count1 count2 NE 0 THEN BEGIN case n_params OF 1:contour x nodata _EXTRA ex 2:contour x y nodata _EXTRA ex 3:contour x y z nodata _EXTRA ex endcase ex noerase 0 ex get_extra overplot _extra ex noerase_orientation 1 ENDIF ENDIF 3 je fais mon joli dessin case n_params OF 1:contour x xstyle 1 ystyle 1 _EXTRA ex 2:contour x y xstyle 1 ystyle 1 _EXTRA ex 3:contour x y z xstyle 1 ystyle 1 _EXTRA ex ENDCASE fiddle when noerase is used with c_orentation draw the contour axis IF keyword_set noerase_orientation THEN BEGIN ex noerase 1 ex overplot 0 case n_params OF 1:contour x xstyle 1 ystyle 1 nodata _EXTRA ex 2:contour x y xstyle 1 ystyle 1 nodata _EXTRA ex 3:contour x y z xstyle 1 ystyle 1 nodata _EXTRA ex ENDCASE ENDIF 4 End of drawing terminedessin _extra ex return end"); 258 a[256] = new Array("./ToBeReviewed/PLOTS/DESSINE/splot.html", "splot.pro", "", " file_comments Same thing that plot but compatible with the whole environnement common pro inclued categories graphics INPUTS:cd IDL plot keyword NOREINITPLT We active it if we do not want environnement variables p x y z to be reinitilalizted by the procedure reinitplt keyword _EXTRA used to pass your keywords uses common pro restrictions If NOREINITPLT is not activated all environnement variables p x y z are reinitializtedby the procedure reinitplt examples IDL splot indgen 10 ystyle 1 small 1 2 1 portrait IDL splot indgen 10 ystyle 1 small 1 2 2 noerase IDL ps history Sebastien Masson smasson lodyc jussieu fr 18 10 1999 version Id: splot pro 142 2006 07 21 12:47:49Z navarro PRO splot x y NOREINITPLT noreinitplt _EXTRA ex compile_opt idl2 strictarrsubs common 1 I reinitializate the graphic environment les variables x y et p : if NOT keyword_set NOREINITPLT then reinitplt _extra ex 2 i put the drawing on the screen like on the postcript placedessin autre _extra ex 3 Drawing if n_elements y EQ 0 then plot x xstyle 1 ystyle 1 _EXTRA ex ELSE plot x y xstyle 1 ystyle 1 _EXTRA ex 4 End of drawing terminedessin _extra ex return end"); 259 a[257] = new Array("./ToBeReviewed/PLOTS/DESSINE/tvplus.html", "tvplus.pro", "", " file_comments Enhanced version of tvscl categories quick exploration of 2D arrays INPUTS: param Z2D in required 2D array to visualize param CELLSIZE in optiona This is the size in pixel of the square representing 1 array element By default this size is computed automatically in order that the size of the plotting window do not exceed the screen size If the user specify a large value of cellsize that forces tvplus to create a window larger than the screen a scrolling window will be displayed instead of a regular window Unfortunately the nice fonctionnalities of tvplus are not coded for scrolling window case keyword BOTTOM The lowest color index of the colors to be loaded in the bar default is 0 keyword C_NAN The color number that should be used for the NaN values default value is d n_colors 1 e6 the test to find the masked value is ge abs mask 10 This is necessary to avoid the rounding errors keyword MIN Scalar used to specify the min value of the color bar default is 0 keyword MAX Scalar used to specify the max value of the color bar default is d n_colors tvplus dist 100 history Sebastien Masson smasson lodyc jussieu fr 18 12 98 Aug 2005: quick cleaning english version Id: tvplus pro 142 2006 07 21 12:47:49Z navarro PRO tvplus z2d cellsize BOTTOM bottom C_MASK c_mask C_NAN c_nan WINDOW window MIN min MAX max MASK mask OFFSET offset NOUSEINFOS NOUSEINFOS NCOLORS ncolors NOINTERP nointerp _EXTRA ex compile_opt idl2 strictarrsubs IF n_elements z2d EQ 0 THEN return arr reform float z2d check the size of the input array if size arr 0 NE 2 then begin ras report Input array must have only 2 dimensions and not strtrim size arr n_dimensions 1 return endif def of ncolmax bottom topcol et ncolors ncolmax d n_colors arr truemin min ENDIF ELSE truemin min arr if n_elements max NE 0 then BEGIN arr arr floor x cellsize floor y cellsize floor x cellsize floor y cellsize floor x2 cellsize floor y2 cellsize size arr 2 cellsize 1 x x x2 x x sort x y y y2 y y sort y IF keyword_set OFFSET THEN offset x 0 y 0 offset ELSE offset x 0 y 0 tvplus z2d x 0 :x 1 y 0 :y 1 WINDOW window MIN min MAX max MASK mask C_MASK c_mask C_NAN c_nan NOUSEINFOS OFFSET OFFSET NCOLORS ncolors NOINTERP nointerp BOTTOM bottom _EXTRA ex return END ELSE: endcase ENDWHILE x xenvsauve y yenvsauve p penvsauve x range 1 0 nx cellsize 5 offset 0 y range 1 0 ny cellsize 5 offset 1 return end"); 260 a[258] = new Array("./ToBeReviewed/PLOTS/DIVERS/addaxe.html", "addaxe.pro", "", " file_comments Add an axis when we do an oblique section in pltz pltt or plt1d categories graphic param ENDPOINTS in required Coordonnees of extremities of the section param TYPE in required A string of two characters specifying the type of plot we do param POSFENETRE in required The vector p position corresponding to the frame position of the drawing part of the plot uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: addaxe pro 142 2006 07 21 12:47:49Z navarro PRO addaxe endpoints type posfenetre _EXTRA ex compile_opt idl2 strictarrsubs common IF strpos type x NE 1 THEN BEGIN IF endpoints 1 EQ endpoints 3 THEN return IF key_onearth THEN BEGIN formeaxe0 lonaxe formeaxe1 lataxe titreaxe latitude ENDIF ELSE BEGIN formeaxe0 formeaxe1 titreaxe j index ENDELSE range endpoints 1 endpoints 3 if endpoints 2 LT endpoints 0 THEN range reverse range ENDIF ELSE BEGIN IF endpoints 0 EQ endpoints 2 THEN return IF key_onearth THEN BEGIN formeaxe0 lataxe formeaxe1 lonaxe titreaxe longitude ENDIF ELSE BEGIN formeaxe0 formeaxe1 titreaxe i index ENDELSE range endpoints 0 endpoints 2 if endpoints 3 LT endpoints 1 THEN range reverse range ENDELSE if type EQ yt then BEGIN axis yaxis 0 ytickformat formeaxe0 color 0 ystyle 1 _EXTRA ex axis yaxis 1 ytickformat formeaxe1 color 0 ystyle 1 ytitle titreaxe yrange range _EXTRA ex ENDIF ELSE BEGIN axis xaxis 0 xtickformat formeaxe0 color 0 xstyle 1 _EXTRA ex axis xaxis 1 xtickformat formeaxe1 color 0 xstyle 1 xtitle titreaxe xrange range _EXTRA ex ENDELSE return end"); 261 a[259] = new Array("./ToBeReviewed/PLOTS/DIVERS/autoscale.html", "autoscale.pro", "", " file_comments We give a min and a max and the procedure send back the good contour interval and labels s value categories graphic param MIN in required A reel number specifying above what value we want to trace a contour param MAX in required A reel number specifying below what value we want to trace a contour param CI out It is a reel number giving the contour interval Use it in CONTOUR with the keyword LEVEL restrictions CI is a multiple of the unity in unity log of 10 It force the number of contour to be even history G Roullet aout 99 gr lodyc jussieu fr version Id: autoscale pro 142 2006 07 21 12:47:49Z navarro PRO autoscale min max ci Estimation of a first CI notice the presence of the floor Inferior round This CI is a multiple of the unity in unity log of 10 compile_opt idl2 strictarrsubs ci max min 20 ci 10 floor alog10 ci n 0 ci0 ci coef 2 2 5 5 10 We test differents CI contour intervals i e 1 2 2 5 5 and 10 until the number of contour is inferior to 30 WHILE ceil max min ci GE 30 DO BEGIN ci ci0 coef n n n 1 ENDWHILE min floor min ci 2 ci 2 max ceil max ci 2 ci 2 nlevels round max min ci We force the number of contour to be even IF nlevels MOD 2 EQ 1 THEN BEGIN nlevels nlevels 1 max max ci END END "); 262 a[260] = new Array("./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html", "axis4pltz.pro", "", " file_comments compute the mask and the axis for a vertical section param MASK in required 3d mask param GLAM in required 2d longitude param GPHI in required 2d latitude param Z in required 1d depth keyword XXAXIS to get the xaxis we need to use in pltbase keyword ZZAXIS to get the yaxis we need to use in pltbase keyword SIN Activate this keyword if we want the x axis to be traced in sinus of the latitude when we make a drawing f y keyword ZRATIO When the drawing has a zoomed part it is the size rapport between the zoomed part hz zoom height and the whole drawing ht total height By default 2 3 keyword _EXTRA used to pass your keywords Others: see pltz history Sebastien Masson smasson lodyc jussieu fr June 24 2002 version Id: axis4pltz pro 142 2006 07 21 12:47:49Z navarro PRO axis4pltz type mask glam gphi z XXAXIS xxaxis ZZAXIS zzaxis SIN sin ZRATIO zratio ZOOM zoom PROFMAX profmax PROFMIN profmin _extra ex include common compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatekwd ENDIF define the mask used for this section if mask 0 NE 1 AND size mask 0 NE 2 then begin if type EQ xz then mask total mask 2 1 ELSE mask total mask 1 1 endif define xxaxis and yyaxis the axis used for this section nx size glam 1 CASE size gphi 0 OF 1:ny size gphi 1 2:ny size gphi 2 ENDCASE CASE size z 0 OF 1:nz size z 1 2:nz size z 2 ENDCASE if type eq yz then BEGIN IF size gphi 0 EQ 1 then xxaxis gphi ELSE BEGIN IF keyword_set key_irregular THEN BEGIN cln where gphi EQ max gphi 0 xxaxis reform gphi cln MOD nx ENDIF ELSE xxaxis reform gphi 0 ENDELSE if keyword_set sin then xxaxis sin pi 180 xxaxis if size z 0 EQ 1 THEN zzaxis z ELSE zzaxis z ENDIF ELSE BEGIN xxaxis glam 0 if size z 0 EQ 1 then zzaxis z ELSE zzaxis z ENDELSE We project the z axis in 0 1 if not keyword_set zratio then zratio 2 3 if zoom ge profmax then zratio 1 if zoom LT profmax then begin mp projsegment profmin zoom 0 zratio mp zzaxis where zzaxis LE zoom mp 0 zzaxis where zzaxis LE zoom mp 1 mp projsegment zoom profmax zratio 1 mp zzaxis where zzaxis GE zoom mp 0 zzaxis where zzaxis GE zoom mp 1 ENDIF ELSE BEGIN mp projsegment profmin profmax 0 1 mp zzaxis mp 0 zzaxis mp 1 ENDELSE to draw from bottom to top avoid using cell_fill CASE size zzaxis n_dimensions OF 1:zzaxis reverse zzaxis 2:zzaxis reverse zzaxis 2 ENDCASE if mask 0 NE 1 then mask reverse mask 2 return end"); 263 a[261] = new Array("./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html", "barrecouleur.pro", "", " file_comments Overlayeur of colorbar categories utilities restrictions pass all argument we want thanks to _extra history Sebastien Masson smasson lodyc jussieu fr 23 12 98 version Id: barrecouleur pro 142 2006 07 21 12:47:49Z navarro todo seb: mettre les keyword et les param PRO barrecouleur colnumb clbinf clbsup clbdiv NOCOLORBAR nocolorbar CB_TITLE cb_title NOFILL nofill COLOR_c color_c min min max max divisions divisions CB_SUBTITLE cb_subtitle POST post _extra ex compile_opt idl2 strictarrsubs cm_general IF NOT keyword_set key_forgetold THEN BEGIN updatekwd ENDIF if keyword_set min then clbinf min if keyword_set max then clbsup min if keyword_set divisions THEN clbdiv divisions nocolorbar keyword_set nocolorbar keyword_set nofill keyword_set color_c def_myuniquetmpdir IF lmgr demo EQ 1 THEN BEGIN if we are in demo mode we cannot save the parameters in a temporary file cm_demomode_used colorbarparam colnumb:colnumb clbinf:clbinf clbsup:clbsup clbdiv:clbdiv ENDIF ELSE BEGIN save colnumb clbinf clbsup clbdiv file myuniquetmpdir 4colorbar dat ENDELSE if keyword_set nocolorbar then return ancienx x ancieny y ancienp p reinitplt x style 1 y style 1 colorbar cb_color 0 cb_charsize ancienp charsize pscolor keyword_set post division clbdiv min clbinf max clbsup cb_title cb_title discret colnumb _extra ex x ancienx y ancieny p ancienp return end"); 264 a[262] = new Array("./ToBeReviewed/PLOTS/DIVERS/checkfield.html", "checkfield.pro", "", "FUNCTION err_1d type n1 name n2 compile_opt idl2 strictarrsubs return report Error in type type plot with a 1D input array: the number of elements of the input vector strtrim n1 1 is not equal to name strtrim n2 1 simple END FUNCTION err_2d type sz nx ny nz compile_opt idl2 strictarrsubs cm_4mesh cm_4cal return report Error in type type plot with a 2D input array: the array dimensions tostr sz 1:2 are incompatible with the the domain dimensions jpi nx jpj ny jpk nz jpt strtrim jpi 1 strtrim nx 1 strtrim jpj 1 strtrim ny 1 strtrim jpk 1 strtrim nz 1 strtrim jpt 1 simple END FUNCTION err_3d type sz nx ny nz compile_opt idl2 strictarrsubs cm_4mesh cm_4cal return report Error in type type plot with a 3D input array: the array dimensions tostr sz 1:3 are incompatible with the the domain dimensions jpi nx jpj ny jpk nz jpt strtrim jpi 1 strtrim nx 1 strtrim jpj 1 strtrim ny 1 strtrim jpk 1 strtrim nz 1 strtrim jpt 1 simple END file_comments In input of plt pltz pltt and plt1d it check that the field give a size compatible with the domain and if needed average to give us a 2d array if we make a plot of the type: xy xz xt yz yt zt or a 1d array if we make a plot of the type: x y z t categories graphic param FIELD in required A field respecting litchamp pro s criterions See IDL xhelp litchamp keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword WDEPTH to specify that the field is at W depth instad of T depth automatically activated if vargrid eq W keyword VECTEUR It is a structure composed by 2 elements containing the 2 fields U and V of values of the zonal and meridian component of the vector of the fields to draw These fields can be an array or a structure For example: vecteur matriceu:lec unsurface matricev:lec vnsurface Comment: name of elements of vectors are inconsenquential vecteur u:lec unsurface v:lec vnsurface is also appropriated keyword _EXTRA used to pass your keywords keyword DIREC uses common pro history Sebastien Masson smasson lodyc jussieu fr 08 02 2000 version Id: checkfield pro 142 2006 07 21 12:47:49Z navarro todo seb: mettre les param FUNCTION checkfield field procedure TYPE type BOXZOOM boxzoom DIREC direc NOQUESTION noquestion VECTEUR vecteur WDEPTH wdepth _EXTRA ex compile_opt idl2 strictarrsubs include commons cm_4mesh cm_4cal cm_4data IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF I1 Reading of the field if n_elements field EQ 0 then return report field undefined arr litchamp field first check IF n_elements arr EQ 1 THEN BEGIN if arr EQ 1 then return report Error: input array 1 Maybe the reading did ont perform well simple ELSE return report Error: input array is a scalar simple ENDIF nan total finite arr nan firstzw 1 lastzw lastzw 1 firstzt 1 lastzt lastzt 1 jpk 1 nzt lastzt firstzt 1 ENDELSE updateold ENDIF make the automatic definition of type for pltz if type is not specified IF type EQ z AND procedure EQ pltz THEN if lon2 lon1 gt lat2 lat1 then type xz else type yz make the automatic definition of type for pltt if type is not specified IF type EQ unkownpltt AND procedure EQ pltt THEN if lon2 lon1 gt lat2 lat1 then type xt else type yt verification of the input array size and the value of the type grille 1 1 1 1 nx ny nz firstx firsty firstz lastx lasty lastz WDEPTH wdepth basic checks CASE 1 OF nx EQ 1: IF strpos type x NE 1 THEN return report Error: impossible to make a type type plot with nx 1 simple ny EQ 1: IF strpos type y NE 1 THEN return report Error: impossible to make a type type plot with ny 1 simple nz EQ 1: IF strpos type z NE 1 THEN return report Error: impossible to make a type type plot with nz 1 simple jpt EQ 1: IF strpos type t NE 1 THEN return report Error: impossible to make a type type plot with jpt 1 simple ELSE: ENDCASE is the size of the array compatible with teh domain arr fitintobox temporary arr nx ny nz firstx firsty firstz lastx lasty lastz sz size arr case sz 0 of 0:return arr 1:BEGIN nele n_elements arr case type of t :if jpt NE nele THEN return err_1d type nele jpt jpt x :IF nx NE nele THEN return err_1d type nele nx nx y :IF ny NE nele THEN return err_1d type nele ny ny z :IF nz NE nele THEN return err_1d type nele nz nx ELSE:return report Error: Impossible to make a type plot with a 1D array simple ENDCASE END 2:BEGIN case type of x :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny:direc y xy array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz:direc z x y z array sz 1 EQ nx AND sz 2 EQ jpt:direc t xt array ELSE:return err_2d type sz nx ny nz endcase end y :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny:direc x xy array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz:direc z x yz array sz 1 EQ ny AND sz 2 EQ jpt:direc t yt array ELSE:return err_2d type sz nx ny nz endcase END z :BEGIN case 1 of sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz:direc x x y z array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz:direc y x yz array sz 1 EQ nz AND sz 2 EQ jpt:direc t zt array ELSE:return err_2d type sz nx ny nz endcase END t :BEGIN case 1 OF sz 1 EQ nx AND sz 2 EQ jpt:direc x xt array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ jpt:direc y x yt array nx EQ 1 AND ny EQ 1 AND sz 1 EQ nz AND sz 2 EQ jpt:direc z x y zt array ELSE:return err_2d type sz nx ny nz ENDCASE END xy :IF sz 1 NE nx OR sz 2 ne ny THEN return err_2d type sz nx ny nz xy array xz :IF sz 1 NE nx OR sz 2 ne nz THEN return err_2d type sz nx ny nz xz array yz :IF sz 1 NE ny OR sz 2 NE nz THEN return err_2d type sz nx ny nz yz array xt :IF sz 1 NE nx OR sz 2 NE jpt THEN return err_2d type sz nx ny nz xt array yt :IF sz 1 NE ny OR sz 2 NE jpt THEN return err_2d type sz nx ny nz yt array zt :IF sz 1 NE nz OR sz 2 NE jpt THEN return err_2d type sz nx ny nz zt array ENDCASE END 3:BEGIN case type of x :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc yz xyz array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc zt x y zt array sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc yt xyt array ELSE:return err_3d type sz nx ny nz endcase END y :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc xz xyz array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc zt x yzt array sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc xt xyt array ELSE:return err_3d type sz nx ny nz endcase END z :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc xy xyz array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc yt x yzt array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc xt x y zt array ELSE:return err_3d type sz nx ny nz endcase END t :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc xy xyt array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc yz x yzt array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc xz x y zt array ELSE:return err_3d type sz nx ny nz endcase END xy :BEGIN case 1 OF sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc z xyz array sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc t xyt array ELSE:return err_3d type sz nx ny nz endcase END xz :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc y xyz array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc t x y zt ELSE:return err_3d type sz nx ny nz endcase END yz :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc x xyz array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc t x yzt ELSE:return err_3d type sz nx ny nz endcase END xt :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc y xyt array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc z x y zt array ELSE:return err_3d type sz nx ny nz endcase END yt :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc x xyt array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc z x yzt array ELSE:return err_3d type sz nx ny nz endcase END zt :BEGIN case 1 of sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc x x y zt array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc y x yzt array ELSE:return err_3d type sz nx ny nz ENDCASE END ENDCASE END 4:BEGIN CASE type OF x :direc yzt y :direc xzt z :direc xyt t :direc xyz xy :direc zt xz :direc yt yz :direc xt xt :direc yz yt :direc xz zt :direc xy ENDCASE END ENDCASE IF keyword_set direc THEN BEGIN IF strpos direc t NE 1 OR strpos type t NE 1 THEN arr grossemoyenne temporary arr direc boxzoom localbox NAN nan NODOMDEF WDEPTH wdepth _extra ex ELSE arr moyenne temporary arr direc boxzoom localbox NAN nan NODOMDEF WDEPTH wdepth _extra ex ENDIF RETURN arr END"); 265 a[263] = new Array("./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html", "checktypeminmax.pro", "", " NAME: PURPOSE: CATEGORY: CALLING SEQUENCE: INPUTS: KEYWORD PARAMETERS: OUTPUTS: COMMON BLOCKS:common pro SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr todo seb PRO checktypeminmax procedure TYPE type MIN min MAX max XY xy XZ xz YZ yz XT XT YT YT ZT zt TT tt XX xx YY yy ZZ zz XINDEX xindex YINDEX yindex ENDPOINTS endpoints _extra ex compile_opt idl2 strictarrsubs common case size type type of 0: 7: ELSE:BEGIN vraimin type case size min type of 0:BEGIN min vraimin type 0 END 7:BEGIN type min min vraimin end ELSE:BEGIN case size max type of 0:BEGIN max min min vraimin type 0 END 7:BEGIN type max max min min vraimin end ELSE:BEGIN rien report Probleme dans la definition des arguments en entree de procedure chkwidget return end endcase end endcase end endcase if keyword_set xy then type xy if keyword_set xz then type xz if keyword_set yz then type yz if keyword_set xt then type xt if keyword_set yt then type yt if keyword_set zt then type zt if keyword_set tt then type t if keyword_set xx then type x if keyword_set yy then type y if keyword_set zz then type z if keyword_set type then begin if type EQ plt then type if type EQ pltz then type if type EQ pltt then type if type EQ plt1d then type endif determination du type de plot que l on veut faire if NOT keyword_set type then BEGIN case procedure of plt :type xy pltz :BEGIN if keyword_set endpoints then BEGIN lon1 min endpoints 0 endpoints 2 max lon2 lat1 min endpoints 1 endpoints 3 max lat2 if lon2 lon1 gt lat2 lat1 then type xz else type yz ENDIF ELSE type z END pltt :BEGIN if keyword_set endpoints then BEGIN lon1 min endpoints 0 endpoints 2 max lon2 lat1 min endpoints 1 endpoints 3 max lat2 lat2 max endpoints 1 endpoints 3 if lon2 lon1 gt lat2 lat1 then type xt else type yt ENDIF ELSE type unkownpltt END plt1d :BEGIN if keyword_set endpoints then BEGIN lon1 min endpoints 0 endpoints 2 max lon2 lat1 min endpoints 1 endpoints 3 max lat2 if lon2 lon1 gt lat2 lat1 then type x else type y ENDIF ELSE BEGIN type WHILE type NE x AND type NE y AND type NE z DO BEGIN type xquestion Quel type de plot 1D voulez vous faire x y z ou t chkwidget type strlowcase type endwhile ENDELSE END endcase ENDIF WHILE type NE xy AND type NE xz AND type NE yz AND type NE xt AND type NE yt AND type NE zt AND type NE t AND type NE x AND type NE y AND type NE z AND type NE unkownpltt DO BEGIN type xquestion What kind of plot do you want to do xy xz yz xt yt zt t x y z chkwidget type strlowcase type ENDWHILE return end"); 266 a[264] = new Array("./ToBeReviewed/PLOTS/DIVERS/determineminmax.html", "determineminmax.pro", "", " file_comments Determine the min and the max of a mask array categories Lightening of the writting of plt pltz and pltt param TAB in required The array whose we determine the min and the max param MASK in required The mask array keyword MININ It is a scalar which if it is not defined take the value of VRAIMIN keyword MAXIN It is a scalar which if it is not defined take the value of VRAIMAX keyword ZEROMIDDLE Force the middle of the colorbar to be equal to 0 force max max abs min max and min max keyword _EXTRA used to pass your keywords keyword USETRI To force using triangulation param VRAIMIN out The min of the array param VRAIMAX out The max of the array uses Common pro restrictions Look if the field is constant on the sea history Sebastien Masson smasson lodyc jussieu fr 11 12 98 version Id: determineminmax pro 142 2006 07 21 12:47:49Z navarro todo seb: manque les param glam et gphi PRO determineminmax tab mask vraimin vraimax glam gphi MAXIN maxin MININ minin INTERVALLE intervalle usetri usetri ZEROMIDDLE zeromiddle _extra ex compile_opt idl2 strictarrsubs common Type o fthe vertical grid: if vargrid EQ W then nz nzw ELSE nz nzt liste des points mer if size mask 0 EQ 3 then mer mask 0 ELSE mer mask If key_irregular eq 1 we mask also points which are not in the geographic domain defined by lon1 lon2 lat1 lat2 if keyword_set key_irregular AND n_elements glam NE 0 AND n_elements gphi NE 0 then begin dom where glam LT lon1 OR glam GT lon2 OR gphi LT lat1 OR gphi GT lat2 if dom 0 NE 1 then mer dom 0 endif mer where mer eq 1 if mer 0 eq 1 then begin ras report Il n y a que de la terre sur le dessin vraimax 0 vraimin 0 maxin vraimax 1 minin vraimin 1 usetri 0 return endif ma and mi : max and min on ocean points vraimax max tab mer min vraimin _extra ex sameminmax testvar var minin EQ testvar var maxin if n_elements maxin EQ 0 OR sameminmax then maxin vraimax if n_elements minin EQ 0 OR sameminmax then BEGIN if keyword_set intervalle then minin floor vraimin intervalle intervalle ELSE minin vraimin endif if vraimin eq vraimax then BEGIN IF size vraimin type EQ 1 THEN vraimin fix vraimin question Warning: constant filed same value everywhere : strtrim vraimin 2 Shall we make the plot answer report question default_no question if answer then begin maxin vraimax 1 minin vraimin 1 endif ELSE tab 1 ENDIF IF keyword_set zeromiddle THEN BEGIN maxin max abs minin maxin minin maxin ENDIF return end"); 267 a[265] = new Array("./ToBeReviewed/PLOTS/DIVERS/givewindowsize.html", "givewindowsize.pro", "", " todo seb FUNCTION givewindowsize include commons compile_opt idl2 strictarrsubs cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF dimensions get_screen_size RESOLUTION resolution coef floor 1 resolution 0 if NOT keyword_set windowsize_scale then BEGIN windowsize_scale 1 IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF ENDIF coef windowsize_scale coef mipgsz min page_size max mapgsz xsize coef mipgsz key_portrait mapgsz 1 key_portrait ysize coef mipgsz 1 key_portrait mapgsz key_portrait return xsize ysize end"); 268 a[266] = new Array("./ToBeReviewed/PLOTS/DIVERS/meridienparallele.html", "meridienparallele.pro", "", " file_comments Trace some meridians or parallel categories graphic param COUPE The type of drawing we treat uses common pro history Sebastien Masson smasson lodyc jussieu fr 11 12 98 version Id: meridienparallele pro 142 2006 07 21 12:47:49Z navarro PRO meridienparallele coupe compile_opt idl2 strictarrsubs common case coupe of xy :BEGIN if lon1 lt 180 and lon2 gt 180 then plot 180 180 lat1 lat2 noerase color 0 if lon1 lt 0 and lon2 gt 0 then plot 0 0 lat1 lat2 noerase color 0 if lon1 lt 360 and lon2 gt 360 then plot 360 360 lat1 lat2 noerase color 0 if lat1 lt 0 and lat2 gt 0 then plot lon1 lon2 0 0 noerase color 0 END endcase return end"); 269 a[267] = new Array("./ToBeReviewed/PLOTS/DIVERS/placecolor.html", "placecolor.pro", "", " file_comments allows to trace the independently from a graph By default trace a color bar of the same type tahn the one present in plt and pltz If max min and divisions are not stipulated then max sup min inf and divisions div categories graphic param POS Vecteur composed by 4 elements giving coordinates of the left bottom corner and of the right up one in cm in which we want to do the color bar keyword _extra used to pass your keywords uses common pro restrictions Only usable for POSTCRIPTs effectuated with plein2dessin history Sebastien Masson smasson lodyc jussieu fr 7 5 98 version Id: placecolor pro 142 2006 07 21 12:47:49Z navarro pro placecolor pos _extra ex include commons compile_opt idl2 strictarrsubs cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF xsave x ysave y psave p reinitplt z invert pos 1 pos mipgsz min page_size max mapgsz if key_portrait eq 1 then begin pos 0 pos 0 mipgsz pos 1 pos 1 mapgsz pos 2 pos 2 mipgsz pos 3 pos 3 mapgsz endif else begin pos 0 pos 0 mapgsz pos 1 pos 1 mipgsz pos 2 pos 2 mapgsz pos 3 pos 3 mipgsz ENDELSE def_myuniquetmpdir IF lmgr demo EQ 1 THEN BEGIN if we are in demo mode we cannot save the parameters in a temporary file cm_demomode_used colnumb colorbarparam colnumb clbinf colorbarparam clbinf clbsup colorbarparam clbsup clbdiv colorbarparam clbdiv ENDIF ELSE BEGIN file myuniquetmpdir 4colorbar dat IF file_test file THEN BEGIN restore file if size ex type EQ 8 then BEGIN if where tag_names ex EQ MIN 0 NE 1 then clbinf ex MIN if where tag_names ex EQ MAX 0 NE 1 then clbsup ex MAX if where tag_names ex EQ DIVISIONS 0 NE 1 then clbdiv ex DIVISIONS ENDIF COLORBAR COLOR 0 DIVISIONS clbdiv DISCRET colnumb cb_color 0 POSITION pos MAX clbsup MIN clbinf cb_charsize p charsize _extra ex ENDIF ENDELSE x xsave y ysave p psave return end"); 270 a[268] = new Array("./ToBeReviewed/PLOTS/DIVERS/placedessin.html", "placedessin.pro", "", " file_comments Putting into place of the drawing opening of the window or of the PS categories Utilities param TYPEDESSIN It is a chain or characteres specifying what procedure is called by PLACEDESSIN: plt pltz or pltt keyword LANDSCAPE Force the page or the window on the screen to be in lenthened position keyword LCT Is an integer designating the number of the palette of color we want to use for the plot keyword MAP We use it when we want to do a projection This keyword can be of two types: MAP P0lat P0lon Rot For the descrption of these 3 values see the online help of MAP_SET MAP: In this case map is automatically caculated have the value: map 0 lon1 lon2 2 0 Comment: A good way to choose the type of the projection we want to do is to have a look at IDL demo: IDL demo Then choose earth sciences and mapping Comment2: By default it is a cindrical projection which is effectuated with or without the keyword map If we want an other projection MAP must be activated and we have to add the keyword: nom_projection For example for a polar projection centered on the south pole: IDL domdef 180 180 90 45 IDL plt tab stereo map 90 0 0 keyword NOCOLORBAR We active it if we do not want the colorbar keyword NOFILL We active it if we only want contours in black and white with a white background keyword NOERASE We active it to make a drawing without creating a new frame keyword SMALL Vector composed of 3 or 4 elements applyed to make a drawing on a small portion of a page or screen It delimit the zone where the drawing will be done If there is 4 elements: then is constituated of coordinates expressed in cm located from the up and left corner of the page or the window in portrait like in lanscape of the bottom and left corner and of the up and right corner of the drawing zone If there is 3 elements: in this case we divide the page or the screen in small 0 columns and in small 1 lines the drawing made in the box numbered small 2 The numerotation starting up and left by the number 1 and then following the writing direction By default we make the largest drawing we can do conserving the aspect rapport exept when REMPLI is activated keyword PORTRAIT Force the page or the window to be in standing position keyword POST Make a postscript Only works if we made one drawing on the page If we make several drawing use ps keyword REMPLI Force the drawing to occupy the whole space defined by small keyword WINDOW Number of the window on which we want to do the graph Allow to open several windows By default we open IDL0 keyword CB_TITLE The colorbar s title keyword CONTOUR If we want to trace contours of a different field than the one whose we have the colored drawing by examlpe E P in color and QSR in contours It must be a field respecting same caracteristics than the argument number one of plt keyword ENDPOINTS keyword specifing that we want to make a vertical cut in diagonal Then coorinated of extremities of these one are difined by the 4 elements of the vector ENDPOINTS: x1 y1 x2 y2 which are coordinates keyword VECTEUR It is a structure composed by 2 elements containing the 2 fields U and V of values of the zonal and meridian component of the vector of the fields to draw These fields can be an array or a structure For example: vecteur matriceu:lec unsurface matricev:lec vnsurface Comment: name of elements of vectors are inconsenquential vecteur u:lec unsurface v:lec vnsurface is also appropriated keyword DIREC t x y z xys xz yz xyz xt yt zt xyt xzt yzt xyzt Direction on which do averages keyword _EXTRA Used to pass your keywords keyword COLOR_C To draw the contour in color instead of in black with filling in color param POSFENETRE out It is a vector composed by 4 elements containing the position of the frame containing captions and the graph in normalized coorinates Comment: To position the drawing we have to do p position posfenetre after the call of the caliber param POSBAR out Like POSFENETRE but for the color bar Same comment to position the color bar p position posbar uses common pro history Sebastien Masson smasson lodyc jussieu fr 26 4 1999 version Id: placedessin pro 142 2006 07 21 12:47:49Z navarro PRO placedessin typedessin posfenetre posbar BARMARGES barmarges NOCOLORBAR nocolorbar NOFILL nofill COLOR_c color_c CONTOUR contour VECTEUR vecteur PORTRAIT portrait LANDSCAPE landscape SMALL small MARGES marges MAP map REMPLI REMPLI POST post WINDOW window ENDPOINTS endpoints TYPE type BASICMARGES basicmarges NOERASE noerase LCT lct DIREC direc CB_TITLE cb_title _extra ex include common compile_opt idl2 strictarrsubs cm_4ps cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatekwd ENDIF 1 Determination of the size of margins unity number of lines or columns to the left to the right up and down BEWARE in margebar the last element is the right up corner instead of the up margin if n_elements typedessin EQ 0 then typedessin autre if keyword_set basicmarges then begin marge 1 6 2 4 3 if keyword_set marges THEN marge marge marges margebar 1 marge 0 1 marge 1 1 marge 2 8 marge 2 6 if keyword_set barmarges then margebar margebar barmarges ENDIF ELSE BEGIN nocolorbar keyword_set nocolorbar keyword_set nofill keyword_set color_c case typedessin of plt :marge 1 6 2 4 3 pltt :marge 1 6 4 type EQ xt 2 4 4 pltz :marge 1 6 2 4 3 else:marge 1 6 2 4 3 ENDCASE if keyword_set marges THEN marge marge marges if NOT keyword_set barmarges then barmarges replicate 0 4 barmarges 3 barmarges 3 margebar 1 marge 0 1 marge 1 1 2 4 barmarges marge marge 0 0 4 0 keyword_set cb_title IF keyword_set direc THEN marge marge 0 0 2 0 strlowcase direc NE t marge marge 0 0 2 0 keyword_set contour marge marge 0 0 2 0 keyword_set vecteur if n_elements lon1 NE 0 and n_elements lon2 NE 0 and n_elements lat1 NE 0 and n_elements lat2 NE 0 then begin if keyword_set type then marge marge 0 3 type EQ yt AND lon1 NE lon2 0 2 type NE yt AND lat1 NE lat2 keyword_set endpoints ELSE marge marge 0 0 0 2 lat1 NE lat2 keyword_set endpoints endif marge marge 0 0 2 margebar 3 0 1 keyword_set nocolorbar ENDELSE Portrait or landscape IF NOT keyword_set noerase THEN BEGIN CASE 1 OF n_elements portrait NE 0:key_portrait portrait n_elements landscape NE 0:key_portrait 1 landscape ELSE: ENDCASE ENDIF What type of aspect rapport it will be crushed if YXASPECT exist case typedessin of plt :yaspect 1 lat2 lat1 lon2 lon1 pltt :yaspect 1 pltz :yaspect 5 ELSE:yaspect 1 endcase 2 calculation of p position see calibre pro IF NOT keyword_set small then small 1 1 1 if keyword_set map then rempli 1 calibre yaspect marge margebar small posfenetre posbar REMPLI rempli _extra ex p position posfenetre 3 opening of the graphic window or of the postscript case 1 of case of the first drawing on a postcript keyword_set post AND d name ne PS :openps _extra ex case of the first drawing on a screen keyword_set post EQ 0 AND keyword_set noerase EQ 0 AND d name ne PS AND d name ne Z :BEGIN if not keyword_set window then window 0 For the using of ps oups et de vzoom if lmgr demo EQ 0 then BEGIN Are we in the demo mode if journal NE 0 then journal We close te journal if it is open homedir isadirectory io homedir title Bad definition of homedir def_myuniquetmpdir journal myuniquetmpdir idlsave pro We open a new one help recall_commands output listecommande We recuperate the last command listecommande strmid strcompress listecommande 1 2 journal listecommande We write it in the journal ENDIF windsize givewindowsize window window xsize windsize 0 ysize windsize 1 retain 2 _extra ex When we used colors which are coded on 24bit we can not stipulate the background color of a window thanks to p background so we have to to this: if d n_colors gt 256 then begin device decomposed 1 p background ffffff x plot 0 0 nodata xstyle 4 ystyle 4 device decomposed 0 endif END ELSE: endcase if n_elements lct NE 0 then lct lct _extra ex return end"); 271 a[269] = new Array("./ToBeReviewed/PLOTS/DIVERS/projsegment.html", "projsegment.pro", "", " file_comments project linearly a segment a vector whose boundaries are a b on a vector whose boundaries are c d categories calculation param VECTEUR A vector whose the first element must be the smallest one and the last must be the biggest one param BORNES New boundaries of the vector keyword MP Activate this keyword to the function send back this a vector of 2 elements which are the m and p of the linear projection y mx p used to pass from the a b segment to the c d segment returns A vector whose new boudaries are specified by BORNES examples IDL a indgen 9 IDL print a 0 1 2 3 4 5 6 7 8 IDL print projsegment a 0 80 0 10 20 30 40 50 60 70 80 IDL print projsegment a 0 80 0 10 20 30 40 50 60 70 80 IDL print projsegment a 80 0 80 70 60 50 40 30 20 10 0 history Sebastien Masson smasson lodyc jussieu fr 24 6 1999 version Id: projsegment pro 142 2006 07 21 12:47:49Z navarro FUNCTION projsegment vecteur bornes MP mp compile_opt idl2 strictarrsubs a1 float vecteur 0 b1 float vecteur n_elements vecteur 1 a2 float bornes 0 b2 float bornes 1 if a1 EQ b1 then return 1 m b2 a2 b1 a1 p a2 m a1 if keyword_set mp then return m p ELSE return m vecteur p end"); 272 a[270] = new Array("./ToBeReviewed/PLOTS/DIVERS/restoreatt.html", "restoreatt.pro", "", " file_comments Allows to reattribuate global variables associated with a field when we give a stucture created by saveatt pro by example categories Utilities param STRUCT in required a structure like the one who read litchamp See IDL xhelp litchamp uses common pro restrictions Change the value if global variables attribute of a field: vargrid varname varunit vardate varexp valmask and time history Sebastien Masson smasson lodyc jussieu fr 15 6 1999 version Id: restoreatt pro 142 2006 07 21 12:47:49Z navarro PRO restoreatt struct compile_opt idl2 strictarrsubs common nomelements tag_names struct for i 0 n_tags struct 1 do begin case strlowcase strmid nomelements i 0 1 of g :vargrid strupcase struct i n :varname struct i u :varunit struct i e :varexp struct i m :valmask struct i d :BEGIN if size struct i type EQ 7 THEN BEGIN vardate struct i ENDIF ELSE BEGIN vardate time series time struct i ENDELSE end ELSE:BEGIN ras report Le nom nomelements i ne correspont a aucun element reconnu de la structure C cf IDL xhelp litchamp end endcase endfor return end"); 273 a[271] = new Array("./ToBeReviewed/PLOTS/DIVERS/rotation.html", "rotation.pro", "", " file_comments Rotate two vectors by a specified amount param X in required orignal data point pairs param Y in required orignal data point pairs param DEG in required degrees to rotate param NX out rotated point pairs param NY out rotated point pairs history Jeff Bennett U of Colorado version Id: rotation pro 142 2006 07 21 12:47:49Z navarro PRO ROTATION X Y DEG NX NY compile_opt idl2 strictarrsubs ang deg dtor convert to polar coordinates for rotation r sqrt x x y y theta r 0 get angle in for loop so that zero radii will be left as zero angle for i 0 n_elements r 1 do if r i ne 0 then theta i atan y i x i range from pi to pi add rotation angle theta theta ang convert back to rectangular coordinates now rotated nx r cos theta ny r sin theta return end"); 274 a[272] = new Array("./ToBeReviewed/PLOTS/DIVERS/saveatt.html", "saveatt.pro", "", " file_comments Allows to put in a structure attributes which can be associated with a variable categories utilities returns A structure of the form: n:varname g:vargrid d:vardate e:varexp u:varunit m:valmask l:niveau uses common pro history Sebastien Masson smasson lodyc jussieu fr 15 6 1999 version Id: saveatt pro 142 2006 07 21 12:47:49Z navarro FUNCTION saveatt compile_opt idl2 strictarrsubs common return n:varname g:vargrid d:vardate e:varexp u:varunit m:valmask end"); 275 a[273] = new Array("./ToBeReviewed/PLOTS/DIVERS/terminedessin.html", "terminedessin.pro", "", " file_comments End the drawing if needed when it is a postscript categories utilities graphic keyword POST Make a postscript Only works if we made one drawing on the page If we make several drawing use ps keyword SMALL Vector composed of 3 or 4 elements applyed to make a drawing on a small portion of a page or screen It delimit the zone where the drawing will be done If there is 4 elements: then is constituated of coordinates expressed in cm located from the up and left corner of the page or the window in portrait like in lanscape of the bottom and left corner and of the up and right corner of the drawing zone If there is 3 elements: in this case we divide the page or the screen in small 0 columns and in small 1 lines the drawing made in the box numbered small 2 The numerotation starting up and left by the number 1 and then following the writing direction By default we make the largest drawing we can do conserving the aspect rapport exept when REMPLI is activated keyword _EXTRA Used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr 3 6 1999 version Id: terminedessin pro 142 2006 07 21 12:47:49Z navarro PRO terminedessin POST post SMALL small _extra ex compile_opt idl2 strictarrsubs cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF if keyword_set post then BEGIN if keyword_set small then if total small NE page_margins 2 page_margins 0 total page_size page_margins 1 page_margins 3 then return closeps printps endif return end"); 276 a[274] = new Array("./ToBeReviewed/PLOTS/LABEL/label.html", "label.pro", "", " file_comments Allows to choose the type of the label we want to use at the time of a contour categories graphic param CAS in required Number of the type of the label we want to trace param MIN in required Smallest value for the drawing of the contour param MAX in required Biggest value for the drawing of the contour keyword INTERVALLE Value of an interval betwenn two isolines By default it is calculated to draw 20 isolines In all cases this keyword must be returnedt have a nice caption If levels do not contain regular intervals put it at 1 keyword NLEVEL Number of contour to be drawn By default 20 Active if LABEL 0 or is not specified param NCONTOUR out Number of contour to be drawn param LEVEL_Z2D out Vector containing values of contours we draw param COLNUMB out Vector containing the number of colors which will serve to fill contours uses common pro history Sebastien Masson smasson lodyc jussieu fr 7 5 98 version Id: label pro 142 2006 07 21 12:47:49Z navarro pro label cas min max ncontour level_z2d colnumb NLEVEL nlevel INTERVALLE intervalle STRICTFILL strictfill compile_opt idl2 strictarrsubs common if d name EQ PS OR d name EQ Z then BEGIN old_dname d name thisOS VERSION OS_FAMILY thisOS STRMID thisOS 0 3 thisOS STRUPCASE thisOS CASE thisOS of MAC : SET_PLOT thisOS WIN : SET_PLOT thisOS ELSE: SET_PLOT X ENDCASE p BACKGROUND d n_colors 1 ncontour level_z2d min max min findgen Ncontour Ncontour colnumb ncoul findgen Ncontour Ncontour ncoul 2 ncontour intervalle level_z2d 1 level_z2d 0 end 1: begin a certain number of label from the min to the nearest possible to the max with a constant step by interval ncontour fix max min intervalle ncontour 1 ncontour level_z2d min intervalle findgen Ncontour colnumb ncoul findgen Ncontour Ncontour ncoul 2 ncontour max level_z2d Ncontour 1 intervalle end label to do same sss than dessier 2: begin lct 63 file palette tbl level_z2d 20 25 30 31 32 33 33 5 34 25 findgen 16 ncontour 23 colnumb findgen 23 1 masx 37 75 intervalle 1 return end 3: begin Readinf of intervals palette in the file GMT label_gmt min max intervalle ncoul ncontour level_z2d colnumb end else: begin ras report Le numero de label demande n existe pas end ENDCASE if keyword_set strictfill then begin ncontour ncontour 1 level_z2d level_z2d max colnumb colnumb ncoul 1 endif return end"); 277 a[275] = new Array("./ToBeReviewed/PLOTS/LABEL/label_date.html", "label_date.pro", "", " Copyright c 1993 1998 Research Systems Inc All rights reserved Unauthorized reproduction prohibited file_comments This function labels axes with dates and times categories Plotting param AXIS in required param INDEX in required param X in required keyword DATE_FORMAT a format string which may contain the following: M for month 3 character abbr N for month 2 digit abbr D for day of month Y for 4 digit year Z for last two digits of year For time: H for Hours 2 digits I for mInutes 2 digits S for Seconds 2 digits is Other characters are passed directly thru For example M D Y prints DEC 11 1993 M 2Y yields DEC 93 D M yields 11 DEC D N Y yields 11 12 1993 M C Y yields DEC on the top line 1993 on the bottom C is the new line graphic command keyword MONTHS The names of the months a twelve element string array If omitted use Jan Feb Dec keyword OFFSET An optional starting offset of the plot Unfortunately single precision floating point is not accurate enough to properly represent Julian times This offset which may be double precision contains an offset that is added to all x values before conversion to Julian date and time uses LABEL_DATE_COM restrictions Only one date axis may be simultaneously active examples For example to plot from Jan 1 1993 to July 12 1994: Start_date julday 1 1 1993 End_date julday 7 12 1994 Dummy LABEL_DATE DATE_FORMAT N D Simple mm dd x findgen end_date 1 start_date start_date Time axis PLOT x sqrt x XTICKFORMAT LABEL_DATE XSTYLE 1 Plot with X axis style set to exact Example with times: For example to plot from 3PM Jan 1 1993 to 5AM Jan 3 1993: Start_date Julday 1 1 1993 Also starting offset Start_time 3 12 24 Starting_time less offset End_time Julday 1 3 1993 Start_date 5 24 Ending date time offset note that the order of operations is important to avoid loss of precision Dummy LABEL_DATE DATE_FORMAT D M C H: I offset Start_date MMM NN HH:MM format x findgen 20 End_time Start_time 19 start_time Time axis PLOT x sqrt x XTICKFORMAT LABEL_DATE XSTYLE 1 history DMS RSI April 1993 Written DMS RSI March 1997 Added Time format Copyright c 1993 1998 Research Systems Inc All rights reserved Unauthorized reproduction prohibited version Id: label_date pro 142 2006 07 21 12:47:49Z navarro FUNCTION LABEL_DATE axis index x DATE_FORMAT format MONTHS months OFFSET offs _EXTRA ex compile_opt idl2 strictarrsubs COMMON label_date_com fmt month_chr offset if keyword_set format then begin Save format string if n_elements offs ne 0 then offset double offs else offset 0 0d0 if keyword_set months then month_chr months else month_chr Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec fmt format return 0 endif if n_elements month_chr ne 12 or n_elements fmt le 0 or n_elements offset eq 0 then message Not initialized x1 x offset caldat long x1 month day year _EXTRA ex Get the calendar date from julian frac x1 long x1 time of day from 0 to 1 n strlen fmt out for i 0 n 1 do begin Each format character c strmid fmt i 1 The character if c eq then begin i i 1 c strmid fmt i 1 The function case c of format character M : out out month_chr month 1 N : out out string format i2 2 month D : out out string format i2 2 day Y : out out string format i4 year Z : out out string format i2 2 year mod 100 H : out out string format i2 2 floor 24 frac I : out out string format i2 2 floor 1440 frac mod 60 S : out out string format i2 2 86400L frac mod 60 : out out else : message Illegal character in date format string: fmt endcase endif else out out c endfor return out end"); 278 a[276] = new Array("./ToBeReviewed/PLOTS/LABEL/label_gmt.html", "label_gmt.pro", "", " Apply GMT palette into IDL color intervals system PRO label_gmt min max intervalle ncoul ncontour level_z2d coul compile_opt idl2 strictarrsubs common com_eg IF pal_type NE 2dom THEN BEGIN color defined in lec_pal_gmt pro ncontour ncont_gmt level_z2d levels_gmt coul coul_gmt max max_gmt intervalle 1 ENDIF ELSE BEGIN grey_shade palette case 1 in label IF finite min EQ 0 THEN read Grey shade needs a min max : min max ncontour fix max min intervalle level_z2d min intervalle findgen Ncontour max level_z2d Ncontour 1 intervalle print Number of contour intervals plotting min max ncontour min max print color index IF idx_pal EQ 0 THEN BEGIN build palette red lonarr 99 red 255 red 50:98 long 100 float grey_shade 100 255 IF field origin EQ diff THEN BEGIN difference plot : lighter below first negative interval red 51:98 long 100 float grey_shade_2 100 255 red 1:48 long 100 float grey_shade 100 255 red 50 255 ENDIF first color black last white red 0 red red 99 255 gray scale green red blue red tvlct red green blue ENDIF mid_index max where level_z2d LE fldatt mid coul findgen Ncontour 49 mid_index 2 ENDELSE END "); 279 a[277] = new Array("./ToBeReviewed/PLOTS/LABEL/lataxe.html", "lataxe.pro", "", " file_comments function called by XYZ TICKFORMAT see the help to see how to use it to label axes in latitude categories graphic param AXIS It is the axis number: 0 for X axis 1 for Y axis 2 for Z axis param INDEX It is the tick mark index which starts at 0 param VALUE It is the default tick mark value a floating point number returns A string used automatically to label history Sebastien Masson smasson lodyc jussieu fr 14 10 1999 format of labels version Id: lataxe pro 142 2006 07 21 12:47:49Z navarro FUNCTION lataxe axis index value We put back value in the segment 0 180 compile_opt idl2 strictarrsubs lat value mod 360 if lat lt 0 then lat lat 360 if lat gt 180 then lat lat 180 format of labels: case 1 of lat EQ round lat :fmt i4 10 lat EQ round 10 lat :fmt f6 1 ELSE:fmt f7 2 endcase we write the label if lat le 90 and lat ne 0 then nom string lat format fmt N if lat gt 90 then nom string 180 lat format fmt S if lat eq 0 then nom string lat format fmt return nom end "); 280 a[278] = new Array("./ToBeReviewed/PLOTS/LABEL/lonaxe.html", "lonaxe.pro", "", " file_comments function called by XYZ TICKFORMAT see the help to see how to use it to label axes in longitude categories graphic param AXIS It is the axis number: 0 for X axis 1 for Y axis 2 for Z axis param INDEX It is the tick mark index which starts at 0 param VALUE It is the default tick mark value a floating point number returns A string used automatically to label history Sebastien Masson smasson lodyc jussieu fr 14 10 1999 format of labels version Id: lonaxe pro 142 2006 07 21 12:47:49Z navarro FUNCTION lonaxe axis index value We put back value in the segment 0 360 compile_opt idl2 strictarrsubs lon value mod 360 if lon lt 0 then lon lon 360 format of labels: case 1 of lon EQ round lon :fmt i4 10 lon EQ round 10 lon :fmt f6 1 ELSE:fmt f7 2 endcase we write the label if lon lt 180 then nom string lon format fmt E if lon gt 180 then nom string 360 lon format fmt W if lon eq 180 then nom string lon format fmt return nom end "); 281 a[279] = new Array("./ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html", "ajoutvect.pro", "", " file_comments Overprint vectors in a field traced by plt categories graphic param VECTEUR in required It is a structure with 2 elements containing we 2 matrixes U and V of values of the zonal and meridian component of the fiel of vectors to be traced For ex: vecteur matriceu:lec unsurface matricev:lec vnsurface rq:the name of elements of vector does not have any importance vecteur u:lec unsurface v:lec vnsurface goes well too keyword UNVECTSUR It is a scalar n or an array with 2 elements n1 n2 In the first case we will trace a vector on n following x and y In the second case we will trace a vector on n1 following x and a vector n2 following n2 Comments: To trace all vectors following y and one vector on two following x put unvectsur 2 1 keyword VECTMIN in required Minimum norme of vectors to be traced keyword VECTMAX in required Maximum norme of vectors to be traced keyword _EXTRA Used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr 10 3 1999 11 6 1999 compatibilite avec NAN et la lecture des structures version Id: ajoutvect pro 142 2006 07 21 12:47:49Z navarro pro ajoutvect vecteur vectlegende UNVECTSUR unvectsur VECTMIN vectmin VECTMAX vectmax _EXTRA ex compile_opt idl2 strictarrsubs common tempsun systime 1 For key_performance u litchamp vecteur 0 u checkfield u plt TYPE xy NOQUESTION v litchamp vecteur 1 v checkfield v plt TYPE xy NOQUESTION We recuperate possible informations on fields grilleu litchamp vecteur 0 grid if grilleu EQ then grilleu U grillev litchamp vecteur 1 grid if grillev EQ then grillev V IF grilleu EQ V AND grillev EQ U THEN inverse 1 IF grilleu EQ grillev THEN interpolle 0 ELSE interpolle 1 if keyword_set inverse then begin rien u u v v rien endif We find common points between u and v if interpolle then begin indicexu lindgen jpi firstxu:firstxu nxu 1 indicexv lindgen jpi firstxv:firstxv nxv 1 indicex inter indicexu indicexv indiceyu lindgen jpj firstyu:firstyu nyu 1 indiceyv lindgen jpj firstyv:firstyv nyv 1 indicey inter indiceyu indiceyv nx n_elements indicex ny n_elements indicey indice2d lindgen jpi jpj indice2d indice2d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 extraction of u and v on the appropriated domain case 1 of size u 0 NE 2 OR size v 0 NE 2: return size u 1 EQ nxu AND size u 2 EQ nyu AND size v 1 EQ nxv AND size v 2 EQ nyv:BEGIN if nxu NE nx then if indicex 0 EQ firstxu then u u 0:nx 1 ELSE u u 1: nx IF nxv NE nx THEN if indicex 0 EQ firstxv then v v 0:nx 1 ELSE v v 1: nx IF nyu NE ny THEN if indicey 0 EQ firstyu then u u 0:ny 1 ELSE u u 1: ny IF nyv NE ny THEN if indicey 0 EQ firstyv then v v 0:ny 1 ELSE v v 1: ny END size u 1 EQ jpi AND size u 2 EQ jpj AND size v 1 EQ jpi AND size v 2 EQ jpj:BEGIN u u indice2d v v indice2d END ELSE:BEGIN ras report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs return end endcase We reshape u and v to make sure that none dimension has been erased if ny EQ 1 then begin u reform u nx ny v reform v nx ny endif construction of u and v at points T a u 0 u u shift u 1 0 2 if NOT keyword_set key_periodic OR nx NE jpi then u 0 a a v 0 v v shift v 0 1 2 if NOT keyword_set key_periodic OR nx NE jpi then v 0 a attribution of the mask and of longitude and latitude arrays We recuperate the complete grid to establish a big mask extensive in the four directions to cover points for which a land point has been considerated do a small drawing vargrid T msku umask indice2d jpi jpj firstzt mskv vmask indice2d jpi jpj firstzt glam glamt indice2d gphi gphit indice2d if ny EQ 1 then begin msku reform msku nx ny mskv reform mskv nx ny glam reform glam nx ny gphi reform gphi nx ny endif We mask u and v et v the long of coasts the place where we can not calculate the average extention of the mask u u msku shift msku 1 0 v v mskv shift mskv 0 1 ENDIF ELSE BEGIN u u tmask firstxt:lastxt firstyt:lastyt firstzt v v tmask firstxt:lastxt firstyt:lastyt firstzt indice2d lindgen jpi jpj indice2d indice2d firstxt:lastxt firstyt:lastyt nx nxt ny nyt endelse tabnorme sqrt u 2 v 2 nan where finite u nan EQ 1 if nan 0 NE 1 then u nan 1e5 nan where finite v nan EQ 1 if nan 0 NE 1 then v nan 1e5 if keyword_set vectmin then BEGIN toosmall where tabnorme lt vectmin if toosmall 0 NE 1 then begin u toosmall 1e5 v toosmall 1e5 ENDIF endif if keyword_set vectmax then BEGIN toobig where tabnorme gt vectmax if toobig 0 NE 1 then begin u toobig 1e5 v toobig 1e5 ENDIF ENDIF Put back of a big value on all points for which we can do the calculation if interpolle then t2 msku shift msku 1 0 mskv shift mskv 0 1 ELSE t2 tmask firstxt:lastxt firstyt:lastyt firstzt if NOT keyword_set key_periodic OR nx NE jpi then t2 0 0 t2 0 0 terre where t2 eq 0 if terre 0 ne 1 then begin u terre 1e5 v terre 1e5 ENDIF trace only one vector one two if keyword_set unvectsur then BEGIN indx is a vector containing number of columns to be selected indy is a vector containing number of lines to be selected if n_elements unvectsur EQ 1 then begin indx where lindgen nx MOD unvectsur 0 eq 0 indy where lindgen ny MOD unvectsur 0 eq 0 ENDIF ELSE BEGIN indx where lindgen nx MOD unvectsur 0 eq 0 indy where lindgen ny MOD unvectsur 1 eq 0 ENDELSE From indx and indy we will construct an array which will give indexes of intersections points of columns specified by indx indicereduit indx replicate 1 n_elements indy nx replicate 1 n_elements indx indy We reduce arrays which will be passed to vecteur u u indicereduit v v indicereduit tabnorme tabnorme indicereduit endif if keyword_set inverse then begin rien u u v v rien endif Drawing of vectors vecteur u v tabnorme indice2d indicereduit missing 1e5 _extra ex We complete the caption if terre 0 ne 1 then mini min tabnorme where t2 eq 1 max maxi nan ELSE mini min tabnorme max maxi nan if litchamp vecteur 0 u NE then vectlegende minmax: mini maxi unite:litchamp vecteur 0 u ELSE vectlegende minmax: mini maxi unite:varunit sortie: if keyword_set key_performance NE 0 THEN print temps ajoutvect systime 1 tempsun return end "); 282 a[280] = new Array("./ToBeReviewed/PLOTS/VECTEUR/vecteur.html", "vecteur.pro", "", "FUNCTION cv_cm2normal angle Give the lenth in normal coordinates of a trait oriented of an angle by rapport at the x axis and which must do 1 cm on the drawing Angle can be an array compile_opt idl2 strictarrsubs common What is the lenth in normal coordinates of a trait which will do 1 cm on the paper an which is parallel to x mipgsz min page_size max mapgsz sizexfeuille mipgsz key_portrait mapgsz 1 key_portrait sizeyfeuille mapgsz key_portrait mipgsz 1 key_portrait cm_en_normal 1 sizexfeuille If the aspect rapport of the window is not equal to 1 the lenth in normalized coordinates of a trait of 1 cm vary following the polar angle of this trait aspect sizexfeuille sizeyfeuille cm_en_normal cm_en_normal sqrt 1 aspect 2 1 sin angle 2 return cm_en_normal END PRO normalise u v w normalize the vector compile_opt idl2 strictarrsubs IF n_elements w NE 0 THEN BEGIN norme sqrt u 2 v 2 w 2 ind where norme NE 0 u ind u ind norme ind v ind v ind norme ind w ind w ind norme ind ENDIF ELSE BEGIN norme sqrt u 2 v 2 ind where norme NE 0 u ind u ind norme ind v ind v ind norme ind ENDELSE END file_comments Trace vectors even if they are on a deformed grid on any projection In this way all vectors have a comparable norme on the drawing to be clear a vector which measure 1 cm measure it no matter the projection and is position on the sphere categories graphic param COMPOSANTEU in required It is the u component of the vector to be traced This 2d array has the same dimension that reduitindice2d see further param COMPOSANTEV in required It is the v component of the vector to be traced This 2d array has the same dimension that reduitindice2d see further param INDICE2D in required It in an index allowing to to pass from an jpi or jpj array to the zoom on which we do the drawing param REDUITINDICE2D in required It is an index allowing to pass from an array defined by indice2d to the array for which we really have vectors to be traced to be clear it is for example when we trace only one vector on two keyword CMREF The lenth in cm that must measure the arrow normed normeref By default it is ajusted t othe drawing and included between 5 and 1 5 cm keyword MISSING The value of a missing value Do not use this keyword Fixed at 1e5 by ajoutvect pro keyword NORMEREF The norme of the reference arrow keyword VECTCOLOR The color of the arrow Black by default color 0 keyword VECTTHICK The thick of the arrow 1 by default keyword VECTREFPOS Vector composed of 2 elements specifing the position on DATA coordinates from de begining of the reference vector By default at the right bottom of the drawing keyword VECTREFFORMAT The format to be used to specify the norme of the reference vector keyword NOVECTREF To delete the display of the reference vector keyword _EXTRA Used to pass your keywords uses common pro history Creation : 13 02 98 G Roullet grlod lodyc jussieu fr Modification : 14 01 99 realise la transformation spheriquecartesien G Roullet 12 03 99 verification de la routine G Roullet 8 11 1999: G Roullet et Sebastien Masson smasson lodyc jussieu fr adaptation pour les zoom reverification traitement separe de la direction et de la norme des vecteurs mots cles NORMEREF et CMREF version Id: vecteur pro 142 2006 07 21 12:47:49Z navarro PRO vecteur composanteu composantev normevecteur indice2d reduitindice2d CMREF cmref MISSING missing NORMEREF normeref VECTCOLOR vectcolor VECTTHICK vectthick VECTREFPOS vectrefpos VECTREFFORMAT vectrefformat NOVECTREF novectref _extra extra compile_opt idl2 strictarrsubs common tempsun systime 1 For key_performance taille size composanteu nx taille 1 ny taille 2 if n_elements reduitindice2d EQ 0 then reduitindice2d lindgen nx ny zu composanteu zv composantev norme normevecteur taille size indice2d nxgd taille 1 nygd taille 2 msk replicate 1 nx ny if keyword_set missing then terre where abs zu GE missing 10 ELSE terre 1 if terre 0 NE 1 then BEGIN msk terre 0 zu terre 0 zv terre 0 norme terre 0 ENDIF Stage 1: Given that the directions and the sense that the vector has on the sphere we have to try to determinate this direction and the sense that the vector will have on the screen once it will have been projected In theory: on the sphere a vector in a given point has for direction the tangent at the circle passing by the center of the Earth and by the vector So find the direction once the projection is done it is find the tangent to the curve representing the projection of the circle on the 2d plan at the point representing the projection of the starting point of the shere on the 2d plan In practice we do no know the definition of the curve given by the projection of a circle so find its tangente in a point What we do: In a 3d cartesian reference a We find coorinates of the point T starting of the arrow situed on the sphere b To each point T we determine local directions defined by the grid on this point and on which coordinates u v of the vector refer to These local directions are defined by gradients of glam and gphi Once we have obtain these directions we considare them like orthogonal and by norming them we build an orthonormal reference nu nv on which coordinates u v of the vector refer to In the starting 3d cartesian reference the vector is defined by: V u nu v nv where V nu and nv are 3d vectors and u and v are scalars c To approximate the tangente to the circle by the chord defined by the beginning and the ending of the arrow we will normalize V and then divide it by 100 d This allows us to determine coordinates of extremities of the chord in the 3d cartesian reference We pass them in spherical coordinates in order to recuperate latitude and longitude position of these points on the sphere e We pass coordinates of these points in normalized coordinates then in polar coordinates in order to find the angle and the direction they dertermine on the drawing Stage 1 a coordinates of the point T beginning of the arrow in spherical coordinates glam glamt indice2d reduitindice2d gphi gphit indice2d reduitindice2d Coordinates of the point T beginning of the arrow in the cartesian reference For the sphere we use a sphere with a radius of 1 radius replicate 1 nx ny coord_sphe transpose glam gphi radius r cv_coord from_sphere coord_sphe to_rect degrees x0 reform r 0 nx ny y0 reform r 1 nx ny z0 reform r 2 nx ny Stage 1 b Construction of a vector nu resp nv vectr normed carried by the axis of points u i j and u i 1 j resp v i j and v i j 1 which define for each point on the sphere local directions associated with u and v These vectors define a local orthonormal reference These vectors are built in a cartesian reference cv_coord We have choose a unity radius of the Earth unit definition of nu radius replicate 1 nxgd nygd IF finite glamu 0 gphiu 0 NE 0 THEN coord_sphe transpose glamu indice2d gphiu indice2d radius ELSE coord_sphe transpose glamf indice2d gphit indice2d radius r cv_coord from_sphere coord_sphe to_rect degrees coordinates of points of the grid u in cartesian ux reform r 0 nxgd nygd uy reform r 1 nxgd nygd uz reform r 2 nxgd nygd calculation of nu nux ux shift ux 1 0 nuy uy shift uy 1 0 nuz uz shift uz 1 0 conditions at extremities if NOT keyword_set key_periodic OR nxgd NE jpi then begin nux 0 nux 1 nuy 0 nuy 1 nuz 0 nuz 1 ENDIF reduction of the grid nux nux reduitindice2d nuy nuy reduitindice2d nuz nuz reduitindice2d definition of nv IF finite glamv 0 gphiv 0 NE 0 THEN coord_sphe transpose glamv indice2d gphiv indice2d radius ELSE coord_sphe transpose glamt indice2d gphif indice2d radius r cv_coord from_sphere coord_sphe to_rect degrees coordinates of points of the grid in cartesian vx reform r 0 nxgd nygd vy reform r 1 nxgd nygd vz reform r 2 nxgd nygd calcul of nv nvx vx shift vx 0 1 nvy vy shift vy 0 1 nvz vz shift vz 0 1 conditions at extremities nvx 0 nvx 1 nvy 0 nvy 1 nvz 0 nvz 1 reduction of the grid nvx nvx reduitindice2d nvy nvy reduitindice2d nvz nvz reduitindice2d normalization normalise nux nuy nuz normalise nvx nvy nvz Stage 1 c coordinates of the vector V in the cartesian reference direcx zu nux zv nvx direcy zu nuy zv nvy direcz zu nuz zv nvz normalization of the vector V normalise direcx direcy direcz on divide by 100 direcx direcx 100 direcy direcy 100 direcz direcz 100 Stege 1 d coordinates of the point of the arrow in the cartesian reference x1 x0 direcx y1 y0 direcy z1 z0 direcz coordinates of the point of the arrow in spherical coordinates coord_rect transpose x1 y1 z1 r cv_coord from_rect coord_rect to_sphere degrees glam1 reform r 0 nx ny gphi1 reform r 1 nx ny modification of glams Everything take place at the level of the line of changing of date BEWARE do not cut arrow which goes out of the window test: If it goes out of the frame but thanks to 360 it come in we modify it ind where glam1 LT x range 0 AND glam1 360 LE x range 1 if ind 0 NE 1 then glam1 ind glam1 ind 360 ind where glam1 GT x range 1 AND glam1 360 GE x range 0 if ind 0 NE 1 then glam1 ind glam1 ind 360 ind where glam LT x range 0 AND glam 360 LE x range 1 if ind 0 NE 1 then glam ind glam ind 360 ind where glam GT x range 1 AND glam 360 GE x range 0 if ind 0 NE 1 then glam ind glam ind 360 Stage 1 e r convert_coord glam gphi data to_normal x0 r 0 normal coordinates of the beginning of the array y0 r 1 r convert_coord glam1 gphi1 data to_normal x1 r 0 normal coordinates of the ending of the array Before scaling y1 r 1 tests to avoid that arrows be drawing out of the domain out where x0 LT p position 0 OR x0 GT p position 2 OR y0 LT p position 1 OR y0 GT p position 3 if out 0 NE 1 THEN x0 out values f_nan Following projections there may are points at NaN when we pass in normal coordinates We delete these points nan finite x0 y0 x1 y1 number where nan EQ 1 x0 x0 number x1 x1 number y0 y0 number y1 y1 number msk msk number norme norme number We define the vector direction in the normalize reference dirx x1 x0 diry y1 y0 We pass in polar coordinates to recuperate the angle which wasb the goal of all the first stage dirpol cv_coord from_rect transpose dirx diry to_polar dirpol msk dirpol 0 Stage 2 Now we take care of the norme Automatic putting at the scale if NOT keyword_set cmref then BEGIN mipgsz min page_size max mapgsz sizexfeuille mipgsz key_portrait mapgsz 1 key_portrait sizexfeuille 10 sizexfeuille cmref 5 floor sizexfeuille 10 15 cmref cmref 10 ENDIF if NOT keyword_set normeref then BEGIN value max norme puissance10 10 floor alog10 value normeref puissance10 floor value puissance10 endif cm 1 normeref cmref We modify the array norme to an element having the value cm be represented by a trait of lenght 1 cm on the paper Norme contain the norme of vectors we want to draw norme 1 1 cm norme cv_cm2normal dirpol Stage 3 Now that we have the angle and the norme we recuperate coordinates in rectangular and we draw arrows r cv_coord from_polar transpose dirpol norme to_rect composantex r 0 composantey r 1 x1 x0 composantex y1 y0 composantey Drawing if NOT KEYWORD_SET vectcolor then vectcolor 0 points where msk EQ 1 IF points 0 NE 1 THEN arrow x0 points y0 points x1 points y1 points norm hsize 2 COLOR vectcolor THICK vectthick Draw an arrow at the right bottom of the drawing as a caption if NOT keyword_set novectref then BEGIN dx cmref cv_cm2normal 0 Lenght of the vector of reference in normalzed coordinates if keyword_set vectrefformat then normelegende strtrim string normeref format vectrefformat 1 ELSE normelegende strtrim normeref 1 if keyword_set vectrefpos then begin r convert_coord vectrefpos data to_normal x0 r 0 y0 r 1 ENDIF ELSE BEGIN x0 x window 1 dx r convert_coord d x_ch_size d y_ch_size device to_normal dy 3 r 1 p charsize y0 y window 0 dy ENDELSE arrow x0 y0 x0 dx y0 norm hsize 2 color 0 xyouts x0 y0 normelegende norm align 1 charsize p charsize color 0 endif if keyword_set key_performance NE 0 THEN print temps vecteur systime 1 tempsun return END "); 283 a[281] = new Array("./ToBeReviewed/PLOTS/VECTEUR/velovect.html", "velovect.pro", "", " file_comments Produce a two dimensional velocity field plot A directed arrow is drawn at each point showing the direction and magnitude of the field categories Plotting two dimensional param U in required The X component of the two dimensional field U must be a two dimensional array param V in required The Y component of the two dimensional field Y must have the same dimensions as X The vector at point i j has a magnitude of: U i j 2 V i j 2 0 5 and a direction of: ATAN2 V i j U i j param X in optional Optional abcissae values X must be a vector with a length equal to the first dimension of U and V param Y in optional Optional ordinate values Y must be a vector with a length equal to the first dimension of U and V keyword COLOR The color index used for the plot keyword DOTS Set this keyword to 1 to place a dot at each missing point Set this keyword to 0 or omit it to draw nothing for missing points Has effect only if MISSING is specified keyword LENGTH Length factor The default of 1 0 makes the longest U V vector the length of a cell keyword MISSING Missing data value Vectors with a LENGTH greater than MISSING are ignored keyword OVERPLOT Set this keyword to make VELOVECT overplot That is the current graphics screen is not erased no axes are drawn and the previously established scaling remains in effect keyword CLIP keyword NOCLIP keyword _EXTRA Used to pass your keywords restrictions Plotting on the selected device is performed System variables concerning plotting are changed Note: All other keywords are passed directly to the PLOT procedure and may be used to set option such as TITLE POSITION NOERASE etc history DMS RSI Oct 1983 For Sun DMS RSI April 1989 Added TITLE Oct 1990 Added POSITION NOERASE COLOR Feb 91 RES August 1993 Vince Patrick Adv Visualization Lab U of Maryland fixed errors in math August 1993 DMS Added _EXTRA keyword inheritance January 1994 KDB Fixed integer math which produced 0 and caused divide by zero errors December 1994 MWR Added _EXTRA inheritance for PLOTS and OPLOT June 1995 MWR Removed _EXTRA inheritance for PLOTS and changed OPLOT to PLOTS September 1996 GGS Changed denominator of x_step and y_step vars February 1998 DLD Add support for CLIP and NO_CLIP keywords June 1998 DLD Add support for OVERPLOT keyword Copyright c 1983 1998 Research Systems Inc All rights reserved Unauthorized reproduction prohibited version Id: velovect pro 142 2006 07 21 12:47:49Z navarro PRO VELOVECT U V X Y Missing Missing Length length Dots dots Color color CLIP clip NOCLIP noclip OVERPLOT overplot _EXTRA extra compile_opt idl2 strictarrsubs on_error 2 Return to caller if an error occurs s size u t size v if s 0 ne 2 then begin baduv: message U and V parameters must be 2D and same size endif if total abs s 0:2 t 0:2 ne 0 then goto baduv if n_params 0 lt 3 then x findgen s 1 else if n_elements x ne s 1 then begin badxy: message X and Y arrays have incorrect size endif if n_params 1 lt 4 then y findgen s 2 else if n_elements y ne s 2 then goto badxy if n_elements missing le 0 then missing 1 0e30 if n_elements length le 0 then length 1 0 mag sqrt u 2 v 2 magnitude Subscripts of good elements nbad 0 of missing points if n_elements missing gt 0 then begin good where mag lt missing if keyword_set dots then bad where mag ge missing nbad endif else begin good lindgen n_elements mag endelse ugood u good vgood v good x0 min x get scaling x1 max x y0 min y y1 max y x_step x1 x0 s 1 1 0 Convert to float Integer math y_step y1 y0 s 2 1 0 could result in divide by 0 maxmag max max abs ugood x_step max abs vgood y_step sina length ugood maxmag cosa length vgood maxmag if n_elements title le 0 then title plot to get axes if n_elements color eq 0 then color p color if n_elements noclip eq 0 then noclip 1 x_b0 x0 x_step x_b1 x1 x_step y_b0 y0 y_step y_b1 y1 y_step if not keyword_set overplot then begin if n_elements position eq 0 then begin plot x_b0 x_b1 y_b1 y_b0 nodata xst yst color color _EXTRA extra endif else begin plot x_b0 x_b1 y_b1 y_b0 nodata xst yst color color _EXTRA extra endelse endif if n_elements clip eq 0 then clip x crange 0 y crange 0 x crange 1 y crange 1 r 3 len of arrow head angle 22 5 dtor Angle of arrowhead st r sin angle sin 22 5 degs length of head ct r cos angle for i 0 n_elements good 1 do begin Each point x0 x good i mod s 1 get coords of start end dx sina i x1 x0 dx y0 y good i s 1 dy cosa i y1 y0 dy xd x_step yd y_step plots x0 x1 x1 ct dx xd st dy yd xd x1 x1 ct dx xd st dy yd xd y0 y1 y1 ct dy yd st dx xd yd y1 y1 ct dy yd st dx xd yd color color clip clip noclip noclip _EXTRA extra endfor if nbad gt 0 then Dots for missing PLOTS x bad mod s 1 y bad s 1 psym 3 color color clip clip noclip noclip _EXTRA extra end"); 284 a[282] = new Array("./ToBeReviewed/PLOTS/axe.html", "axe.pro", "", " file_comments Manage axes for the different drawings created by plt pltz and pltt categories Graphic environment param COUPE It is a string designating the type of cut to which the axes we create must report For example: xy xt param TEMPSMIN in required In the case where we do cut containing the time dimension we have to specify the beginning of the time s axis in julian days param TEMPSMAX in required In the case where we do cut containing the time dimension we have to specify the end of the time s axis in julian days keyword SIN activated when we trace in sinus of the latitude keyword SEPDATE string separating the diff rent constituents of the date By default it is a return to the linewhen we do a yt zt or a t In the other cases it is a blank keyword DIGITSYEAR 2 to use Z format 2 digits to code years instead of Y format See help of label_date for more informations on Z and Y keyword _EXTRA used to pass your keywords uses common pro restrictions It modify x and y history Sebastien Masson smasson lodyc jussieu fr 11 12 98 Eric Guilyardi types x y z amelioration de l axe temporel version Id: axe pro 142 2006 07 21 12:47:49Z navarro PRO axe coupe tempsmin tempsmax REVERSE_X reverse_x REVERSE_Y reverse_y SIN sin SEPDATE sepdate DIGITSYEAR digitsyear _EXTRA ex compile_opt idl2 strictarrsubs common tempsun systime 1 pour key_performance Management of ticks of the time axis in the case of TEMPSMIN and TEMPSMAX are definied divday 0 if n_params EQ 3 then BEGIN if keyword_set sepdate then sep sepdate ELSE if coupe EQ yt OR coupe EQ zt OR coupe EQ t then sep C ELSE sep caldat tempsmin mmin dmin ymin hmin mnmin smin _EXTRA ex caldat tempsmax mmax dmax ymax hmax mnmax smax _EXTRA ex format used for the year 2 or 4 5 digits IF NOT keyword_set digitsyear THEN digitsyear 4 IF digitsyear EQ 2 THEN fmtyr Z ELSE fmtyr Y if ymax EQ ymin then BEGIN if mmin ne mmax then BEGIN Same year but several monthes nticks mmax mmin 1 ticknom lonarr nticks for m 0 nticks 1 do ticknom m julday m mmin 1 ymin _EXTRA ex tminor 6 datfmt M sep fmtyr We check that labels are betwenn TEMPSMIN and TEMPSMAX ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom Particular case where we are overlap two monthes if nticks LE 1 then begin nticks dmax jourdsmois mmin ymin 0 dmin 1 2 ticknom lonarr nticks for d 0 nticks 1 do ticknom d julday mmin d 2 dmin ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 2 datfmt D sep M endif ENDIF ELSE BEGIN Same year and same month IF dmax dmin 1 GT 4 THEN BEGIN more than 4 days nticks dmax dmin 1 ticknom lonarr nticks for d 0 nticks 1 do ticknom d julday mmin d dmin ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 2 datfmt D sep M ENDIF ELSE BEGIN less than 4 days : divday ticks per day divday 4 nticks dmax dmin divday 1 ticknom fltarr nticks for d 0 nticks 1 do ticknom d julday mmin d divday dmin ymin _EXTRA ex d MOD divday float divday tminor 2 datfmt H:00 ENDELSE ENDELSE ENDIF ELSE BEGIN Several years CASE 1 OF ymax ymin 1 LE 10: BEGIN freq 1 tminor 12 datfmt M sep fmtyr end ymax ymin 1 LE 20: BEGIN freq 2 tminor 6 datfmt M sep fmtyr end ymax ymin 1 LE 50: BEGIN freq 5 tminor 5 datfmt M sep fmtyr end ymax ymin 1 LE 100: BEGIN freq 10 tminor 10 datfmt fmtyr end ymax ymin 1 LE 1000: BEGIN freq 50 tminor 5 datfmt fmtyr end ELSE : BEGIN freq 100 tminor 50 datfmt Y end ENDCASE nticks floor ymax ymin freq 1 IF floor ymin freq NE ymin freq THEN yminf floor ymin freq 1 freq ELSE yminf floor ymin freq freq ticknom lonarr nticks for y 0 nticks 1 do ticknom y julday 1 1 yminf y freq _EXTRA ex We check that labels are betwenn TEMPSMIN and TEMPSMAX ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom Particular case where we are overlap two monthes if nticks LE 1 then begin nticks mmax 12 mmin 1 ticknom lonarr nticks for m 0 nticks 1 do ticknom m julday m mmin 1 ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 6 datfmt M sep fmtyr Particular case where we are overlap two monthes if nticks LE 1 then begin nticks dmax jourdsmois mmin ymin 0 dmin 1 2 ticknom lonarr nticks for d 0 nticks 1 do ticknom d julday mmin d 2 dmin ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 2 datfmt D sep M endif endif ENDELSE toto label_date 0 0 0 DATE_FORMAT datfmt _EXTRA ex if chkstru ex DATE_FORMAT then ex DATE_FORMAT ENDIF Definition of axes parameters case by case case coupe of xy :BEGIN if keyword_set reverse_x then x range lon2 lon1 ELSE x range lon1 lon2 if keyword_set reverse_y then y range lat2 lat1 ELSE y range lat1 lat2 IF key_onearth THEN x tickformat lonaxe IF key_onearth THEN y tickformat lataxe END yz :BEGIN if keyword_set reverse_x then x range lat2 lat1 ELSE x range lat1 lat2 if keyword_set reverse_y then y range 0 1 ELSE y range 1 0 if keyword_set sin then BEGIN number of ticks by default plot 0 0 noerase nodata xtick_get xaxe We increase this number to it be around 10 ticks n_elements xaxe 1 ticks ticks 1 2 4 8 ticks ticks sort abs ticks 10 0 We recuperate the x axis for this new number of ticks plot 0 0 xticks ticks noerase nodata xtick_get xaxe x ticks ticks x tickv sin pi 180 xaxe tickname strarr ticks 1 for i 0 ticks do tickname i lataxe 0 0 xaxe i x tickname tickname x range sin pi 180 x range endif end xz :BEGIN if keyword_set reverse_x then x range lon2 lon1 ELSE x range lon1 lon2 if keyword_set reverse_y then y range 0 1 ELSE y range 1 0 end xt : begin if keyword_set reverse_x then x range lon2 lon1 ELSE x range lon1 lon2 if keyword_set reverse_y then y range tempsmax tempsmin tempsmin ELSE y range tempsmin tempsmax tempsmin IF key_onearth THEN x tickformat lonaxe result LABEL_DATE DATE_FORMAT M sep fmtyr y tickformat LABEL_DATE y tickname LABEL_DATE 1 0 ticknom _EXTRA ex y ticklen 1 y gridstyle 2 y ticks nticks 1 y tickv ticknom tempsmin y minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end yt : begin if keyword_set reverse_x then x range tempsmax tempsmin tempsmin ELSE x range tempsmin tempsmax tempsmin if keyword_set reverse_y then y range lat2 lat1 ELSE y range lat1 lat2 IF key_onearth THEN y tickformat lataxe x tickname LABEL_DATE 0 0 ticknom _EXTRA ex x ticklen 1 x gridstyle 2 x ticks nticks 1 x tickv ticknom tempsmin x minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end zt : begin if keyword_set reverse_x then x range tempsmax tempsmin tempsmin ELSE x range tempsmin tempsmax tempsmin if vargrid EQ W then gdep gdepw 0:nzw 1 ELSE gdep gdept 0:nzt 1 x tickname LABEL_DATE 0 0 ticknom _EXTRA ex x ticklen 1 x gridstyle 2 x ticks nticks 1 x tickv ticknom tempsmin x minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end t : BEGIN if keyword_set reverse_x then x range tempsmax tempsmin tempsmin ELSE x range tempsmin tempsmax tempsmin x tickname LABEL_DATE 0 0 ticknom _EXTRA ex x ticklen 1 x gridstyle 2 x ticks nticks 1 x tickv ticknom tempsmin x minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end x : begin x range lon1 lon2 IF key_onearth THEN x tickformat lonaxe END y : begin if keyword_set sin then BEGIN Number of ticks by default plot 0 0 nodata noerase xstyle 5 ystyle 5 xtick_get xaxe We increase this number to it be around 10 ticks n_elements xaxe 1 ticks ticks 1 2 4 8 ticks ticks sort abs ticks 10 0 We recuperate the x axis for this new number of ticks plot 0 0 xticks ticks nodata noerase xstyle 5 ystyle 5 xtick_get xaxe x ticks ticks x tickv sin pi 180 xaxe tickname strarr ticks 1 for i 0 ticks do tickname i lataxe 0 0 xaxe i x tickname tickname x range sin pi 180 x range ENDIF ELSE x range lat1 lat2 IF key_onearth THEN x tickformat lataxe END z : begin if vargrid EQ W then gdep gdepw 0:nzw 1 ELSE gdep gdept 0:nzt 1 if keyword_set reverse_y then y range gdep 0 gdep n_elements gdep 1 ELSE y range gdep n_elements gdep 1 gdep 0 END endcase if keyword_set key_performance THEN print temps axe systime 1 tempsun return end"); 285 a[283] = new Array("./ToBeReviewed/PLOTS/legende.html", "legende.pro", "", " file_comments Provide caption categories graphic annex param MI in required The min of the drawing param MA in required The max of the plot param COUPE Charactere containing two letters giving the type of the cut for example: xz keyword CONTOUR If we want to trace contours of a different field than the one whose we have the colored drawing by examlpe E P in color and QSR in contours It must be a field respecting same caracteristics than the argument number one of plt keyword ENDPOINTS Used when we do vertical cuts in diagonal keyword _EXTRA used to pass your keywords uses common pro restrictions The use of the global variable langage allows to change the language and the caption easily history Sebastien Masson smasson lodyc jussieu fr 14 8 98 Eric Guilyardi ericg lodyc jussieu fr GB version 11 6 99 version Id: legende pro 142 2006 07 21 12:47:49Z navarro pro legende mi ma coupe CONTOUR contour ENDPOINTS endpoints DIREC direc VECTLEGENDE vectlegende INTERVALLE intervalle TYPE_YZ type_yz VARNAME2 varname2 NPTS npts _EXTRA ex compile_opt idl2 strictarrsubs common tempsun systime 1 pour key_performance grille 1 1 1 gdep nx ny nz English legends fmt_mm f12 2 fmt_bt f7 1 colorf contourf Contour plot vecteurf Vector norm expf datef fieldf depthf endpointsf Diag Section zonalf IF key_onearth THEN latintf latitudes in ELSE latintf j index in timintf time in onf depthf2 Depth m Meridf Zonal Mean IF key_onearth THEN lonintf longitudes in ELSE lonintf i in hovxt XT plot diaghovxt Diag XT plot depintf depths in timef Time hovyt YT plot diaghovyt Diag YT plot hovzt ZT plot hovt IF key_onearth THEN lontitle Longitude ELSE lontitle i index IF key_onearth THEN lattitle Latitude ELSE lattitle j index vertz depthf2 legniv m IF keyword_set TYPE_YZ THEN BEGIN IF type_yz EQ hPa THEN vertz hPa IF type_yz EQ hPa THEN legniv hPa ENDIF Start legende definition and possible complement of p subtitle if n_elements varunit ne 0 then unite varunit else unite p subtitle colorf unite : Min strtrim string format fmt_mm mi 2 Max strtrim string format fmt_mm ma 2 if keyword_set intervalle then BEGIN if intervalle NE 1 then p subtitle p subtitle Int strtrim string format fmt_mm intervalle 2 endif if size contour type EQ 8 then BEGIN it is a structure unite contour 1 p subtitle p subtitle C contourf unite : Min strtrim string format fmt_mm contour 0 0 2 Max strtrim string format fmt_mm contour 0 1 2 if contour inter NE 1 then p subtitle p subtitle Int strtrim string format fmt_mm contour inter 2 ENDIF if size vectlegende type EQ 8 then begin unite vectlegende 1 p subtitle p subtitle C vecteurf unite : Min strtrim string format fmt_mm vectlegende 0 0 2 Max strtrim string format fmt_mm vectlegende 0 1 2 endif Shapping of subdomain s dimensions la1 strtrim string format fmt_bt lat1 2 la2 strtrim string format fmt_bt lat2 2 lo1 strtrim string format fmt_bt lon1 2 lo2 strtrim string format fmt_bt lon2 2 pr1 strtrim string format fmt_bt vert1 2 pr2 strtrim string format fmt_bt vert2 2 Management of the date if n_elements vardate EQ 0 then vardate if NOT keyword_set direc then direc if strpos direc t NE 1 then begin svardate strtrim vairdate time 0 1 strtrim vairdate time jpt 1 1 ENDIF ELSE svardate vardate case on the caes where the caption is applied case coupe of xy :begin if strupcase vargrid EQ W then firstz firstzw ELSE firstz firstzt if strpos direc z EQ 1 AND firstz NE 0 then BEGIN prof strtrim round gdep 0 1 p title expf varexp datef svardate fieldf varname depthf prof legniv ENDIF ELSE p title expf varexp datef svardate fieldf varname x title lontitle y title lattitle end xz :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim ny 1 IF long n LE 3 THEN zonalf Section if keyword_set endpoints AND lat1 NE lat2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title zonalf varexp datef svardate fieldf varname x title lontitle if keyword_set endpoints AND lat1 EQ lat2 then BEGIN IF key_onearth THEN x title x title at strtrim lataxe 0 0 lat1 1 ELSE x title x title at j index strtrim lat1 1 ENDIF y title depthf2 end yz :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx 1 IF long n LE 3 THEN meridf if keyword_set endpoints AND lon1 NE lon2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title meridf varexp datef svardate fieldf varname y title vertz x title lattitle if keyword_set endpoints AND lon1 EQ lon2 then BEGIN IF key_onearth THEN x title x title at strtrim lonaxe 0 0 lon1 1 ELSE x title x title at i index strtrim lon1 1 ENDIF end xt :begin IF keyword_set npts THEN n strtrim npts 1 if keyword_set endpoints AND lat1 NE lat2 then p title diaghovxt varexp fieldf varname ELSE p title hovxt varexp fieldf varname IF time size time 0 1 time 0 GE 10 THEN y title timef x title lontitle if keyword_set endpoints AND lat1 EQ lat2 then BEGIN IF key_onearth THEN x title x title at strtrim lataxe 0 0 lat1 1 ELSE x title x title at j index strtrim lat1 1 ENDIF end yt :begin IF keyword_set npts THEN n strtrim npts 1 if keyword_set endpoints AND lon1 NE lon2 then p title diaghovyt varexp fieldf varname ELSE p title hovyt varexp fieldf varname IF time size time 0 1 time 0 GE 10 THEN x title timef y title lattitle if keyword_set endpoints AND lon1 EQ lon2 then BEGIN IF key_onearth THEN x title x title at strtrim lonaxe 0 0 lon1 1 ELSE x title x title at i index strtrim lon1 1 ENDIF end zt :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx ny 1 p title hovzt varexp fieldf varname y title depthf2 IF time size time 0 1 time 0 GE 10 THEN x title timef end t :begin IF keyword_set npts THEN n strtrim npts 1 ELSE BEGIN if keyword_set integration3d then n strtrim nx ny nz 1 ELSE n strtrim nx ny 1 ENDELSE p title hovt varexp fieldf varname y title varname IF time size time 0 1 time 0 GE 10 THEN x title timef end x :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim ny nz 1 if keyword_set endpoints AND lat1 NE lat2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title varexp datef svardate fieldf varname x title lontitle if keyword_set endpoints AND lat1 EQ lat2 then BEGIN IF key_onearth THEN x title x title at strtrim lataxe 0 0 lat1 1 ELSE x title x title at j index strtrim lat1 1 ENDIF y title varname end y :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx nz 1 if keyword_set endpoints AND lon1 NE lon2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title varexp datef svardate fieldf varname x title lattitle if keyword_set endpoints AND lon1 EQ lon2 then BEGIN IF key_onearth THEN x title x title at strtrim lonaxe 0 0 lon1 1 ELSE x title x title at i index strtrim lon1 1 ENDIF y title varname end z :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx ny 1 p title varexp datef svardate fieldf varname y title depthf2 x title varname end yfx : BEGIN IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx ny nz 1 p title varexp datef svardate varunit x title varname2 y title varname END else: ENDCASE if keyword_set direc then BEGIN if strpos direc x NE 1 then p subtitle lonintf lo1 lo2 onf strtrim nx 1 points C p subtitle if strpos direc y NE 1 then BEGIN if strpos p subtitle EQ 1 then p subtitle latintf la1 la2 onf strtrim ny 1 points C p subtitle ELSE p subtitle latintf la1 la2 onf strtrim ny 1 points p subtitle ENDIF if strpos direc z NE 1 AND nz NE 1 OR coupe NE xy then BEGIN if strpos p subtitle EQ 1 then p subtitle depintf pr1 pr2 onf strtrim nz 1 points C p subtitle ELSE p subtitle depintf pr1 pr2 onf strtrim nz 1 points p subtitle ENDIF ENDIF if keyword_set endpoints AND coupe NE yt AND lat1 NE lat2 then p title p title C C if keyword_set key_performance THEN print temps legende systime 1 tempsun return end"); 286 a[284] = new Array("./ToBeReviewed/PLOTS/plotsym.html", "plotsym.pro", "", " file_comments function to make plotting symbols much easier categories Graphic Keyword circle circle symbol Keyword TRIANGLE triangle symbol Keyword DIAMOND diamond symbold Keyword BOX box symbol Keyword LINE line symbol Keyword SCALE scales the symbol Keyword ANGLE angle the symbol should be rotated Keyword _EXTRA extra keywords for usersym These are thick color and fill history Written by: Ronn Kling Ronn Kling Consulting 7038 Westmoreland Dr Warrenton VA 20187 klingrl juno com copyright 1999 all rights reserved version Id: plotsym pro 142 2006 07 21 12:47:49Z navarro function plotsym circle circle triangle triangle diamond diamond angle angle box box line line scale scale _extra extra compile_opt idl2 strictarrsubs if not keyword_set scale then scale 1 0 if not keyword_set angle then angle 0 0 if keyword_set circle then begin theta findgen 30 29 360 endif else if keyword_set triangle then begin theta 30 90 210 30 endif else if keyword_set diamond then begin theta 0 90 180 270 0 endif else if keyword_set box then begin theta 315 45 135 225 315 endif else if keyword_set line then begin theta 180 0 endif theta theta angle x cos theta dtor scale y sin theta dtor scale usersym x y _extra extra return 8 end"); 287 a[285] = new Array("./ToBeReviewed/PLOTS/reinitplt.html", "reinitplt.pro", "", " file_comments This procedure will reinitialise all or a selection ofthe system plot variables categories plot Utility keyword X clear the appropriate variable keyword Y clear the appropriate variable keyword Z clear the appropriate variable keyword P clear the appropriate variable keyword ALL Clear all this is equivalent to x y z p keyword INVERT Invert the logic Clear all unselected variables Therefore clearplt all invert does nothing uses common pro restrictions The sytem plot variables are changed history Written by: Trevor Harris Physics Dept University of Adelaide July 1990 Sebastien Masson 7 5 98 version Id: reinitplt pro 142 2006 07 21 12:47:49Z navarro pro reinitplt all all x x y y z z p p invert invert compile_opt idl2 strictarrsubs clearx 0 cleary 0 clearz 0 clearp 0 if keyword_set x then clearx 1 if keyword_set y then cleary 1 if keyword_set z then clearz 1 if keyword_set p then clearp 1 if keyword_set all or not keyword_set x and not keyword_set y and not keyword_set z and not keyword_set p then begin clearx 1 cleary 1 clearz 1 clearp 1 endif if keyword_set invert then begin clearx not clearx cleary not cleary clearz not clearz clearp not clearp endif if clearx then begin x charsize 0 x GRIDSTYLE 0 X MARGIN 10 3 X MINOR 0 X OMARGIN 0 0 x region 0 X RANGE 0 x STYLE 5 x tick 1 x TICKFORMAT x TICKLEN 0 x tickname x ticks 0 X TICKV 0 X TICKV 1 x title x TYPE 0 endif if cleary then begin y charsize 0 y GRIDSTYLE 0 Y MARGIN 10 3 Y MINOR 0 Y OMARGIN 0 0 y region 0 Y RANGE 0 y STYLE 5 y tick 1 y TICKFORMAT y TICKLEN 0 y tickname y ticks 0 Y TICKV 0 Y TICKV 1 y title y TYPE 0 endif if clearz then begin z charsize 0 z GRIDSTYLE 0 Z MARGIN 10 3 Z MINOR 0 Z OMARGIN 0 0 z region 0 Z RANGE 0 z STYLE 1 z tick 1 z TICKFORMAT z TICKLEN 0 z tickname z ticks 0 Z TICKV 0 Z TICKV 1 z title z TYPE 0 endif if clearp then begin p BACKGROUND d n_colors 1 255 p CHARSIZE 1 p CHARTHICK 0 p LINESTYLE 0 p MULTI replicate 0 5 p NOERASE 0 p POSITION 0 p region 0 p title p subtitle p ticklen 0 02 p thick 0 1 p color 0 endif return end "); 288 a[286] = new Array("./ToBeReviewed/PLOTS/style.html", "style.pro", "", " file_comments Choose the way to trace isolines categories graphic param LABSTYLE in required Number to which the style of drawing choosen refer to param LEVEL_Z2D in required Vector containing values of isolignes to be traced param LINESTYLE out Vector used to define the isocontour s style Comment: remenber: Index Linestyle 0 Solid 1 Dotted 2 Dashed 3 Dash Dot 4 Dash Dot Dot Dot 5 Long Dashes param THICK out Vector defining the thick of the isoline history Sebastien Masson smasson lodyc jussieu fr version Id: style pro 142 2006 07 21 12:47:49Z navarro pro style labstyle level_z2d linestyle thick compile_opt idl2 strictarrsubs case labstyle of 0: begin series: Two thin continuous lines one boldface continuous line thick 1 1 2 linestyle 0 return end 1: begin series: Before the middle of levels: thin dash Then thin continuous trait If the middle of the drawing is drawn it is in boldface continuous trait impair n_elements level_z2d 2 fix n_elements level_z2d 2 a replicate 0 fix n_elements level_z2d 2 b replicate 1 fix n_elements level_z2d 2 c replicate 2 fix n_elements level_z2d 2 if impair then begin thick b 2 b linestyle c 0 a endif else begin thick 0 linestyle c a endelse return end 2: begin series: Before the sill defined by answering to a question : thin dash Then thin continuous trait If the sill is drawn it is in boldface continuous trait seuil xquestion Quelle est la limite tirets trait continu 0 seuil float seuil rien where level_z2d lt seuil n a replicate 0 n_elements level_z2d n c replicate 2 n if seuil eq level_z2d n then begin thick replicate 1 n 2 replicate 1 n_elements level_z2d 1 n linestyle c a endif else begin thick 0 linestyle c a endelse return end 3: begin n n_elements level_z2d seuil level_z2d 1 n 2 thick intarr n thick indgen n 4 4 1 thick indgen n 4 4 1 1 thick indgen n 4 4 2 2 thick indgen n 4 4 3 1 linestyle intarr n linestyle indgen n 4 4 3 linestyle indgen n 4 4 1 0 linestyle indgen n 4 4 2 0 linestyle indgen n 4 4 3 0 labels intarr n labels indgen n 2 2 1 labels n 2 0 return end 4: begin Boldface continuous trait seuil 1 e 6 thick replicate 5 n_elements level_z2d linestyle 0 rien where abs level_z2d max abs level_z2d LT seuil if rien 0 NE 1 then thick rien 0 3 end else: begin ras report Le numero de labstyle demande n existe pas stop end endcase return end"); 289 a[287] = new Array("./ToBeReviewed/PLOTS/symbols.html", "symbols.pro", "", " file_comments Create custom plotting symbols param NSYM in required 1 open circle 2 filled circle 3 arrow pointing right 4 arrow pointing left 5 arrow pointing up 6 arrow pointing down 7 arrow pointing up and left 45 degrees 8 arrow pointing down and left 9 arrow pointing down and right 10 arrow pointing up and right 11 through 18 are bold versions of 3 through 10 19 horizontal line 20 box 21 diamond 22 triangle 30 filled box 31 filled diamond 32 filled triangle param SCALE in required size of symbols keyword COLOR color of symbols restrictions The desired symbol is stored in the user buffer and will be plotted if P PSYM 8 history Jeff Bennett U of Colorado 198 version Id: symbols pro 142 2006 07 21 12:47:49Z navarro pro symbols nsym scale color col compile_opt idl2 strictarrsubs on_error 2 fill 0 case 1 of nsym le 2 : begin circles for large scales increase number of points for res if scale ge 4 then a findgen 25 else a findgen 13 a a 3 14159 6 0 12 or 24 pi 6 xarr cos a yarr sin a if nsym eq 2 then fill 1 end nsym ge 3 nsym le 18 : begin arrow heads xarr fltarr 5 yarr xarr xarr 1 10 xarr 2 6 yarr 2 2 nsyms greater than 10 should be filled arrows if nsym gt 10 then begin xarr 3 6 xarr 4 10 yarr 3 2 fill 1 endif else begin xarr 3 10 xarr 4 6 yarr 4 2 endelse case 1 of nsym eq 3 : dummy 0b nsym eq 4 : xarr 1 xarr nsym eq 11 nsym eq 12 : begin xarr extrac xarr 0 11 yarr extrac yarr 0 11 yarr 6 0 5 xarr 7 6 yarr 7 0 5 xarr 8 6 yarr 8 0 5 yarr 9 0 5 if nsym eq 12 then begin rotation xarr yarr 180 nx ny xarr nx yarr ny endif end nsym eq 5 nsym eq 13 : begin temp xarr xarr yarr yarr temp end nsym eq 6 nsym eq 14 : begin temp 1 xarr xarr yarr yarr temp end nsym ge 7 nsym le 10 nsym ge 15 nsym le 18 : begin case 1 of nsym eq 7 nsym eq 15 : deg 45 nsym eq 8 nsym eq 16 : deg 135 nsym eq 9 nsym eq 17 : deg 225 nsym eq 10 nsym eq 18 : deg 315 endcase rotation xarr yarr deg nx ny xarr nx yarr ny end end nsym ge 7 endcase end nsym between 3 and 18 nsym eq 20 nsym eq 21 nsym eq 30 nsym eq 31 : begin xarr fltarr 5 3 yarr xarr xarr 1 3 xarr 2 3 yarr 2 3 yarr 3 3 if nsym eq 21 nsym eq 31 then begin rotation xarr yarr 45 nx ny nx 0 70 nx shrink the x direction xarr nx yarr ny endif if nsym ge 30 then fill 1 end nsym 20 21 30 31 nsym eq 22 nsym eq 32 : begin side length 6 0 at centroid yarr fltarr 4 6 4 xarr fltarr 4 6 2 xarr 1 6 2 xarr 2 0 yarr 2 6 sqrt 3 2 6 4 if nsym eq 32 then fill 1 end else: begin xarr fltarr 2 1 yarr xarr 0 xarr 1 1 end endcase xarr xarr scale yarr yarr scale set symbol buffer if keyword_set col then usersym xarr yarr fill fill color col else usersym xarr yarr fill fill return end"); 290 a[288] = new Array("./ToBeReviewed/POSTSCRIPT/calibre.html", "calibre.pro", "", " file_comments From a rapport of aspect and values in line of character of different margins it calculate POSFENETRE and POSBAR which serve to place the drawing and the color bar thanks to p position on a leaf or a screen output whose the window has the same proportion categories graphics param RAPPORTYX in required Scale rapport between the lenght of the y axis and the x one For example for an xy map: RAPPORTYX lat2 lat1 lon2 lon1 param MARGE in required Vector made of 4 elements containing the size of the left right up and bottom margin having to surround the graph All is measured in lines of characters param MARGEBAR in required Vector made of 4 elements containing the size of the left right and bottom margin and BEWARE the last element is this time the positio of the right up corner having to surround the color bar All is measured in lines of characters param SMALLDRAW in required 2 possibilities: It is vector made of 4 elements giving in portrait or landscape the position of the frame in which the drawing must go in This position is given by coordinates of the 2 corners of the frame: in the left bottom and the right up It is always for a postscript or a screen output express in cm the origin being the left bottom corner It is a vector made of 3 elements giving the number of column to be done in the drawing the number of line and the number of the case the number have to occupy see matlab For example to do 6 drawing in 3 columns and 2 lines and occupy the 4th case small 2 3 4 keyword REMPLI Force the drawing to occupy the biggest possible place defined by SMALLDRAW without respect the rapport y on x keyword YXASPECT Force the rapport y on x to take the value RAPPORTYX YXASPECT This keyword can be used in 2 cases: 1 YXASPECT 1 : force RAPPORTYX to be respected otherwise Calibre take the initiative to change it a little inthe case of the aspect rapport of SMALL is too different of the one of SMALLDRAW 2 YXASPECT n : multiply by n the aspect rapport given by default For example in plt RAPPORTYX is calculated to the reference be orthonormal to have a reference where the y axis is 2 time bigger than the x one YXASPECT 2 keyword PORTRAIT Force the page or the window to be in standing position keyword LANDSCAPE Force the page or the window on the screen to be in lenthened position keyword _EXTRA Used to pass your keywords param POSFENETRE It is a vector made of 4 elements containing the position of the frame containing captions the graph in normalized coordinates Comment: to position the drawing we have to do p position POSFENETRE after the call of calibre param POSBAR See POSFENTRE but for the color bar Same comment to position the color bar p position POSBAR uses common pro history Sebastien Masson smasson lodyc jussieu fr 11 12 98 version Id: calibre pro 150 2006 08 09 10:12:54Z navarro pro calibre rapportyx marge margebar smalldraw posfenetre posbar REMPLI rempli YXASPECT yxaspect PORTRAIT portrait LANDSCAPE lanscape _extra ex compile_opt idl2 strictarrsubs cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 For key_performance if keyword_set portrait then key_portrait 1 if keyword_set landscape then key_portrait 0 if keyword_set yxaspect then begin rapportyx rapportyx yxaspect test2 0 endif else begin yxaspect 1 test2 1 ENDELSE mipgsz min page_size max mapgsz choice of Landscape or Portrait if n_elements key_portrait eq 0 then begin if rapportyx ge 1 then key_portrait 1 if rapportyx lt 1 then key_portrait 0 endif If smalldraw is count like in matlab if n_elements smalldraw EQ 3 then begin if n_elements page_margins EQ 0 then page_margins 1 1 1 1 smalldraw long smalldraw nbrecol smalldraw 0 nbrelig smalldraw 1 numero smalldraw 2 1 numlig numero nbrecol numcol numero numlig nbrecol bas mipgsz key_portrait mapgsz 1 key_portrait cote mapgsz key_portrait mipgsz 1 key_portrait poscol page_margins 0 findgen nbrecol 1 1 bas page_margins 0 page_margins 1 nbrecol poslig cote page_margins 3 findgen nbrelig 1 1 cote page_margins 2 page_margins 3 nbrelig smalldraw poscol numcol poslig numlig 1 poscol numcol 1 poslig numlig endif determination of the size of characters p charsize nombre_de_mots_ds_titre 60 p charsize 1 smalldraw 2 smalldraw 0 d x_px_cm nombre_de_mots_ds_titre d y_ch_size if p charsize gt 1 then p charsize 1 transfert of margin in cm cm 1 d x_px_cm marge 1 marge d y_ch_size p charsize cm margebar 1 margebar d y_ch_size p charsize cm definition of the part of the leaf where we draw if key_portrait eq 0 then begin big smalldraw 2 smalldraw 0 small smalldraw 3 smalldraw 1 endif else begin small smalldraw 2 smalldraw 0 big smalldraw 3 smalldraw 1 endelse if key_portrait eq 0 then rapportmax 1 small marge 3 marge 1 big marge 2 marge 0 else rapportmax 1 small marge 2 marge 0 big marge 3 marge 1 If YXASPECT is not specified we modify the value of RAPPORTYX to it match better with the leaf s proportions if rapportyx le rapportmax then begin if test2 then begin rap 1 rapportmax rapportyx if rap ge 5 and rap lt 6 then rapportyx rapportyx 1 5 if rap ge 6 and rap lt 7 then rapportyx rapportyx 2 if rap ge 7 and rap lt 8 then rapportyx rapportyx 2 5 if rap ge 8 then rapportyx rapportyx 3 endif endif else begin if test2 then begin rap 1 rapportmax rapportyx if rap lt 1 5 and rap ge 1 6 then rapportyx rapportyx 1 5 if rap lt 1 6 and rap ge 1 7 then rapportyx rapportyx 2 if rap lt 1 7 and rap ge 1 8 then rapportyx rapportyx 2 5 if rap lt 1 8 then rapportyx rapportyx 3 endif endelse in the case where we do a Landscape: if key_portrait eq 0 then begin if keyword_set rempli then begin xs big ys small endif else begin if rapportyx le rapportmax then begin xs big ys 1 big marge 0 marge 1 rapportyx marge 2 marge 3 if ys gt small then begin xs 1 small marge 2 marge 3 rapportyx marge 0 marge 1 ys small endif endif else begin xs 1 small marge 2 marge 3 rapportyx marge 0 marge 1 ys small if xs gt big then begin xs big ys 1 big marge 0 marge 1 rapportyx marge 2 marge 3 endif endelse endelse xoff 1 small ys 2 smalldraw 1 yoff 1 big xs 2 xs mapgsz smalldraw 2 a 1 mapgsz yoff mapgsz b 1 xoff mipgsz c a 1 xs mapgsz d b 1 ys mipgsz endif In the case where we do a portrait: else begin if keyword_set rempli then begin xs small ys big endif else begin if rapportyx le rapportmax then begin xs small ys 1 small marge 0 marge 1 rapportyx marge 2 marge 3 if ys gt big then begin xs 1 big marge 2 marge 3 rapportyx marge 0 marge 1 ys big endif endif else begin xs 1 big marge 2 marge 3 rapportyx marge 0 marge 1 ys big if xs gt small then begin xs small ys 1 small marge 0 marge 1 rapportyx marge 2 marge 3 endif endelse endelse xoff 1 small xs 2 smalldraw 0 yoff 1 big ys 2 smalldraw 1 a 1 xoff mipgsz b 1 yoff mapgsz c a 1 xs mipgsz d b 1 ys mapgsz xset xoff yset yoff endelse bas mapgsz 1 key_portrait mipgsz key_portrait cote mipgsz 1 key_portrait mapgsz key_portrait posfenetre a b c d marge 0 bas marge 2 cote marge 1 bas marge 3 cote posbar a b c d margebar 0 bas margebar 2 cote margebar 1 bas ys margebar 3 cote if keyword_set key_performance THEN print temps calibre systime 1 tempsun IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF return end"); 291 a[289] = new Array("./ToBeReviewed/POSTSCRIPT/chcolps.html", "chcolps.pro", "", "PRO format_colortable_hexa table compile_opt idl2 strictarrsubs tvlct r g b get z strarr 256 y strarr 256 for k 0 255 do z k 00 strtrim string r k format Z 2 for k 0 255 do y k y k strmid z k strlen z k 2 2 for k 0 255 do z k 00 strtrim string g k format Z 2 for k 0 255 do y k y k strmid z k strlen z k 2 2 for k 0 255 do z k 00 strtrim string b k format Z 2 for k 0 255 do y k y k strmid z k strlen z k 2 2 table strlowcase y END PRO build_table tableout Fabrique le bloc de colortable compile_opt idl2 strictarrsubs format_colortable_hexa table tableout strarr 25 tableout 0 COLORTAB def END PRO chcolps n1 n2 file PALIT1 palit1 PALIT2 palit2 Modifie les couleurs d un fichier postscript Creation : G Roullet 1999 recupere les palettes compile_opt idl2 strictarrsubs lct n1 IF keyword_set palit1 THEN palit palit1 tvlct red green blue get lct n2 IF keyword_set palit2 THEN palit palit2 tvlct red1 green1 blue1 get filein file fileout file new openr numin filein get_lun openw numout fileout get_lun ligne nl 0 colortab 0 Scan le fichier WHILE NOT eof numin DO BEGIN readf numin ligne format A nl nl 1 Replace setrgbcolor statements pos strpos ligne setrgbcolor IF pos NE 1 THEN BEGIN r round float strmid ligne pos 18 6 255 g round float strmid ligne pos 12 6 255 b round float strmid ligne pos 6 6 255 ind where r EQ red AND g EQ green AND b EQ blue ind ind 0 IF ind 0 NE 1 THEN BEGIN r1 red1 ind 255 g1 green1 ind 255 b1 blue1 ind 255 color string r1 g1 b1 format 3 F5 3 : X strput ligne color pos 18 ENDIF ELSE BEGIN print erreur ligne : nl dist abs r red abs g green abs b blue ind where dist EQ min dist 0 ind ind 0 print je trouve long r g b print je remplace par red ind green ind blue ind r1 red1 ind 255 g1 green1 ind 255 b1 blue1 ind 255 color string r1 g1 b1 format 3 F5 3 : X strput ligne color pos 18 ENDELSE ENDIF Replace COLORTAB pos strpos ligne COLORTAB IF pos NE 1 THEN BEGIN build_table table n 0 colortab 1 ENDIF IF colortab THEN BEGIN ligne table n n n 1 IF n EQ 24 THEN colortab 0 ENDIF Ecrit le fichier de sorti printf numout ligne format A ENDWHILE close numin close numout free_lun numin free_lun numout spawn gs fileout END "); 292 a[290] = new Array("./ToBeReviewed/POSTSCRIPT/ps.html", "ps.pro", "", ""); 293 a[291] = new Array("./ToBeReviewed/STATISTICS/a_correlate2d.html", "a_correlate2d.pro", "", " FUNCTION Auto_Cov2d X Lag Double Double zero2nan zero2nan compile_opt idl2 strictarrsubs XDim SIZE X dimensions nx XDim 0 ny XDim 1 Sample autocovariance function Xmean TOTAL X Double Double 1 nx ny res TOTAL X 0:nx 1 lag 0 0:ny 1 lag 1 Xmean X lag 0 :nx 1 lag 1 :ny 1 Xmean Double Double if keyword_set zero2nan AND res EQ 0 then res values f_nan RETURN res END file_comments This function computes the autocorrelation Px K L or autocovariance Rx K L of a sample population X nx ny as a function of the lag K L categories Statistics param X in required An 2 dimension Array nx ny param LAG in required 2 element vector in the intervals nx 2 nx 2 ny 2 ny 2 of type integer that specifies the absolute distance s between indexed elements of X keyword COVARIANCE If set to a non zero value the sample autocovariance is computed keyword DOUBLE If set to a non zero value computations are done in double precision arithmetic history 28 2 2000 Sebastien Masson smasson lodyc jussieu fr Based on the A_CORRELATE procedure of IDL version Id: a_correlate2d pro 150 2006 08 09 10:12:54Z navarro FUNCTION A_Correlate2d X Lag Covariance Covariance Double Double compile_opt idl2 strictarrsubs Compute the sample autocorrelation or autocovariance of Xt Xt l as a function of the lag l ON_ERROR 2 XDim SIZE X dimensions XNDim SIZE X n_dimensions nx XDim 0 ny XDim 1 if XNDim NE 2 then MESSAGE X array must contain 2 dimensions Check length if nx lt 2 then MESSAGE first dimension of X array must contain 2 or more elements if ny lt 2 then MESSAGE second dimension of X array must contain 2 or more elements if n_elements Lag NE 2 THEN MESSAGE Lag array must contain 2 elements If the DOUBLE keyword is not set then the internal precision and result are identical to the type of input if N_ELEMENTS Double eq 0 then Double SIZE X type eq 5 if KEYWORD_SET Covariance eq 0 then begin Compute Autocorrelation Auto Auto_Cov2d X ABS Lag Double Double Auto_Cov2d X 0L 0L Double Double zero2nan endif else begin Compute Autocovariance Auto Auto_Cov2d X ABS Lag Double Double n_elements X endelse if Double eq 0 then RETURN FLOAT Auto else RETURN Auto END"); 294 a[292] = new Array("./ToBeReviewed/STATISTICS/a_timecorrelate.html", "a_timecorrelate.pro", "", "FUNCTION TimeAuto_Cov X M nT Double Double zero2nan zero2nan Sample autocovariance function compile_opt idl2 strictarrsubs TimeDim size X n_dimensions Xmean TOTAL X TimeDim Double Double nT if double then one 1 0d ELSE one 1 0 Xmean Xmean replicate one nT M case TimeDim of 1:res TOTAL X 0:nT M 1L Xmean X M:nT 1L Xmean TimeDim Double Double 2:res TOTAL X 0:nT M 1L Xmean X M:nT 1L Xmean TimeDim Double Double 3:res TOTAL X 0:nT M 1L Xmean X M:nT 1L Xmean TimeDim Double Double 4:res TOTAL X 0:nT M 1L Xmean X M:nT 1L Xmean TimeDim Double Double ENDCASE if keyword_set zero2nan then begin zero where res EQ 0 if zero 0 NE 1 then res zero values f_nan endif RETURN res END file_comments Same function as A_CORRELATE but accept array until 4 dimension for input and do the autocorrelation or the autocovariance along the time dimension which must be the last one of the input array This function computes the autocorrelation Px L or autocovariance Rx L of a sample population X as a function of the lag L categories Statistics param X in required An Array which last dimension is the time dimension os size n param LAG in required A scalar or n element vector in the interval n 2 n 2 of type integer that specifies the absolute distance s between indexed elements of X keyword COVARIANCE If set to a non zero value the sample autocovariance is computed keyword DOUBLE If set to a non zero value computations are done in double precision arithmetic examples Define an n element sample population x 3 73 3 67 3 77 3 83 4 67 5 87 6 70 6 97 6 40 5 57 Compute the autocorrelation of X for LAG 3 0 1 3 4 8 lag 3 0 1 3 4 8 result a_correlate x lag The result should be: 0 0146185 1 00000 0 810879 0 0146185 0 325279 0 151684 history 24 2 2000 Sebastien Masson smasson lodyc jussieu fr Based on the A_CORRELATE procedure of IDL INTRODUCTION TO STATISTICAL TIME SERIES Wayne A Fuller ISBN 0 471 28715 6 version Id: a_timecorrelate pro 150 2006 08 09 10:12:54Z navarro FUNCTION A_TimeCorrelate X Lag COVARIANCE Covariance DOUBLE Double compile_opt idl2 strictarrsubs Compute the sample autocorrelation or autocovariance of Xt Xt l as a function of the lag l ON_ERROR 2 XDim SIZE X dimensions XNDim SIZE X n_dimensions nT XDim XNDim 1 Check length if nT lt 2 then MESSAGE Time axis of X array must contain 2 or more elements If the DOUBLE keyword is not set then the internal precision and result are identical to the type of input if N_ELEMENTS Double eq 0 then Double SIZE X type eq 5 if n_elements lag EQ 0 then lag 0 nLag N_ELEMENTS Lag if nLag eq 1 then Lag Lag Create a 1 element vector case XNDim of 1:if Double eq 0 then Auto FLTARR nLag else Auto DBLARR nLag 2:if Double eq 0 then Auto FLTARR XDim 0 nLag else Auto DBLARR XDim 0 nLag 3:if Double eq 0 then Auto FLTARR XDim 0 XDim 1 nLag else Auto DBLARR XDim 0 XDim 1 nLag 4:if Double eq 0 then Auto FLTARR XDim 0 XDim 1 XDim 2 nLag else Auto DBLARR XDim 0 XDim 1 XDim 2 nLag endcase if KEYWORD_SET Covariance eq 0 then begin Compute Autocorrelation for k 0 nLag 1 do case XNDim of 1:Auto k TimeAuto_Cov X ABS Lag k nT Double Double TimeAuto_Cov X 0L nT Double Double zero2nan 2:Auto k TimeAuto_Cov X ABS Lag k nT Double Double TimeAuto_Cov X 0L nT Double Double zero2nan 3:Auto k TimeAuto_Cov X ABS Lag k nT Double Double TimeAuto_Cov X 0L nT Double Double zero2nan 4:Auto k TimeAuto_Cov X ABS Lag k nT Double Double TimeAuto_Cov X 0L nT Double Double zero2nan endcase endif else begin Compute Autocovariance for k 0 nLag 1 do case XNDim of 1:Auto k TimeAuto_Cov X ABS Lag k nT Double Double nT 2:Auto k TimeAuto_Cov X ABS Lag k nT Double Double nT 3:Auto k TimeAuto_Cov X ABS Lag k nT Double Double nT 4:Auto k TimeAuto_Cov X ABS Lag k nT Double Double nT endcase endelse if Double eq 0 then RETURN FLOAT Auto else RETURN Auto END"); 295 a[293] = new Array("./ToBeReviewed/STATISTICS/c_timecorrelate.html", "c_timecorrelate.pro", "", "FUNCTION TimeCross_Cov Xd Yd M nT Ndim Double Double ZERO2NAN zero2nan Sample cross covariance function compile_opt hidden case Ndim OF 1:res TOTAL Xd 0:nT M 1L Yd M:nT 1L Double Double 2:res TOTAL Xd 0:nT M 1L Yd M:nT 1L Ndim Double Double 3:res TOTAL Xd 0:nT M 1L Yd M:nT 1L Ndim Double Double 4:res TOTAL Xd 0:nT M 1L Yd M:nT 1L Ndim Double Double ENDCASE if keyword_set zero2nan then begin zero where res EQ 0 if zero 0 NE 1 then res zero values f_nan ENDIF RETURN res END file_comments This function computes the time cross correlation Pxy L or the time cross covariance between 2 arrays this is some kind of c_correlate but for multidimenstionals arrays as a function of the lag L categories Statistics param X in required An Array which last dimension is the time dimension of size n float or double param Y in required An Array which last dimension is the time dimension of size n float or double param LAG in required A scalar or n element vector in the interval n 2 n 2 of type integer that specifies the absolute distance s between indexed elements of X keyword COVARIANCE If set to a non zero value the sample cross covariance is computed keyword DOUBLE If set to a non zero value computations are done in double precision arithmetic examples Define two n element sample populations x 3 73 3 67 3 77 3 83 4 67 5 87 6 70 6 97 6 40 5 57 y 2 31 2 76 3 02 3 13 3 72 3 88 3 97 4 39 4 34 3 95 Compute the cross correlation of X and Y for LAG 5 0 1 5 6 7 lag 5 0 1 5 6 7 result c_timecorrelate x y lag The result should be: 0 428246 0 914755 0 674547 0 405140 0 403100 0 339685 history 01 03 2000 Sebastien Masson smasson lodyc jussieu fr Based on the C_CORRELATE procedure of IDL August 2003 Sebastien Masson update according to the update made in C_CORRELATE by W Biagiotti and available in IDL 5 5 INTRODUCTION TO STATISTICAL TIME SERIES Wayne A Fuller ISBN 0 471 28715 6 version Id: c_timecorrelate pro 150 2006 08 09 10:12:54Z navarro FUNCTION C_Timecorrelate X Y Lag Covariance Covariance Double Double Compute the sample cross correlation or cross covariance of Xt Xt l and Yt Yt l as a function of the lag l ON_ERROR 2 xsize SIZE X ysize SIZE Y nt float xsize xsize 0 NDim xsize 0 if total xsize 0:xsize 0 NE ysize 0:ysize 0 NE 0 then MESSAGE X and Y arrays must have the same size and the same dimensions Check length if nt lt 2 then MESSAGE Time dimension of X and Y arrays must contain 2 or more elements If the DOUBLE keyword is not set then the internal precision and result are identical to the type of input if N_ELEMENTS Double eq 0 then Double Xsize Xsize 0 1 eq 5 or ysize ysize 0 1 eq 5 if n_elements lag EQ 0 then lag 0 nLag N_ELEMENTS Lag Deviations if double then one 1 0d ELSE one 1 0 Ndim size X n_dimensions Xd TOTAL X Ndim Double Double nT Xd X Xd replicate one nT Yd TOTAL Y Ndim Double Double nT Yd Y Yd replicate one nT if nLag eq 1 then Lag Lag Create a 1 element vector case NDim of 1:if Double eq 0 then Cross FLTARR nLag else Cross DBLARR nLag 2:if Double eq 0 then Cross FLTARR Xsize 1 nLag else Cross DBLARR Xsize 1 nLag 3:if Double eq 0 then Cross FLTARR Xsize 1 Xsize 2 nLag else Cross DBLARR Xsize 1 Xsize 2 nLag 4:if Double eq 0 then Cross FLTARR Xsize 1 Xsize 2 Xsize 3 nLag else Cross DBLARR Xsize 1 Xsize 2 Xsize 3 nLag endcase if KEYWORD_SET Covariance eq 0 then begin Compute Cross Crossation for k 0 nLag 1 do begin if Lag k ge 0 then BEGIN case NDim of 1: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double 2: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double 3: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double 4: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double endcase ENDIF else BEGIN case NDim of 1: Cross k TimeCross_Cov Yd Xd ABS Lag k nT Ndim Double Double 2: Cross k TimeCross_Cov Yd Xd ABS Lag k nT Ndim Double Double 3: Cross k TimeCross_Cov Yd Xd ABS Lag k nT Ndim Double Double 4: Cross k TimeCross_Cov Yd Xd ABS Lag k nT Ndim Double Double endcase ENDELSE ENDFOR div sqrt TimeCross_Cov Xd Xd 0L nT Ndim Double Double zero2nan TimeCross_Cov Yd Yd 0L nT Ndim Double Double zero2nan Cross temporary Cross temporary div replicate one nLag endif else begin Compute Cross Covariance for k 0 nLag 1 do begin if Lag k ge 0 then BEGIN case NDim of 1: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double nT 2: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double nT 3: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double nT 4: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double nT ENDCASE ENDIF else BEGIN case NDim of 1: Cross k TimeCross_Cov yd xd ABS Lag k nT Ndim Double Double nT 2: Cross k TimeCross_Cov yd xd ABS Lag k nT Ndim Double Double nT 3: Cross k TimeCross_Cov yd xd ABS Lag k nT Ndim Double Double nT 4: Cross k TimeCross_Cov yd xd ABS Lag k nT Ndim Double Double nT ENDCASE ENDELSE endfor endelse if Double eq 0 then RETURN FLOAT Cross else RETURN Cross END "); 296 a[294] = new Array("./ToBeReviewed/STRING/chkeywd.html", "chkeywd.pro", "", " file_comments In a string containing an order to executewith EXECUTE by example We change the value of one of keywords More generally in a string we look for the caracter chain: keywdname and we change the value of categories string keywords param STRINGIN in required it is a string param KEYWDNAME in required it is a string designating the name of keyword to look for param KEYWDVALUE in required The new value of the keyword to considerate in STRINGIN keyword SEPARATOR To look for the keyword we look for the first sign which follow the position of keywdname By default we substitute the string before the comma With the keyword SEPARATOR we can modify the cut of the string SEPARATOR give a caractere before the one we have to look for the comma which delimit the keyword in the string see examples keyword AFTER To look for the keyword we look for the first sign which follow the position of keywdname By default we substitute the string before the comma With the keyword AFTER we can modify the cut of the string AFTER give a caractere after the one we have to look for the comma which delimit the keyword in the string see examples returns stringout stringin modified if keywdname has been found in stringin uses common pro restrictions If keywdvalue is an array it will be convert in a vector restrictions Beware this function has loops ifs ad cases everywhere So it can not be used by big keywords with a lot of elements which are big arrays The input keyword must not contain Complex floatings structure Double precision complex Pointer Object reference Unsigned Integer Unsigned Longword Integer 64 bit Integer or Unsigned 64 bit Integer examples IDL b ok 111 year 1997 1998 1999 age_capitaine 35 IDL print b ok 111 year 1997 1998 1999 age_capitaine 35 IDL print chkeywd b ok c est bon ok c est bon year 1997 1998 1999 age_capitaine 35 IDL print chkeywd b YEAR indgen 5 sep ok 111 year 0 1 2 3 4 age_capitaine 35 IDL print chkeywd b YEAR indgen 5 sep after ok 111 year 0 1 2 3 4 age_capitaine 35 IDL b ok 111 year age_capitaine IDL print chkeywd b year c est bon ok 111 year c est bon age_capitaine history Sebastien Masson smasson lodyc jussieu fr 18 10 1999 24 11 1999: adaptation for keywords starting by version Id: chkeywd pro 142 2006 07 21 12:47:49Z navarro FUNCTION chkeywd stringin keywdname keywdvalue SEPARATOR separator AFTER after compile_opt idl2 strictarrsubs stringout stringin poskeywd strpos strlowcase stringout strlowcase keywdname if poskeywd EQ 1 then return stringout while poskeywd NE 1 do BEGIN change a keyword starting by toto if strmid stringout poskeywd 1 1 EQ then BEGIN ajoute keywdname tostr keywdvalue stringout strmid stringout 0 poskeywd 1 ajoute strmid stringout poskeywd strlen keywdname poskeywd poskeywd strlen ajoute poskeywd strpos stringout keywdname poskeywd ENDIF ELSE BEGIN change a keyword sarting by toto posegal strpos stringout poskeywd if posegal EQ 1 then return stringout if NOT keyword_set separator then separator posvirgule strpos stringout separator posegal 1 if keyword_set after then posvirgule strpos stringout posvirgule 1 ELSE posvirgule rstrpos stringout posvirgule 1 if posvirgule EQ 1 then posvirgule strlen stringout stringout strmid stringout 0 posegal 1 tostr keywdvalue strmid stringout posvirgule poskeywd strpos stringout keywdname posvirgule 1 ENDELSE endwhile return stringout end"); 297 a[295] = new Array("./ToBeReviewed/STRING/delchr.html", "delchr.pro", "", " file_comments Delete all occurrences of a character from a text string categories param OLD in required original text string param C in required character to delete keyword HELP returns new resulting string history R Sterner 5 Jul 1988 Johns Hopkins Applied Physics Lab RES 11 Sep 1989 converted to SUN R Sterner 27 Jan 1993 dropped reference to array Copyright C 1988 Johns Hopkins University Applied Physics Laboratory This software may be used copied or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made This routine is provided as is without any express or implied warranties whatsoever Other limitations apply as described in the file disclaimer txt version Id: delchr pro 142 2006 07 21 12:47:49Z navarro FUNCTION DELCHR OLD C help hlp compile_opt idl2 strictarrsubs if n_params 0 lt 2 or keyword_set hlp then begin print Delete all occurrences of a character from a text string print new delchr old char print old original text string in print char character to delete in print new resulting string out return 1 endif B BYTE OLD convert string to a byte array CB BYTE C convert char to byte w where b ne cb 0 if w 0 eq 1 then return Nothing left return string b w Return new string END"); 298 a[296] = new Array("./ToBeReviewed/STRING/getfile.html", "getfile.pro", "", " file_comments Read a text file into a string array param filein in required text file name Keyword ERROR err error flag: 0 ok 1 file not opened 2 no lines in file keyword QUIET means give no error message keyword LINES n Number of lines to read def all Much faster if number of lines is known Automatic for IDL 5 6 or later keyword FIND search te file in the all path directories use find pro keyword HELP returns history R Sterner 20 Mar 1990 R Sterner 1999 Apr 14 Added LINES n keyword R Sterner 2003 Aug 29 Automatic lines if IDL 5 6 R Sterner 2003 Sep 02 Check if file exists first R Sterner 2003 Sep 04 Fixed error in number of lines in file R Sterner 2003 Oct 10 Fixed error when no lines R Sterner 2004 Jan 27 Fixed to work in IDL as old as vers 4 S Masson smasson lodyc jussieu fr 4 Feb 2002 search te file in the all path directories use find pro when using find keyword Use spawn cat for unix os Copyright C 1990 Johns Hopkins University Applied Physics Laboratory This software may be used copied or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made This routine is provided as is without any express or implied warranties whatsoever Other limitations apply as described in the file disclaimer txt version Id: getfile pro 142 2006 07 21 12:47:49Z navarro function getfile filein error err help hlp quiet quiet lines lines find find compile_opt idl2 strictarrsubs if n_params 0 lt 1 or keyword_set hlp then begin print Read a text file into a string array print s getfile f print f text file name in print s string array out print Keywords: print ERROR err error flag: 0 ok 1 file not opened print 2 no lines in file print QUIET means give no error message print LINES n Number of lines to read def all print Much faster if number of lines is known print Automatic for IDL 5 6 or later return 1 endif if keyword_set find then begin file find filein file file 0 if file EQ NOT FOUND then begin print Error in getfile: File filein not fouond return 1 endif ENDIF ELSE file filein if version os_family EQ unix then begin spawn cat file res if res 0 NE then return res ELSE return endif if version release 0 ge 5 5 then begin f call_function file_search file count c endif else begin f findfile file count c endelse if c eq 0 then begin err 1 return endif if n_elements line eq 0 and version release 0 ge 5 6 then begin lines file_lines file if lines eq 0 then begin if not keyword_set quiet then print No lines in file err 2 return 1 endif minlines 0 endif else minlines 1 get_lun lun on_ioerror err openr lun file if n_elements lines ne 0 then begin s strarr lines readf lun s endif else begin s t while not eof lun do begin readf lun t s s t endwhile endelse close lun free_lun lun if n_elements s eq minlines then begin if not keyword_set quiet then print No lines in file err 2 return 1 endif if minlines eq 1 then s s 1: err 0 return s err: if err eq 168 then begin if not keyword_set quiet then print Non standard text file format free_lun lun return s endif if not keyword_set quiet then print Error in getfile: File file not opened free_lun lun err 1 return 1 end"); 299 a[297] = new Array("./ToBeReviewed/STRING/getwrd.html", "getwrd.pro", "", " file_comments Return the n th word from a text string categories param TXTSTR in required text string to extract from The first element is used if txt is an array param NTH in required word number to get first 0 def param MTH in required optional last word number to get keyword LOCATION l Return word n string location keyword DELIMITER d Set word delimiter def space tab keyword LAST means n is offset from last word So n 0 gives last word n 1 gives next to last If n 2 and m 0 then last 3 words are returned keyword NOTRIM suppresses whitespace trimming on ends keyword NWORDS n Returns number of words in string returns wrd returned word or words uses getwrd_com restrictions If a NULL string is given txt then the last string given is used This saves finding the words again If m n wrd will be a string of words from word n to word m If no m is given wrd will be a single word n n wrd will be a string of words from word n to print word m If no m is given wrd will be a single word print n 0 Smaller of in and im im im 0 to zero if in gt lst and im gt lst then return Out of range in in lst Larger of in and im im im lst to be last ll loc in Nth word start return strtrim strmid txtstr0 ll loc im loc in len im 2 endif N ABS NTH Allow nth 0 IF N GT NWDS 1 THEN RETURN out of range null ll loc n N th word position IF NTH LT 0 THEN GOTO NEG Handle nth 0 IF MTH GT NWDS 1 THEN MTH NWDS 1 Words to end if keyword_set notrim then begin RETURN STRMID TXTSTR0 ll LOC MTH LOC NTH LEN MTH endif else begin RETURN strtrim STRMID TXTSTR0 ll LOC MTH LOC NTH LEN MTH 2 endelse NEG: if keyword_set notrim then begin RETURN STRMID TXTSTR0 ll 9999 endif else begin RETURN strtrim STRMID TXTSTR0 ll 9999 2 endelse END"); 300 a[298] = new Array("./ToBeReviewed/STRING/isnumber.html", "isnumber.pro", "", " file_comments Determine if a text string is a valid number categories param TXT0 in required text string to test param X in required keyword HELP returns x optionaly returned numeric value if valid i test flag: 0: not a number 1: txt is a long integer 2: txt is a float 1: first word of txt is a long integer 2: first word of txt is a float history R Sterner 15 Oct 1986 Johns Hopkins Applied Physics Lab R Sterner 12 Mar 1990 upgraded Richard Garrett 14 June 1992 fixed bug in returned float value R Sterner 1999 Nov 30 Fixed a bug found by Kristian Kjaer Denmark Copyright C 1986 Johns Hopkins University Applied Physics Laboratory This software may be used copied or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made This routine is provided as is without any express or implied warranties whatsoever Other limitations apply as described in the file disclaimer txt version Id: isnumber pro 142 2006 07 21 12:47:49Z navarro function isnumber txt0 x help hlp compile_opt idl2 strictarrsubs if n_params 0 lt 1 or keyword_set hlp then begin print Determine if a text string is a valid number print i isnumber txt x print txt text string to test in print x optionaly returned numeric value if valid out print i test flag: out print 0: not a number print 1: txt is a long integer print 2: txt is a float print 1: first word of txt is a long integer print 2: first word of txt is a float return 1 endif txt strtrim txt0 2 trim blanks x 0 define X if txt eq then return 0 null string not a number sn 1 if nwrds txt gt 1 then begin get first word if more than one sn 1 txt getwrd txt 0 endif f_flag 0 Floating flag b byte txt Convert to byte array if b 0 eq 45 then b b 1: Drop leading Kristian Kjaer if b 0 eq 43 then b b 1: Drop leading bug fix w where b eq 43 cnt Look for if cnt gt 1 then return 0 Alow only 1 t delchr txt Drop it w where b eq 45 cnt Look for if cnt gt 1 then return 0 Allow only 1 t delchr t Drop it w where b eq 46 cnt Look for if cnt gt 1 then return 0 Allow only 1 if cnt eq 1 then f_flag 1 If one then floating t delchr t Drop it w where b eq 101 cnt Look for e if cnt gt 1 then return 0 Allow only 1 if cnt eq 1 then f_flag 1 If 1 then assume float t delchr t e Drop it w where b eq 69 cnt Look for E if cnt gt 1 then return 0 Allow only 1 if cnt eq 1 then f_flag 1 If 1 then assume float t delchr t E Drop it w where b eq 100 cnt Look for d if cnt gt 1 then return 0 Allow only 1 if cnt eq 1 then f_flag 1 If 1 then assume float t delchr t d Drop it w where b eq 68 cnt Look for D if cnt gt 1 then return 0 Allow only 1 if cnt eq 1 then f_flag 1 If 1 then assume float t delchr t D Drop it Allow only one e E d or D if total b eq 101 b eq 69 b eq 100 b eq 68 gt 1 then return 0 b byte t Allow no alphabetic characters if total b ge 65 and b le 122 ne 0 then return 0 c strmid t 0 1 if c lt 0 or c gt 9 then return 0 First char not a digit x txt 0 0 Convert to a float if f_flag eq 1 then return 2 sn Was floating if x eq long x then begin x long x return sn endif else begin return 2 sn endelse end"); 301 a[299] = new Array("./ToBeReviewed/STRING/lenstr.html", "lenstr.pro", "", " ROUTINE: lenstr USEAGE: result lenstr str input: str a single string or string array output: result length of the string s in normalized units the number of elements of RESULT matches the number of elements of STRING procedure: This function returns the physical length of the string on the output device not the number of characters This is done by first switching to X and writing the string s with XYOUTS in graphics mode 5 which disables display to the screen but does not interfere with operation of XYOUTS The WIDTH keyword parameter of XYOUTS is used to retrieve the physical length of the string s author: Paul Ricchiazzi 7apr93 Institute for Computational Earth System Science University of California Santa Barbara todo seb function lenstr str compile_opt idl2 strictarrsubs dsave d name thisOS VERSION OS_FAMILY thisOS STRMID thisOS 0 3 thisOS STRUPCASE thisOS CASE thisOS of MAC : SET_PLOT thisOS WIN : SET_PLOT thisOS ELSE: SET_PLOT X ENDCASE p BACKGROUND d n_colors 1 255 p color 0 if d n_colors gt 256 then p background ffffff x device get_graphics oldg set_graphics 5 if keyword_set charsize eq 0 then charsize 1 nn n_elements str case nn of 0:w 0 1:xyouts 0 0 device str width w else:begin w fltarr nn for i 0 nn 1 do begin xyouts 0 0 device str i width ww w i ww endfor end endcase fac1 float d x_ch_size d x_vsize ratio of char width to device1 width device set_graphics oldg set_plot dsave IF dsave EQ X OR dsave EQ MAC OR dsave EQ WIN then BEGIN p BACKGROUND d n_colors 1 255 p color 0 if d n_colors gt 256 then p background ffffff x ENDIF fac2 float d x_ch_size d x_vsize ratio of char width to device2 width return w fac2 fac1 string width adjusted for device width end "); 302 a[300] = new Array("./ToBeReviewed/STRING/nwrds.html", "nwrds.pro", "", " file_comments Return the number of words in the given text string categories param TXTSTR text string to examine keyword DELIMITER d Set delimiter character def space keyword HELP returns n number of words found restrictions See also getwrd history R Sterner 7 Feb 1985 Johns Hopkins University Applied Physics Laboratory RES 4 Sep 1989 converted to SUN Copyright C 1985 Johns Hopkins University Applied Physics Laboratory This software may be used copied or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made This routine is provided as is without any express or implied warranties whatsoever Other limitations apply as described in the file disclaimer txt version Id: nwrds pro 142 2006 07 21 12:47:49Z navarro function nwrds txtstr help hlp delimiter delim compile_opt idl2 strictarrsubs if n_params 0 lt 1 or keyword_set hlp then begin print Return the number of words in the given text string print n nwrds txt print txt text string to examine in print n number of words found out print Keywords: print DELIMITER d Set delimiter character def space print Notes: See also getwrd return 1 endif if strlen txtstr eq 0 then return 0 A null string has 0 words ddel Default word delimiter is a space if n_elements delim ne 0 then ddel delim Use given word delimiter tst byte ddel 0 Delimiter as a byte value tb byte txtstr String to bytes if ddel eq then begin Check for tabs w where tb eq 9B cnt Yes if cnt gt 0 then tb w 32B Convert any to space endif x tb ne tst Locate words x 0 x 0 Pad ends with delimiters y x shift x 1 eq 1 Look for word beginnings n fix total y Count word beginnings return n end"); 303 a[301] = new Array("./ToBeReviewed/STRING/putfile.html", "putfile.pro", "", " file_comments Write a text file from a string array categories INPUTS: param FILE in required text file name param S in required string array keyword ERROR err error flag: 0 ok 1 invalid string array history R Sterner 20 Mar 1990 R Sterner 4 Nov 1992 allowed scalar strings Copyright C 1990 Johns Hopkins University Applied Physics Laboratory This software may be used copied or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made This routine is provided as is without any express or implied warranties whatsoever Other limitations apply as described in the file disclaimer txt version Id: putfile pro 142 2006 07 21 12:47:49Z navarro pro putfile file s error err help hlp compile_opt idl2 strictarrsubs if n_params 0 lt 1 or keyword_set hlp then begin print Write a text file from a string array print putfile f s print f text file name in print s string array in print Keywords: print ERROR err error flag: 0 ok 1 invalid string array return endif if lmgr demo then begin print you are in Demo mode It is impossible to write a file return endif if size s type ne 7 then begin print Error in putfile: argument must be a string array err 1 return endif get_lun lun openw lun file for i 0 n_elements s 1 do begin t s i if t eq then t printf lun t endfor close lun free_lun lun err 0 return end"); 304 a[302] = new Array("./ToBeReviewed/STRING/str_size.html", "str_size.pro", "", " file_comments The purpose of this function is to return the proper character size to make a specified string a specifed width in a window The width is specified in normalized coordinates The function is extremely useful for sizing strings and labels in resizeable graphics windows categories Graphics Programs Widgets param STRING in required This is the string that you want to make a specifed target size or width param TARGETWIDTH in optional This is the target width of the string in normalized coordinates in the current graphics window The character size of the string returned as thisCharSize will be calculated to get the string width as close as possible to the target width The default is 0 25 keyword INITSIZE This is the initial size of the string Default is 1 0 keyword STEP This is the amount the string size will change in each step of the interative process of calculating the string size The default value is 0 05 returns thisCharSize This is the size the specified string should be set to if you want to produce output of the specified target width The value is in standard character size units where 1 0 is the standard character size examples To make the string Happy Holidays take up 30 of the width of the current graphics window type this: XYOUTS 0 5 0 5 ALIGN 0 5 Happy Holidays CHARSIZE STR_SIZE Happy Holidays 0 3 history Written by: David Fanning 17 DEC 96 Added a scaling factor to take into account the aspect ratio of the window in determing the character size 28 Oct 97 DWF version Id: str_size pro 142 2006 07 21 12:47:49Z navarro FUNCTION STR_SIZE string targetWidth INITSIZE initsize STEP step compile_opt idl2 strictarrsubs ON_ERROR 1 Check positional parameters np N_PARAMS CASE np OF 0: MESSAGE One string parameter is required 1: targetWidth 0 25 ELSE: ENDCASE Check keywords Assign default values IF N_ELEMENTS step EQ 0 THEN step 0 05 IF N_ELEMENTS initsize EQ 0 THEN initsize 1 0 Calculate a trial width size initsize XYOUTS 0 5 0 5 ALIGN 0 5 string WIDTH thisWidth CHARSIZE size NORMAL Size is perfect IF thisWidth EQ targetWidth THEN RETURN size Float D Y_Size D X_Size Initial size is too big IF thisWidth GT targetWidth THEN BEGIN REPEAT BEGIN XYOUTS 0 5 0 5 ALIGN 0 5 string WIDTH thisWidth CHARSIZE size NORMAL size size step ENDREP UNTIL thisWidth LE targetWidth RETURN size Float D Y_Size D X_Size ENDIF Initial size is too small IF thisWidth LT targetWidth THEN BEGIN REPEAT BEGIN XYOUTS 0 5 0 5 ALIGN 0 5 string WIDTH thisWidth CHARSIZE size NORMAL size size step ENDREP UNTIL thisWidth GT targetWidth size size step Need a value slightly smaller than target RETURN size Float D Y_Size D X_Size ENDIF END"); 305 a[303] = new Array("./ToBeReviewed/STRING/string2struct.html", "string2struct.pro", "", " This is a really really cool way to turn keywords into a structure function too_cool _extra extra compile_opt idl2 strictarrsubs return extra end file_comments Takes an input string set up as keywords and returns an anonymous structure This is particularly useful for taking keywords entered by a user in a text field and passing then to other routines categories Utility param STRVAL IN REQUIRED String set up as keywords Keywords require a little special treatment Such as plot findgen 100 _extra stringToStructure title testing RETURNS This function returns the string as an anonymous structure If an error was found then this function returns a structure with a null field examples The code below creates a widget that uses this routine pro tPlot event widget_control event top get_uvalue field widget_control field get_value strVal extra stringToStructure strVal plot findgen 100 _extra extra wshow return end pro testWid enter any keyword to plot and see how it works base widget_base col field cw_field base title test value ax 0 string void widget_button base value plot event_pro tPlot widget_control base realize set_uvalue field xmanager testWid base no_block return end history Written by: RLK Ronn Kling Consulting ronn rlkling com www rlkling com May 1999 version Id: string2struct pro 142 2006 07 21 12:47:49Z navarro function string2struct strVal compile_opt idl2 strictarrsubs r execute extra too_cool strVal 0 if r 0 then user did not enter keywords correctly so return a structure with a null field if r eq 0 then begin print Error in input string return null:0 endif return extra end "); 306 a[304] = new Array("./ToBeReviewed/STRING/strkeywd.html", "strkeywd.pro", "", " file_comments Translate a sturcture in a string able to be used to specify keywords in the calling of a function when we use EXECUTE see example categories param STRUCT a structure returns a string composed like following: For each element of the structure we write a part of the string as: name_of_the_element content_of_the_element restrictions If an element of the structure contain an array it will be convert in a vector restrictions Beware this function has loops ifs ad cases everywhere So it can not be used by big keywords with a lot of elements which are big arrays The input keyword must not contain Complex floatings structure Double precision complex Pointer Object reference Unsigned Integer Unsigned Longword Integer 64 bit Integer or Unsigned 64 bit Integer examples We create a structure IDL b get_extra ok 111 year 1997 1998 1999 age_capitaine 35 IDL help b struct Structure 3 tags length 10 refs 1: AGE_CAPITAINE INT 35 OK INT 111 YEAR INT Array 3 We put this structure as a string IDL a strkeywd b IDL print a AGE_CAPITAINE 35 OK 111 YEAR 1997 1998 1999 Now we can use the string a to pass keywords in a function thanks to execute IDL test execute c get_extra a IDL help c struct Structure 3 tags length 10 refs 1: AGE_CAPITAINE INT 35 OK INT 111 YEAR INT Array 3 history Sebastien Masson smasson lodyc jussieu fr 11 10 1999 version Id: strkeywd pro 142 2006 07 21 12:47:49Z navarro FUNCTION strkeywd struct compile_opt idl2 strictarrsubs if size struct type NE 8 then return tname tag_names struct if n_elements tname EQ 0 then return on s occupe du premier element res strlowcase tname 0 tostr struct 0 if n_elements tname EQ 1 then return res on s occupe des autres elements for n 1 n_elements tname 1 do res res strlowcase tname n tostr struct n return res end"); 307 a[305] = new Array("./ToBeReviewed/STRING/strrepl.html", "strrepl.pro", "", " file_comments replace one or more character s string s in a string categories string routines param STR in required the string to be changed param RCHAR in required replacement character string returns another string restrictions Known shortcoming: if index is an array it must contain all valid elements only the first entry is checked examples Convert one letter into upper case abc abcdefghijklmnopqrstuvwxyz print strrepl abc strpos abc m M prints abcdefghijklMnopqrstuvwxyz Use with strwhere function a abcabcabc print strrepl a strwhere a a prints bc bc bc bc bc IDL print strrepl a bc eeee a eeee a eeee a eeee IDL print strrepl a b 0000 a0000ca0000ca0000 IDL print strrepl a toto 0000 abcabcabc history mgs 02 Jun 1998: VERSION 1 00 sebastien Masson smlod ipsl jussieu fr version Id: strrepl pro 142 2006 07 21 12:47:49Z navarro Copyright C 1998 Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to mgs io harvard edu with subject IDL routine strrepl function strrepl str agument1 rchar compile_opt idl2 strictarrsubs if n_elements str eq 0 then return convert strign and replace character to byte BStr byte str new byte rchar if size agument1 type EQ 7 then begin old byte agument1 index strpos str agument1 pos index while strpos str agument1 pos 1 NE 1 do BEGIN pos strpos str agument1 pos 1 index index pos ENDWHILE make sure index is in range if index 0 lt 0 OR index 0 ge n_elements BStr THEN return Str ENDIF ELSE BEGIN index agument1 if index 0 lt 0 OR index 0 ge n_elements BStr then return Str old BStr index 0 ENDELSE replace indexed characters in string nelenew n_elements new neleold n_elements old nindex n_elements index if nelenew neleold NE 1 then begin if index 0 EQ 0 then BStr NEW BStr index 0 neleold: n_elements BStr 1 ELSE BStr BStr 0:index 0 1 NEW BStr index 0 neleold: n_elements BStr 1 if nindex EQ 1 then return string BStr if nindex GT 2 then for i 1 nindex 2 do BStr BStr 0:index i i nelenew neleold 1 NEW BStr index i i nelenew neleold neleold: n_elements BStr 1 BStr BStr 0:index n_elements index 1 nindex 1 nelenew neleold 1 NEW ENDIF ELSE BStr index NEW return result as string return string BStr end"); 308 a[306] = new Array("./ToBeReviewed/STRING/strright.html", "strright.pro", "", " file_comments return right subportion from a string categories string handling param S in required the string to be searched param LASTN in required the number of characters to be returned Default is 1 If NLAST is ge strlen STRING the complete string is returned returns The portion of LASTN characters of S counted from the back examples if strright path ne then path path history mgs 19 Nov 1997: VERSION 1 00 version Id: strright pro 142 2006 07 21 12:47:49Z navarro Copyright C 1997 Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to mgs io harvard edu with subject IDL routine strright function strright s lastn compile_opt idl2 strictarrsubs on_error 2 return to caller if n_elements s le 0 then return 1L l strlen s if n_elements lastn le 0 then lastn 1 if lastn gt l then lastn l result strmid s l lastn l return result end"); 309 a[307] = new Array("./ToBeReviewed/STRING/strsci.html", "strsci.pro", "", " file_comments Given a number returns a string of that B number in scientific notation format e g A x 10 categories String Utilities param DATA in required A floating point or integer number to be converted into a power of 10 keyword FORMAT The format specification used in the string conversion for the mantissa i e the A of A x 10 B Default is f12 2 keyword POT_ONLY Will return only the power of 10 part of the string i e the 10 B Default is to return the entire string e g A x 10 B keyword MANTISSA_ONLY return only mantissa of the string keyword SHORT return 10 0 as 1 and 10 1 as 10 keyword TRIM don t insert blanks i e return Ax10 B restrictions This function does not evaluate the format statement thoroughly which can result in somewhat quirky strings Example: print strsci 9 999 results in 10 0x10 0 instead of 1 0x10 1 Need a better symbol than the x for the multiplier examples Result STRSCI 2000000 format i1 print result 6 prints 2 x 10 u6 n which gets plotted as 2 x 10 Result STRSCI 0 0001 print result 4 prints 1 00 x 10 u 4 n which gets plotted as 1 00 x 10 Result STRSCI 0d0 format f13 8 print result prints 0 00000000 history bmy 28 May 1998: VERSION 1 00 B now returns string of the form A x 10 mgs 29 May 1998: bug fix: now allows negative numbers keyword MANTISSA_ONLY added default format changed to f12 2 bmy 02 Jun 1998: renamed to STRSCI STRing SCIentific notation mgs 03 Jun 1998: added TRIM keyword mgs 22 Sep 1998: added SHORT keyword modified handling of TRIM keyword mgs 24 Sep 1998: bug fix with SHORT flag bmy mgs 02 Jun 1999: now can handle DATA 0 0 correctly updated comments mgs 03 Jun 1999: can now also handle values lt 1 and doesn t choke on arrays version Id: strsci pro 142 2006 07 21 12:47:49Z navarro Copyright C 1998 1999 Bob Yantosca and Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to bmy io harvard edu or mgs io harvard edu with subject IDL routine strsci function StrSci Data Format Format POT_Only POT_Only MANTISSA_ONLY MANTISSA_ONLY SHORT SHORT TRIM TRIM compile_opt idl2 strictarrsubs Error checking Keyword settings on_error 2 if n_elements Data eq 0 then begin return endif if not Keyword_Set Format then Format f12 2 POT_Only keyword_set POT_Only MANTISSA_Only keyword_set MANTISSA_Only Short Keyword_Set Short Trim Keyword_Set Trim NDat n_elements Data Result strarr NDat for i 0 NDat 1 do begin If ABS DATA 0 then we can proceed to take the common log For DATA 0 place a sign in front of the number if Abs Data i ne 0 0 then begin take the common log and store in LOG10DATA Log10Data ALog10 Abs Data i Boolean flag if data 0 sign Data i lt 0 0 Compute the characteristic int part Add the 1d 6 to prevent roundoff errors Characteristic Fix Log10Data 1 0d 6 if Log10Data lt 0 then Characteristic Characteristic 1 Compute the Mantissa frac part and take its antilog Mantissa Log10Data Characteristic Mantissa 10 0 Mantissa print data i log10data mantissa characteristic format 3f24 14 i8 String for the coefficient part The coefficient is just antilog of the Mantissa Add the minus sign if DATA 0 0 A StrTrim String Mantissa Format Format 2 if Sign then A A String for the power of 10 part B 10 u strtrim string Characteristic 2 n if Short then begin if Characteristic eq 0 then B 1 if Characteristic eq 1 then B 10 endif composite string Result i A x B if Short AND B eq 1 then Result i A If DATA 0 then we cannot take the common log so return zeroes for the result strings Use the FORMAT string endif else begin A String 0d0 Format Format B A Result i A endelse Return result to calling program depending on keyword settings Eliminate blanks if TRIM keyword is set if POT_Only then Result i B if MANTISSA_Only then Result i A if Trim then Result i StrCompress Result i Remove_All endfor if n_elements Result eq 1 then Result Result 0 return Result end"); 310 a[308] = new Array("./ToBeReviewed/STRING/strtok.html", "strtok.pro", "", " file_comments Retrieve portion of string up to token categories text strings param STRING in required String to be split Contains text after in out token on output param TOKEN in required Token to use in splitting old keyword TRIM set to remove leading blanks from old before returning keyword HELP print useful message and exit returns new portion of string up to token out old portion of old after token out in restrictions Input parameter old is modified Token may be one or more characters If token is not found returns old and sets old to examples If old is foo44 bar then strtok old 44 would return foo and upon return old will be left with bar If TRIM were set old would be bar on return If old xyz then new strtok old a would return with new xyz and old history Log: strtok pro v Revision 1 3 1996 06 14 20:00:27 mcraig Updated Copyright info Revision 1 2 1996 05 09 00:22:17 mcraig Added built in help Revision 1 1 1996 01 31 18:47:37 mcraig Initial revision Thanks: To D Linder who wrote GETTOK part of the goddard library upon which this is based Release: Name: Rel_1_2 Copyright: Copyright C 1996 The Regents of the University of California All Rights Reserved Written by Matthew W Craig See the file COPYRIGHT for restrictions on distrubting this code This code comes with absolutely NO warranty see DISCLAIMER for details version Id: strtok pro 142 2006 07 21 12:47:49Z navarro FUNCTION Strtok string token TRIM trim HELP Help compile_opt idl2 strictarrsubs Back to the caller if error occurs On_error 2 IF n_params NE 2 OR keyword_set Help THEN BEGIN offset print offset Retrieve portion of string up to token print offset new strtok old token print offset Inputs: print offset offset old String to be split Contains text after in out print offset offset token on output print offset offset token Token to use in splitting old in print offset Keywords: print offset offset TRIM set to remove leading blanks from old print offset offset before returning print offset offset HELP print useful message and exit print offset Outputs: print offset offset new portion of string up to token out print offset offset old portion of old after token out in print offset Side effects: print offset offset Input parameter old is modified print offset Notes: print offset offset Token may be one or more characters print offset offset If token is not found returns old and sets old to print offset Examples: print offset offset If old is foo44 bar then strtok old 44 would return print offset offset foo and upon return old will be left with bar If TRIM print offset offset were set old would be bar on return print offset offset If old xyz then new strtok old a would return with print offset offset new xyz and old return 1 ENDIF pos strpos string token IF pos GE 0 THEN BEGIN front strmid string 0 pos string strmid string pos strlen token strlen string IF keyword_set trim THEN string strtrim string 1 return front ENDIF front string string return front END "); 311 a[309] = new Array("./ToBeReviewed/STRING/strwhere.html", "strwhere.pro", "", " file_comments return position array for occurence of a character in a string categories string tools param STR in required the string param SCHAR in required the character to look for returns COUNT out optional The number of matches that were found The function returns an index array similar to the result of the where function examples ind strwhere abcabcabc a returns 0 3 6 history mgs 02 Jun 1998: VERSION 1 00 bmy 30 Jun 1998: now returns COUNT the number of matches that are found this is analogous to the WHERE command version Id: strwhere pro 142 2006 07 21 12:47:49Z navarro Copyright C 1998 Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to mgs io harvard edu with subject IDL routine strwhere function strwhere str schar Count compile_opt idl2 strictarrsubs if n_elements str eq 0 then return 1 convert to byte BStr byte Str BSC byte schar 0 Search for matches Ind where Bstr eq BSC Count bmy return where BStr eq BSC return Ind end "); 312 a[310] = new Array("./ToBeReviewed/STRING/tostr.html", "tostr.pro", "", " file_comments Convert an input in a string categories param INPUT in required input can not contain or be of the type of: Complex floating structure Double precision complex Pointer Object reference Unsigned Integer Unsigned Longword Integer 64 bit Integer Unsigned 64 bit Integer returns a string restrictions If keywdvalue is an array it will be convert in a vector restrictions Beware this function has loops ifs ad cases everywhere So it can not be used by big keywords with a lot of elements which are big arrays examples IDL help tostr 1 tostr a tostr indgen 4 tostr a jkfjo STRING 1 STRING a STRING 0 1 2 3 STRING a jkfjo IDL print tostr c est bon c est bon c est bon c est bon history Sebastien Masson smasson lodyc jussieu fr 18 10 1999 version Id: tostr pro 142 2006 07 21 12:47:49Z navarro FUNCTION tostr input compile_opt idl2 strictarrsubs case 1 of size input type LE 5:BEGIN if size input type EQ 1 then input long input if n_elements input EQ 1 then res strtrim input 1 ELSE BEGIN res strtrim input 0 1 for i 1 n_elements input 1 do res res strtrim input i 1 res res ENDELSE END size input type eq 7:BEGIN if n_elements input EQ 1 then BEGIN sinput strrepl input res sinput ENDIF ELSE BEGIN res strrepl input 0 for i 1 n_elements input 1 do res res strrepl input i res res ENDELSE END ELSE:BEGIN ras report la fonction tostr ne marche pas pour input qui est de type size input tname res END ENDCASE return res end"); 313 a[311] = new Array("./ToBeReviewed/STRUCTURE/chkstru.html", "chkstru.pro", "", " file_comments check validity of a structure and test if necessary fields are contained categories tools param STRUCTURE in required The structure to be tested If STRUCTURE is not of type structure the function will return 0 param FIELDS in required A string or string array with field names to be contained in STRUCTURE CHKSTRU returns 1 true only if all field names are contained in STRUCTURE The entries of FIELDS may be upper or lowercase keyword INDEX A named variable that will contain the indices of the required field names in the structure They can then be assessed through structure index i Index will contain 1 for all fields entries that are not in the structure keyword VERBOSE set this keyword to return an error message in case of an error keyword EXTRACT set this keyword to extract a fields from the structure 1 is return is fields or structure are incorrect returns CHKSTRU returns 1 if successful otherwise 0 examples test a:1 b:2 c:3 required a c if CHKSTRU test required then print found a and c IDL print CHKSTRU test b 1 IDL print CHKSTRU test b extract 2 history mgs 02 Mar 1998: VERSION 1 00 mgs 07 Apr 1998: second parameter FIELDS now optional 12 Jan 2001: EXTRACT keyword by S Masson smasson lodyc jussieu fr version Id: chkstru pro 150 2006 08 09 10:12:54Z navarro Copyright C 1998 Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to mgs io harvard edu with subject IDL routine chkstru function chkstru structure fields index index verbose verbose extract extract compile_opt idl2 strictarrsubs default index index 1 first check number of parameters must be at least 1 if n_params lt 1 then begin if keyword_set verbose then ras report CHKSTRU: invalid number of parameters if keyword_set extract THEN return 1 ELSE return 0 endif check if the user really passed a structure s size structure if s 1 s 0 ne 8 then begin if keyword_set verbose then ras report CHKSTRU: No structure passed if keyword_set extract THEN return 1 ELSE return 0 endif only one parameter: then we are finished if n_params eq 1 then return 1 see if required field names are contained in the structure and return indices of these fields names tag_names structure index intarr n_elements fields 1 default index to not found for i 0 n_elements fields 1 do begin ind where names eq strupcase fields i if ind 0 lt 0 then begin if keyword_set verbose then ras report CHKSTRU: Cannot find field fields i endif else index i ind 0 endfor check minimum value of index field: 1 indicates error if keyword_set extract then BEGIN if index 0 NE 1 THEN return structure index 0 ELSE return 1 ENDIF ELSE return min index ge 0 end "); 314 a[312] = new Array("./ToBeReviewed/STRUCTURE/extractstru.html", "extractstru.pro", "", " file_comments extract elements of a structure to constitute a new structure categories utilities param STRU in required A structure param LISTE in required A vector of string including names of STRU to be deleted by default or to be kept if KEEP is activated keyword KEEP Specify that the given liste concern elements of STRU to be kept keyword DELETE: Specify that the given liste concern elements of STRU to be deleted This keyword is activated by default returns A structure or 1 in case of problem examples IDL extra get_extra ok year 1999 age_capitaine 35 IDL help extra struct Structure 3 tags length 6 refs 1: AGE_CAPITAINE INT 35 OK INT 1 YEAR INT 1999 IDL help extractstru extra ok hhuihi YEAR stru Structure 1 tags length 2 refs 1: AGE_CAPITAINE INT 35 IDL help extractstru extra ok hhuihi YEAR keep stru Structure 2 tags length 4 refs 1: OK INT 1 YEAR INT 1999 history Sebastien Masson smasson lodyc jussieu fr 8 10 1999 version Id: extractstru pro 150 2006 08 09 10:12:54Z navarro FUNCTION extractstru stru liste KEEP keep DELETE delete compile_opt idl2 strictarrsubs if size stru type NE 8 then return 1 if size liste type NE 7 then return 1 cheking for keep and vire keywords keep keyword_set keep 1 keyword_set delete delete keyword_set delete 1 keyword_set keep keyword_set delete EQ keep tname tag_names stru index make_selection tname strupcase liste only_valid quiet if keep then BEGIN We just keep the list if index 0 EQ 1 then return 1 if n_elements index EQ n_elements tname then return stru res create_struct tname index 0 stru index 0 if n_elements index GT 1 then for i 1 n_elements index 1 do res create_struct res tname index i stru index i ENDIF ELSE BEGIN We delete the list if n_elements index EQ n_elements tname then return 1 if index 0 EQ 1 then return stru We take the complementary one of index to obtain indexes we keep index different indgen n_elements tname index res create_struct tname index 0 stru index 0 if n_elements index GT 1 then for i 1 n_elements index 1 do res create_struct res tname index i stru index i ENDELSE return res end"); 315 a[313] = new Array("./ToBeReviewed/STRUCTURE/mixstru.html", "mixstru.pro", "", " file_comments Concatenate 2 structures together The difference with CREATE_STRUCT is that if the 2 structure have same elements s name then mixstru do not break down but choose for the common element the value specified by the first structure categories structure param STRU1 in required Structure which can have same elements s name than STRU2 but with a different value param STRU2 in required Structure which can have same elements s name than STRU1 but with a different value returns A stucture restrictions If STRU1 or STRU2 is not a structure mixstru send back 1 examples IDL a get_extra toto ok 123 IDL b get_extra ok 111 year 1999 age_capitaine 35 IDL help a b struct Structure 2 tags length 4 refs 1: OK INT 123 TOTO INT 1 Structure 3 tags length 6 refs 1: AGE_CAPITAINE INT 35 OK INT 111 YEAR INT 1999 IDL help mixstru a b struct Structure 4 tags length 8 refs 1: AGE_CAPITAINE INT 35 YEAR INT 1999 OK INT 123 TOTO INT 1 IDL help mixstru b a struct Structure 4 tags length 8 refs 1: TOTO INT 1 AGE_CAPITAINE INT 35 OK INT 111 YEAR INT 1999 history Sebastien Masson smasson lodyc jussieu fr 7 10 1999 version Id: mixstru pro 150 2006 08 09 10:12:54Z navarro FUNCTION mixstru stru1 stru2 compile_opt idl2 strictarrsubs cm_general IF size stru1 type EQ 0 AND size stru2 type EQ 8 THEN return stru2 IF size stru2 type EQ 0 AND size stru1 type EQ 8 THEN return stru1 if size stru1 type NE 8 then return 1 if size stru2 type NE 8 then return 1 tname tag_names stru2 str FOR i 0 n_tags stru2 1 DO str str tname i stru2 strtrim i 2 res createfunc get_extra str _extra stru1 kwdlist stru1 stru1 stru2 stru2 stru1 stru1 stru2 stru2 filename myuniquetmpdir for_createfunc pro return res end"); 316 a[314] = new Array("./ToBeReviewed/STRUCTURE/struct2string.html", "struct2string.pro", "", " file_comments Convert a structure to an executable string categories utilities param STRUCT in required A structure keyword MAX_STRUCT_LENGTH The maximum length of the structure permetted to convert the structure to string Default is 10000l keyword DIRECT2STRING To get a string instead an executable string keyword CUT_IN_STRING Try it restrictions Use tostr pro cf this function header examples IDL print struct2string d create_struct NAME X X_SIZE 891 Y_SIZE 630 X_VSIZE 891 Y_VSIZE 630 X_CH_SIZE 6 Y_CH_SIZE 10 X_PX_CM 40 0000 Y_PX_CM 40 0000 N_COLORS 16777216 TABLE_SIZE 256 FILL_DIST 1 WINDOW 32 UNIT 0 FLAGS 328124 ORIGIN 0 0 ZOOM 1 1 history Sebastien Masson smasson lodyc jussieu fr 2000 07 03 version Id: struct2string pro 150 2006 08 09 10:12:54Z navarro FUNCTION struct2string struct CUT_IN_STRING cut_in_string MAX_STRUCT_LENGTH max_struct_length DIRECT2STRING direct2string compile_opt idl2 strictarrsubs if size struct type NE 8 then return if NOT keyword_set max_struct_length then max_struct_length 10000l if n_tags struct length GT max_struct_length then begin rien report The structure is too big to be converted to string C See the MAX_STRUCT_LENGTH keyword return endif names tag_names struct case 1 of keyword_set direct2string :BEGIN res names 0 tostr struct 0 if n_tags struct GT 1 then begin FOR i 1 n_tags struct 1 do begin res res names i tostr struct i endfor endif END keyword_set CUT_IN_STRING :BEGIN res create_struct names 0 tostr struct 0 if n_tags struct GT 1 then begin FOR i 1 n_tags struct 1 do begin res res create_struct res names i tostr struct i endfor endif END ELSE:BEGIN res create_struct names 0 tostr struct 0 if n_tags struct GT 1 then begin FOR i 1 n_tags struct 1 do begin res res names i tostr struct i endfor endif res res END endcase return res end"); 317 a[315] = new Array("./ToBeReviewed/STRUCTURE/where_tag.html", "where_tag.pro", "", " file_comments Like WHERE but works on structure tag names Obtain subscripts of elements in structure array for which a particular Tag has values in a range or matching specified values Like the WHERE function but for use with structures categories Structures param STRUCT in required structure array to search keyword TAG_NAME Scalar string specifying Tag Name keyword TAG_NUMBER Otherwise give the Tag Number keyword RANGE min max range to search for in Struct keyword VALUES One or array of numbers to match for in Struct keyword ISELECT Specifies indices to select only part of structure array use it to recycle subscripts from previous searches keyword NOPRINT Suppress informational messages about nothing found returns Nfound out of occurences found restrictions User must specify 1 TAG_NAME or TAG_NUMBER to search and 2 the VALUES or RANGE to search on examples Suppose STR is a structure with tags CAT_NO:indgen 10 and NAME:strarr 10 Find the indices where STR CAT_NO is between 3 and 5 IDL print WHERE_TAG str TAG_NAME CAT_NO VALUE 3 4 5 or IDL print WHERE_TAG str TAG_NUM 0 RANGE 3 5 history written 1990 Frank Varosi STX NASA GSFC Stop printing Tag not found with NOPRINT CD Pike 8 Jun 93 version Id: where_tag pro 150 2006 08 09 10:12:54Z navarro function where_Tag Struct Nfound TAG_NAME Tag_Name TAG_NUMBER Tag_Num ISELECT ipart NOPRINT noprint RANGE range VALUES values First check required parameters compile_opt idl2 strictarrsubs Ntag N_tags Struct if Ntag LE 1 then begin message expecting a Structure Array try again CONTIN return 1 endif if N_elements Tag_Num NE 1 AND N_elements Tag_Name NE 1 then begin message specify TAG_NAME or TAG_NUMBER to search CONTIN return 1 endif Tags Tag_names Struct if N_elements Tag_Name EQ 1 then begin Tag_Name strupcase Tag_Name Tag_Num where Tags EQ Tag_Name Tag_Num Tag_Num 0 if Tag_Num LT 0 then begin if NOT keyword_set noprint then message Tag not found CONTIN return 2 endif endif if Tag_Num LT 0 OR Tag_Num GE Ntag then begin message Tag strtrim Tag_Num 2 exceeds Max Tag strtrim Ntag 1 2 in structure CONTIN return 1 endif if N_elements ipart GT 0 then begin check if any searching on a subset of input w where ipart GE 0 nf if nf LE 0 then return 1 if nf LT N_elements ipart then ipart ipart w endif Now find out where for RANGE : if N_elements range EQ 2 then begin if N_elements ipart GT 0 then begin w where Struct ipart Tag_Num GE range 0 AND Struct ipart Tag_Num LE range 1 Nfound if Nfound GT 0 then windex ipart w else windex w endif else windex where Struct Tag_Num GE range 0 AND Struct Tag_Num LE range 1 Nfound if Nfound LE 0 AND NOT keyword_set noprint then begin strnums strtrim range 2 string strnums 0 strnums 1 message NO values of found in the Range string CONTIN endif where Values: endif else if N_elements values GE 1 then begin Nval N_elements values vals values Nfound 0 if N_elements ipart GT 0 then begin for v 0 Nval 1 do begin w where Struct ipart Tag_Num EQ vals v Nf if Nf GT 0 then begin if Nfound GT 0 then ww ww w else ww w endif Nfound Nfound Nf endfor if Nfound GT 0 then windex ipart ww sort ww else windex w endif else begin for v 0 Nval 1 do begin w where Struct Tag_Num EQ vals v Nf if Nf GT 0 then begin if Nfound GT 0 then ww ww w else ww w endif Nfound Nfound Nf endfor if Nfound GT 0 then windex ww sort ww else windex w endelse if Nfound LE 0 AND NOT keyword_set noprint then begin strnums strtrim vals 2 string strnums 0 for i 1 Nval 1 do string string strnums i message NO values of found Equaling string CONTIN endif endif else begin message must specify a RANGE or VALUES s CONTIN windex 1 endelse return windex end"); 318 a[316] = new Array("./ToBeReviewed/TRIANGULATION/ciseauxtri.html", "ciseauxtri.pro", "", " file_comments Delete arrays which do not have to be drawn thanks to 2 tests: 1 Corners of the array must be in the window 2 Lenghtes of side of triangles expressed in normalized coordinates must not surpass a sill lenght categories param TRIANG param GLAM param GPHI keyword ALL keyword _EXTRA Used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr 20 2 99 version Id: ciseauxtri pro 150 2006 08 09 10:12:54Z navarro FUNCTION ciseauxtri triang glam gphi ALL all _EXTRA ex compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF IF NOT keyword_set key_periodic AND NOT keyword_set key_irregular AND NOT map projection LE 7 AND map projection NE 0 AND NOT map projection EQ 14 OR map projection EQ 15 OR map projection EQ 18 THEN return triang tempsun systime 1 For key_performance taille size glam nx taille 1 ny taille 2 tempdeux systime 1 For key_performance 2 z convert_coord glam gphi data to_normal x z 0 y z 1 tempvar SIZE TEMPORARY z delete z IF testvar var key_performance EQ 2 THEN print temps ciseauxtri: convert_coord data to_normal systime 1 tempdeux Beware following the projection some points x or y can become NaN see points behind the Earth in an orthographic projection In this case we have to remove all triangle which contain one of these points if map projection LE 7 AND map projection NE 0 OR map projection EQ 14 OR map projection EQ 15 OR map projection EQ 18 then begin tempdeux systime 1 For key_performance 2 test x y triang test finite temporary test nan test total temporary test 1 ind where temporary test EQ 0 if ind 0 NE 1 then triang triang temporary ind ELSE return 1 trichanged 1b IF testvar var key_performance EQ 2 THEN print temps ciseauxtri: recherche points a NAN systime 1 tempdeux endif seuil 5 indxtriang2 indxtriang indxmin nx 1 indxmin EQ 0 AND indxmax EQ nx 1 ENDIF ELSE indxtriang indxmin listrect nx indytriang indxtriang IF testvar var key_performance EQ 2 THEN print temps ciseauxtri: liste des rectangles systime 1 tempdeux Now we have this list we will make sure that we do not have triangles with only a common summit test bytarr nx ny test listrect 1 dejavire 1b test tempdeux systime 1 For key_performance 2 vire1 0 vire2 0 while vire1 0 NE 1 OR vire2 0 NE 1 ne 0 do begin vire1 where test shift test 1 1 1 shift test 0 1 1 shift test 1 0 EQ 1 if vire1 0 NE 1 THEN test vire1 0 We delete the rectangle vire2 where 1 test 1 shift test 1 1 shift test 0 1 shift test 1 0 EQ 1 We delete the top rectangle same x index but equal to 1 if vire2 0 NE 1 THEN test vire2 nx 0 ENDWHILE stop test test temporary dejavire avirer where temporary test EQ 0 IF testvar var key_performance EQ 2 THEN print temps ciseauxtri: determinationdes rectangles a virer systime 1 tempdeux if avirer 0 NE 1 then begin tempdeux systime 1 For key_performance 2 indnx n_elements listrect indny n_elements avirer ind listrect replicate 1l indny ind ind EQ replicate 1 indnx avirer if indny GT 1 then ind total ind 2 ind where ind EQ 0 if ind 0 NE 1 then triang triang ind ELSE return 1 endif IF testvar var key_performance EQ 2 THEN print temps ciseauxtri: derniere retouche de la triangulation systime 1 tempdeux endif if keyword_set key_performance THEN print temps ciseauxtri systime 1 tempsun return triang end"); 319 a[317] = new Array("./ToBeReviewed/TRIANGULATION/completecointerre.html", "completecointerre.pro", "", "PRO draw_corner_triangle lons lats seuil CONT_COLOR cont_color _extra ex compile_opt idl2 strictarrsubs cm_4mesh the triangle must not be out of the domain IF min lons max maxlon GE lon1 AND maxlon LE lon2 AND min lats max maxlat GE lat1 AND maxlat LE lat2 then BEGIN the triangle must not be too big z convert_coord lons lats data to_normal alldist z 0 2 z 0 0 2 z 1 2 z 1 0 2 z 0 0 z 0 1 2 z 1 0 z 1 1 2 z 0 1 z 0 2 2 z 1 1 z 1 2 2 IF max alldist LT seuil 2 THEN polyfill lons lats color cont_color _extra ex return ENDIF end file_comments To color cleanly continents categories graphic keyword _EXTRA Used to pass your keywords keyword CONT_COLOR The color of the continent defaut value is d n_colors 1 white uses common pro history Sebastien Masson smasson lodyc jussieu fr 01 10 1999 version Id: completecointerre pro 150 2006 08 09 10:12:54Z navarro PRO completecointerre COINMONTE coinmonte COINDESCEND coindescend CONT_COLOR cont_color INDICEZOOM indicezoom _extra ex compile_opt idl2 strictarrsubs common if NOT keyword_set coinmonte then return if NOT keyword_set coindescend then return if NOT keyword_set indicezoom then return tempsun systime 1 For key_performance definitions of vectors coinmont and coindesc if keyword_set coinmonte then coinmont coinmonte ELSE coinmont twin_corners_up if keyword_set coindescend then coindesc coindescend ELSE coindesc twin_corners_dn IF NOT keyword_set cont_color THEN cont_color d n_colors 1 255 definition of coordinates of points numbered 1 2 3 4 5 6 see figures below tempdeux systime 1 For key_performance 2 if coinmont 0 NE 1 OR coindesc 0 NE 1 then BEGIN if keyword_set indicezoom then BEGIN if we use key_stide the t u v and f points are no more related to the same cell because glamf and gphif has be recomputed to be in the middle of two t points IF total key_stride EQ 3 AND finite glamv 0 gphiv 0 NE 0 THEN BEGIN long1 glamv indicezoom lati1 gphiv indicezoom ENDIF ELSE BEGIN long1 glamt indicezoom lati1 gphif indicezoom ENDELSE IF total key_stride EQ 3 AND finite glamu 0 gphiu 0 NE 0 THEN BEGIN long2 glamu indicezoom lati2 gphiu indicezoom ENDIF ELSE BEGIN long2 glamf indicezoom lati2 gphit indicezoom ENDELSE long3 glamf indicezoom lati3 gphif indicezoom ENDIF ELSE BEGIN IF total key_stride EQ 3 AND finite glamv 0 gphiv 0 NE 0 THEN BEGIN long1 glamv lati1 gphiv ENDIF ELSE BEGIN long1 glamt lati1 gphif ENDELSE IF total key_stride EQ 3 AND finite glamu 0 gphiu 0 NE 0 THEN BEGIN long2 glamu lati2 gphiu ENDIF ELSE BEGIN long2 glamf lati2 gphit ENDELSE long3 glamf lati3 gphif ENDELSE nx size long1 dimensions 0 ny size long1 dimensions 1 seuil 5 min nx ny 2 seuil min p position 2 p position 0 seuil p position 3 p position 1 seuil ENDIF IF testvar var key_performance EQ 2 THEN print temps completecointerre: positions des points systime 1 tempdeux Case land corner in ascent: 2 land points in diagonal ascending with 2 ocean points on the descendant diagonal 4 t i nx 1 u i nx t i nx 1 0 1 3 5 v i f i v i 1 t i 0 2 u i t i 1 1 if coinmont 0 NE 1 then BEGIN tempdeux systime 1 For key_performance 2 for id 0 n_elements coinmont 1 do BEGIN i coinmont id ii i MOD nx ij i nx bottom triangle lons long1 i long2 i long3 i lats lati1 i lati2 i lati3 i draw_corner_triangle lons lats seuil CONT_COLOR cont_color _extra ex upper triangle IF ii NE nx 1 AND ij NE ny 1 THEN BEGIN lons long3 i long1 i 1 long2 i nx lats lati3 i lati1 i 1 lati2 i nx draw_corner_triangle lons lats seuil CONT_COLOR cont_color _extra ex ENDIF ENDFOR IF testvar var key_performance EQ 2 THEN print temps completecointerre: trace de cointerremonte systime 1 tempdeux ENDIF Case land corner in descent: 2 land points in diagonal descending with 2 ocean points on the ascendant diagonal 4 t i nx 1 u i nx t i nx 1 0 3 5 v i f i v i 1 1 t i 0 2 u i t i 1 1 if coindesc 0 NE 1 then begin tempdeux systime 1 For key_performance 2 for id 0 n_elements coindesc 1 do BEGIN i coindesc id ii i MOD nx ij i nx IF ii NE nx 1 AND ij NE ny 1 THEN BEGIN left triangle lons long1 i long3 i long2 i nx lats lati1 i lati3 i lati2 i nx draw_corner_triangle lons lats seuil CONT_COLOR cont_color _extra ex right triangle lons long3 i long2 i long1 i 1 lats lati3 i lati2 i lati1 i 1 draw_corner_triangle lons lats seuil CONT_COLOR cont_color _extra ex ENDIF ENDFOR IF testvar var key_performance EQ 2 THEN print temps completecointerre: trace de cointerredescend systime 1 tempdeux ENDIF IF keyword_set key_performance THEN print temps completecointerre systime 1 tempsun return end"); 320 a[318] = new Array("./ToBeReviewed/TRIANGULATION/definetri.html", "definetri.pro", "", " file_comments efine a triangulation array like TRIANGULATE But in a VERY SIMPLE CASE: the points are regulary gridded on nx ny array Find a Delaunay triangulation for this set of points is easy: Points define nx 1 ny 1 rectangles which we can cut in 2 triangles cf figure above ny 1 ny 2 1 0 0 1 2 nx 3 nx 2 nx 1 You have 2 ways to cut a rectangle: 1 the upward diagonal 2 the downward diagonal categories utilities param NX in required The x dimension array param NY in required The y dimension array param DOWNWARD in optional When downward is undefine all rectangles are cut in using the upward diagonal Downward is a vector which contains the rectangles numbers which are cut in using the downward diagonal The rectangle number is define by the index in a nx ny vector of the lower left corner of the rectangle returns triangles is a 2d array and is dimensions are 3 and 2 nx 1 ny 1 triangles is define like in the TRIANGULATE procedure examples triangles definetri 3 3 1 3 triangles will be a this kind of triangulation: history sebastien Masson smlod ipsl jussieu fr 4 3 1999 version Id: definetri pro 150 2006 08 09 10:12:54Z navarro FUNCTION definetri nx ny downward compile_opt idl2 strictarrsubs nx long nx ny long ny if n_elements downward NE 0 THEN BEGIN if n_elements downward GT nx 1 ny 1 then begin print downward a trop d elements par rapport a nx et ny return 1 endif downward long downward ENDIF we define triangles triangles lonarr 3 2 nx 1 ny 1 we cut the rectangles with the upward diagonal if n_elements downward NE nx 1 ny 1 then BEGIN there is some rectangle to cut we define upward: upward is a vector which contains the rectangles numbers which are cut in using the upward diagonal The rectangle number is define by the index in a nx ny vector of the lower left corner of the rectangle upward bytarr nx ny 1 upward ny 1 0 upward nx 1 0 if n_elements downward NE 0 then upward downward 0 upward where upward EQ 1 n1 n_elements upward 4 corners indexes of a rectangle number i are i nx i nx 1 i i 1 trinumber 2 upward upward nx we define the right triangles triangles 0 trinumber upward triangles 1 trinumber upward 1 triangles 2 trinumber upward 1 nx we define the left triangles triangles 0 trinumber 1 upward 1 nx triangles 1 trinumber 1 upward nx triangles 2 trinumber 1 upward ENDIF ELSE n1 0 we cut the rectangles with the downward diagonal if n_elements downward NE 0 then BEGIN n2 n_elements downward trinumber 2 downward downward nx we define the right triangles triangles 0 trinumber downward 1 triangles 1 trinumber downward nx 1 triangles 2 trinumber downward nx we define the left triangles triangles 0 trinumber 1 downward nx triangles 1 trinumber 1 downward triangles 2 trinumber 1 downward 1 endif return triangles end"); 321 a[319] = new Array("./ToBeReviewed/TRIANGULATION/definetri_e.html", "definetri_e.pro", "", "function numtri index nx ny compile_opt idl2 strictarrsubs y index nx x index y nx numtri y NE 0 nx 1 2 y 1 1 2 y EQ ny 1 OR y EQ ny 1 x return numtri end file_comments Define a triangulation array like TRIANGULATE but for a E grid type categories Make contours with E grid type param NX in required The x dimension array param NY in required The y dimension array param SINGULAR in optional When singular is undefined all rectangles are cut in using the vertical diagonal Singular is a vector which contains the rectangles numbers which are cut in using the horizontal diagonal The rectangle number is define by the index in a nx ny vector of the lower left corner of the rectangle keyword SHIFTED returns Triangles is a 2d array and is dimensions are 3 and nx 1 ny 1 Triangles is defined like in the TRIANGULATE procedure history Sebastien Masson smlod ipsl jussieu fr June 2001 version Id: definetri_e pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter SHIFTED FUNCTION definetri_e nx ny singular SHIFTED shifted compile_opt idl2 strictarrsubs nx long nx ny long ny triangles lonarr 3 2 nx 1 ny 1 build the base triangulation with the diamond cut in two triangles by the vertical diagonal first line index lindgen nx 1 trinumber index triangles 0 trinumber index triangles 1 trinumber index 1 triangles 2 trinumber index nx 1 shifted last line index ny 1 nx lindgen nx 1 trinumber numtri index nx ny triangles 0 trinumber index triangles 1 trinumber index nx index nx 1 shifted MOD 2 triangles 2 trinumber index 1 other lines if ny GT 2 then begin index lindgen nx ny index index 0:nx 2 1:ny 2 index index oddeven index nx 1 shifted MOD 2 trinumber numtri index nx ny triangles 0 trinumber index triangles 1 trinumber index nx oddeven triangles 2 trinumber index nx oddeven triangles 0 trinumber 1 index nx oddeven triangles 1 trinumber 1 index nx oddeven triangles 2 trinumber 1 index 1 endif cut the diamond specified by singular in two triangles by the horizontal diagonal IF keyword_set singular then BEGIN yindex singular nx otherline where yindex NE 0 AND yindex NE ny 1 if otherline 0 NE 1 then begin index singular otherline oddeven index nx 1 shifted MOD 2 trinumber numtri index nx ny triangles 0 trinumber index triangles 1 trinumber index nx oddeven triangles 2 trinumber index 1 triangles 0 trinumber 1 index triangles 1 trinumber 1 index 1 triangles 2 trinumber 1 index nx oddeven endif endif return triangles end "); 322 a[320] = new Array("./ToBeReviewed/TRIANGULATION/dessinetri.html", "dessinetri.pro", "", " file_comments Draw the triangulation categories utilities param TRI in optional Array which define the triangulation provided by triangule pro or triangulate param X in optional The x position of points to which the trangulation refer to see the x array provided in triangulate param Y in optional The y position of points to which the trangulation refer to see the y array provided in triangulate keyword WAIT x to call wait x second between each triangle draw keyword ONEBYONE To draw the triangles one by one keyword FILL To fill the triangles using polyfill instead of plotting them keyword CHANGECOLOR n To change the color of each traingle n colors will be used and repeted if necessary uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: dessinetri pro 150 2006 08 09 10:12:54Z navarro PRO dessinetri tri x y WAIT wait ONEBYONE onebyone FILL fill CHANGECOLOR changecolor _extra ex compile_opt idl2 strictarrsubs common tempsun systime 1 For key_performance a if n_params EQ 3 then BEGIN CASE size x n_dimensions size y n_dimensions OF 2:BEGIN nx n_elements x ny n_elements y glam x replicate 1 ny gphi replicate 1 nx y END 4:BEGIN glam x gphi y END ELSE:BEGIN dummy report x and y inputs of dessinetri must have the same number of dimensions 1 or 2 return END ENDCASE ENDIF ELSE BEGIN grille mask glam gphi tri tri undefine mask tri ciseauxtri tri glam gphi ENDELSE IF keyword_set changecolor THEN BEGIN oldname d name if d name EQ PS OR d name EQ Z then BEGIN thisos strupcase strmid version os_family 0 3 CASE thisOS of MAC : set_plot thisOS WIN : set_plot thisOS ELSE: set_plot X ENDCASE ncolors d n_colors 1 255 set_plot oldname ENDIF ELSE ncolors d n_colors 1 255 color 1 indgen changecolor ncolors changecolor 1 ENDIF ELSE color 0 color color replicate 1 n_elements tri 3 n_elements color 1 tempdeux systime 1 For key_performance 2 for i 0L n_elements tri 3 1 do begin t tri i tri 0 i IF keyword_set fill THEN polyfill glam t gphi t color color i _extra ex ELSE plots glam t gphi t color color i _extra ex IF keyword_set wait THEN wait wait IF keyword_set onebyone THEN read a prompt press a key ENDFOR IF testvar var key_performance EQ 2 THEN print temps dessinetri: trace des triangles systime 1 tempdeux if keyword_set key_performance THEN print temps dessinetri systime 1 tempsun return end"); 323 a[321] = new Array("./ToBeReviewed/TRIANGULATION/drawcoast_c.html", "drawcoast_c.pro", "", " file_comments categories param MASK param XF param YF param NX param NY keyword COAST_COLOR The color of the coastline defaut value is 0 black keyword COAST_THICK The thick of the trait to trace continents By default it is 1 keyword XSEUIL To eliminate segments of coasts which are to big which link points which can be close on the sphere but distant on the drawing We delete all segments whose the size surpass the size of the window following X XSEUIL By default XSEUIL 5 But it can be to big if we do a big zoom or a little one for some projections We specify it the keyword thanks to this keyword keyword YSEUIL See XSEUIL keyword _EXTRA Used to pass our keywords returns uses restrictions examples history version todo Seb: remplir le header PRO drawcoast_c mask xf yf nx ny COAST_COLOR coast_color COAST_THICK coast_thick YSEUIL yseuil XSEUIL xseuil _extra ex compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 For key_performance We trace vertical segments: if NOT keyword_set yseuil then yseuil 5 min nx ny 2 distanceseuil p position 3 p position 1 yseuil list: list of points i for which we will trace a segment between the point i j 1 and i j tempdeux systime 1 For key_performance 2 liste where mask shift mask 1 0 EQ 1 AND xf shift xf 0 1 2 yf shift yf 0 1 2 LE distanceseuil 2 IF liste 0 NE 1 THEN BEGIN We recuperate lx an dly which are indexes in a 2d array of points given by list ly liste nx lx temporary liste nx ly indice where ly NE 0 We do not take points concerning if indice 0 NE 1 then begin the first line because in this case the point j 1 is undefined lx lx indice ly ly temporary indice Loop on concerned points and drawing of the segment Comment: we use plots instead of plot because plots goes faster IF testvar var key_performance EQ 2 THEN print temps tracecote: determiner liste des points concernes par un trait vertical systime 1 tempdeux tempdeux systime 1 For key_performance 2 for pt 0L n_elements lx 1 do BEGIN i lx pt j ly pt plots xf i j 1 xf i j yf i j 1 yf i j color coast_color thick coast_thick normal _extra ex endfor IF testvar var key_performance EQ 2 THEN print temps tracecote: trace des traits verticaux systime 1 tempdeux endif ENDIF For the drawing of horizontal segments it is the same thing but we have to be careful if it is periodic If it is periodic we duplicate the first column and we put it at the end This is made not for the shift which is periodic by default but for the plots tempdeux systime 1 For key_performance 2 if keyword_set key_periodic AND nx EQ jpi then begin mask mask mask 0 xf xf xf 0 yf yf yf 0 nx nx 1 ENDIF if NOT keyword_set xseuil then xseuil 5 min nx ny 2 distanceseuil p position 2 p position 0 xseuil liste where mask shift mask 0 1 EQ 1 AND xf shift xf 1 0 2 yf shift yf 1 0 2 LE distanceseuil 2 IF liste 0 NE 1 THEN BEGIN ly liste nx lx temporary liste nx ly indice where ly NE ny 1 AND lx NE 0 if indice 0 NE 1 then begin We do not take points of the first column and of the last line because we added artificially lx lx indice ly ly temporary indice IF testvar var key_performance EQ 2 THEN print temps tracecote: determiner liste des points concernes par un trait horizontal systime 1 tempdeux tempdeux systime 1 For key_performance 2 for pt 0L n_elements lx 1 do BEGIN i lx pt j ly pt plots xf i 1 j xf i j yf i 1 j yf i j color coast_color thick coast_thick normal _extra ex endfor IF testvar var key_performance EQ 2 THEN print temps tracecote: trace des traits horizontaux systime 1 tempdeux endif endif if keyword_set key_performance THEN print temps drawcoast_c systime 1 tempsun return end"); 324 a[322] = new Array("./ToBeReviewed/TRIANGULATION/drawcoast_e.html", "drawcoast_e.pro", "", " file_comments categories param MASK param XF param YF param NX param NY keyword COAST_COLOR The color of the coastline defaut value is 0 black keyword COAST_THICK The thick of the trait to trace continents By default it is 1 keyword XSEUIL To eliminate segments of coasts which are to big which link points which can be close on the sphere but distant on the drawing We delete all segments whose the size surpass the size of the window following X XSEUIL By default XSEUIL 5 But it can be to big if we do a big zoom or a little one for some projections We specify it the keyword thanks to this keyword keyword YSEUIL See XSEUIL keyword _EXTRA Used to pass our keywords returns uses restrictions examples history version todo Seb: remplir le header PRO drawcoast_e mask xf yf nx ny COAST_COLOR coast_color COAST_THICK coast_thick YSEUIL yseuil XSEUIL xseuil onemore onemore _extra ex compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 pour key_performance if keyword_set key_periodic AND nx EQ jpi then begin mask mask mask 0 xf xf xf 0 yf yf yf 0 nx nx 1 ENDIF we plot the borders of the diamond in this sense : if NOT keyword_set onemore then onemore 0 if NOT keyword_set xseuil then xseuil 5 min nx ny 2 distanceseuil p position 2 p position 0 xseuil liste: liste des points i pourlesquels on va tracer un segment index lindgen nx ny index index 0:nx 2 1:ny 1 indexbis index nx index nx onemore MOD 2 liste where mask index 1 mask indexbis EQ 1 AND xf index xf indexbis 2 yf index yf indexbis 2 LE distanceseuil 2 IF liste 0 NE 1 THEN BEGIN index index liste indexbis indexbis liste for pt 0 n_elements index 1 do begin plots xf index pt xf indexbis pt yf index pt yf indexbis pt color coast_color thick coast_thick normal _extra ex endfor ENDIF we plot the borders of the diamond in this sense : if NOT keyword_set xseuil then xseuil 5 min nx ny 2 distanceseuil p position 2 p position 0 xseuil liste: liste des points i pourlesquels on va tracer un segment index lindgen nx ny 1 index index 0:nx 2 indexbis index nx index nx onemore MOD 2 liste where mask index 1 mask indexbis EQ 1 AND xf index xf indexbis 2 yf index yf indexbis 2 LE distanceseuil 2 IF liste 0 NE 1 THEN BEGIN index index liste indexbis indexbis liste for pt 0 n_elements index 1 do begin plots xf index pt xf indexbis pt yf index pt yf indexbis pt color coast_color thick coast_thick normal _extra ex endfor ENDIF if keyword_set key_performance THEN print temps drawcoast_e systime 1 tempsun return end"); 325 a[323] = new Array("./ToBeReviewed/TRIANGULATION/drawsectionbottom.html", "drawsectionbottom.pro", "", " file_comments Fill and draw the bottom continents for a real section categories param MASKIN in requierd param XXAXISIN in requierd param DEPTHSIN in requierd keyword COAST_COLOR The color of the coastline defaut value is 0 black keyword COAST_THICK The thickness of the coastline defaut value is 1 keyword CONT_COLOR The color of the continent defaut value is d n_colors 1 white uses common pro restrictions Simple way to fill continents for a section using the fact that continents are wider at the bottom than at the top history Sebastien Masson smasson lodyc jussieu fr June 14 2002 version Id: drawsectionbottom pro 150 2006 08 09 10:12:54Z navarro todo Seb: definir params PRO drawsectionbottom maskin xxaxisin depthsin COAST_COLOR coast_color COAST_THICK coast_thick CONT_COLOR cont_color CONT_NOFILL cont_nofill OVERPLOT overplot _extra ex compile_opt idl2 strictarrsubs cm_general IF NOT keyword_set key_forgetold THEN BEGIN updatekwd ENDIF if keyword_set overplot then return mask is from bottom to top boundaries conditions: nx size maskin 1 nz size maskin 2 1 IF size xxaxisin n_dimensions EQ 1 THEN xxaxisin temporary xxaxisin replicate 1 nz IF size depthsin n_dimensions EQ 1 THEN depthsin replicate 1 nx temporary depthsin for the mask : we add ocean at the top then it is always possible to find one ocean point on each water column mask maskin replicate 1 nx for x axis we also add one level xxaxis xxaxisin xxaxisin 0 x axis must cover nx 1 points because we will draw the edge of the mask if it was mot possible in decoupeterre pro to extend the xxaxis we do it now by hand xxaxis xxaxisin 0 if size xxaxis 1 EQ nx then begin if n_elements xxaxis EQ nx then begin deltax abs x range 1 x range 0 10 xxaxis xxaxis 0 deltax xxaxis x0 xxaxis 0 deltax xxaxis replicate x0 1 nz xxaxis ENDIF for the depth usepartial total depthsin 2 usepartial total usepartial NE usepartial 0 GE 1 depths depthsin 0:nx 1 we add one level according to the ocean level we had to the mask deltaz abs y range 1 y range 0 10 zmax max depthsin deltaz depths depths replicate zmax nx 1 depths depths replicate zmax nx if min depths gt 1 then we must add one line at the bottom this appens when the bottom limit is defined between T k and W k points IF min depthsin GT 1 OR max total mask 2 EQ nz THEN BEGIN zmin min y range deltaz depths replicate zmin nx depths mask replicate 0 nx mask nz nz 1 ENDIF xleft xxaxis 0:nx 1 xright xxaxis 1:nx looking for the position of the bottom of the ocean pos nz 1 total mask 2 depths depths lindgen nx nx pos xx transpose xleft xright xx x range 0 xx zz max y range xx float xx zz float zz filling of the continents IF NOT keyword_set cont_color THEN cont_color d n_colors 1 255 if NOT keyword_set cont_nofill then polyfill min xx max maxx xx maxx min zz max mazz zz mazz color cont_color if NOT keyword_set cont_nofill then polyfill min xx max maxx xx maxx y range 0 zz y range 0 color cont_color drawing of the coast bottom line we could have plot directly xx and yy but if countout ne 0 doing this will draw an non existing bottom line along y range values which is not so good we thus do this ugly for if loops to make sure that we don t draw these lines but we keep all vertical lines IF countout NE 0 THEN BEGIN FOR i 0 countout 1 DO BEGIN CASE 1 OF out i EQ 0:BEGIN if we start with a out point xxx values f_nan zzz values f_nan END i EQ 0:BEGIN i eq 0 but out i ne 0 xxx xx 0:out i values f_nan zzz zz 0:out i values f_nan END ELSE:BEGIN two consecutive out values at the same depth: we just keep values f_nan values until the next change of depth IF out i 1 EQ out i 1 AND zz out i 1 EQ zz out i THEN BEGIN xxx xxx values f_nan zzz zzz values f_nan ENDIF ELSE BEGIN we keep everything inbetween the out values including themselves for the vertical lines but we had values f_nan to remove the horizontal lines xxx xxx xx out i 1 :out i values f_nan zzz zzz zz out i 1 :out i values f_nan ENDELSE END ENDCASE IF i EQ countout 1 AND out i NE n_elements xx 1 THEN BEGIN xxx xxx xx out i : zzz zzz zz out i : ENDIF ENDFOR plots xxx zzz color coast_color thick coast_thick _extra ex ENDIF ELSE plots xx zz color coast_color thick coast_thick _extra ex return end "); 326 a[324] = new Array("./ToBeReviewed/TRIANGULATION/fillcornermask.html", "fillcornermask.pro", "", " file_comments To color cleanly continents categories graphic keyword _EXTRA Used to pass your keywords keyword CONT_COLOR The color of the continent defaut value is d n_colors 1 white uses common pro history Sebastien Masson smasson lodyc jussieu fr 8 8 2002 version Id: fillcornermask pro 150 2006 08 09 10:12:54Z navarro PRO fillcornermask xin yin COINMONTE coinmonte COINDESCEND coindescend CONT_COLOR cont_color INDICEZOOM indicezoom _extra ex compile_opt idl2 strictarrsubs common if NOT keyword_set coinmonte AND NOT keyword_set coindescend then return tempsun systime 1 For key_performance IF NOT keyword_set cont_color THEN cont_color d n_colors 1 255 definition of coordinates of points numbered 1 2 3 4 5 6 see figures below x1 reform xin y1 reform yin IF size x1 0 EQ 2 THEN x1 x1 0 IF size y1 0 EQ 2 THEN y1 y1 0 x2 5 x1 shift x1 1 y2 5 y1 shift y1 1 nx n_elements x1 ny n_elements y1 Case land corner in ascent: 2 land points in diagonal ascending with 2 ocean points on the descendant diagonal 3 t i nx 1 u i nx t i nx 1 0 1 4 v i f i v i 1 t i 0 2 u i t i 1 1 if keyword_set coinmonte then BEGIN if coinmonte 0 NE 1 then BEGIN iup coinmonte MOD nx jup coinmonte nx for id 0 n_elements coinmonte 1 do BEGIN i iup id j jup id IF i NE nx 1 AND j NE ny 1 THEN BEGIN polyfill x1 i x2 i x2 i x1 i 1 x1 i y2 j y1 j y1 j 1 y2 j y2 j color cont_color _extra ex ENDIF endfor endif endif Case land corner in descent: 2 land points in diagonal descending with 2 ocean points on the ascendant diagonal 4 t i nx 1 u i nx t i nx 1 0 3 5 v i f i v i 1 1 t i 0 2 u i t i 1 1 if keyword_set coindescend then BEGIN if coindescend 0 NE 1 then begin idw coindescend MOD nx jdw coindescend nx for id 0 n_elements coindescend 1 do BEGIN i idw id j jdw id IF i NE nx 1 AND j NE ny 1 THEN BEGIN polyfill x1 i x2 i x2 i x1 i 1 x1 i y2 j y1 j 1 y1 j y2 j y2 j color cont_color _extra ex ENDIF endfor endif endif IF keyword_set key_performance THEN print temps fillcornermask systime 1 tempsun return end"); 327 a[325] = new Array("./ToBeReviewed/TRIANGULATION/section.html", "section.pro", "", " file_comments categories param FIELD param RES param GLAMAXE param GPHIAXE keyword ENDPOINTS keyword BOXZOOM keyword TYPE keyword WDEPTH keyword DIREC keyword SHOWBUILD keyword ONLYBOX keyword _EXTRA Used to pass your keywords returns uses common pro restrictions examples history Sebastien Masson smasson lodyc jussieu fr version PRO section field res glamaxe gphiaxe ENDPOINTS endpoints BOXZOOM boxzoom TYPE type WDEPTH wdepth DIREC direc SHOWBUILD showbuild ONLYBOX onlybox _extra ex include common compile_opt idl2 strictarrsubs cm_4mesh cm_4data cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF definition of boxzoom in function of endpoints then redefinition of the domain boxzoom2d min endpoints 0 endpoints 2 max ma02 ma02 min endpoints 1 endpoints 3 max ma13 ma13 minprof 0 profdefault 200 if n_elements type EQ 0 then type nothing Case N_Elements Boxzoom OF 0:localbox boxzoom2d minprof profdefault 1:localbox boxzoom2d minprof boxzoom 0 2:localbox boxzoom2d boxzoom 0 4:if strpos type z NE 1 THEN localbox boxzoom2d minprof profdefault ELSE localbox boxzoom2d 5:localbox boxzoom2d minprof boxzoom 4 6:localbox boxzoom2d boxzoom 4:5 Else:BEGIN print report Bad definition of the box stop END ENDCASE nelbox n_elements localbox if keyword_set wdepth then grillechoice vargrid W ELSE grillechoice vargrid domdef localbox GRIDTYPE grillechoice findalways _extra ex grille 1 1 1 1 nx ny if less than 10 points where found we apply domdef over the whole domain problem why 10 points as a test value how can we find a good test value IF nx ny LE 10 THEN domdef GRIDTYPE grillechoice _extra ex We redefine lon1 in case findalways has been used in domdef lon1 min endpoints 0 endpoints 2 max lon2 lat1 min endpoints 1 endpoints 3 max lat2 we extend the box along the z axis i that way the plot will be drawn until its bottom part if strpos type z NE 1 THEN BEGIN We keep yranges axis z before changing the boxzoom y range localbox nelbox 1 localbox nelbox 2 if vargrid EQ W OR keyword_set wdepth then BEGIN firstzw 0 firstzw 1 lastzw lastzw 1 firstzt 1 lastzt lastzt 1 firstx 1 lastx lastx 1 firsty 1 lasty lasty 1 jpj 1 domdef firstx lastx firsty lasty firstz lastz index gridtype vargrid IF keyword_set onlybox THEN return grille mask glam gphi gdep nx ny nz firstx firsty firstz lastx lasty lastz We define the triangulation which will allows us to determinate the section We recalculate it because it must be defined on the Earth and on oceans Following the direction of the section rather longitude or rather latitude we define the way to triangulate if strpos type x NE 1 then BEGIN downward lindgen nx ny 0:nx 2 0:ny 2 tri definetri nx ny downward ENDIF ELSE tri definetri nx ny If we have an irregular grid that is periodic then it is possible that some of the triangle have a very large size neighborg points on the sphere but far away when doing the projection and should not be taken into account IF keyword_set key_irregular AND keyword_set key_periodic THEN BEGIN glamtri glam tri glamtri abs glamtri shift glamtri 1 0 good temporary glamtri LT 10 max glam nx good where total temporary good 1 EQ 3 tri temporary tri temporary good ENDIF Equation of the line on which we do the section abc linearequation endpoints 0:1 endpoints 2:3 glamtri glam tri gphitri gphi tri Which points of the triangulation are above and below the line if abc 1 NE 0 THEN test temporary gphitri GE abc 0 abc 1 temporary glamtri abc 2 abc 1 ELSE test temporary glamtri GE abc 1 abc 0 temporary gphitri abc 2 abc 0 zero123 total test 1 to keep: triangles of the triangulation which are over the line tokeep1 where zero123 EQ 1 tokeep2 where temporary zero123 EQ 2 tokeep tokeep1 tokeep2 test test tokeep tri tri tokeep Which summit of the triangle is alone in a side of the line single1 where test 0:n_elements tokeep1 1 EQ 1 single1 single1 single1 3 3 single2 where test n_elements tokeep1 :n_elements tokeep 1 EQ 0 single2 single2 single2 3 3 undefine tokeep undefine tokeep1 undefine tokeep2 undefine test single temporary single1 temporary single2 points1 the point of the triangle alone in a side of the line point2 the other point of the triangle in the other side of the line point1 single single point2 single EQ 0 1 single LE 1 undefine single ntri size tri 2 index lindgen ntri lindgen ntri points1 tri point1 index points2 tri point2 temporary index points : complex containing couples of points in a side and the other side of the line We have to delete duplicates points dcomplex points1 points2 points points uniq points sort points symetrique dcomplex imaginary points double points points points where points shift temporary symetrique 1 NE 0 points1 coordinates of the point of the triangle which is alone in a side of the line point2 coordinates of the other point of the triangle in the other side of the line points1 complex glam double points gphi double points points2 complex glam imaginary points gphi imaginary points droites equations of line whose we look for the intersection wit the section droites linearequation points1 points2 inter lineintersection droites abc replicate 1 n_elements points1 Geographic coordinates of points we look for on the section glamaxe float inter gphiaxe imaginary inter We arrange them in the growing order between boundaries of the section if strpos type x NE 1 then BEGIN sort sort glamaxe glamaxe glamaxe sort inbox where glamaxe GE lon1 AND glamaxe LE lon2 glamaxe glamaxe inbox sort sort inbox gphiaxe gphiaxe sort ENDIF ELSE BEGIN sort sort gphiaxe gphiaxe gphiaxe sort inbox where gphiaxe GE lat1 AND gphiaxe LE lat2 gphiaxe gphiaxe inbox sort sort inbox glamaxe glamaxe sort ENDELSE points points sort points1 points1 sort points2 points2 sort inter inter sort poids abs points2 inter abs points2 points1 array litchamp field array fitintobox array if array 0 EQ 1 THEN BEGIN res 1 return ENDIF if n_elements valmask EQ 0 THEN valmask 1e20 taille size array if jpt GT 1 AND taille 0 GE 3 AND strpos type t EQ 1 then BEGIN direc t array grossemoyenne array t taille size array jpt 1 ENDIF case 1 of xy taille 0 EQ 2:BEGIN value1 array double points terre where value1 GT valmask 10 if terre 0 NE 1 then value1 terre values f_nan value2 array imaginary points terre where value2 GT valmask 10 if terre 0 NE 1 then value2 terre values f_nan res poids value1 1 poids value2 END xyz taille 0 EQ 3 AND jpt EQ 1:BEGIN npoints n_elements points index double points replicate 1 nz replicate nx ny npoints lindgen nz value1 array index terre where value1 GT valmask 10 if terre 0 NE 1 then value1 terre values f_nan index imaginary points replicate 1 nz replicate nx ny npoints lindgen nz value2 array index terre where value2 GT valmask 10 if terre 0 NE 1 then value2 terre values f_nan poids poids replicate 1 nz res poids value1 1 poids value2 average following z if strpos type z EQ 1 then begin nan where finite res EQ 0 if vargrid EQ W then e3 e3w firstzw:lastzw ELSE e3 e3t firstzt:lastzt weight replicate 1 npoints e3 if nan 0 NE 1 then weight nan values f_nan totalweight total weight 2 nan zero where totalweight EQ 0 if zero 0 NE 1 then totalweight zero values f_nan res total res weight 2 nan totalweight direc z string byte testvar var toto endif END xyt taille 0 EQ 3 AND jpt NE 1:BEGIN npoints n_elements points index double points replicate 1 jpt replicate nx ny npoints lindgen jpt value1 array index terre where value1 GT valmask 10 if terre 0 NE 1 then value1 terre values f_nan index imaginary points replicate 1 jpt replicate nx ny npoints lindgen jpt value2 array index terre where value2 GT valmask 10 if terre 0 NE 1 then value2 terre values f_nan poids poids replicate 1 jpt res poids value1 1 poids value2 END xyzt taille 0 EQ 4:BEGIN npoints n_elements points index double points replicate 1 nz jpt replicate nx ny npoints lindgen nz jpt index reform index npoints nz jpt over value1 array index terre where value1 GT valmask 10 if terre 0 NE 1 then value1 terre values f_nan index imaginary points replicate 1 nz jpt replicate nx ny npoints lindgen nz jpt index reform index npoints nz jpt over value2 array index terre where value2 GT valmask 10 if terre 0 NE 1 then value2 terre values f_nan poids poids replicate 1 nz jpt poids reform poids npoints nz jpt over res poids value1 1 poids value2 average following z if strpos type z EQ 1 then begin nan where finite res EQ 0 if vargrid EQ W then e3 e3w firstzw:lastzw ELSE e3 e3t firstzt:lastzt weight replicate 1 npoints e3 weight weight replicate 1 jpt weight reform weight npoints nz jpt over if nan 0 NE 1 then weight nan values f_nan totalweight total weight 2 nan zero where totalweight EQ 0 if zero 0 NE 1 then totalweight zero values f_nan res total res weight 2 nan totalweight direc z string byte testvar var toto endif END endcase terre where finite res EQ 0 if terre 0 NE 1 then res terre valmask if n_elements showbuild then BEGIN winsave window psave p xsave x ysave y plt findgen nx ny nodata nofill rempli title subtitle coast_thick 2 window showbuild p title p subtitle plots endpoints 0 endpoints 2 endpoints 1 endpoints 3 color 50 plots endpoints 0 endpoints 2 endpoints 1 endpoints 3 color 50 psym 2 thick 2 FOR i 0 n_elements points1 1 DO plots float points1 i float points2 i imaginary points1 i imaginary points2 i color 150 plots float points1 imaginary points1 color 150 psym 1 plots float points2 imaginary points2 color 150 psym 1 plots float inter imaginary inter color 250 psym 1 bug IF terre 0 NE 1 THEN plots float terre inter imaginary terre inter color 0 psym 1 dummy read dummy prompt press return to continue IF d name EQ PS THEN erase ELSE wset winsave p psave x xsave y ysave ENDIF restoreboxparam boxparam4section dat return end"); 328 a[326] = new Array("./ToBeReviewed/TRIANGULATION/tracecote.html", "tracecote.pro", "", " file_comments Draw coasts in plt categories graphic INPUTS:mask le tableau mask sur la zone consideree pour le dessin keyword SURFACE_COASTLINE To draw the surface coast line instead of the coast line at level firstz tw Usefull only for deep plots keyword _EXTRA used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr 30 9 1999 version Id: tracecote pro 150 2006 08 09 10:12:54Z navarro PRO tracecote SURFACE_COASTLINE surface_coastline _EXTRA ex include commons compile_opt idl2 strictarrsubs cm_4data cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF tempsun systime 1 For key_performance if n_elements key_gridtype EQ 0 then key_gridtype c We enlarge a bit the frame defined by firsts lasts in order to recuperate edges of the coast which are in the edging of the domain tempdeux systime 1 For key_performance 2 firstx 0 min firstxt firstxf 1 lastx max lastxt lastxf 1 min firstyt firstyf 1 lasty max lastyt lastyf 1 jpj 1 nx lastx firstx 1 ny lasty firsty 1 Which vertical level choose IF keyword_set surface_coastline THEN firstz 0 ELSE IF strupcase vargrid eq W THEN firstz firstzw ELSE firstz firstzt Attribution of the mask and of coordinates delimiting limits of the land coordinates f mask tmask firstx:lastx firsty:lasty firstz xf glamf firstx:lastx firsty:lasty yf gphif firstx:lastx firsty:lasty IF testvar var key_performance EQ 2 THEN print temps tracecote: determiner mask xf yf systime 1 tempdeux if key_gridtype EQ e then onemore xf 0 0 gT xf 0 1 We pass in normalized coordinates to be able to become independant from the projection s type choosen and from the support on which we do the drawing screen or postscript z convert_coord xf yf data to_normal xf reform z 0 nx ny yf reform z 1 nx ny tempvar SIZE TEMPORARY z Beware following the projection some points x or y can become NaN see point behind the earth in an orthographic projection We put points to be eliminated at a very big value so that they will not pass the test with distanceseuil see further if map projection LE 7 AND map projection NE 0 OR map projection EQ 14 OR map projection EQ 15 OR map projection EQ 18 then begin ind where finite xf yf EQ 0 IF ind 0 NE 1 THEN BEGIN xf ind 1e5 yf ind 1e5 ENDIF ENDIF ind where xf LT p position 0 OR xf GT p position 2 IF ind 0 NE 1 THEN xf ind 1e5 ind where yf LT p position 1 OR yf GT p position 3 IF ind 0 NE 1 THEN yf ind 1e5 tempvar SIZE TEMPORARY ind we delete ind if n_elements key_gridtype EQ 0 then key_gridtype c case key_gridtype of c :drawcoast_c mask xf yf nx ny _extra ex e :drawcoast_e mask xf yf nx ny onemore onemore _extra ex endcase if keyword_set key_performance THEN print temps tracecote systime 1 tempsun return end"); 329 a[327] = new Array("./ToBeReviewed/TRIANGULATION/tracemask.html", "tracemask.pro", "", " file_comments Draw contours of a mask categories utilities param MASKENTREE in required 2d array specifing the mask param XIN in required 2d array specifing longitude coordinates param YIN in required 2d array specifing latitude coordinates keyword COAST_COLOR The color of the coastline defaut value is 0 black keyword COAST_THICK The thick of the trait to trace continents It is 1 by default keyword OVERPLOT To do a plot over an other one keyword _EXTRA used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: tracemask pro 150 2006 08 09 10:12:54Z navarro PRO tracemask maskentree xin yin COAST_COLOR coast_color COAST_THICK coast_thick OVERPLOT overplot _extra ex compile_opt idl2 strictarrsubs if keyword_set overplot then return cm_general IF NOT keyword_set key_forgetold THEN BEGIN updatekwd ENDIF tempsun systime 1 For key_performance We avoid edging problems: tempdeux systime 1 For key_performance 2 tailleentree size maskentree nx tailleentree 1 1 ny tailleentree 2 1 we check the input axis IF n_elements xin EQ 0 THEN xentree findgen nx 1 ELSE xentree xin IF size xentree 0 EQ 1 THEN xentree xentree replicate 1 ny 1 IF n_elements yin EQ 0 THEN yentree findgen ny 1 ELSE yentree yin IF size yentree 0 EQ 1 THEN yentree replicate 1 nx 1 yentree We enlarge the mask by 1 column to the left an d1 line to the bottom mask intarr tailleentree 1 1 tailleentree 2 1 mask 1:tailleentree 1 1:tailleentree 2 maskentree The 2 first columns are identical mask 0 1:tailleentree 2 maskentree 0 The 2 first lines are identical mask 1:tailleentree 1 0 maskentree 0 We calculate the position following x of points which will serve to trace the mask They are situated between each points of the mask exept for the last column we can not calculate and so we put at max x range xrange x range sort x range if REVERSE_X is used xentree 5 xentree shift xentree 1 0 IF not keyword_set overplot THEN xentree nx 2 xrange 1 ELSE xentree nx 2 xentree nx 3 we sill xentree xrange 0 xentree yentree yrange 1 yf fltarr nx ny yf 1:nx 1 1:ny 1 yentree yf 0 1:ny 1 yentree 0 IF not keyword_set overplot THEN BEGIN if yinverse then yf 0 yrange 1 ELSE yf 0 yrange 0 ENDIF ELSE yentree 0 yentree 1 IF testvar var key_performance EQ 2 THEN print temps tracemask: determination du mask et des ses coordonnes systime 1 tempdeux We trace vertical segments: tempdeux systime 1 For key_performance 2 liste where mask shift mask 1 0 EQ 1 IF liste 0 NE 1 THEN BEGIN We recuperate lx and ly which are indexes in a 2d array of points given by list ly liste nx lx temporary liste nx ly indice where ly NE 0 We do not take points concernining the first line because in this case the point j 1 is not defined if indice 0 NE 1 then begin lx lx indice ly ly temporary indice IF testvar var key_performance EQ 2 THEN print temps tracemask: liste traits verticaux systime 1 tempdeux tempdeux systime 1 For key_performance 2 loop on concerned points and drawing of the segment comments: we use plots instead of plot because plots is faster for pt 0L n_elements lx 1 do BEGIN i lx pt j ly pt plots xf i j 1 xf i j yf i j 1 yf i j color coast_color thick coast_thick _extra ex if pt LT 5 then begin endif endfor IF testvar var key_performance EQ 2 THEN print temps tracemask: trace traits verticaux systime 1 tempdeux endif ENDIF We trace horizontal segments: tempdeux systime 1 For key_performance 2 liste where mask shift mask 0 1 EQ 1 IF liste 0 NE 1 THEN BEGIN ly liste nx lx temporary liste nx ly indice where lx NE 0 We do not take point sof the first column if indice 0 EQ 1 then return lx lx indice ly ly temporary indice IF testvar var key_performance EQ 2 THEN print temps tracemask: liste traits horizontaux systime 1 tempdeux tempdeux systime 1 For key_performance 2 for pt 0L n_elements lx 1 do BEGIN i lx pt j ly pt plots xf i 1 j xf i j yf i 1 j yf i j color coast_color thick coast_thick _extra ex endfor IF testvar var key_performance EQ 2 THEN print temps tracemask: trace traits horizontaux systime 1 tempdeux endif if keyword_set key_performance THEN print temps tracemask systime 1 tempsun return end "); 330 a[328] = new Array("./ToBeReviewed/TRIANGULATION/triangule.html", "triangule.pro", "", " todo seb FUNCTION triangule maskentree BASIC basic COINMONTE coinmonte COINDESCEND coindescend _extra ex compile_opt idl2 strictarrsubs common szmsk size maskentree IF szmsk 0 EQ 0 THEN BEGIN nx jpi ny jpj ENDIF ELSE BEGIN nx szmsk 1 ny szmsk 2 ENDELSE IF nx EQ 1 OR ny EQ 1 THEN return 1 IF arg_present coinmonte THEN coinmonte 1 IF arg_present coindescend THEN coindescend 1 if keyword_set basic then return triangule_c maskentree BASIC COINMONTE coinmonte COINDESCEND coindescend _extra ex if n_elements key_gridtype EQ 0 then key_gridtype c if n_elements maskentree EQ 0 then maskentree tmask 0 case key_gridtype of e :res triangule_e maskentree _extra ex c :res triangule_c maskentree COINMONTE coinmonte COINDESCEND coindescend _extra ex endcase return res end"); 331 a[329] = new Array("./ToBeReviewed/TRIANGULATION/triangule_c.html", "triangule_c.pro", "", " file_comments Construct the triangulation array The idea is: construct a list of triangle which link points between them This is automatically done by the function TRIANGULATE Here: we consider the fact that points are disposed on a grid regular or not but not unstructured that is to say that points are written following a rectangular matrix A easy way to do triangles between all points is then: for each point i j of the matrix exept those of the last line and of the last column we call rectangle i j the rectangle made of the four points i j i 1 j i j 1 i 1 j 1 To trace all triangle we just have to trace the 2 triangles contained in rectangles i j We notice that each rectangle i j have 2 diagonals it is true Make a drawing to make sure so there are two possible choice for each rectangle we want to cut in 2 triangles It is thanks to this choice that we will be able to trace coast with right angles At each angle of coast remarkable by the existence of an unique land point or of an unique ocean point on one of the four summit of a rectangle i j we have to cut the rectangle following the diagonal passing by this point categories graphic param MASKENTREE in optional It is a 2d array which will serve to mask the field we will trace after with CONTOUR TRIANGULATION triangule mask If this argument is not specified the function use tmask keyword BASIC Specify that the mask is on a basic grid use the triangulation for vertical cuts and hovmoellers keyword KEEP_CONT To keep the triangulation even on the continents keyword COINMONTE It is an array To obtain the array of ascending land corner to be treated with completecointerre pro in the variable array instead of make it pass by the global variable twin_corners_up keyword COINDESCEND It is an array See COINMONTE returns res: tableau 2d 3 nbre de triangles Each line of res represent indexes of points constituing summits of a triangle See how we trace triangles in definetri pro uses common pro different pro definetri pro restrictions Datas whose we want to do the contour must be disposed in a matrix On the other hand in the matrix the points s arrangement can not be irregular If it is use TRIANGULE history Sebastien Masson smasson lodyc jussieu fr 26 4 1999 version Id: triangule_c pro 150 2006 08 09 10:12:54Z navarro todo seb L 267 268 je ne pense pas que ce soit ce que tu voulais dire mais c est la traduction de ce qu il y avait crit Correction si besoin FUNCTION triangule_c maskentree COINMONTE coinmonte COINDESCEND coindescend BASIC basic KEEP_CONT keep_cont compile_opt idl2 strictarrsubs tempsun systime 1 For key_performance cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF Is the mask given or do we have to take tmask msk maskentree taille size msk nx taille 1 ny taille 2 IF n_elements keep_cont EQ 0 THEN keep_cont 1 key_irregular if keyword_set key_periodic nx EQ jpi AND NOT keyword_set basic then BEGIN msk msk msk 0 nx nx 1 ENDIF We will find the list of rectangles i j located by their left bottom corner we have to cut folowing a descendant diagonal We will call this list : pts_downward pts_downward 0 We construct the test which allow to find this triangle : shift msk 0 1 shift msk 1 1 msk shift msk 1 0 sum1 msk shift msk 1 0 shift msk 1 1 points which surround the left top point sum2 msk shift msk 0 1 shift msk 1 1 points which surround the right bottom point tempdeux systime 1 For key_performance 2 The left top land point surrounded by ocean points liste where 4 sum1 1 shift msk 0 1 EQ 1 if liste 0 NE 1 THEN pts_downward pts_downward liste The left top ocean point surrounded by land points liste where 1 sum1 shift msk 0 1 EQ 1 if liste 0 NE 1 THEN pts_downward pts_downward liste The right bottom land point surrounded by ocean points liste where 4 sum2 1 shift msk 1 0 EQ 1 if liste 0 NE 1 THEN pts_downward pts_downward liste The right bottom ocean point surrounded by land points liste where 1 sum2 shift msk 1 0 EQ 1 if liste 0 NE 1 THEN pts_downward pts_downward liste undefine liste IF testvar var key_performance EQ 2 THEN print temps triangule: trouver pts_downward systime 1 tempdeux if NOT keyword_set basic OR keyword_set coinmonte OR keyword_set coindescend then begin tempdeux systime 1 For key_performance 2 2 land points in ascendant diagonal with 2 ocean points in descendant diagonal coinmont where 1 msk 1 shift msk 1 1 shift msk 0 1 shift msk 1 0 EQ 1 if coinmont 0 NE 1 THEN pts_downward pts_downward coinmont IF testvar var key_performance EQ 2 THEN print temps triangule: trouver coinmont systime 1 tempdeux tempdeux systime 1 pour key_performance 2 coindesc where 1 shift msk 0 1 1 shift msk 1 0 msk shift msk 1 1 EQ 1 2 land points in descendant diagonal with 2 ocean points in ascendant diagonal IF testvar var key_performance EQ 2 THEN print temps triangule: trouver coindesc systime 1 tempdeux ENDIF if n_elements pts_downward EQ 1 then BEGIN tempdeux systime 1 For key_performance 2 triang definetri nx ny IF testvar var key_performance EQ 2 THEN print temps triangule: definetri systime 1 tempdeux coinmont 1 coindesc 1 ENDIF ELSE BEGIN tempdeux systime 1 For key_performance 2 pts_downward pts_downward 1:n_elements pts_downward 1 pts_downward pts_downward uniq pts_downward sort pts_downward None rectangle can have an element of the last column or of the last line as left bottom corner so we have to remove these points if they has been selected in pts_downward derniere_colonne lindgen ny 1 nx 1 derniere_ligne lindgen nx ny 1 nx pts_downward different pts_downward derniere_colonne pts_downward different pts_downward derniere_ligne if NOT keyword_set basic OR keyword_set coinmonte OR keyword_set coindescend then begin if coinmont 0 NE 1 then begin coinmont different coinmont derniere_colonne coinmont different coinmont derniere_ligne endif if coindesc 0 NE 1 then begin coindesc different coindesc derniere_colonne coindesc different coindesc derniere_ligne endif ENDIF ELSE BEGIN coinmont 1 coindesc 1 ENDELSE IF testvar var key_performance EQ 2 THEN print temps triangule: menage ds pts_downward coinmont et coindesc systime 1 tempdeux tempdeux systime 1 For key_performance 2 if pts_downward 0 EQ 1 then triang definetri nx ny ELSE triang definetri nx ny pts_downward IF testvar var key_performance EQ 2 THEN print temps triangule: definetri systime 1 tempdeux ENDELSE We delete land points which only contain land points if NOT keyword_set basic AND NOT keyword_set keep_cont then begin tempdeux systime 1 For key_performance 2 We delete rectangles which are entirely in the land recdsterre where 1 msk 1 shift msk 1 0 1 shift msk 0 1 1 shift msk 1 1 EQ 1 IF testvar var key_performance EQ 2 THEN print temps triangule: tous les recdsterre systime 1 tempdeux We do an other sort : We have to do not remove rectangles which only have one common summit t1 systime 1 indice intarr nx ny trimask intarr nx ny trimask 0:nx 2 0:ny 2 1 IF recdsterre 0 NE 1 then BEGIN tempdeux systime 1 For key_performance 2 indice recdsterre 1 if NOT keyword_set basic then begin vire1 0 vire2 0 while vire1 0 NE 1 OR vire2 0 NE 1 ne 0 do begin Delete rectangles we have to remove from recsterre in fact those we have to keep although they ar eentirely in the land vire1 where indice shift indice 1 1 1 shift indice 0 1 1 shift indice 1 0 trimask EQ 1 if vire1 0 NE 1 THEN BEGIN indice vire1 0 indice vire1 nx 1 0 endif vire2 where 1 indice 1 shift indice 1 1 shift indice 0 1 shift indice 1 0 trimask EQ 1 if vire2 0 NE 1 THEN BEGIN indice vire2 1 0 indice vire2 nx 0 endif endwhile IF testvar var key_performance EQ 2 THEN print temps triangule: trier les recdsterre systime 1 tempdeux endif indice ny 1 1 The last column and the last line indice nx 1 1 can not define any rectangle tempdeux systime 1 For key_performance 2 recgarde where indice EQ 0 We recuperate numbers of triangles we will keep trigarde 2 recgarde recgarde nx trigarde transpose temporary trigarde trigarde trigarde trigarde 1 triang triang temporary trigarde IF testvar var key_performance EQ 2 THEN print temps triangule: virer les triangle de la liste systime 1 tempdeux endif endif print temps tri triangles systime 1 t1 When key_periodic equal 1 triang is a list of indexes s array which have a surplus column We have to put it back to the initial matrix by putting indexes of the last column equal to these of the last column tempdeux systime 1 For key_performance 2 if keyword_set key_periodic nx 1 EQ jpi AND NOT keyword_set basic then BEGIN indicey triang nx indicex triang indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 then indicex liste 0 triang indicex nx indicey nx nx 1 if coinmont 0 NE 1 then begin indicey coinmont nx indicex coinmont indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 THEN indicex liste 0 coinmont indicex nx indicey nx nx 1 endif if coindesc 0 NE 1 then begin indicey coindesc nx indicex coindesc indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 THEN indicex liste 0 coindesc indicex nx indicey nx nx 1 endif endif IF testvar var key_performance EQ 2 THEN print temps triangule: finitions systime 1 tempdeux if keyword_set coinmonte THEN coinmonte coinmont ELSE twin_corners_up coinmont if keyword_set coindescend THEN coindescend coindesc ELSE twin_corners_dn coindesc IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF IF keyword_set key_performance THEN print temps triangule systime 1 tempsun return triang END "); 332 a[330] = new Array("./ToBeReviewed/TRIANGULATION/triangule_e.html", "triangule_e.pro", "", " file_comments Buid the triangulation for a E grid type categories graphic param MASKENTREE in optional It is a 2d array which will serve to mask the field we will trace after with CONTOUR TRIANGULATION triangule mask If this argument is not specified the function use tmask keyword BASIC Specify that the mask is on a basic grid use the triangulation for vertical cuts and hovmoellers keyword COINMONTE It is an array To obtain the array of ascending land corner to be treated with completecointerre pro in the variable array instead of make it pass by the global variable twin_corners_up keyword COINDESCEND It is an array See COINMONTE keyword SHIFTED uses common pro history Sebastien Masson smasson lodyc jussieu fr june 2001 version Id: triangule_e pro 150 2006 08 09 10:12:54Z navarro todo seb L 152 153 je ne pense pas que ce soit ce que tu voulais dire mais c est la traduction de ce qu il y avait crit Correction si besoin FUNCTION triangule_e maskentree COINMONTE coinmonte COINDESCEND coindescend SHIFTED shifted BASIC basic compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF tempsun systime 1 For key_performance Is the mask given or do we have to take tmask msk maskentree sizem size msk nx sizem 1 ny sizem 2 if keyword_set key_periodic nx EQ jpi AND NOT keyword_set basic then BEGIN msk msk msk 0 nx nx 1 ENDIF we will find the diamond that must be cut in two triangle using the horizontal diagonal index lindgen nx ny index index 0:nx 2 1:ny 2 if n_elements shifted EQ 0 then shifted 1 oddeven index nx 1 shifted MOD 2 msk1 msk index msk2 msk index 1 sum msk index nx oddeven msk index nx oddeven sum1 msk2 sum sum2 msk1 sum horizontal singularpoint where msk1 EQ 0 AND sum1 EQ 3 OR msk1 EQ 1 AND sum1 EQ 0 OR msk2 EQ 0 AND sum2 EQ 3 OR msk2 EQ 1 AND sum2 EQ 0 OR sum EQ 0 AND msk1 msk2 EQ 2 if singularpoint 0 NE 1 then begin horizontal index singularpoint triang definetri_e nx ny horizontal SHIFTED shifted ENDIF ELSE triang definetri_e nx ny SHIFTED shifted coinmont index where sum EQ 2 AND msk1 msk2 EQ 0 coindesc index where sum EQ 0 AND msk1 msk2 EQ 2 we keep only the triangles which are outside the land but for some reasons we will in fact delete the land diamond allrecinland where sum1 msk1 EQ 0 indexallinland index allrecinland otherrec lindgen nx ny 0:nx 2 1:ny 2 otherrec different otherrec indexallinland index lindgen nx ny index index 0:nx 3 2:ny 3 out inter index indexallinland IF out 0 NE 1 THEN begin out inter out 1 indexallinland IF out 0 NE 1 THEN begin out out 1 oddeven out nx 1 shifted MOD 2 out inter out nx oddeven otherrec IF out 0 NE 1 THEN begin out inter out 2 nx otherrec IF out 0 NE 1 THEN begin out out nx out nx shifted MOD 2 endif endif endif ENDIF help out index lindgen nx ny index index 0:nx 3 2:ny 3 out inter index otherrec IF out 0 NE 1 THEN begin out inter out 1 otherrec IF out 0 NE 1 THEN begin out out 1 oddeven out nx 1 shifted MOD 2 out inter out nx oddeven indexallinland IF out 0 NE 1 THEN begin out inter out 2 nx indexallinland IF out 0 NE 1 THEN begin out out nx out nx shifted MOD 2 endif endif endif endif help out IF out 0 EQ 1 THEN out different indexallinland out ELSE out indexallinland triout numtri out nx ny triout triout triout 1 goodtri lindgen 2 nx 1 ny 1 goodtri different goodtri triout triang triang temporary goodtri When key_periodic equal 1 triang is a list of indexes s array which have a surplus column We have to put it back to the initial matrix by putting indexes of the last column equal to these of the last column tempdeux systime 1 For key_performance 2 if keyword_set key_periodic nx 1 EQ jpi AND NOT keyword_set basic then BEGIN indicey triang nx indicex triang indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 then indicex liste 0 triang indicex nx indicey nx nx 1 if coinmont 0 NE 1 then begin indicey coinmont nx indicex coinmont indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 THEN indicex liste 0 coinmont indicex nx indicey nx nx 1 endif if coindesc 0 NE 1 then begin indicey coindesc nx indicex coindesc indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 THEN indicex liste 0 coindesc indicex nx indicey nx nx 1 endif endif IF testvar var key_performance EQ 2 THEN print temps triangule: finitions systime 1 tempdeux if arg_present coinmonte THEN coinmonte coinmont ELSE twin_corners_up coinmont if arg_present coindescend THEN coindescend coindesc ELSE twin_corners_dn coindesc IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF IF keyword_set key_performance THEN print temps triangule systime 1 tempsun return triang END "); 333 a[331] = new Array("./ToBeReviewed/UTILITAIRE/get_extra.html", "get_extra.pro", "", " todo seb elle fait quoi elle permet : soit de creer une variable extra contenant les mots clefs que tu desires soit de completer une variable extra avec des mots clefs que tu rajoutes imagine : tu es dans une routine et tu veux passer un mot clef en extra car la routine que tu appelles ne le connait pas mais la routine suivante oui tu fais extra get_extra ok year 1999 age_capitaine 35 et tu obtiens la bonne variable extra fait un help extra struc ou alors tu completes un extra existant : extra get_extra _extra extra name Guillaume FUNCTION get_extra _extra extra compile_opt idl2 strictarrsubs return extra END "); 334 a[332] = new Array("./ToBeReviewed/UTILITAIRE/oups.html", "oups.pro", "", ""); 335 a[333] = new Array("./ToBeReviewed/UTILITAIRE/vzoom.html", "vzoom.pro", "", ""); 336 a[334] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd.html", "buildcmd.pro", "", " file_comments This function send back a string which contain the reading command and drawing s parameters param BASE in required keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword FORCETYPE history Sebastien Masson smasson lodyc jussieu fr version Id: buildcmd pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter le param BASE et le keyword FORCETYPE FUNCTION buildcmd base BOXZOOM boxzoom FORCETYPE forcetype we get back the ids of the widget parts compile_opt idl2 strictarrsubs txtcmdid widget_info base find_by_uname txtcmd domainid widget_info base find_by_uname domain actionid widget_info base find_by_uname action optionid widget_info base find_by_uname option widget_control base get_uvalue top_uvalue smallin extractatt top_uvalue smallin numdessinin smallin 2 1 smallout extractatt top_uvalue smallout numdessinout smallout 2 1 options extractatt top_uvalue options optionsflag extractatt top_uvalue optionsflag portrait strtrim optionsflag where options EQ Portrait Landscape 0 1 0 We determinate which procedure we will call to do the drawing and the type IF keyword_set forcetype THEN type forcetype ELSE type widget_info actionid combobox_gettext case type of plt :procedure plt pltz :procedure pltz pltz diag up :procedure pltz pltz diag dn :procedure pltz pltt :procedure pltt pltt diag up :procedure pltt pltt diag dn :procedure pltt xy :procedure plt xz :procedure pltz yz :procedure pltz xt :procedure pltt yt :procedure pltt zt :procedure pltt x :procedure plt1d y :procedure plt1d z :procedure plt1d t :procedure pltt endcase Search of options options extractatt top_uvalue options optionsflag extractatt top_uvalue optionsflag flags optionsflag numdessinin xindex flags where options EQ Longitude x index 0 yindex flags where options EQ Latitude y index 0 drawvecteur flags where options EQ Vecteur 0 procedure eq plt drawover flags where options EQ Overlay 0 alreadyread extractatt top_uvalue alreadyread alreadyvector extractatt top_uvalue alreadyvector alreadyover extractatt top_uvalue alreadyoer What must we read case 1 of alreadyover NE 1:BEGIN toread alreadyover 1 readswitch over END alreadyvector NE 1 AND alreadyvector NE pi:BEGIN toread alreadyvector 1 readswitch vector END alreadyread NE 1 AND alreadyread NE pi AND alreadyread NE 2 pi:BEGIN toread alreadyread 1 readswitch classic END else:BEGIN case 1 of alreadyvector eq pi:BEGIN toread alreadyover 1 readswitch over END alreadyread EQ pi:BEGIN toread alreadyvector 1 readswitch vector END alreadyread EQ 2 pi:BEGIN toread alreadyover 1 readswitch over END ELSE:BEGIN toread alreadyread 1 readswitch classic END endcase END ENDCASE widget_control txtcmdid get_value widcmd widcmd strtrim widcmd 2 IF widcmd 0 EQ THEN widcmd zzz cutcmd widcmd 0 toread numberofread prefix nameexp ending readcmd buildreadcmd base nameexp procedure type BOXZOOM boxzoom complete readswitch EQ classic AND alreadyread EQ 1 we look for the line containing funclec_name currentfile extractatt top_uvalue currentfile readparameters extractatt top_uvalue readparameters currentfile i 0 while strpos readcmd i readparameters funclec_name EQ 1 do i i 1 case readswitch of classic :BEGIN if alreadyread 1 EQ 0 then BEGIN we start the reading command readcmd beginning of reading the field to draw readcmd readcmd i 1 field prefix readcmd i 1 ENDIF ELSE BEGIN we complet the reading command oldrdcmd extractatt top_uvalue currentreadcmd nl n_elements oldrdcmd oldrdcmd nl 1 oldrdcmd nl 1 readcmd i prefix readcmd i readcmd temporary oldrdcmd temporary readcmd ENDELSE exit if we have to read other fields if alreadyread 1 NE numberofread 1 THEN BEGIN top_uvalue 1 findline top_uvalue currentreadcmd readcmd top_uvalue 1 findline top_uvalue alreadyread alreadyread 1 top_uvalue 1 findline top_uvalue noticebase xnotice Select the field number strtrim alreadyread 3 1 return ENDIF we finalize the reading command IF ending NE THEN BEGIN nl n_elements readcmd readcmd nl 1 readcmd nl 1 readcmd temporary readcmd ending ENDIF readcmd temporary readcmd field create_struct arr:temporary field grid:vargrid unit:varunit experiment:varexp name:varname end of reading the field to draw we get back _EXTRA: extra extractatt top_uvalue extra if xindex NE 0 then extra create_struct extra xindex xindex if yindex NE 0 then extra create_struct extra yindex yindex exextra cw_specifie_get_value base extra mixstru exextra extra sextra struct2string extra readcmd temporary readcmd extra sextra top_uvalue 1 findline top_uvalue currentreadcmd readcmd case 1 of drawvecteur:BEGIN we have to read the vectors top_uvalue 1 findline top_uvalue alreadyread pi top_uvalue 1 findline top_uvalue noticebase xnotice Select the zonal component of vector return END drawover:BEGIN we have to read the field to overlay top_uvalue 1 findline top_uvalue alreadyread 2 pi top_uvalue 1 findline top_uvalue noticebase xnotice Select the field to overlay return END finished we draw the plot ELSE: top_uvalue 1 findline top_uvalue alreadyread 1 endcase END vector :BEGIN for the vectors there is 2 components we read u when alreadyvector is a interger and v when alreadyvector is a interger 0 5 if floor alreadyvector 1 EQ 0 then begin if floor alreadyvector EQ alreadyvector then begin readcmd beginning of reading the zonal component of vector readcmd readcmd i 1 fieldu prefix readcmd i 1 ENDIF ELSE BEGIN readcmd beginning of reading the meridional component of vector readcmd readcmd i 1 fieldv prefix readcmd i 1 ENDELSE readcmd extractatt top_uvalue currentreadcmd temporary readcmd ENDIF ELSE BEGIN oldrdcmd extractatt top_uvalue currentreadcmd nl n_elements oldrdcmd oldrdcmd nl 1 oldrdcmd nl 1 readcmd i prefix readcmd i readcmd temporary oldrdcmd temporary readcmd ENDELSE case alreadyvector 1 of numberofread 1:BEGIN we finalize the reading command IF ending NE THEN BEGIN nl n_elements readcmd readcmd nl 1 readcmd nl 1 readcmd temporary readcmd ending ENDIF readcmd temporary readcmd fieldu create_struct arr:temporary fieldu grid:vargrid unit:varunit experiment:varexp name:varname end of reading the zonal component of vector top_uvalue 1 findline top_uvalue currentreadcmd readcmd we finished zonal component reading we know switch to meridional component top_uvalue 1 findline top_uvalue alreadyvector 5 top_uvalue 1 findline top_uvalue noticebase xnotice Select the meridional component of vector return END numberofread 0 5:BEGIN we finalize the reading command IF ending NE THEN BEGIN nl n_elements readcmd readcmd nl 1 readcmd nl 1 readcmd temporary readcmd ending ENDIF readcmd temporary readcmd fieldv create_struct arr:temporary fieldv grid:vargrid unit:varunit experiment:varexp name:varname end of reading the meridional component of vector we finished meridional component reading we get back _EXTRA of the vector and we complet extra already build extra extractatt top_uvalue extra exextra cw_specifie_get_value base extra mixstru exextra extra sextra struct2string extra readcmd readcmd vectorextra sextra extra mixstru extra vectorextra top_uvalue 1 findline top_uvalue currentreadcmd readcmd if drawover then BEGIN shall we do an overlay top_uvalue 1 findline top_uvalue alreadyvector pi top_uvalue 1 findline top_uvalue noticebase xnotice Select the field to overlay return ENDIF ELSE BEGIN it is done know top_uvalue 1 findline top_uvalue alreadyread 1 top_uvalue 1 findline top_uvalue alreadyvector 1 ENDELSE END ELSE:BEGIN we still need to read some vector components top_uvalue 1 findline top_uvalue currentreadcmd readcmd top_uvalue 1 findline top_uvalue alreadyvector alreadyvector 1 if floor alreadyvector EQ alreadyvector then text zonal ELSE text meridional top_uvalue 1 findline top_uvalue noticebase xnotice Select the strtrim floor alreadyread 3 1 text component of vector return END endcase END over :BEGIN if alreadyover 1 EQ 0 then begin we start the reading readcmd beginning of reading the field to overdraw readcmd readcmd i 1 fieldover prefix readcmd i 1 readcmd extractatt top_uvalue currentreadcmd temporary readcmd ENDIF ELSE BEGIN oldrdcmd extractatt top_uvalue currentreadcmd nl n_elements oldrdcmd oldrdcmd nl 1 oldrdcmd nl 1 readcmd i prefix readcmd i readcmd temporary oldrdcmd temporary readcmd ENDELSE if alreadyover 1 NE numberofread 1 THEN BEGIN we still need to read some files top_uvalue 1 findline top_uvalue currentreadcmd readcmd top_uvalue 1 findline top_uvalue alreadyover alreadyover 1 top_uvalue 1 findline top_uvalue noticebase xnotice Select the field number strtrim alreadyover 3 1 to overlay return ENDIF we finalize the reading command IF ending NE THEN BEGIN nl n_elements readcmd readcmd nl 1 readcmd nl 1 readcmd temporary readcmd ending ENDIF on finalise la commande de lecture readcmd readcmd fieldover create_struct arr:temporary fieldover grid:vargrid unit:varunit experiment:varexp name:varname end of reading the field to overdraw we get back _EXTRA of over and we complet extra already build extra extractatt top_uvalue extra exextra cw_specifie_get_value base extra mixstru exextra extra sextra struct2string extra readcmd readcmd overextra sextra extra mixstru extra overextra top_uvalue 1 findline top_uvalue currentreadcmd readcmd we reinitialize top_uvalue 1 findline top_uvalue alreadyread 1 top_uvalue 1 findline top_uvalue alreadyvector 1 top_uvalue 1 findline top_uvalue alreadyover 1 END endcase determination of the boxzoom s name if NOT keyword_set boxzoom then widget_control domainid get_value boxzoom Writting of this one as a string box strtrim boxzoom 0 1 for i 1 n_elements boxzoom 1 3 2 strpos type z EQ 1 do box box strtrim boxzoom i 1 For plots in z box must have by default 0 profmax if strpos type z NE 1 then BEGIN If more than 1 level is selected: widget_control widget_info base find_by_uname dthlv1 get_value niv1 niv1 niv1 combobox_index widget_control widget_info base find_by_uname dthlv2 get_value niv2 niv2 niv2 combobox_index if niv1 NE niv2 then begin box box strtrim boxzoom 4 1 strtrim boxzoom 5 1 ENDIF ELSE BEGIN if chkstru exextra profmax then pmax exextra profmax ELSE pmax 200 box box 0 strtrim pmax 1 ENDELSE endif box box IF strpos type diag up NE 1 THEN BEGIN sendpoints strtrim boxzoom 0 1 strtrim boxzoom 2 1 strtrim boxzoom 1 1 strtrim boxzoom 3 1 ENDIF IF strpos type diag dn NE 1 THEN BEGIN sendpoints strtrim boxzoom 0 1 strtrim boxzoom 3 1 strtrim boxzoom 1 1 strtrim boxzoom 2 1 ENDIF We determinate typein IF strpos type diag NE 1 THEN typein strmid type 0 4 ELSE typein type determination of small ssmall tostr smallout We will define the string which will contain the command to be executed by widgetdessine pro Cmd readCmd procedure field boxzoom box findalways typein typein small ssmall IF drawvecteur then Cmd Cmd vecteur u: fieldu v: fieldv IF drawover then Cmd Cmd contour fieldover IF n_elements sendpoints NE 0 then Cmd Cmd endpoints sendpoints Cmd Cmd _extra mixstru ex extra portrait portrait NOERASE noerase print for i 0 n_elements Cmd 1 do print Cmd i print We complete and or update the structure top_uvalue top_uvalue 1 findline top_uvalue nameprocedures numdessinout procedure top_uvalue 1 findline top_uvalue types numdessinout type top_uvalue 1 findline top_uvalue domaines numdessinout boxzoom top_uvalue 1 findline top_uvalue txtcmd numdessinout widcmd top_uvalue 1 findline top_uvalue optionsflag numdessinout flags top_uvalue 1 findline top_uvalue exextra numdessinout extra return Cmd end "); 337 a[335] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html", "buildreadcmd.pro", "", " param BASE in required The id of the widget where apply the drawing param SNAMEEXP in required param PROCEDURE in required param TYPE in required keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword COMPLETE keyword NAMEFIELD uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: buildreadcmd pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter les param et les keyword qui ne le sont pas FUNCTION buildreadcmd base snameexp procedure type BOXZOOM boxzoom COMPLETE complete NAMEFIELD namefield compile_opt idl2 strictarrsubs cm_4cal for key_caltype get back widgets IDs vlstid widget_info base find_by_uname varlist date1id widget_info base find_by_uname calendar1 date2id widget_info base find_by_uname calendar2 domainid widget_info base find_by_uname domain optionid widget_info base find_by_uname option widget_control base get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 numdessinout extractatt top_uvalue smallout 2 1 name of the file currentfile extractatt top_uvalue currentfile filelist extractatt top_uvalue filelist filename filelist currentfile sfilename filename name of the variable if keyword_set namefield then namevar namefield ELSE namevar widget_info vlstid combobox_gettext snamevar namevar get the options options extractatt top_uvalue options flags extractatt top_uvalue optionsflag flags flags numdessinin xindex flags where options EQ Longitude x index 0 yindex flags where options EQ Latitude y index 0 extra extractatt top_uvalue extra if xindex NE 0 then extra create_struct extra xindex xindex if yindex NE 0 then extra create_struct extra yindex yindex exextra cw_specifie_get_value base exextra extractstru exextra min max inter lct if size exextra type EQ 8 then extra mixstru exextra extra sextra struct2string extra find date1 and date2 key_caltype extractatt top_uvalue fileparameters currentfile caltype widget_control date1id get_value date1 widget_control date2id get_value date2 if procedure EQ pltt AND date1 EQ date2 then BEGIN we redefine the dates to the begining and end of the calendar calendar extractatt top_uvalue fileparameters currentfile time_counter date1 jul2date calendar 0 date2 jul2date calendar n_elements calendar 1 widget_control date1id set_value date1 widget_control date2id set_value date2 endif fakecal extractatt top_uvalue fileparameters currentfile fakecal IF keyword_set fakecal THEN BEGIN date1 date2jul date1 fakecal date2 date2jul date2 fakecal ENDIF sdate1 strtrim date1 1 sdate2 strtrim date2 1 find boxzoom if NOT keyword_set boxzoom then widget_control domainid get_value boxzoom put boxzoom into a string box strtrim boxzoom 0 1 for i 1 n_elements boxzoom 1 3 2 strpos type z EQ 1 do box box strtrim boxzoom i 1 if strpos type z NE 1 then BEGIN common min min gdept gdepw max max box box strtrim floor min 1 strtrim ceil max 1 endif box box IF strpos type diag up NE 1 THEN BEGIN sendpoints strtrim boxzoom 0 1 strtrim boxzoom 2 1 strtrim boxzoom 1 1 strtrim boxzoom 3 1 ENDIF IF strpos type diag dn NE 1 THEN BEGIN sendpoints strtrim boxzoom 0 1 strtrim boxzoom 3 1 strtrim boxzoom 1 1 strtrim boxzoom 2 1 ENDIF find funclec_name readparameters meshparameters readparameters extractatt top_uvalue readparameters currentfile funclec_name readparameters funclec_name if keyword_set complete then begin sreadparameters struct2string readparameters meshparameters extractatt top_uvalue meshparameters currentfile smeshparameters struct2string meshparameters We will define the string which will contain the command to be executed for the reading Cmd Definition of extra structure: extra sextra Definition of readparameters structure: readparameters sreadparameters Do we change of reading : dummy changeread readparameters Definition of meshparameters structure: meshparameters smeshparameters Do we change the grid : dummy changegrid meshparameters Read the data if n_elements date1in ne 0 then date1 date1in else date1 sdate1 if n_elements date2in ne 0 then date2 date2in else date2 sdate2 funclec_name snamevar date1 date2 snameexp timestep strtrim keyword_set fakecal 1 parent strtrim base 2 boxzoom box findalways filename sfilename if n_elements sendpoints NE 0 then Cmd Cmd endpoints sendpoints type type Cmd Cmd _extra mixstru ex extra nostruct top_uvalue 1 findline top_uvalue varinfo numdessinout filename namevar top_uvalue 1 findline top_uvalue dates numdessinout date1 date2 ENDIF ELSE BEGIN Cmd funclec_name snamevar sdate1 sdate2 snameexp timestep strtrim keyword_set fakecal 1 parent strtrim base 1 boxzoom box findalways filename sfilename if n_elements sendpoints NE 0 then Cmd Cmd endpoints sendpoints type type Cmd Cmd _extra mixstru ex extra nostruct ENDELSE print :::::::::::::::::::::: for i 0 n_elements Cmd 1 do print Cmd i print :::::::::::::::::::::: return cmd end"); 338 a[336] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield.html", "changefield.pro", "", " file_comments categories param BASE in required The id of the widget where apply the drawing param NEWFIELDNAME keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef returns uses restrictions examples history version Id: changefield pro 150 2006 08 09 10:12:54Z navarro todo seb PRO changefield base newfieldname BOXZOOM boxzoom compile_opt idl2 strictarrsubs widget_control base get_uvalue top_uvalue Change exextra : exextra definedefaultextra newfieldname specifieid widget_info base find_by_uname specifie widget_control specifieid set_value exextra Change the variable Do we need to change the vertical axis according to the tye of points T or W dthlv1id widget_info base find_by_uname dthlv1 widget_control dthlv1id get_uvalue dthlv1_uval oldzgridt dthlv1_uval grid_t get the type of point currentfile extractatt top_uvalue currentfile listgrid extractatt top_uvalue fileparameters currentfile listgrid listvar extractatt top_uvalue fileparameters currentfile listvar for i 0 n_elements listvar 1 do print listvar i listgrid i indexvar where listvar EQ newfieldname indexvar 0 indexvar 0 zgridt strupcase listgrid indexvar NE W if we change the type of point if zgridt NE oldzgridt then BEGIN update dthlv1_uval grid_t dthlv1_uval grid_t zgridt widget_control dthlv1id set_uvalue dthlv1_uval update cw_domain if NOT keyword_set boxzoom THEN widget_control widget_info base find_by_uname domain get_value boxzoom widget_control widget_info base find_by_uname domain set_value boxzoom endif return end"); 339 a[337] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile.html", "changefile.pro", "", " file_comments categories param BASE in required The id of the widget where apply the drawing param NEWFILENAME keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword DATE1 keyword DATE2 keyword FIELDNAME returns uses restrictions examples history version Id: changefile pro 150 2006 08 09 10:12:54Z navarro todo seb PRO changefile base newfilename BOXZOOM boxzoom DATE1 date1 DATE2 date2 FIELDNAME fieldname compile_opt idl2 strictarrsubs widget_control base hourglass widget_control base get_uvalue top_uvalue filelist extractatt top_uvalue filelist IF size newfilename type EQ 7 THEN newfile where filelist EQ newfilename 0 ELSE newfile newfilename it is already the index of the new file if newfile EQ 1 then begin nothing report invalid filename return endif oldfile extractatt top_uvalue currentfile oldfilename filelist oldfile did we really change the file if oldfile EQ newfile AND NOT keyword_set BOXZOOM OR keyword_set DATE1 OR keyword_set DATE2 OR keyword_set FIELDNAME then return widget_control base update 0 we update currentfile element of the top_uvalue top_uvalue 1 findline top_uvalue currentfile newfile Calendar oldcalendar extractatt top_uvalue fileparameters oldfile time_counter newcalendar extractatt top_uvalue fileparameters newfile time_counter Did we change the calendar if array_equal oldcalendar newcalendar NE 1 then begin cm_4cal for key_caltype key_caltype extractatt top_uvalue fileparameters newfile caltype fake or real calendar fakecal extractatt top_uvalue fileparameters newfile fakecal Which dates were selected date1id widget_info base find_by_uname calendar1 if NOT keyword_set date1 then widget_control date1id get_value date1 jdate1 date2jul date1 if where newcalendar EQ jdate1 0 EQ 1 then jdate1 newcalendar 0 date2id widget_info base find_by_uname calendar2 if NOT keyword_set date2 then widget_control date2id get_value date2 jdate2 date2jul date2 if where newcalendar EQ jdate2 0 EQ 1 then jdate2 date1 if jdate2 LT jdate1 THEN jdate2 jdate1 widget_control date1id destroy widget_control date2id destroy basecal widget_info base find_by_uname basecal rien cw_calendar basecal newcalendar jdate1 uname calendar1 FAKECAL fakecal uvalue name: calendar1 frame rien cw_calendar basecal newcalendar jdate2 uname calendar2 FAKECAL fakecal uvalue name: calendar2 frame ENDIF ELSE BEGIN if keyword_set date1 then begin date1id widget_info base find_by_uname calendar1 widget_control date1id set_value date1 endif if keyword_set date2 then begin date2id widget_info base find_by_uname calendar2 widget_control date2id set_value date2 endif ENDELSE Grid parameters and domain newgrid extractatt top_uvalue meshparameters newfile change changegrid newgrid if change OR keyword_set boxzoom then BEGIN if NOT keyword_set boxzoom then boxzoom 1 domainid widget_info base find_by_uname domain widget_control domainid set_value boxzoom endif file name IF oldfile NE newfile THEN BEGIN flstid widget_info base find_by_uname filelist widget_control flstid set_combobox_select newfile ENDIF Variables name vlstid widget_info base find_by_uname varlist oldfieldname widget_info vlstid combobox_gettext did we really change the liste of variables oldlistvar extractatt top_uvalue fileparameters oldfile listvar newlistvar extractatt top_uvalue fileparameters newfile listvar if array_equal oldlistvar newlistvar NE 1 THEN widget_control vlstid set_value newlistvar set the liste of variables to the new variable name if keyword_set fieldname then newfieldname fieldname ELSE newfieldname oldfieldname indexvar where newlistvar EQ newfieldname indexvar 0 indexvar 0 widget_control vlstid set_combobox_select indexvar newfieldname newlistvar indexvar did we change the name of the variable if newfieldname NE oldfieldname then BEGIN changefield base newfieldname BOXZOOM boxzoom ENDIF widget_control base update 1 return end"); 340 a[338] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory.html", "createhistory.pro", "", " file_comments categories param BASE in required The id of the widget where apply the drawing param SMALL Vector composed of 3 or 4 elements applyed to make a drawing on a small portion of a page or screen It delimit the zone where the drawing will be done If there is 4 elements: then is constituated of coordinates expressed in cm located from the up and left corner of the page or the window in portrait like in lanscape of the bottom and left corner and of the up and right corner of the drawing zone If there is 3 elements: in this case we divide the page or the screen in small 0 columns and in small 1 lines the drawing made in the box numbered small 2 The numerotation starting up and left by the number 1 and then following the writing direction By default we make the largest drawing we can do conserving the aspect rapport exept when REMPLI is activated returns uses restrictions examples history version Id: createhistory pro 150 2006 08 09 10:12:54Z navarro todo seb: je ne suis pas sur pour les param documenter le reste PRO createhistory base small we save globalcommand in globaloldcommand compile_opt idl2 strictarrsubs widget_control base get_uvalue top_uvalue globalcommand extractatt top_uvalue globalcommand top_uvalue 1 findline top_uvalue globaloldcommand globalcommand portrait or landscape options extractatt top_uvalue options optionsflag extractatt top_uvalue optionsflag portrait optionsflag where options EQ Portrait Landscape 0 0 composition du text contennu ds history pro texte common if keyword_set postscript then begin noerase 1 openps infowidget infowidget portrait strtrim portrait 2 endif beginning of 1 end of 1 if small 0 small 1 GT 1 then begin for draw 1 small 0 small 1 1 do begin texte texte beginning of strtrim draw 1 2 noerase 1 end of strtrim draw 1 2 endfor ENDIF texte texte if keyword_set postscript then begin closeps infowidget infowidget printps endif the new globalcommand top_uvalue 1 findline top_uvalue globalcommand texte for i 0 n_elements texte 1 do print texte i return end"); 341 a[339] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.html", "cutcmd.pro", "", " file_comments categories param WIDCMD param TOREAD param NUMBEROFREAD param PREFIX param NAMEEXP param ENDING returns uses restrictions examples history version Id: cutcmd pro 150 2006 08 09 10:12:54Z navarro todo seb PRO cutcmd widcmd toread numberofread prefix nameexp ending compile_opt idl2 strictarrsubs dummy where byte widcmd EQ byte 0 nbdblquote CASE 1 OF nbdblquote MOD 2: stop odd numbers are impossibles nbdblquote GT 0: nbdblquote EQ 0:BEGIN widcmd is an expression of type: numb1 a numb2 b numb we will change into the form numb1 a numb2 b numb in order to suits the new method of cutcmd widcmd strtrim widcmd 2 we force to start with a or case 1 of strpos widcmd EQ 0: strpos widcmd EQ 0: ELSE:widcmd widcmd ENDCASE separator strsplit widcmd extract regex other strsplit widcmd extract IF n_elements separator NE n_elements other THEN stop widcmd FOR i 0 n_elements other 1 DO BEGIN IF isnumber other i LT 1 THEN other i other i widcmd widcmd separator i other i ENDFOR print widcmd END ENDCASE cutted strsplit widcmd extract IF strpos widcmd EQ 0 THEN start 0 ELSE start 1 nameexp cutted start: :2 numberofread n_elements nameexp IF toread GE numberofread then begin dummy report toread cannot be larger than numberofread stop ENDIF other cutted 1 start: :2 make sure that we have a prefix for each nameexp IF start EQ 0 THEN other other nameexp nameexp toread prefix other toread IF n_elements other EQ numberofread 1 THEN ending other numberofread ELSE ending help prefix nameexp ending return end"); 342 a[340] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/definedefaultextra.html", "definedefaultextra.pro", "", " file_comments categories param NOMVARIABLE returns uses restrictions examples history version Id: definedefaultextra pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION definedefaultextra nomvariable compile_opt idl2 strictarrsubs case strlowcase nomvariable of sn :BEGIN return get_extra min 31 max 37 inter 2 lct 33 nocontout END tn :BEGIN return get_extra min 20 max 31 inter 5 lct 39 END un :BEGIN return get_extra min 1 max 1 inter 1 lct 64 END vn :BEGIN return get_extra min 1 max 1 inter 1 lct 64 END ELSE: ENDCASE return get_extra min max inter lct 39 end"); 343 a[341] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/doubleclickaction.html", "doubleclickaction.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: doubleclickaction pro 150 2006 08 09 10:12:54Z navarro todo seb PRO doubleclickaction event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval widget_control event top get_uvalue top_uvalue We activate the right window widget_control event id get_value win wset win What is the selected drawing smallin extractatt top_uvalue smallin smallout extractatt top_uvalue smallout x convert_coord uval x 0 uval y 0 device to_normal 0 y convert_coord uval x 0 uval y 0 device to_normal 1 numcolonne n_elements where findgen smallin 0 smallin 0 lt x 1 numligne n_elements where findgen smallin 1 smallin 1 lt 1 y 1 numdessin numcolonne numligne smallin 0 1 Choice of the type of action case uval press of 1:BEGIN if top_uvalue smallin 2 NE numdessin then begin tracecadre smallin erase if total smallin EQ smallout EQ 3 then tracecadre smallout out smallin smallin 0:1 numdessin top_uvalue 1 findline top_uvalue smallin smallin tracecadre smallin p extractatt top_uvalue penvs numdessin 1 x extractatt top_uvalue xenvs numdessin 1 y extractatt top_uvalue yenvs numdessin 1 END 2:BEGIN if top_uvalue smallout 2 NE numdessin then begin tracecadre smallout erase if total smallin EQ smallout EQ 3 then tracecadre smallin smallout smallin 0:1 numdessin top_uvalue 1 findline top_uvalue smallout smallout tracecadre smallout out endif END 4:BEGIN tracecadre smallin 0:1 numdessin fill inserthistory event top beginning of strtrim numdessin 2 end of strtrim numdessin 2 Putting at 0 of attributes of the value concerning the drawing: numdessin numdessin 1 top_uvalue 1 findline top_uvalue varinfo numdessin top_uvalue 1 findline top_uvalue dates numdessin 0l 0l top_uvalue 1 findline top_uvalue nameprocedures numdessin top_uvalue 1 findline top_uvalue types numdessin top_uvalue 1 findline top_uvalue domaines numdessin fltarr 6 top_uvalue 1 findline top_uvalue txtcmd numdessin if numdessin EQ smallin 2 then tracecadre smallin if numdessin EQ smallout 2 then tracecadre smallout out END ELSE: endcase updatewidget event top return end"); 344 a[342] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt.html", "extractatt.pro", "", " file_comments categories param TOP_UVALUE param NAME returns uses restrictions examples history version Id: extractatt pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION extractatt top_uvalue name compile_opt idl2 strictarrsubs taille size top_uvalue j 1 repeat BEGIN j j 1 if j EQ size top_uvalue 2 then return 1 endrep until top_uvalue 0 j EQ name return top_uvalue 1 j end"); 345 a[343] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.html", "findline.pro", "", " file_comments categories param TOP_UVALUE param NAME returns uses restrictions examples history version Id: findline pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION findline top_uvalue name compile_opt idl2 strictarrsubs taille size top_uvalue j 1 repeat BEGIN j j 1 if j EQ size top_uvalue 2 then return 1 endrep until top_uvalue 0 j EQ name return j end"); 346 a[344] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/identifyclick.html", "identifyclick.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: identifyclick pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION identifyclick event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval no_copy thisEvent TAG_NAMES event Structure if thisEvent EQ WIDGET_TIMER then press 0 ELSE press event press d 0 1 t 1 0 d 2 0 long click d 1 0 t 2 0 normal click d 2 1 d 3 0 t 0 0 double click t 3 0 d 0 0 double click type inutile case 1 OF d 0 0 1er reascending thisEvent EQ WIDGET_DRAW AND uval click EQ 0 AND press EQ 0: d 0 1 1er click of the series thisEvent EQ WIDGET_DRAW AND uval click EQ 0 AND press ge 1:BEGIN uval x event x 0 uval y event y 0 uval press press uval click 1 widget_control event id timer 3 END d 1 0 1er reascending thisEvent EQ WIDGET_DRAW AND uval click EQ 1 AND press EQ 0:uval click 2 d 2 0 End of the long click thisEvent EQ WIDGET_DRAW AND uval click EQ 2 AND press EQ 0:BEGIN type long uval x uval x 0 event x uval x uval x sort uval x uval y uval y 0 event y uval y uval y sort uval y uval click 0 uval press event release END d 2 1 thisEvent EQ WIDGET_DRAW AND uval click EQ 2 AND press ge 1:BEGIN type double uval press press uval click 3 END d 3 0 reascending and end of the double click thisEvent EQ WIDGET_DRAW AND uval click EQ 3 AND press EQ 0:uval click 0 t 0 0 End of the double click thisEvent EQ WIDGET_TIMER AND uval click EQ 0 AND press EQ 0: t 1 0 long click thisEvent EQ WIDGET_TIMER AND uval click EQ 1 AND press EQ 0:uval click 2 t 2 0 normal click thisEvent EQ WIDGET_TIMER AND uval click EQ 2 AND press EQ 0:BEGIN type single press uval press uval click 0 END t 3 0 End of the double click thisEvent EQ WIDGET_TIMER AND uval click EQ 3 AND press EQ 0:uval click 0 Imposible case in theory: ELSE:BEGIN print thisEvent uval click press print Probleme cas normalement impossible END endcase widget_control event id set_uvalue uval no_copy return type:type end"); 347 a[345] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.html", "inserthistory.pro", "", " file_comments categories param BASE param TEXT param LINE1 param LINE2 returns uses restrictions examples history version Id: inserthistory pro 150 2006 08 09 10:12:54Z navarro todo seb PRO inserthistory base text line1 line2 compile_opt idl2 strictarrsubs widget_control base get_uvalue top_uvalue globalcommand extractatt top_uvalue globalcommand top_uvalue 1 findline top_uvalue globaloldcommand globalcommand for i 0 n_elements globalcommand 1 do print globalcommand i we insert text between line1 and line2 index1 where globalcommand EQ line1 index1 index1 0 1 if index1 EQ 1 then begin rien report line1 n est pas trouve ds globalcommand return endif index2 where globalcommand EQ line2 index2 index2 0 if index2 EQ 1 then begin rien report line2 n est pas trouve ds globalcommand return ENDIF the new text: globalcommand globalcommand 0:index1 text globalcommand index2:n_elements globalcommand 1 the new globalcommand top_uvalue 1 findline top_uvalue globalcommand globalcommand return end"); 348 a[346] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.html", "letsdraw.pro", "", " file_comments It si the procedure lauching the drawing If we do not give the command to it it call construitcommande to know what to trace categories param BASE in required The id of the widget where apply the drawing keyword COMMANDE A string of the style: read_data sst keyword _EXTRA Used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: letsdraw pro 150 2006 08 09 10:12:54Z navarro PRO letsdraw base COMMANDE commande _extra ex compile_opt idl2 strictarrsubs common we recuperate the uvalue of base widget_control base get_uvalue top_uvalue print help top_uvalue struct help top_uvalue exextra struct if NOT keyword_set commande then commande buildcmd base _extra ex if commande 0 EQ then return on recupere la uvalue de base widget_control base hourglass widget_control base get_uvalue top_uvalue print help top_uvalue struct print help top_uvalue exextra struct help top_uvalue extra struct print print commande help mixstru top_uvalue exextra top_uvalue extra struct we recuperate the id of the graphic associated to the widget of id base graphid extractatt top_uvalue graphid widget_control graphid get_value win We select it we will pass to it all commands concerning the window wset win erase 255 we clean the window We make sure that if we work with a screen coding colors on 24 bits the specified background color p background is the one applied if d n_colors gt 256 then begin device decomposed 1 p background ffffff x plot 0 0 device decomposed 0 ENDIF smallout long extractatt top_uvalue smallout numdessinout smallout 2 1 tracecadre smallout fill options extractatt top_uvalue options optionsflag extractatt top_uvalue optionsflag portrait strtrim optionsflag where options EQ Portrait Landscape 0 1 0 createpro common noerase 1 key_portrait portrait Commande filename myuniquetmpdir xxx_oneplot pro inserthistory base Commande beginning of strtrim smallout 2 1 end of strtrim smallout 2 1 top_uvalue 1 findline top_uvalue penvs numdessinout p top_uvalue 1 findline top_uvalue xenvs numdessinout x top_uvalue 1 findline top_uvalue yenvs numdessinout y return end"); 349 a[347] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.html", "loadgrid.pro", "", " file_comments categories param MESHFILEIN keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: loadgrid pro 150 2006 08 09 10:12:54Z navarro todo seb PRO loadgrid meshfilein _extra ex compile_opt idl2 strictarrsubs cm_4mesh ccmeshparameters filename meshfilein split the name according to delimiter meshfile strsplit meshfilein extract meshfile strtrim meshfile 2 try to find a pro file with this name filepro find meshfile 0 firstfound onlypro 0 if this is an idl batch file or a procedure if filepro NE NOT FOUND THEN BEGIN CASE protype filepro OF this is a procedure proc :listing file_basename filepro pro this is a function this case is not coded func :stop this is an IDL batch file batch :listing file_basename filepro pro ENDCASE ENDIF ELSE BEGIN filenc find meshfile 0 firstfound onlync 0 if filenc EQ NOT FOUND THEN stop listing initncdf filenc ENDELSE add the arguments and keywords if necessary IF n_elements meshfile GT 1 AND strmid listing 0 1 NE THEN BEGIN FOR i 1 filepro NE NOT FOUND n_elements meshfile 1 DO listing listing meshfile i ENDIF IF strmid listing 0 1 NE THEN listing listing strcalling meshfilein _extra ex createpro listing filename myuniquetmpdir for_createpro pro _extra ex return END "); 350 a[348] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/longclickaction.html", "longclickaction.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: longclickaction pro 150 2006 08 09 10:12:54Z navarro todo seb PRO longclickaction event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval widget_control event top get_uvalue top_uvalue What is the selected drawing smallout extractatt top_uvalue smallout smallin extractatt top_uvalue smallin small smallin x convert_coord uval x 0 uval y 0 device to_normal 0 y convert_coord uval x 0 uval y 0 device to_normal 1 numcolonne n_elements where findgen small 0 small 0 lt x 1 numligne n_elements where findgen small 1 small 1 lt 1 y 1 numdessin numcolonne numligne small 0 we put on numdessin as the leader plot tracecadre smallin erase if total smallin EQ smallout EQ 3 then tracecadre smallout out smallin smallin 0:1 numdessin 1 top_uvalue 1 findline top_uvalue smallin smallin tracecadre smallin p extractatt top_uvalue penvs numdessin x extractatt top_uvalue xenvs numdessin y extractatt top_uvalue yenvs numdessin Change the domain box: coor convert_coord uval x uval y device to_data x coor 0 0 coor 0 1 y coor 1 0 coor 1 1 domainid widget_info event top find_by_uname domain boxzoom x y Do we have to pass the boxzoom in indexes currentplot extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag flags flags currentplot changex flags where options EQ Longitude x index 0 EQ 1 changey flags where options EQ Latitude y index 0 EQ 1 if changex OR changey then begin We want to find the type of grid which is used currentfile extractatt top_uvalue currentfile listgrid extractatt top_uvalue fileparameters currentfile listgrid listvar extractatt top_uvalue fileparameters currentfile listvar vlstid widget_info event top find_by_uname varlist namevar widget_info vlstid combobox_gettext indexvar where listvar EQ namevar vargrid strupcase listgrid indexvar domdef boxzoom gridtype vargrid grille 1 1 1 1 nx ny nz firstx firsty firstz lastx lasty lastz if changex then boxzoom 0:1 firstx lastx if changey then boxzoom 2:3 firsty lasty endif widget_control domainid set_value boxzoom actionid widget_info event top find_by_uname action type widget_info actionid combobox_gettext case uval press of 1:BEGIN nodates type EQ xt OR type EQ yt OR type EQ zt OR type EQ t updatewidget event top noboxzoom nodates nodates notype type NE plt letsdraw event top END 2:BEGIN IF type EQ plt THEN BEGIN top_uvalue 1 findline top_uvalue types smallout 2 1 pltz forcetype pltz ENDIF updatewidget event top noboxzoom letsdraw event top END 4:BEGIN IF type EQ plt THEN BEGIN top_uvalue 1 findline top_uvalue types smallout 2 1 pltt forcetype pltt ENDIF updatewidget event top noboxzoom nodates letsdraw event top forcetype forcetype END endcase return end"); 351 a[349] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html", "read_vermair.pro", "", " file_comments categories param NAME param DEBUT param FIN param NOMEXP keyword PARENT same as DIALOG_PARENT de dialog_message pro keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: read_vermair pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION read_vermair name debut fin nomexp PARENT parent BOXZOOM boxzoom _EXTRA ex compile_opt idl2 strictarrsubs common if name EQ un then name vozocrtx if name EQ vn then name vomecrty if debut EQ fin then begin res lec name debut nomexp BOXZOOM boxzoom _EXTRA ex ENDIF ELSE res lect name debut fin nomexp BOXZOOM boxzoom _EXTRA ex return tab:res grille:vargrid unite: experience:varexp nom:varname end"); 352 a[350] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/scanfile.html", "scanfile.pro", "", " file_comments categories param NAMEFILE keyword GRID keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: scanfile pro 150 2006 08 09 10:12:54Z navarro todo seb : I don t know what to do with that liste des presupposes: 1 le fichier a lire est un fichier netcdf 2 le nom de ce fichier finit par U nc V nc W nc T nc ou F nc la lettre avant le nc designant la grille a laquelle se rapporte la champ Si tel n est pas la cas le fichier est attribue a la grille T 3 ce fichier contient une dimension infinie qui doit etre celle qui se rapporte au temps et au mois 2 autres dimensions dont les noms sont x lon xi_ et y lat ou eta_ ou bien en majuscule 4 il doit exiter ds ce fichier une unique variable n ayant qu une dimension et etant la dimension temporelle cette variable sera prise comme axe des temps Rq: si plusieurs variables verifient ces criteres on considere la premiere variable 5 Cette variable axe des temps doit contenir l attribut units qui doit etre ecrit suivant la syntaxe: seconds since 0001 01 01 00:00:00 hours since 0001 01 01 00:00:00 days since 1979 01 01 00:59:59 months since 1979 01 01 00:59:59 years since 1979 01 01 00:59:59 je crois que c est tout GRID UTVWF to specify the type of grid Defaut is 1 based on the name of the file if the file ends by GRID _ TUVFW NC not case sensible or 2 T if case 1 is not found FUNCTION scanfile namefile GRID GRID _extra ex compile_opt idl2 strictarrsubs common res 1 filename fullname isafile filename namefile IODIRECTORY iodir _extra ex open file cdfid ncdf_open fullname What contains the file infile ncdf_inquire cdfid find vargrid IF keyword_set grid THEN vargrid strupcase grid ELSE BEGIN vargrid T default definition IF finite glamu 0 EQ 1 THEN BEGIN pattern GRID GRID_ GRID UPID_ 30ID_ gdtype T U V W F fnametest strupcase fullname FOR i 0 n_elements pattern 1 DO BEGIN FOR j 0 n_elements gdtype 1 DO BEGIN substr pattern i gdtype j pos strpos fnametest substr IF pos NE 1 THEN vargrid strmid fnametest pos strlen substr 1 1 ENDFOR ENDFOR ENDIF ENDELSE name of all dimensions namedim strarr infile ndims for dimiq 0 infile ndims 1 do begin ncdf_diminq cdfid dimiq tmpname value namedim dimiq strlowcase tmpname ENDFOR we are looking for a x dimension dimidx where namedim EQ x OR strmid namedim 0 3 EQ lon OR strmid namedim 0 3 EQ xi_ OR namedim EQ xt_i7_156 dimidx dimidx 0 if dimidx EQ 1 then begin print one of the dimensions must have the name: x or lon or xi_ or xt_i7_156 stop endif we are looking for a y dimension dimidy where namedim EQ y OR strmid namedim 0 3 EQ lat OR strmid namedim 4 EQ eta_ OR namedim EQ yt_j6_75 dimidy dimidy 0 if dimidy EQ 1 then begin print one of the dimensions must have the name: y or lat or eta_ or yt_j6_75 stop endif name of all variables we keep only the variables containing at least x y and time dimension if existing namevar strarr infile nvars for varid 0 infile nvars 1 do begin invar ncdf_varinq cdfid varid what contains the variable if where invar dim EQ dimidx 0 NE 1 AND where invar dim EQ dimidy 0 NE 1 AND where invar dim EQ infile recdim 0 NE 1 OR infile recdim EQ 1 THEN namevar varid invar name ENDFOR namevar namevar where namevar NE listgrid replicate vargrid n_elements namevar time axis date0fk date2jul 19000101 IF infile recdim EQ 1 THEN BEGIN jpt 1 time date0fk fakecal 1 ENDIF ELSE BEGIN ncdf_diminq cdfid infile recdim timedimname jpt we look for the variable containing the time axis we look for the first variable having for only dimension infile recdim varid 0 repeat BEGIN invar ncdf_varinq cdfid varid varid varid 1 endrep until n_elements invar dim EQ 1 AND invar dim 0 EQ infile recdim varid varid 1 CASE 1 OF varid EQ 1:BEGIN dummy report the file fullname has no time axis C we create a fake calendar fakecal 1 time date0fk lindgen jpt END invar natts EQ 0:BEGIN dummy report the variable invar name has no attribut C we create a fake calendar fakecal 1 time date0fk lindgen jpt END ELSE:BEGIN we want to know which attributes are attached to the time variable attnames strarr invar natts for attiq 0 invar natts 1 do attnames attiq ncdf_attname cdfid varid attiq if where attnames EQ units 0 EQ 1 then BEGIN dummy report Attribut units not found for the variable varid name C we create a fake calendar fakecal 1 time date0fk lindgen jpt ENDIF ELSE BEGIN we read the time axis ncdf_varget cdfid varid time time double time ncdf_attget cdfid varid units value time_counter:units seconds since 0001 01 01 00:00:00 time_counter:units hours since 0001 01 01 00:00:00 time_counter:units days since 1979 01 01 00:00:00 time_counter:units months since 1979 01 01 00:00:00 time_counter:units years since 1979 01 01 00:00:00 value strtrim strcompress string value 2 mots str_sep value unite mots 0 debut str_sep mots 2 now we try to find the attribut called calendar the the attribute calendar exists If no we suppose that the calendar is gregorian calendar if where attnames EQ calendar 0 NE 1 then BEGIN ncdf_attget cdfid varid calendar value value string value CASE value OF noleap :key_caltype noleap 360d :key_caltype 360d greg :IF n_elements key_caltype EQ 0 THEN key_caltype greg ELSE:BEGIN notused report Unknown calendar: value we use greg calendar key_caltype greg END ENDCASE ENDIF ELSE BEGIN notused report Unknown calendar we use key_caltype calendar IF n_elements key_caltype EQ 0 THEN key_caltype greg ENDELSE BEWARE we have to recuperate the calendar attribute and ajust TIME by consequence We pass TIME in IDL julian days unite strlowcase unite IF strpos unite s strlen unite 1 NE 1 THEN unite strmid unite 0 strlen unite 1 IF strpos unite julian_ NE 1 THEN unite strmid unite 7 case unite of second :time julday debut 1 debut 2 debut 0 time 86400 d hour :time julday debut 1 debut 2 debut 0 time 24 d day :time julday debut 1 debut 2 debut 0 time month :BEGIN if total fix time NE time NE 0 then we switch to days with 30d m time julday debut 1 debut 2 debut 0 round time 30 ELSE for t 0 n_elements time 1 DO time t julday debut 1 time t debut 2 debut 0 END year :BEGIN if total fix time NE time NE 0 then we switch to days with 365d y time julday debut 1 debut 2 debut 0 round time 365 ELSE for t 0 n_elements time 1 do time t julday debut 1 debut 2 debut 0 time t END ENDCASE high frequency calendar: more than one element per day IF max histogram long time time 0 GT 1 THEN fakecal 1 ELSE fakecal 0 date0fk date2jul 19000101 IF keyword_set fakecal THEN time date0fk lindgen jpt ELSE time long time ENDELSE END ENDCASE ENDELSE ncdf_close cdfid return filename:fullname time_counter:time listvar:namevar listgrid:strupcase listgrid caltype:key_caltype fakecal:date0fk fakecal end"); 353 a[351] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html", "selectfile.pro", "", " PRO selectfile_event event compile_opt idl2 strictarrsubs common widget_control event id get_uvalue eventuvalue default definition of messenger when selectfile_event is called directly without calling xmanager widget_control event handler get_uvalue messenger messenger 1 IF chkstru eventuvalue name EQ 0 THEN return case eventuvalue name of cancel button Global Cancel :BEGIN widget_control event handler get_uvalue messenger messenger 1 widget_control event handler destroy END data file informations datafilename :BEGIN widget_control event id get_value filename filename isafile filename filename 0 iodir iodir onlync title data file name if size filename type NE 7 then BEGIN widget_control event id set_value return ENDIF widget_control event id set_value filename END browse datafilename :BEGIN filename isafile iodir iodir onlync title data file name if size filename type NE 7 then return widget_control widget_info event handler find_by_uname datafilename set_value filename END switch automatic by and mesh definition buttons gridload :BEGIN IF event select EQ 1 THEN BEGIN widget_control widget_info event handler find_by_uname argtxt set_value widget_control widget_info event handler find_by_uname kwdtxt set_value widget_control widget_info event handler find_by_uname kwd base sensitive 1 CASE event value OF via initnetcdf :BEGIN widget_control widget_info event handler find_by_uname meshload set_value initncdf editable 0 widget_control widget_info event handler find_by_uname arg base sensitive 0 widget_control widget_info event handler find_by_uname kwdlab set_value initncdf keywords: END via perso :BEGIN widget_control widget_info event handler find_by_uname meshload set_value editable 1 widget_control widget_info event handler find_by_uname arg base sensitive 1 widget_control widget_info event handler find_by_uname kwdlab set_value keywords of IDL procedure: END ENDCASE ENDIF END name of the procedure or batch file meshload :BEGIN widget_control event id get_value filename filename find filename 0 onlypro firstfound 0 if filename EQ NOT FOUND then begin widget_control event id set_value return endif CASE protype filename OF this is a procedure proc :BEGIN widget_control widget_info event handler find_by_uname arg base sensitive 1 widget_control widget_info event handler find_by_uname kwd base sensitive 1 widget_control widget_info event handler find_by_uname kwdlab set_value file_basename filename pro keywords: END this is a function this case is not accepted func :BEGIN widget_control event id set_value return END this is an IDL batch file batch :BEGIN widget_control widget_info event handler find_by_uname arg base sensitive 0 widget_control widget_info event handler find_by_uname kwd base sensitive 0 widget_control widget_info event handler find_by_uname kwdlab set_value no keywords: END ENDCASE widget_control widget_info event handler find_by_uname argtxt set_value widget_control widget_info event handler find_by_uname kwdtxt set_value widget_control event id set_value file_basename filename pro END browse meshload :BEGIN filename isafile iodir homedir onlypro title to load the grid file if size filename type NE 7 then return meshload_id widget_info event handler find_by_uname meshload widget_control meshload_id set_value filename selectfile_event ID:meshload_id TOP:event top HANDLER:event handler END Lets Go button Lets Go :BEGIN widget_control widget_info event handler find_by_uname datafilename get_value datafilename datafilename datafilename 0 IF datafilename EQ THEN return datafilename isafile filename datafilename iodir iodir onlync title data file name if size datafilename type NE 7 then BEGIN widget_control widget_info event handler find_by_uname datafilename set_value return ENDIF widget_control widget_info event handler find_by_uname gridload get_value gridload widget_control widget_info event handler find_by_uname argtxt get_value argtxt argtxt strtrim argtxt 0 2 IF strpos argtxt EQ 0 THEN argtxt strmid argtxt 1 widget_control widget_info event handler find_by_uname kwdtxt get_value kwdtxt kwdtxt strtrim kwdtxt 0 2 IF strpos kwdtxt EQ 0 THEN kwdtxt strmid kwdtxt 1 CASE gridload 0 OF via perso :BEGIN meshload_id widget_info event handler find_by_uname meshload widget_control meshload_id get_value meshload meshload meshload 0 IF meshload EQ THEN return meshload find meshload 0 onlypro firstfound 0 if meshload EQ NOT FOUND then begin widget_control meshload_id set_value return endif END via initnetcdf :meshload datafilename ENDCASE IF strlen argtxt NE 0 THEN meshload meshload argtxt IF strlen kwdtxt NE 0 THEN meshload meshload kwdtxt widget_control event handler get_uvalue messenger messenger create_struct datafilename datafilename meshload meshload widget_control event handler destroy END endcase return end file_comments categories param DATAFILENAME param IDLFILE param ARGSPRO keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: selectfile pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter les params FUNCTION selectfile datafilename idlfile argspro _extra ex compile_opt idl2 strictarrsubs common We create a pointer in the uvalue to recuperate answers at setted questions atthe time of the use of this widget So when the widget is deleted in the procedure event pro the variable on which the pointer pointed contained in the uvalue of the widget is not deleted and we can recuperate the result messenger ptr_new allocate_heap base widget_base column title selectfile align_center uvalue messenger _EXTRA ex cancel button dummyid widget_button base value Cancel uvalue name: Global Cancel data file informations basea widget_base base row align_center dummyid widget_label basea value Data file name: database widget_text basea value uvalue name: datafilename uname datafilename xsize 45 EDITABLE dummyid widget_button basea value Browse uvalue name: browse datafilename switch automatic by and mesh definition buttons baseb widget_base base row align_center gdldid cw_bgroup baseb automatic grid construction with initncdf pro grid construction with other IDL batch or procedure exclusive set_value 0 uvalue name: gridload uname gridload button_uvalue via initnetcdf via perso name of the procedure or batch file basec widget_base base row align_center uname pro base dummyid widget_label basec value IDL batch file of procedure basemeshload widget_text basec value initncdf uvalue name: meshload uname meshload xsize 45 editable 0 dummyid widget_button basec value Browse uvalue name: browse meshload arguments informations based widget_base base row align_center uname arg base sensitive 0 dummyid widget_label based value procedure arguments agrbase widget_text based value uvalue name: argtxt uname argtxt xsize 45 EDITABLE keyword informations basee widget_base base row align_center uname kwd base dummyid widget_label basee uname kwdlab value keywords of initncdf: dummyid widget_text basee value uvalue name: kwdtxt uname kwdtxt xsize 45 EDITABLE Lets Go button basego widget_button base value Lets Go uvalue name: Lets Go IF n_elements datafilename NE 0 THEN BEGIN widget_control database set_value datafilename selectfile_event ID:database TOP:base HANDLER:base ENDIF IF n_elements idlfile NE 0 THEN BEGIN widget_control basemeshload set_value idlfile selectfile_event ID:basemeshload TOP:base HANDLER:base widget_control basemeshload get_value idlfile2 IF idlfile2 0 NE THEN widget_control gdldid set_value 1 ENDIF IF n_elements argspro NE 0 THEN widget_control argbase set_value argspro IF n_elements datafilename EQ 0 THEN BEGIN widget_control base realize xmanager selectfile base event_handler selectfile_event no_block 0 ENDIF ELSE selectfile_event ID:basego TOP:base HANDLER:base get back the information from selectfile_event res messenger ptr_free messenger if size res type NE 8 then return 1 loadgrid res meshload _extra ex ccreadparameters funclec_name: read_ncdf jpidta:jpidta jpjdta:jpjdta jpkdta:jpkdta ixmindta:ixmindta ixmaxdta:ixmaxdta iymindta:iymindta iymaxdta:iymaxdta izmindta:izmindta izmaxdta:izmaxdta res3 scanfile res datafilename iodir iodir _extra ex if size res3 type NE 8 then return 1 return fileparameters:res3 readparameters:ccreadparameters meshparameters:ccmeshparameters end"); 354 a[352] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/singleclickaction.html", "singleclickaction.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: singleclickaction pro 150 2006 08 09 10:12:54Z navarro todo seb PRO singleclickaction event compile_opt idl2 strictarrsubs cm_4mesh cm_4data return widget_control event id get_uvalue uval widget_control event top get_uvalue top_uvalue actionid widget_info event top find_by_uname action type widget_info actionid combobox_gettext IF type NE plt THEN return We activate the right window widget_control event id get_value win wset win choice of the type of action case uval press of 1:BEGIN coor convert_coord uval x 0 uval y 0 device to_data x coor 0 y coor 1 help x y oldgrid vargrid CASE strupcase vargrid OF T :vargrid F W :vargrid F U :vargrid V V :vargrid U F :vargrid T ENDCASE grille 1 glam gphi 1 nx ny nz firstx firsty firstz lastx lasty lastz vargrid oldgrid define the corner of the cells in the clockwise direction IF keyword_set key_periodic AND nx EQ jpi THEN BEGIN x1 glam 0:ny 2 y1 gphi 0:ny 2 x2 glam 1:ny 1 y2 gphi 1:ny 1 x3 shift glam 1:ny 1 1 0 y3 shift gphi 1:ny 1 1 0 x4 shift glam 0:ny 2 1 0 y4 shift gphi 0:ny 2 1 0 ENDIF ELSE BEGIN x1 glam 0:nx 2 0:ny 2 y1 gphi 0:nx 2 0:ny 2 x2 glam 0:nx 2 1:ny 1 y2 gphi 0:nx 2 1:ny 1 x3 glam 1:nx 1 1:ny 1 y3 gphi 1:nx 1 1:ny 1 x4 glam 1:nx 1 0:ny 2 y4 gphi 1:nx 1 0:ny 2 ENDELSE glam 1 free memory gphi 1 free memory What is the longitude WHILE x GT x range 1 DO x x 360 WHILE x LT x range 0 DO x x 360 IF x GT x range 1 THEN RETURN IF y GT y range 1 THEN RETURN IF y LT y range 0 THEN RETURN cell inquad x y x1 y1 x2 y2 x3 y3 x4 y4 onsphere key_onearth x1 1 free memory y1 1 free memory x2 1 free memory y2 1 free memory x3 1 free memory y3 1 free memory x4 1 free memory y4 1 free memory IF cell 0 EQ 1 OR n_elements cell GT 1 THEN RETURN yy cell 0 nx 1 key_periodic nx EQ jpi xx cell 0 MOD nx 1 key_periodic nx EQ jpi CASE strupcase vargrid OF T :BEGIN xx xx firstx 1 yy yy firsty 1 END W :BEGIN xx xx firstx 1 yy yy firsty 1 END U :BEGIN xx xx firstx yy yy firsty 1 END V :BEGIN xx xx firstx 1 yy yy firsty END F :BEGIN xx xx firstx yy yy firsty END ENDCASE bad where xx GE jpi IF bad 0 NE 1 THEN BEGIN xx bad xx bad jpi yy bad yy bad 1 ENDIF bad where yy GE jpj IF bad 0 NE 1 THEN stop print glamt xx yy gphit xx yy cmd buildcmd event top boxzoom boxzoom END ELSE: endcase RETURN end"); 355 a[353] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html", "tracecadre.pro", "", " file_comments categories param SMALL keyword OUT keyword ERASE keyword FILL returns uses restrictions examples history version Id: tracecadre pro 150 2006 08 09 10:12:54Z navarro todo seb PRO tracecadre small out out erase erase fill fill determination of the column and of the line corresponding in input to small compile_opt idl2 strictarrsubs numdessin small 2 1 numligne numdessin small 0 numcolonne numdessin numligne small 0 determination of poscadre largeurcolonne 1 small 0 largeurligne 1 small 1 cadre numcolonne largeurcolonne 1 numligne 1 largeurligne numcolonne 1 largeurcolonne 1 numligne largeurligne decale 0 001 cadre cadre decale decale decale decale reinitplt p position 0 0 1 1 IF keyword_set fill then begin polyfill cadre 0 cadre 2 cadre 2 cadre 0 cadre 0 cadre 1 cadre 1 cadre 3 cadre 3 cadre 1 color 255 normal ENDIF ELSE BEGIN plot cadre 0 cadre 2 cadre 2 cadre 0 cadre 0 cadre 1 cadre 1 cadre 3 cadre 3 cadre 1 xrange 0 1 yrange 0 1 linestyle 2 keyword_set out noerase normal thick 2 color 0 255 keyword_set erase ENDELSE return end"); 356 a[354] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/updatewidget.html", "updatewidget.pro", "", " file_comments categories param BASE in required The id of the widget where apply the drawing keyword NOBOXZOOM keyword NODATES keyword NOTYPE returns uses restrictions examples history version Id: updatewidget pro 150 2006 08 09 10:12:54Z navarro todo seb PRO updatewidget base NOBOXZOOM noboxzoom NODATES nodates NOTYPE notype compile_opt idl2 strictarrsubs widget_control base get_uvalue top_uvalue smallin extractatt top_uvalue smallin numdessinin smallin 2 1 widget_control base update 0 date1 et date2 if keyword_set nodates then begin date1 0 date2 0 ENDIF ELSE BEGIN dates extractatt top_uvalue dates numdessinin date1 dates 0 date2 dates 1 ENDELSE domain boxzoom extractatt top_uvalue domaines numdessinin if total boxzoom EQ 0 then boxzoom 1 if keyword_set noboxzoom then boxzoom 0 varinfo: filename namevar varinfo extractatt top_uvalue varinfo numdessinin filename varinfo 0 nomvar varinfo 1 if filename NE OR nomvar NE THEN BEGIN changefile base filename fieldname nomvar BOXZOOM boxzoom DATE1 date1 DATE2 date2 ENDIF ELSE BEGIN if date1 NE 0 then begin date1id widget_info base find_by_uname calendar1 widget_control date1id set_value date1 endif if date2 NE 0 then begin date2id widget_info base find_by_uname calendar2 widget_control date2id set_value date2 endif if keyword_set boxzoom then BEGIN domainid widget_info base find_by_uname domain widget_control domainid set_value boxzoom endif ENDELSE exextra if n_elements extractatt top_uvalue exextra numdessinin NE 0 then begin exextra extractatt top_uvalue exextra numdessinin specifieid widget_info base find_by_uname specifie widget_control specifieid set_value exextra endif text command txtcmd extractatt top_uvalue txtcmd numdessinin if txtcmd NE then begin txtcmdid widget_info base find_by_uname txtcmd widget_control txtcmdid set_value txtcmd endif graphtype if NOT keyword_set notype then BEGIN graphtype extractatt top_uvalue types numdessinin if graphtype NE then begin actionid widget_info base find_by_uname action widget_control actionid get_value action_value widget_control actionid set_combobox_select where action_value EQ graphtype 0 endif endif widget_control base update 1 return end"); 357 a[355] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim.html", "xcreateanim.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: xcreateanim pro 150 2006 08 09 10:12:54Z navarro todo seb pro xcreateanim_event event compile_opt idl2 strictarrsubs common We recuperate arguments contained in the widget if tag_names event structure_name NE WIDGET_BUTTON then return widget_control event id get_uvalue uval if n_elements uval EQ 0 then return if uval EQ cancel then begin widget_control event top destroy return ENDIF We will write the animation widget_control event top get_uvalue local_uvalue widget_control local_uvalue parent get_uvalue top_uvalue calendar extractatt top_uvalue fileparameters local_uvalue indexfile time_counter key_caltype extractatt top_uvalue fileparameters local_uvalue indexfile caltype fakecal extractatt top_uvalue fileparameters local_uvalue indexfile fakecal widget_control widget_info event top find_by_uname Filename get_value nomfic nomfic nomfic 0 widget_control widget_info event top find_by_uname directorie get_value animdir animdir animdir 0 widget_control widget_info event top find_by_uname debut get_value vdate1 index1 where calendar eq date2jul vdate1 index1 index1 0 if index1 EQ 1 then return widget_control widget_info event handler find_by_uname fin get_value vdate2 index2 where calendar eq date2jul vdate2 index2 index2 0 if index2 EQ 1 OR index2 LE index1 then return We delete the widget before create the file ps widget_control event top destroy creation of the routine which will serve us to do the drawing We recuperate the list of instructions globalcommand extractatt top_uvalue globalcommand We complete by first and last lines of the program createpro globalcommand filename myuniquetmpdir xxx2ps pro KWDLIST NOERASE noerase POSTSCRIPT postscript DATE1IN date1in DATE2IN date2in creation of the file we recuperate the number of octets on which we code the palette device get_visual_depth depth Picture s size in number of pixels : xsize d x_size ysize d y_size We check that the file s name end by gif if strpos nomfic gif EQ 1 then nomfic nomfic gif current_window d window window free pixmap xsize xsize ysize ysize indication of the number of the picture we are creating base widget_base sliderid widget_slider base minimum 1 maximum index2 index1 1 value 1 title image number: widget_control base realize Beginning of the gif file Writting of an empty picture IF keyword_set fakecal THEN date index1 ELSE date jul2date calendar index1 xxx2ps noerase date1in date date2in date image tvrd true depth GT 8 If an 8 bit image was read reduce the number of colors if depth le 8 then begin tvlct red green blue get reduce_colors image index red red index green green index blue blue index endif if depth gt 8 then Convert 24 bit image to 8 bit image color_quan image 1 red green blue colors 256 get_translation translation map_all write_gif animdir nomfic image red green blue multiple wdelete d window Creation and writting loop in the file IF index2 GT index1 THEN BEGIN FOR ind index1 1 index2 do BEGIN widget_control sliderid set_value ind index1 1 We move the slider window free pixmap xsize xsize ysize ysize IF keyword_set fakecal THEN date ind ELSE date jul2date calendar ind xxx2ps noerase date1 date date2 date image tvrd true depth GT 8 if depth gt 8 then image color_quan image 1 aaa bbb ccc colors 256 translation translation write_gif animdir nomfic image red green blue multiple wdelete d window ENDFOR ENDIF We put a last white picture window free pixmap xsize xsize ysize ysize reinitplt plot 0 0 nodata image tvrd true depth GT 8 if depth gt 8 then image color_quan image 1 aaa bbb ccc colors 256 translation translation write_gif animdir nomfic image red green blue multiple wdelete d window File s closing write_gif animdir nomfic close widget_control base destroy Rerock in normal mode thisOS strupcase strmid version os_family 0 3 wset current_window If we are under x we try to lauch xanim if thisOS NE MAC AND thisOS NE WIN then begin spawn which xanim result if strpos result 0 xanim EQ strlen result 0 5 then spawn xanim animdir nomfic endif return end file_comments categories param PARENT returns uses restrictions examples history version Id: xcreateanim pro 150 2006 08 09 10:12:54Z navarro todo seb PRO xcreateanim parent compile_opt idl2 strictarrsubs common widget_control parent get_uvalue top_uvalue We will make sure that all procedure are not in pltt procedures extractatt top_uvalue nameprocedures if total procedures EQ pltt NE 0 then begin nothing report Certains des plots ont un axe se rapportant au temps C Animation impossible error return ENDIF We will make sure that all figure have the same calendar filelist extractatt top_uvalue filelist filenames extractatt top_uvalue varinfo 0 filenames reform filenames filenames filenames uniq filenames sort filenames if strtrim filenames 0 1 EQ then filenames filenames 1:n_elements filenames 1 indexfile where filelist EQ filenames 0 0 calendar extractatt top_uvalue fileparameters indexfile time_counter key_caltype extractatt top_uvalue fileparameters indexfile caltype fakecal extractatt top_uvalue fileparameters indexfile fakecal if n_elements filenames GT 1 then begin for i 1 n_elements filenames 1 do begin indexfilebis where filelist EQ filenames i 0 calendarbis extractatt top_uvalue fileparameters indexfilebis time_counter if n_elements calendarbis NE n_elements calendar then begin nothing report Les diffrents plots n utilisent pas le meme calendrier C Animation impossible error return ENDIF if total calendar NE calendarbis NE 0 then begin nothing report Les diffrents plots n utilisent pas le meme calendrier C Animation impossible error return endif endfor endif It is possible to do an animation base widget_base column title animation creation uvalue parent:parent indexfile:indexfile rien widget_label base value animation name rien widget_text base value anim_idl gif uname Filename editable rien widget_label base value animation directory if n_elements animdir EQ 0 then cd current animdir rien widget_text base value animdir uname directorie editable rien widget_label base value starting date rien cw_calendar base calendar calendar 0 FAKECAL fakecal uname debut uvalue name: calendar frame rien widget_label base value ending date rien cw_calendar base calendar calendar n_elements calendar 1 FAKECAL fakecal uname fin uvalue name: calendar frame rien widget_button base value OK uvalue ok rien widget_button base value Cancel uvalue cancel widget_control base realize xmanager xcreateanim base no_block return end"); 358 a[356] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xxxmenubar_event.html", "xxxmenubar_event.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: xxxmenubar_event pro 150 2006 08 09 10:12:54Z navarro todo seb PRO xxxmenubar_event event compile_opt idl2 strictarrsubs common case event value of Open :begin oldmeshparams ccmeshparameters newfile selectfile if size newfile type NE 8 then return widget_control event top hourglass widget_control event top update 0 widget_control event top get_uvalue top_uvalue We take care of filelist filelist extractatt top_uvalue filelist filelist filelist newfile fileparameters filename currentfile n_elements filelist 1 We update the widget filelistid widget_info event top find_by_uname filelist widget_control filelistid combobox_additem file_basename newfile fileparameters filename widget_control filelistid set_combobox_select currentfile We update filelist and currentfile s elements of the top_value top_uvalue 1 findline top_uvalue filelist filelist oldfile top_uvalue 1 findline top_uvalue currentfile top_uvalue 1 findline top_uvalue currentfile currentfile We take care of the name of the variable vlstid widget_info event top find_by_uname varlist What is the selected field Do we reselect it fieldname widget_info vlstid combobox_gettext index where newfile fileparameters listvar EQ fieldname widget_control vlstid set_value newfile fileparameters listvar widget_control vlstid set_combobox_select 0 index 0 We take care of the calendar key_caltype newfile fileparameters caltype date1id widget_info event top find_by_uname calendar1 widget_control date1id get_value date1 widget_control date1id destroy jdate1 jul2date date1 if where newfile fileparameters time_counter EQ jdate1 0 EQ 1 then jdate1 newfile fileparameters time_counter 0 date2id widget_info event top find_by_uname calendar2 widget_control date2id get_value date2 widget_control date2id destroy jdate2 jul2date date2 if where newfile fileparameters time_counter EQ jdate2 0 EQ 1 then jdate2 jdate1 basecal widget_info event top find_by_uname basecal fakecal newfile fileparameters fakecal rien cw_calendar basecal newfile fileparameters time_counter jdate1 uname calendar1 FAKECAL fakecal uvalue name: calendar1 frame rien cw_calendar basecal newfile fileparameters time_counter jdate2 uname calendar2 FAKECAL fakecal uvalue name: calendar2 frame We update fileparameters readparameters et meshparameters elements of the top_value newfileparameters ptrarr currentfile 1 allocate_heap FOR i 0 currentfile 1 DO newfileparameters i extractatt top_uvalue fileparameters i newfileparameters currentfile newfile fileparameters ptr_free extractatt top_uvalue fileparameters top_uvalue 1 findline top_uvalue fileparameters newfileparameters newreadparameters ptrarr currentfile 1 allocate_heap FOR i 0 currentfile 1 DO newreadparameters i extractatt top_uvalue readparameters i newreadparameters currentfile newfile readparameters ptr_free extractatt top_uvalue readparameters top_uvalue 1 findline top_uvalue readparameters newreadparameters newmeshparameters ptrarr currentfile 1 allocate_heap FOR i 0 currentfile 1 DO newmeshparameters i extractatt top_uvalue meshparameters i newmeshparameters currentfile newfile meshparameters ptr_free extractatt top_uvalue meshparameters top_uvalue 1 findline top_uvalue meshparameters newmeshparameters We update the widget if cmpgrid oldmeshparams then BEGIN domainid widget_info event top find_by_uname domain widget_control domainid set_value 1 endif widget_control event top update 1 end New xxx :BEGIN widget_control event top get_uvalue top_uvalue extra extractatt top_uvalue extra xxx CALLERWIDID event top _extra extra end Quit :begin widget_control event top get_uvalue top_uvalue ptr_free extractatt top_uvalue exextra ptr_free extractatt top_uvalue fileparameters ptr_free extractatt top_uvalue readparameters ptr_free extractatt top_uvalue meshparameters ptr_free top_uvalue widget_control event top destroy We shut the widget end PostScript :BEGIN IF lmgr demo EQ 1 THEN BEGIN dummy report impossible to save as postscript in demo mode return ENDIF widget_control event top get_uvalue top_uvalue We recuperate the list of instructions globalcommand extractatt top_uvalue globalcommand for i 0 n_elements globalcommand 1 do print globalcommand i We complete by first and last lines of the program createpro globalcommand filename myuniquetmpdir xxx2ps pro KWDLIST NOERASE noerase POSTSCRIPT postscript PORTRAIT portrait LANDSCAPE landscape DATE1IN date1in DATE2IN date2in POSTSCRIPT END Animated gif :begin IF float strmid version release 0 3 GE 6 2 THEN xcreateanim event top end Gif :BEGIN IF lmgr demo EQ 1 THEN BEGIN dummy report impossible to save as an image in demo mode return ENDIF widget_control event top get_uvalue top_uvalue smallin extractatt top_uvalue smallin numdessinin smallin 2 1 smallout extractatt top_uvalue smallout numdessinout smallout 2 1 tracecadre smallin erase tracecadre smallout erase filename xquestion dans quelle fichier gif voulez vous sauver C l ecran de xxx xxx_image gif if rstrpos filename gif NE strlen filename 4 then filename filename gif filename isafile file filename io imagedir new saveimage filename quiet end IDL procedure :BEGIN IF lmgr demo EQ 1 THEN BEGIN dummy report impossible to save as a idl program file in demo mode return ENDIF We recuperate the name of the file filename xquestion dans quelle procedure IDL voulez vous sauver C la realisation de ce graph xxx_figure pro We complete it by a pro if rstrpos filename pro NE strlen filename 4 then filename filename pro filename isafile file filename io homedir new widget_control event top get_uvalue top_uvalue portrait or landscape options extractatt top_uvalue options optionsflag extractatt top_uvalue optionsflag portrait optionsflag where options EQ Portrait Landscape 0 0 We read commands to do a plot globalcommand extractatt top_uvalue globalcommand We complete by first and last lines of the program thisOS strupcase strmid version os_family 0 3 CASE thisOS of MAC :sep : WIN :sep ELSE:sep ENDCASE poslastsep rstrpos filename sep proname strmid filename poslastsep 1 strlen filename poslastsep 1 4 globalcommand pro proname NOERASE noerase POSTSCRIPT postscript PORTRAIT portrait LANDSCAPE landscape DATE1IN date1in DATE2IN date2in _extra ex globalcommand return end We write it in a program putfile filename globalcommand END RESTORE kwd of xxx :BEGIN IF lmgr demo EQ 1 THEN BEGIN dummy report impossible to save the widget in demo mode return ENDIF We recuperate the name of the file filename xquestion dans quel fichier bianire voulez vous sauver le widget xxx_widget dat We complete it by a dat if rstrpos filename dat NE strlen filename 4 then filename filename dat filename isafile file filename io homedir new widget_control event top get_uvalue uvalue widget_control extractatt uvalue graphid get_value win wshow win wset win image tvrd true save uvalue image filename filename END Print to prompt :BEGIN commande getfile myuniquetmpdir xxx_oneplot pro for i 0 n_elements commande 1 do print commande i end Portrait Landscape :begin widget_control event top get_uvalue top_uvalue options extractatt top_uvalue options index where options EQ Portrait Landscape index index 0 optionsflag extractatt top_uvalue optionsflag key_portrait 1 optionsflag index 0 top_uvalue 1 findline top_uvalue optionsflag index key_portrait Separated windows or windows stuck to the widget if widget_info event top find_by_uname graph EQ 0 then BEGIN We delete the window graphid extractatt top_uvalue graphid widget_control widget_info graphid parent destroy We recreate it basegraph widget_base title xxx window group_leader event top uvalue event top uname basegraph windsize givewindowsize graphid widget_draw basegraph uname graph uvalue name: graph press:0 click:0 x: 0 0 y: 0 0 button_events retain 2 xsize windsize 0 ysize windsize 1 widget_control basegraph realize xmanager xxx basegraph no_block We redraw what their were into it We recuperate the list of instructions globalcommand extractatt top_uvalue globalcommand We complete by first and last lines of the program createpro globalcommand filename myuniquetmpdir xxx2ps pro KWDLIST NOERASE noerase POSTSCRIPT postscript PORTRAIT portrait LANDSCAPE landscape KWDUSED noerase PORTRAIT portrait We reattribute the graphic element of the top_value top_uvalue 1 findline top_uvalue graphid graphid ENDIF ELSE BEGIN extra extractatt top_uvalue extra xxx CALLERWIDID event top redraw _extra extra widget_control event top destroy We shut the widget ENDELSE end Overlay :begin widget_control event top get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag index where options EQ Overlay We change the flag on Longitude x index flag 1 flags index numdessinin flag flag 0 We reattribute it top_uvalue 1 findline top_uvalue optionsflag index numdessinin flag end Vecteur :BEGIN widget_control event top get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag index where options EQ Vecteur We change the flag on Longitude x index flag 1 flags index numdessinin flag flag 0 We reattribute it top_uvalue 1 findline top_uvalue optionsflag index numdessinin flag end Longitude x index :BEGIN widget_control event top get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag index where options EQ Longitude x index We change the flag on Longitude x index flag 1 flags index numdessinin flag flag 0 We reattribute it top_uvalue 1 findline top_uvalue optionsflag index numdessinin flag Now we will change sliders defining the boxzoom domainid widget_info event top find_by_uname domain boxzoom extractatt top_uvalue domaines numdessinin We want to find the type of grid which is used currentfile extractatt top_uvalue currentfile listgrid extractatt top_uvalue fileparameters currentfile listgrid listvar extractatt top_uvalue fileparameters currentfile listvar vlstid widget_info event top find_by_uname varlist namevar widget_info vlstid combobox_gettext indexvar where listvar EQ namevar vargrid strupcase listgrid indexvar if flag EQ 0 then BEGIN longitudes We do a domdef to find the lon1 lon2 corresponding to the boxzoom defined on the widget domdef boxzoom gridtype vargrid xindex yindex flags where options EQ Latitude y index numdessinin 0 widget_control domainid set_value lon1 lon2 boxzoom 2:3 ENDIF ELSE BEGIN xindex now we want to find firstx lastx corresponding to the boxzoom defined on the widget domdef boxzoom gridtype vargrid yindex flags where options EQ Latitude y index numdessinin 0 grille 1 1 1 1 nx ny nz firstx firsty firstz lastx lasty lastz widget_control domainid set_value firstx lastx boxzoom 2:3 ENDELSE We update the top_uvalue widget_control domainid get_value boxzoom top_uvalue 1 findline top_uvalue domaines numdessinin boxzoom end Latitude y index :begin widget_control event top get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag index where options EQ Latitude y index We change the flag on Latitude y index flag 1 flags index numdessinin flag flag 0 We reattribute it top_uvalue 1 findline top_uvalue optionsflag index numdessinin flag Now we will change sliders defining the boxzoom domainid widget_info event top find_by_uname domain boxzoom extractatt top_uvalue domaines numdessinin We want to find the type of grid which is used currentfile extractatt top_uvalue currentfile listgrid extractatt top_uvalue fileparameters currentfile listgrid listvar extractatt top_uvalue fileparameters currentfile listvar vlstid widget_info event top find_by_uname varlist namevar widget_info vlstid combobox_gettext indexvar where listvar EQ namevar vargrid strupcase listgrid indexvar if flag EQ 0 then BEGIN latitudes We do a domdef to find the lat1 lat2 corresponding to the boxzoom defined on the widget domdef boxzoom gridtype vargrid yindex xindex flags where options EQ Longitude x index numdessinin 0 widget_control domainid set_value boxzoom 0:1 lat1 lat2 ENDIF ELSE BEGIN yindex now we want to find firsty lasty corresponding to the boxzoom defined on the widget domdef boxzoom gridtype vargrid xindex flags where options EQ Longitude x index numdessinin 0 grille 1 1 1 1 nx ny nz firstx firsty firstz lastx lasty lastz widget_control domainid set_value boxzoom 0:1 firsty lasty ENDELSE We update the top_uvalue widget_control domainid get_value boxzoom top_uvalue 1 findline top_uvalue domaines numdessinin boxzoom END endcase return end"); 359 a[357] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html", "cw_bgroup.pro", "", "pro CW_BGROUP_SETV id value compile_opt hidden idl2 strictarrsubs ON_ERROR 2 return to caller stash WIDGET_INFO id CHILD WIDGET_CONTROL stash GET_UVALUE state NO_COPY case state type of 0: message unable to set plain button group value 1: begin WIDGET_CONTROL SET_BUTTON 0 state ids state excl_pos state excl_pos value WIDGET_CONTROL SET_BUTTON state ids value end 2: begin n n_elements value 1 for i 0 n do begin state nonexcl_curpos i value i WIDGET_CONTROL state ids i SET_BUTTON value i endfor end endcase WIDGET_CONTROL stash SET_UVALUE state NO_COPY end function CW_BGROUP_GETV id value compile_opt hidden idl2 strictarrsubs ON_ERROR 2 return to caller stash WIDGET_INFO id CHILD WIDGET_CONTROL stash GET_UVALUE state NO_COPY case state type of 0: message unable to get plain button group value 1: ret state excl_pos 1: ret state ret_arr state excl_pos 2: ret state nonexcl_curpos 2: BEGIN index where state nonexcl_curpos NE 0 if index 0 EQ 1 then begin if size state ret_arr type EQ 7 then ret ELSE ret 1 ENDIF ELSE ret state ret_arr index END endcase WIDGET_CONTROL stash SET_UVALUE state NO_COPY return ret end function CW_BGROUP_EVENT ev compile_opt hidden idl2 strictarrsubs WIDGET_CONTROL ev handler GET_UVALUE stash WIDGET_CONTROL stash GET_UVALUE state NO_COPY WIDGET_CONTROL ev id get_uvalue uvalue ret 1 Assume we return a struct case state type of 0: 1: if ev select eq 1 then begin state excl_pos uvalue ENDIF else begin if state no_release ne 0 then ret 0 ENDELSE 2: begin Keep track of the current state state nonexcl_curpos uvalue ev select if state no_release ne 0 and ev select eq 0 then ret 0 end endcase if ret then begin Return a struct ret ID:state base TOP:ev top HANDLER:0L SELECT:ev select VALUE:state ret_arr uvalue efun state efun WIDGET_CONTROL stash SET_UVALUE state NO_COPY if efun ne then return CALL_FUNCTION efun ret else return ret endif else begin Trash the event WIDGET_CONTROL stash SET_UVALUE state NO_COPY return 0 endelse end file_comments CW_BGROUP is a compound widget that simplifies creating a base of buttons It handles the details of creating the proper base standard exclusive or non exclusive and filling in the desired buttons Events for the individual buttons are handled transparently and a CW_BGROUP event returned This event can return any one of the following: The Index of the button within the base The widget ID of the button The name of the button An arbitrary value taken from an array of User values categories Compound widgets param PARENT in required The ID of the parent widget param NAMES A string array containing one string per button giving the name of each button keyword BUTTON_UVALUE An array of user values to be associated with each button and returned in the event structure keyword COLUMN Buttons will be arranged in the number of columns specified by this keyword keyword EVENT_FUNCT The name of an optional user supplied event function for buttons This function is called with the return value structure whenever a button is pressed and follows the conventions for user written event functions keyword EXCLUSIVE Buttons will be placed in an exclusive base with only one button allowed to be selected at a time keyword FONT The name of the font to be used for the button titles If this keyword is not specified the default font is used keyword FRAME Specifies the width of the frame to be drawn around the base keyword IDS A named variable into which the button IDs will be stored as a longword vector keyword LABEL_LEFT Creates a text label to the left of the buttons keyword LABEL_TOP Creates a text label above the buttons keyword MAP If set the base will be mapped when the widget is realized the default keyword NONEXCLUSIVE Buttons will be placed in an non exclusive base The buttons will be independent keyword NO_RELEASE If set button release events will not be returned keyword RETURN_ID If set the VALUE field of returned events will be the widget ID of the button keyword RETURN_INDEX If set the VALUE field of returned events will be the zero based index of the button within the base THIS IS THE DEFAULT keyword RETURN_NAME If set the VALUE field of returned events will be the name of the button within the base keyword ROW Buttons will be arranged in the number of rows specified by this keyword keyword SCROLL If set the base will include scroll bars to allow viewing a large base through a smaller viewport keyword SET_VALUE The initial value of the buttons This is equivalent to the later statement: WIDGET_CONTROL widget set_value value keyword SPACE The space in pixels to be left around the edges of a row or column major base This keyword is ignored if EXCLUSIVE or NONEXCLUSIVE are specified keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword XOFFSET The X offset of the widget relative to its parent keyword XPAD The horizontal space in pixels between children of a row or column major base Ignored if EXCLUSIVE or NONEXCLUSIVE are specified keyword XSIZE The width of the base keyword X_SCROLL_SIZE The width of the viewport if SCROLL is specified keyword YOFFSET The Y offset of the widget relative to its parent keyword YPAD The vertical space in pixels between children of a row or column major base Ignored if EXCLUSIVE or NONEXCLUSIVE are specified keyword YSIZE The height of the base keyword Y_SCROLL_SIZE The height of the viewport if SCROLL is specified returns The ID of the created widget is returned restrictions This widget generates event structures with the following definition: event ID:0L TOP:0L HANDLER:0L SELECT:0 VALUE:0 The SELECT field is passed through from the button event VALUE is either the INDEX ID NAME or BUTTON_UVALUE of the button depending on how the widget was created restrictions Only buttons with textual names are handled by this widget Bitmaps are not understood history 15 June 1992 AB 7 April 1993 AB Removed state caching 6 Oct 1994 KDB Font keyword is not applied to the label 10 FEB 1995 DJC fixed bad bug in event procedure getting id of stash widget 11 April 1995 AB Removed Motif special cases Copyright c 1992 2005 Research Systems Inc All rights reserved Unauthorized reproduction prohibited version Id: cw_bgroup pro 150 2006 08 09 10:12:54Z navarro function CW_BGROUP parent names BUTTON_UVALUE button_uvalue COLUMN column EVENT_FUNCT efun EXCLUSIVE excl FONT font FRAME frame IDS ids LABEL_TOP label_top LABEL_LEFT label_left MAP map NONEXCLUSIVE nonexcl NO_RELEASE no_release RETURN_ID return_id RETURN_INDEX return_index RETURN_NAME return_name ROW row SCROLL scroll SET_VALUE sval SPACE space TAB_MODE tab_mode UVALUE uvalue XOFFSET xoffset XPAD xpad XSIZE xsize X_SCROLL_SIZE x_scroll_size YOFFSET yoffset YPAD ypad YSIZE ysize Y_SCROLL_SIZE y_scroll_size UNAME uname IF N_PARAMS ne 2 THEN MESSAGE Incorrect number of arguments ON_ERROR 2 return to caller Set default values for the keywords version WIDGET_INFO version if version toolkit eq OLIT then def_space_pad 4 else def_space_pad 3 IF N_ELEMENTS column eq 0 then column 0 IF N_ELEMENTS excl eq 0 then excl 0 IF N_ELEMENTS frame eq 0 then frame 0 IF N_ELEMENTS map eq 0 then map 1 IF N_ELEMENTS nonexcl eq 0 then nonexcl 0 IF N_ELEMENTS no_release eq 0 then no_release 0 IF N_ELEMENTS row eq 0 then row 0 IF N_ELEMENTS scroll eq 0 then scroll 0 IF N_ELEMENTS space eq 0 then space def_space_pad IF N_ELEMENTS uname eq 0 then uname CW_BGROUP_UNAME IF N_ELEMENTS uvalue eq 0 then uvalue 0 IF N_ELEMENTS xoffset eq 0 then xoffset 0 IF N_ELEMENTS xpad eq 0 then xpad def_space_pad IF N_ELEMENTS xsize eq 0 then xsize 0 IF N_ELEMENTS x_scroll_size eq 0 then x_scroll_size 0 IF N_ELEMENTS yoffset eq 0 then yoffset 0 IF N_ELEMENTS ypad eq 0 then ypad def_space_pad IF N_ELEMENTS ysize eq 0 then ysize 0 IF N_ELEMENTS y_scroll_size eq 0 then y_scroll_size 0 top_base 0L if n_elements label_top ne 0 then begin next_base WIDGET_BASE parent XOFFSET xoffset YOFFSET yoffset COLUMN if keyword_set font then junk WIDGET_LABEL next_base value label_top font font else junk WIDGET_LABEL next_base value label_top top_base next_base endif else next_base parent if n_elements label_left ne 0 then begin next_base WIDGET_BASE next_base XOFFSET xoffset YOFFSET yoffset ROW if keyword_set font then junk WIDGET_LABEL next_base value label_left font font else junk WIDGET_LABEL next_base value label_left if top_base eq 0L then top_base next_base endif We need some kind of outer base to hold the users UVALUE if top_base eq 0L then begin top_base WIDGET_BASE parent XOFFSET xoffset YOFFSET yoffset next_base top_base endif If top_base EQ next_base THEN next_base WIDGET_BASE top_base Xpad 1 Ypad 1 Space 1 Set top level base attributes WIDGET_CONTROL top_base MAP map FUNC_GET_VALUE CW_BGROUP_GETV PRO_SET_VALUE CW_BGROUP_SETV SET_UVALUE uvalue SET_UNAME uname Tabbing if n_elements tab_mode ne 0 then begin WIDGET_CONTROL top_base TAB_MODE tab_mode WIDGET_CONTROL next_base TAB_MODE tab_mode end The actual button holding base base WIDGET_BASE next_base COLUMN column EXCLUSIVE excl FRAME frame NONEXCLUSIVE nonexcl ROW row SCROLL scroll SPACE space XPAD xpad XSIZE xsize X_SCROLL_SIZE x_scroll_size YPAD ypad YSIZE ysize Y_SCROLL_SIZE y_scroll_size EVENT_FUNC CW_BGROUP_EVENT UVALUE WIDGET_INFO top_base child n n_elements names ids lonarr n for i 0 n 1 do begin if n_elements font eq 0 then begin ids i WIDGET_BUTTON base value names i UVALUE i UNAME uname _BUTTON STRTRIM i 2 endif else begin ids i WIDGET_BUTTON base value names i FONT font UVALUE i UNAME uname _BUTTON STRTRIM i 2 endelse endfor Keep the state info in the real inner base UVALUE Pick an event value type: 0 Return ID 1 Return INDEX 2 Return NAME ret_type 1 if KEYWORD_SET RETURN_ID then ret_type 0 if KEYWORD_SET RETURN_NAME then ret_type 2 if KEYWORD_SET BUTTON_UVALUE then ret_type 3 case ret_type of 0: ret_arr ids 1: ret_arr indgen n 2: ret_arr names 3: ret_arr button_uvalue endcase type 0 if excl ne 0 then type 1 if nonexcl ne 0 then type 2 if n_elements efun le 0 then efun state type:type 0 Standard 1 Exclusive 2 Non exclusive base: top_base cw_bgroup base ret_arr:ret_arr Vector of event values efun : efun Name of event fcn nonexcl_curpos:intarr n If non exclus tracks state excl_pos:0 If exclusive current button ids:ids Ids of buttons no_release:no_release WIDGET_CONTROL WIDGET_INFO top_base CHILD SET_UVALUE state NO_COPY if n_elements sval ne 0 then CW_BGROUP_SETV top_base sval return top_base END"); 360 a[358] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html", "cw_calendar.pro", "", " IDL testwid julday 1 1 1980 lindgen 100 5 PRO testwid_event event ComboboxId widget_info event top find_by_uname c est lui widget_control event id get_uvalue uval if n_elements uval EQ 0 then return case uval of done :widget_control event top destroy set :BEGIN widget_control event id get_value value widget_control ComboboxId set_value value END get :BEGIN widget_control ComboboxId get_value value help value struct END ELSE: endcase return end PRO testwid calendar date0 _extra ex base widget_base COLUMN print base base nothing widget_label base value beginning of the test nothing cw_calendar base calendar date0 _extra ex uname c est lui uvalue c est lui print cw_calendar ID nothing nothing widget_label base value end of the test nothing widget_text base value string calendar 0 uvalue set editable nothing widget_button base value get uvalue get nothing widget_button base value done uvalue done widget_control base REALIZE xmanager testwid base return END PRO cw_calendar_set_value id value compile_opt strictarr strictarrsubs cm_4cal get back the calendar and its related informations winfo_id widget_info id find_by_uname infocal widget_control winfo_id get_uvalue infowid key_caltype infowid caltype high freqeuncy calendar IF keyword_set infowid fakecal THEN BEGIN value2 date2jul long value infowid fakecal IF value2 LT n_elements infowid calendar AND value2 GE 0 THEN BEGIN stepid widget_info id find_by_uname step widget_control stepid set_value combobox_select:value2 infowid date jul2date value2 infowid fakecal widget_control winfo_id set_uvalue infowid ENDIF ENDIF ELSE BEGIN value long value 0 make sure the value correspond value jul2date date2jul value define year month day year value 10000l month value MOD 10000L 100L day value MOD 100L check that the date exists in the calendar if where infowid calendar EQ julday month day year 0 EQ 1 then return update the value of infocal infowid date value widget_control winfo_id set_uvalue infowid update the combobox if needed possiblecase day month year for name 2 0 1 do BEGIN call set_cal_combobox with out 2 to specify that the call is coming from cw_calendar_set_value if widget_info id find_by_uname possiblecase name NE 0 then set_cal_combobox handler:id out:2 possiblecase name value ENDFOR ENDELSE return end FUNCTION cw_calendar_get_value id compile_opt strictarr strictarrsubs winfo_id widget_info id find_by_uname infocal widget_control winfo_id get_uvalue infowid return infowid date END FUNCTION get_cal_value id winfoid compile_opt strictarr strictarrsubs winfo_id widget_info id find_by_uname infocal widget_control winfo_id get_uvalue infowid oldate infowid date day wid_id widget_info id find_by_uname day if wid_id NE 0 then BEGIN widget_control wid_id get_value wid_value date long wid_value combobox_gettext ENDIF ELSE date oldate MOD 100L month wid_id widget_info id find_by_uname month if wid_id NE 0 then BEGIN widget_control wid_id get_value wid_value allmonths string format C CMoA 31 indgen 12 month where allmonths EQ wid_value combobox_gettext 0 1 date date 100L long month ENDIF ELSE date date oldate MOD 10000L 100L 100L year wid_id widget_info id find_by_uname year widget_control wid_id get_value wid_value date date 10000L long wid_value combobox_gettext IF arg_present winfoid NE 0 THEN BEGIN winfoid winfo_id infowid date date return infowid ENDIF ELSE return date end redefine the value and index position of the combobox PRO set_cal_combobox event casename date0 compile_opt strictarr strictarrsubs casename: Which widget shall we move: day month or year wid_id widget_info event handler find_by_uname casename we get back the calendar winfo_id widget_info event handler find_by_uname infocal widget_control winfo_id get_uvalue infowid caldat infowid calendar monthcal daycal yearcal and the current date IF n_elements date0 EQ 0 then date0 get_cal_value event handler year0 date0 10000L month0 date0 MOD 10000L 100L day0 date0 MOD 100L index of days months years according to date0 case casename of day :BEGIN list of days corresponding to month0 and year0 index where monthcal EQ month0 AND yearcal EQ year0 current daycal index END month :BEGIN list of months corresponding to year0 index where yearcal EQ year0 current monthcal index keep only the uniq values indexbis uniq current index index indexbis current current indexbis END year :BEGIN keep only the uniq years index uniq yearcal current yearcal index END ENDCASE we update the uvalue of the widget widget_control wid_id set_uvalue name:casename for event out 0 we store the previous position of the combobox to use it as the default position IF event out EQ 0 THEN widget_control wid_id get_value oldselect we redefine the new list if casename EQ month then begin widget_control wid_id set_value string format C CMoA 31 current 1 ENDIF ELSE BEGIN widget_control wid_id set_value strtrim current 1 ENDELSE specify the index position within the new list of values widget_control wid_id get_value combobox CASE event out OF 1: we put to the biggest position 1:selected combobox combobox_number 1 0: same as the previous position is the best choice 0:selected oldselect combobox_index combobox combobox_number 1 1: we put to the smallest position 1:selected 0 2: a new date has been specified 2:BEGIN case casename of day :selected where current EQ day0 0 month :selected where current EQ month0 0 year :selected where current EQ year0 0 ENDCASE END ENDCASE widget_control wid_id set_value combobox_select:selected update the date infowid date get_cal_value event handler widget_control winfo_id set_uvalue infowid return end move cyclicly the calendar to the value 0 if event out 1 or combobox_number 1 if event out 1 PRO move event casename compile_opt strictarr strictarrsubs possiblecase day month year impossiblecase id widget_info event handler find_by_uname casename widget_control id get_value wvalue we try to move but we are already at the beginning end of the combobox wvalue combobox_index EQ wvalue combobox_number 1 and event out EQ 1 wvalue combobox_index EQ 0 and event out EQ 1 move is not called when out eq 0 whichcase where possiblecase EQ casename 0 if wvalue combobox_index EQ wvalue combobox_number 1 event out EQ 1 THEN BEGIN if widget_info event handler find_by_uname possiblecase whichcase 1 EQ 0 then begin it is impossible to move the next combobox widget_control id get_value widvalue we set to widvalue combobox_number 1 when event out EQ 1 and to 0 when event out EQ 1 selected widvalue combobox_number 1 event out EQ 1 widget_control id set_value combobox_select:selected we call move for the next combobox ENDIF ELSE move event possiblecase whichcase 1 it is possible to move from 1 ENDIF ELSE widget_control id set_value combobox_select:wvalue combobox_index event out set_cal_combobox event possiblecase whichcase 1 return end FUNCTION cw_calendar_event event cm_4cal compile_opt strictarr strictarrsubs winfo_id widget_info event handler find_by_uname infocal widget_control winfo_id get_uvalue infowid key_caltype infowid caltype widget_control event id get_uvalue uval high frequency calendar IF uval name EQ step THEN BEGIN infowid date jul2date event index infowid fakecal ENDIF ELSE BEGIN possiblecase day month year impossiblecase whichcase where possiblecase EQ uval name 0 if event out NE 0 then BEGIN we use the button and we want to go out of the combobox: to index 1 event out 1 or to index combobox_number event out 1 we try to move the combobox just right with name: possiblecase whichcase 1 if widget_info event handler find_by_uname possiblecase whichcase 1 EQ 0 then BEGIN this widget do not exist we set cyclicly the current widget to the value 0 if event out 1 or combobox_number 1 if event out 1 widget_control event id get_value widvalue selected widvalue combobox_number 1 event out EQ 1 widget_control event id set_value combobox_select:selected ENDIF ELSE move event possiblecase whichcase 1 ENDIF if we changed month year we need to update the day and month list if uval name NE day then begin event out 0 for name whichcase 1 0 1 do BEGIN if widget_info event handler find_by_uname possiblecase name NE 0 then set_cal_combobox event possiblecase name endfor ENDIF we update the date infowid get_cal_value event handler winfo_id ENDELSE widget_control winfo_id set_uvalue infowid return CW_CALENDAR ID:event handler TOP:event top HANDLER:0L VALUE:infowid date FAKECAL: infowid fakecal end file_comments categories param PARENT in required The widget ID of the parent widget param CALENDAR param JDATE0 keyword CALTYPE keyword FAKECAL keyword UVALUE keyword UNAME keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: cw_calendar pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION cw_calendar parent calendar jdate0 CALTYPE CALTYPE FAKECAL fakecal UVALUE uvalue UNAME uname _extra ex cm_4cal compile_opt strictarr strictarrsubs if keyword_set caltype then key_caltype caltype months days years found in the calendar caldat calendar monthcal daycal yearcal hourcal mincal scdcal starting date if n_elements jdate0 EQ 0 then jdate0 calendar 0 if where calendar EQ jdate0 0 EQ 1 then jdate0 calendar 0 caldat jdate0 month0 day0 year0 test the type of calendar if n_elements calendar GT 1 then BEGIN each day have the same value if n_elements uniq daycal sort daycal EQ 1 then monthly 1 each month and each day have the same value if keyword_set monthly AND n_elements uniq monthcal sort monthcal EQ 1 then yearly 1 endif if NOT keyword_set uvalue then uvalue dummy: if NOT keyword_set uname then uname base0 widget_base parent ROW EVENT_FUNC cw_calendar_event FUNC_GET_VALUE cw_calendar_get_value PRO_SET_VALUE cw_calendar_set_value UVALUE uvalue UNAME uname space 0 _extra ex if n_elements fakecal eq 0 then fakecal 0 base widget_base base0 space 0 uname infocal uvalue calendar:calendar date:jul2date jdate0 fakecal:fakecal caltype: key_caltype IF keyword_set fakecal THEN BEGIN cmbbid cw_combobox_pm base UVALUE name: step UNAME step value strtrim indgen n_elements calendar 1 widget_control cmbbid set_value combobox_select: where calendar EQ jdate0 0 ENDIF ELSE BEGIN vallen widget_info base string_size m day if NOT keyword_set monthly then begin dayindex where monthcal EQ month0 AND yearcal EQ year0 currentday daycal dayindex currentday strtrim currentday 1 cmbbid cw_combobox_pm base UVALUE name: day UNAME day value currentday widget_control cmbbid set_value combobox_select: where long currentday EQ day0 0 endif month if NOT keyword_set yearly then BEGIN monthindex where yearcal EQ year0 currentmonth long monthcal monthindex we suppress the repeted months monthindexbis uniq currentmonth sort currentmonth monthindex monthindex monthindexbis currentmonth currentmonth monthindexbis xoff 34 2 vallen 0 1 keyword_set monthly cmbbid cw_combobox_pm base UVALUE name: month UNAME month value string format C CMoA 31 currentmonth 1 xoffset xoff widget_control cmbbid set_value combobox_select: where long currentmonth EQ month0 0 endif year yearindex uniq yearcal sort yearcal currentyear strtrim yearcal yearindex 1 xoff 34 2 vallen 0 1 keyword_set monthly 33 3 vallen 0 1 keyword_set yearly cmbbid cw_combobox_pm base UVALUE name: year UNAME year value currentyear xoffset xoff widget_control cmbbid set_value combobox_select: where long currentyear EQ year0 0 ENDELSE return base end"); 361 a[359] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html", "cw_combobox_pm.pro", "", " testwid value strtrim indgen 10 2 PRO testwid_event event help event STRUCT ComboboxId widget_info event top find_by_uname c est lui widget_control event id get_uvalue uval if n_elements uval EQ 0 then return case uval of done :widget_control event top destroy dynamic_resize :BEGIN widget_control event id get_value value widget_control ComboboxId set_value dynamic_resize:value END combobox_select :BEGIN widget_control event id get_value value widget_control ComboboxId set_value combobox_select:value END value :BEGIN widget_control event id get_value value widget_control ComboboxId set_value value END get :BEGIN widget_control ComboboxId get_value value help value struct END ELSE: endcase return end PRO testwid _extra ex base widget_base COLUMN print base base nothing widget_label base value beginning of the test nothing cw_combobox_pm base _extra ex uname c est lui uvalue c est lui print cw_combobox_pm ID nothing nothing widget_label base value end of the test nothing widget_text base value 0 uvalue dynamic_resize editable nothing widget_text base value 10 uvalue combobox_select editable nothing widget_text base value 5 uvalue value editable nothing widget_button base value get uvalue get nothing widget_button base value done uvalue done widget_control base REALIZE xmanager testwid base return end PRO cw_combobox_pm_set_value id value compile_opt idl2 strictarrsubs ComboboxId widget_info id find_by_uname Combobox if size value type eq 8 then BEGIN this is a structure tagnames tag_names value for tag 0 n_tags value 1 do begin case strtrim strlowcase tagnames tag 2 of dynamic_resize :widget_control ComboboxId dynamic_resize value dynamic_resize for compatibility droplist_select :widget_control ComboboxId set_combobox_select value droplist_select combobox_select :widget_control ComboboxId set_combobox_select value combobox_select value :widget_control ComboboxId set_value value value ELSE:ras report wrong tag name in argument value of cw_combobox_pm_set_value endcase endfor ENDIF ELSE widget_control ComboboxId set_value value return end FUNCTION cw_combobox_pm_get_value id compile_opt idl2 strictarrsubs ComboboxId widget_info id find_by_uname Combobox widget_control ComboboxId get_value cmbbval cmbbtxt widget_info ComboboxId combobox_gettext cmbbnumb widget_info ComboboxId combobox_number index where cmbbval EQ cmbbtxt 0 return combobox_number:cmbbnumb combobox_gettext:cmbbtxt combobox_index:index combobox_value:cmbbval dynamic_resize:widget_info ComboboxId dynamic_resize end FUNCTION cw_combobox_pm_event event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval if uval EQ Combobox then return CW_COMBOBOX_PM ID:event handler TOP:event top HANDLER:0L INDEX:event index STR:event str OUT:0 ComboboxId widget_info event handler find_by_uname Combobox widget_control ComboboxId get_value cmbbval cmbbtxt widget_info ComboboxId combobox_gettext cmbbnumb widget_info ComboboxId combobox_number index where cmbbval EQ cmbbtxt 0 out 0 case uval OF plus :BEGIN if index LT cmbbnumb 1 then BEGIN index index 1 widget_control ComboboxId set_combobox_select index ENDIF ELSE out 1 END minus :BEGIN if index GT 0 then BEGIN index index 1 widget_control ComboboxId set_combobox_select index ENDIF ELSE out 1 END endcase return CW_COMBOBOX_PM ID:event handler TOP:event top HANDLER:0L INDEX:index STR:cmbbtxt OUT:out end file_comments Like WIDGET_COMBOBOX but here their are 2 buttons and to move the widget from 1 categories compound widget param PARENT in required The widget ID of the parent widget keyword COLUMN Buttons will be arranged in the number of columns specified by this keyword keyword ROW Buttons will be arranged in the number of rows specified by this keyword keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword VALUE keyword _EXTRA Used to pass your keywords returns The returned value of this function is the widget ID of the newly created animation widget restrictions Widget Events Returned by Combobox Widgets Pressing the mouse button while the mouse cursor is over an element of a combobox widget causes the widget to change the label on the combobox button and to generate an event The appearance of any previously selected element is restored to normal at the same time The event structure returned by the WIDGET_EVENT function is defined by the following statement: CW_COMBOBOX_PM ID:0L TOP:0L HANDLER:0L INDEX:0L OUT:0 The first three fields are the standard fields found in every widget event INDEX returns the index of the selected item This can be used to index the array of names originally used to set the widget s value OUT:It is an integer which can take 3 values: 1 : If we press when the index is already at the max Comment: In this case the index stay at the max 1: If we press when the index is already at the min Comment: In this case the index stay at the min 0 : In other cases Keywords to WIDGET_CONTROL A number of keywords to the WIDGET_CONTROL procedure affect the behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE 1 GET_VALUE widget_control wid_id get_value resultat Send back in the result variable a structure of 3 elements whose names are inspired by keywords we can pass at widget_control when we use WIDGET_COMBOBOX: COMBOBOX_NUMBER: the number of elements currently contained in the specified combobox widget COMBOBOX_SELECT: the zero based number of the currently selected element i e the currently displayed element in the specified combobox widget DYNAMIC_RESIZE: a True value 1 if the widget specified by Widget_ID is a button combobox or label widget that has had its DYNAMIC_RESIZE attribute set Otherwise False 0 is returned 2 SET_VALUE widget_control wid_id set_value impose Allows to modify the state of the combobox like we can do it for WIDGET_COMBOBOX May impose: a The contents of the list widget string or string array b A structure which can have for elements from 1 to 3 : DYNAMIC_RESIZE:Set this keyword to activate if set to 1 or deactivate if set to 0 dynamic resizing of the specified CW_COMBOBOX_PM widget see the documentation for the DYNAMIC_RESIZE keyword to WIDGET_COMBOBOX procedure for more information about dynamic widget resizing COMBOBOX_SELECT:Set this keyword to return the zero based number of the currently selected element i e the currently displayed element in the specified combobox widget VALUE: The contents of the list widget string or string array examples See the program provided above testwid and the associated procedure testwid_event history Sebastien Masson smasson lodyc jussieu fr 6 9 1999 version Id: cw_combobox_pm pro 150 2006 08 09 10:12:54Z navarro FUNCTION cw_combobox_pm parent VALUE value UVALUE uvalue UNAME uname ROW row COLUMN column _extra ex compile_opt idl2 strictarrsubs IF N_PARAMS NE 1 THEN MESSAGE Incorrect number of arguments ON_ERROR 2 return to caller cheking for row and column keywords row keyword_set row 1 keyword_set column column keyword_set column 1 keyword_set row keyword_set column EQ row if NOT keyword_set uvalue then uvalue if NOT keyword_set uname then uname base widget_base parent space 0 EVENT_FUNC cw_combobox_pm_event FUNC_GET_VALUE cw_combobox_pm_get_value PRO_SET_VALUE cw_combobox_pm_set_value UVALUE uvalue UNAME uname _extra ex vallen widget_info base string_size m vallen 35 vallen 0 1 max strlen value if keyword_set row THEN BEGIN nothing widget_button base value uvalue minus xoffset 0 yoffset 5 xsize 15 ysize 15 nothing widget_combobox base VALUE value UVALUE Combobox UNAME Combobox xoffset 13 yoffset 0 xsize vallen nothing widget_button base value uvalue plus xoffset vallen 11 yoffset 5 xsize 15 ysize 15 ENDIF ELSE BEGIN nothing widget_combobox base VALUE value UVALUE Combobox UNAME Combobox xoffset 0 yoffset 0 xsize vallen nothing widget_button base value uvalue minus xoffset vallen 2 15 yoffset 24 xsize 15 ysize 15 nothing widget_button base value uvalue plus xoffset vallen 2 yoffset 24 xsize 15 ysize 15 ENDELSE widget_control base realize return base end"); 362 a[360] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html", "cw_domain.pro", "", " IDL testwid PRO testwid_event event help event struct Id widget_info event top find_by_uname c est lui widget_control event id get_uvalue uval if n_elements uval EQ 0 then return case uval of done :widget_control event top destroy set :BEGIN widget_control event id get_value value value value 0 nothing execute boxzoom value widget_control Id set_value boxzoom END get :BEGIN widget_control Id get_value value print value END ELSE: endcase return end PRO testwid _extra ex base widget_base COLUMN print base base nothing widget_label base value beginning of the test nothing cw_domain base _extra ex uname c est lui uvalue c est lui print cw_domain ID nothing nothing widget_label base value end of the test nothing widget_text base value 40 100 10 10 uvalue set editable nothing widget_button base value get uvalue get nothing widget_button base value done uvalue done widget_control base REALIZE xmanager testwid base return end pro cw_domain_set_value id value compile_opt idl2 strictarrsubs cm_4mesh topid findtopid id widget_control topid get_uvalue top_uvalue make sure that we have the good grid stored in the cm_4mesh common parameters currentfile extractatt top_uvalue currentfile currentgrid extractatt top_uvalue meshparameters currentfile change changegrid currentgrid What is the type of boxzoom currentplot extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag flags flags currentplot IF flags where options EQ Longitude x index 0 EQ 0 THEN xtype geographic ELSE xtype index IF flags where options EQ Latitude y index 0 EQ 0 THEN ytype geographic ELSE ytype index How to complete the boxzoom IF xtype EQ geographic then begin lonn1 lon1 lonn2 lon2 xtitle lon ENDIF ELSE BEGIN lonn1 firstxt lonn2 lastxt xtitle x ind ENDELSE IF ytype EQ geographic then begin latt1 lat1 latt2 lat2 ytitle lat ENDIF ELSE BEGIN latt1 firstyt latt2 lastyt ytitle y ind ENDELSE vertf1 floor min gdepw 0 gdept 0 vertf2 ceil max gdepw 0 gdept 0 Case N_Elements Value OF 0:boxzoom lonn1 lonn2 latt1 latt2 vertf1 vertf2 1:BEGIN if value EQ 1 then boxzoom lonn1 lonn2 latt1 latt2 vertf1 vertf2 ELSE boxzoom lonn1 lonn2 latt1 latt2 0 value 0 END 2:boxzoom lonn1 lonn2 latt1 latt2 value 0 value 1 4:boxzoom Value 5:boxzoom Value 0:3 0 Value 4 6:boxzoom Value Else:BEGIN rien report Wrong Definition of Boxzoom END ENDCASE boxzoom 0 floor boxzoom 0 boxzoom 1 ceil boxzoom 1 boxzoom 2 floor boxzoom 2 boxzoom 3 ceil boxzoom 3 if n_elements boxzoom GE 5 then begin boxzoom 4 floor boxzoom 4 boxzoom 5 ceil boxzoom 5 endif widget_control widget_info id find_by_uname lon1 get_uvalue uvalue strict uvalue strict Longitudes Possible min and max if xtype EQ geographic then BEGIN min floor min glamt glamf max max max ceil max ENDIF ELSE BEGIN min 0 max jpi 1 ENDELSE widgets s id lon1id widget_info id find_by_uname lon1 lon2id widget_info id find_by_uname lon2 Do we have to change the type of x axis: longitude index lonbase widget_info id find_by_uname lonbase widget_control lonbase get_uvalue lonbase_uvalue if lonbase_uvalue name NE xtype then BEGIN widget_control lonbase update 0 We break everything widget_control lon1id destroy widget_control lon2id destroy We reconstruct lon1id cw_slider_pm lonbase value min boxzoom 0 boxzoom 0 keyword_set strict boxzoom 1 boxzoom 0 keyword_set strict widget_control lonbase set_uvalue name:xtype widget_control lonbase update 1 ENDIF ELSE BEGIN The new value they will have cursorvalue1 min boxzoom 0 boxzoom 0 strict boxzoom 1 boxzoom 2 boxzoom 2 keyword_set strict boxzoom 3 boxzoom 2 keyword_set strict widget_control latbase set_uvalue name:ytype widget_control latbase update 1 ENDIF ELSE BEGIN cursorvalue1 min boxzoom 2 boxzoom 2 strict boxzoom 3 indice2 1 if indice1 EQ indice2 then BEGIN if where gdep1 GE boxzoom 4 AND gdep2 LE boxzoom 5 0 EQ 1 then begin indice1 0 indice1 dthlv1_uval grid_t EQ 1 indice2 indice1 endif boxzoom 4 gdep1 indice1 boxzoom 5 boxzoom 4 1 endif Now values and indexes are proprely defined So we can apply them widget_control dthlv1id set_value combobox_select:indice1 widget_control dthlv2id set_value combobox_select:indice2 control mins and maxs of sliders if indice1 EQ 0 then min1 0 ELSE min1 gdep2 indice1 1 max1 min1 1 gdep1 indice2 widget_control depth1id set_value slider_min:min1 slider_max:max1 value:boxzoom 4 min2 gdep2 indice1 if indice2 EQ jpk 1 then BEGIN max2 max gdept gdepw max2 strtrim string max2 format e8 0 1 max2 float 1 strmid max2 1 float max2 ENDIF ELSE max2 gdep1 indice2 1 widget_control depth2id set_value slider_min:min2 slider_max:max2 value:boxzoom 5 return end FUNCTION cw_domain_get_value id compile_opt idl2 strictarrsubs box lonarr 6 possiblecase lon1 lon2 lat1 lat2 depth1 depth2 for i 0 5 do begin widget_control widget_info id find_by_uname possiblecase i get_value value box i value value endfor return box end FUNCTION cw_domain_event event compile_opt idl2 strictarrsubs common help struct event if where tag_names event EQ OUT 0 NE 1 then if event out NE 0 then return 1 widget_control event id get_uvalue uval case uval name of lon1 :widget_control widget_info event handler find_by_uname lon2 set_value slider_min:event value uval strict lon2 :widget_control widget_info event handler find_by_uname lon1 set_value slider_max:event value uval strict lat1 :widget_control widget_info event handler find_by_uname lat2 set_value slider_min:event value uval strict lat2 :widget_control widget_info event handler find_by_uname lat1 set_value slider_max:event value uval strict unzoom :BEGIN id widget_info event handler find_by_uname lon1 widget_control id get_value value widget_control id set_value slider_min:value slider_min_max 0 widget_control id set_value value slider_min_max 0 id widget_info event handler find_by_uname lat1 widget_control id get_value value widget_control id set_value slider_min:value slider_min_max 0 widget_control id set_value value slider_min_max 0 id widget_info event handler find_by_uname lon2 widget_control id get_value value widget_control id set_value slider_max:value slider_min_max 1 widget_control id set_value value slider_min_max 1 id widget_info event handler find_by_uname lat2 widget_control id get_value value widget_control id set_value slider_max:value slider_min_max 1 widget_control id set_value value slider_min_max 1 END dthlv1 :BEGIN ids depth1id widget_info event handler find_by_uname depth1 depth2id widget_info event handler find_by_uname depth2 dthlv2id widget_info event handler find_by_uname dthlv2 Do we have to change dthlv2 widget_control event id get_value dthlv1_value gdep1 fix dthlv1_value combobox_value widget_control dthlv2id get_value dthlv2_value gdep2 fix dthlv2_value combobox_value if dthlv2_value combobox_index LT event index then BEGIN We redefine the dthlv2id s value widget_control dthlv2id set_value combobox_select:event index So we redefine the value and the max of the slider 2 if event index EQ jpk 1 then BEGIN max max gdept gdepw max strtrim string max format e8 0 1 max float 1 strmid max 1 float max ENDIF ELSE max gdep2 event index 1 1 widget_control depth2id set_value slider_max:max value:gdep2 event index So we redefine the max of the slider 1 widget_control depth1id set_value slider_max:gdep1 event index END We redefine the value and the min of the slider depth1 if event index EQ 0 then min 0 ELSE min gdep1 event index 1 1 widget_control depth1id set_value slider_min:min value:gdep1 event index S we change the value of the min of the slider depth 2 widget_control depth2id set_value slider_min:gdep1 event index 1 END dthlv2 :BEGIN ids depth1id widget_info event handler find_by_uname depth1 depth2id widget_info event handler find_by_uname depth2 dthlv1id widget_info event handler find_by_uname dthlv1 Do we have to change dthlv1 widget_control dthlv1id get_value dthlv1_value gdep1 fix dthlv1_value combobox_value widget_control event id get_value dthlv2_value gdep2 fix dthlv2_value combobox_value if dthlv1_value combobox_index GT event index then BEGIN We redfine the value of dthlv1id widget_control dthlv1id set_value combobox_select:event index So we redefine the value and the min of the slider 1 if event index EQ 0 then min 0 ELSE min gdep2 event index 1 widget_control depth1id set_value slider_min:min value:gdep1 event index Se we redefine the min of the slider 2 widget_control depth2id set_value slider_min:gdep2 event index END We redefine the value and the max of the slider depth 2 if event index EQ jpk 1 then BEGIN max max gdept gdepw max strtrim string max format e8 0 1 max float 1 strmid max 1 float max ENDIF ELSE max gdep2 event index 1 1 widget_control depth2id set_value slider_max:max value:gdep2 event index So we change the value of the max of the slider depth 1 widget_control depth1id set_value slider_max:gdep2 event index 1 END depth1 :BEGIN ids depth2id widget_info event handler find_by_uname depth2 dthlv1id widget_info event handler find_by_uname dthlv1 Do we have to change dthlv1 widget_control dthlv1id get_value dthlv1_value gdep1 fix dthlv1_value combobox_value rien where gdep1 LT event value indice indice indice indice 1 if indice NE dthlv2_value combobox_index then begin We change the min of depth1 widget_control depth1id set_value slider_max:gdep2 indice 1 We redefine the value of dthlv2id widget_control dthlv2id set_value combobox_select:indice So we redefine the min of the slider 2 if indice EQ jpk 1 then BEGIN max max gdept gdepw max strtrim string max format e8 0 1 max float 1 strmid max 1 float max ENDIF ELSE max gdep2 indice 1 1 widget_control event id set_value slider_max:max endif END ELSE: ENDCASE slidesliceid widget_info event top find_by_uname slide_slice if slidesliceid NE 0 then widget_control slidesliceid set_value 1 return ID:event handler TOP:event top HANDLER:0L BOX:cw_domain_get_value event handler end file_comments categories param PARENT in required The widget ID of the parent widget keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword STRICT keyword UNZOOM keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: cw_domain pro 150 2006 08 09 10:12:54Z navarro todo seb: Documenter FUNCTION cw_domain parent BOXZOOM boxzoom STRICT strict UVALUE uvalue UNAME uname UNZOOM unzoom _extra ex compile_opt idl2 strictarrsubs cm_4mesh cm_4data Definition of the boxzoom Case N_Elements Boxzoom OF 0:boxzoom lon1 lon2 lat1 lat2 min gdepw 0 gdept 0 max gdepw 0 gdept 0 1:boxzoom lon1 lon2 lat1 lat2 0 boxzoom 0 2:boxzoom lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4:boxzoom Boxzoom vert1 vert2 5:boxzoom Boxzoom 0:3 0 Boxzoom 4 6: Else: return report Mauvaise Definition de Boxzoom ENDCASE IF total Boxzoom EQ 0 THEN boxzoom lon1 lon2 lat1 lat2 min gdepw 0 gdept 0 max gdepw 0 gdept 0 boxzoom 0 floor boxzoom 0 boxzoom 1 ceil boxzoom 1 boxzoom 2 floor boxzoom 2 boxzoom 3 ceil boxzoom 3 boxzoom 4 floor boxzoom 4 boxzoom 5 ceil boxzoom 5 if NOT keyword_set uvalue then uvalue if NOT keyword_set uname then uname base widget_base parent row 2 space 0 EVENT_FUNC cw_domain_event FUNC_GET_VALUE cw_domain_get_value PRO_SET_VALUE cw_domain_set_value UVALUE uvalue UNAME uname _extra ex baseh widget_base base column 1 keyword_set unzoom space 0 baseh1 widget_base baseh row 2 space 0 longitude min floor min glamt glamf max max max ceil max IF max min GT 360 AND keyword_set key_periodic THEN max min 360 lonbase widget_base baseh1 column 2 space 0 uname lonbase uvalue name: geographic lon1id cw_slider_pm lonbase value min boxzoom 0 boxzoom 0 keyword_set strict boxzoom 1 boxzoom 0 keyword_set strict latitude min floor min gphit gphif max max max ceil max latbase widget_base baseh1 column 2 space 0 uname latbase uvalue name: geographic lat1id cw_slider_pm latbase value min boxzoom 2 boxzoom 2 keyword_set strict boxzoom 3 boxzoom 2 keyword_set strict unzoom if keyword_set unzoom then rien widget_button baseh value unzoom uvalue name: unzoom xsize 60 ysize 110 depth basez widget_base base column 3 space 0 base_align_center basezdrp widget_base basez row 2 space 0 if strupcase vargrid EQ W then gdep gdepw ELSE gdep gdept gdep1 floor gdep gdep2 ceil gdep same where gdep2 gdep1 EQ 0 if same 0 NE 1 then gdep2 same gdep2 same 1 sgdep1 strtrim gdep1 1 sgdep2 strtrim gdep2 1 dephtid cw_combobox_pm basezdrp value sgdep1 uvalue name: dthlv1 grid_t:strupcase vargrid NE W uname dthlv1 rien where gdep1 LT boxzoom 4 indice1 indice1 indice1 indice2 1 widget_control dephtid set_value combobox_select:indice2 basedepthslid widget_base base column 2 space 0 strminlen max strlen strtrim round gdept gdepw 1 if indice1 EQ 0 then min1 0 ELSE min1 gdep2 indice1 1 max1 min1 1 gdep1 indice2 rien cw_slider_pm basez value min1 boxzoom 4 boxzoom 4 boxzoom 5 max2 uvalue name: depth2 minimum min2 maximum max2 uname depth2 title z2 strminlen strminlen return base end"); 363 a[361] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html", "cw_droplist_pm.pro", "", " PRO testwid_event event help event STRUCT DroplistId widget_info event top find_by_uname c est lui widget_control event id get_uvalue uval if n_elements uval EQ 0 then return case uval of done :widget_control event top destroy dynamic_resize :BEGIN widget_control event id get_value value widget_control DroplistId set_value dynamic_resize:value END droplist_select :BEGIN widget_control event id get_value value widget_control DroplistId set_value droplist_select:value END value :BEGIN widget_control event id get_value value widget_control DroplistId set_value value END get :BEGIN widget_control DroplistId get_value value help value struct END ELSE: endcase return end PRO testwid _extra ex base widget_base COLUMN print base base nothing widget_label base value beginning of the test nothing cw_droplist_pm base _extra ex uname c est lui uvalue c est lui print cw_droplist_pm ID nothing nothing widget_label base value end of the test nothing widget_text base value 0 uvalue dynamic_resize editable nothing widget_text base value 10 uvalue droplist_select editable nothing widget_text base value 5 uvalue value editable nothing widget_button base value get uvalue get nothing widget_button base value done uvalue done widget_control base REALIZE xmanager testwid base return end PRO cw_droplist_pm_set_value id value compile_opt idl2 strictarrsubs DroplistId widget_info id find_by_uname Droplist if size value type eq 8 then BEGIN this is a structure tagnames tag_names value for tag 0 n_tags value 1 do begin case strtrim strlowcase tagnames tag 2 of dynamic_resize :widget_control DroplistId dynamic_resize value dynamic_resize droplist_select :widget_control DroplistId set_droplist_select value droplist_select value :widget_control DroplistId set_value value value ELSE:ras report mauvais nom de l argument de la structure ds cw_droplist_pm_set_value endcase endfor ENDIF ELSE widget_control DroplistId set_value value return end FUNCTION cw_droplist_pm_get_value id compile_opt idl2 strictarrsubs DroplistId widget_info id find_by_uname Droplist return droplist_number:widget_info DroplistId droplist_number droplist_select:widget_info DroplistId droplist_select dynamic_resize:widget_info DroplistId dynamic_resize end FUNCTION cw_droplist_pm_event event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval if uval EQ Droplist then return CW_DROPLIST_PM ID:event handler TOP:event top HANDLER:0L INDEX:event index OUT:0 DroplistId widget_info event handler find_by_uname Droplist index widget_info DroplistId droplist_select case uval OF plus :BEGIN indexmax widget_info DroplistId droplist_number 1 if index NE indexmax then widget_control DroplistId set_droplist_select index 1 return CW_DROPLIST_PM ID:event handler TOP:event top HANDLER:0L INDEX: index 1 index 1 OUT: long index EQ 0 END endcase end file_comments Like WIDGET_DROPLIST but here their are 2 buttons and to move the widget from 1 categories compound widget param PARENT in required The widget ID of the parent widget keyword COLUMN Buttons will be arranged in the number of columns specified by this keyword keyword ROW Buttons will be arranged in the number of rows specified by this keyword keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword _EXTRA Used to pass your keywords returns The returned value of this function is the widget ID of the newly created animation widget restrictions Widget Events Returned by Droplist Widgets Pressing the mouse button while the mouse cursor is over an element of a droplist widget causes the widget to change the label on the droplist button and to generate an event The appearance of any previously selected element is restored to normal at the same time The event structure returned by the WIDGET_EVENT function is defined by the following statement: CW_DROPLIST_PM ID:0L TOP:0L HANDLER:0L INDEX:0L OUT:0 The first three fields are the standard fields found in every widget event INDEX returns the index of the selected item This can be used to index the array of names originally used to set the widget s value OUT:It is an integer which can take 3 values: 1 : If we press when the index is already at the max Comment: In this case the index stay at the max 1: If we press when the index is already at the min Comment: In this case the index stay at the min 0 : In other cases Keywords to WIDGET_CONTROL A number of keywords to the WIDGET_CONTROL procedure affect the behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE 1 GET_VALUE widget_control wid_id get_value resultat Send back in the result variable a structure of 3 elements whose names are inspired by keywords we can pass at widget_control when we use WIDGET_COMBOBOX: DROPLIST_NUMBER: the number of elements currently contained in the specified droplist widget DROPLIST_SELECT: the zero based number of the currently selected element i e the currently displayed element in the specified droplist widget DYNAMIC_RESIZE: a True value 1 if the widget specified by Widget_ID is a button droplist or label widget that has had its DYNAMIC_RESIZE attribute set Otherwise False 0 is returned 2 SET_VALUE widget_control wid_id set_value impose permet de modifier l etat de la droplist comme on peut le faire pour WIDGET_DROPLIST Impose peut etre: a The contents of the list widget string or string array b A structure which can have for elements from 1 to 3 : DYNAMIC_RESIZE:Set this keyword to activate if set to 1 or deactivate if set to 0 dynamic resizing of the specified CW_DROPLIST_PM widget see the documentation for the DYNAMIC_RESIZE keyword to WIDGET_DROPLIST procedure for more information about dynamic widget resizing DROPLIST_SELECT:Set this keyword to return the zero based number of the currently selected element i e the currently displayed element in the specified droplist widget VALUE: The contents of the list widget string or string array examples See the program provided above testwid and the associated procedure testwid_event history Sebastien Masson smasson lodyc jussieu fr 6 9 1999 version Id: cw_droplist_pm pro 150 2006 08 09 10:12:54Z navarro FUNCTION cw_droplist_pm parent UVALUE uvalue UNAME uname ROW row COLUMN column _extra ex compile_opt idl2 strictarrsubs IF N_PARAMS NE 1 THEN MESSAGE Incorrect number of arguments ON_ERROR 2 return to caller cheking for row and column keywords row keyword_set row 1 keyword_set column column keyword_set column 1 keyword_set row keyword_set column EQ row if NOT keyword_set uvalue then uvalue if NOT keyword_set uname then uname base widget_base parent space 1 xpad 1 ypad 1 ROW row COLUMN column EVENT_FUNC cw_droplist_pm_event FUNC_GET_VALUE cw_droplist_pm_get_value PRO_SET_VALUE cw_droplist_pm_set_value UVALUE uvalue UNAME uname _extra ex if keyword_set row THEN nothing widget_button base value uvalue minus nothing widget_droplist base UVALUE Droplist UNAME Droplist _extra ex if keyword_set column then begin base1 widget_base base row align_center space 1 xpad 1 ypad 1 nothing widget_button base1 value uvalue minus xsize 20 ysize 20 nothing widget_button base1 value uvalue plus xsize 20 ysize 20 ENDIF ELSE nothing widget_button base value uvalue plus widget_control base realize return base end"); 364 a[362] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html", "cw_pagelayout.pro", "", " FUNCTION cw_pagelayout_event event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval widget_control event top get_uvalue top_uvalue smallin extractatt top_uvalue smallin numdessinin smallin 2 1 smallout extractatt top_uvalue smallout if uval name EQ undo then begin return ID:event handler TOP:event top HANDLER:0L ENDIF ELSE BEGIN common If we do not change the number of columns we send if uval name EQ column then if event index 1 EQ smallin 0 THEN return ID:event handler TOP:event top HANDLER:0L If we do not change the number of lines we send if uval name EQ row then if event index 1 EQ smallin 1 THEN return ID:event handler TOP:event top HANDLER:0L We erase the page graphid widget_info event top find_by_uname graph graphid extractatt top_uvalue graphid widget_control graphid get_value win wset win erase 255 case uval name of clear : column :BEGIN smallin event index 1 smallin 1 1 smallout event index 1 smallout 1 1 END row :BEGIN smallin smallin 0 event index 1 1 smallout smallout 0 event index 1 1 END endcase nbredessin smallin 0 smallin 1 We put all back to 0 for postscripts createhistory event top smallin options extractatt top_uvalue options flags extractatt top_uvalue optionsflag flag flags numdessinin update and reset all values of the top_uvalue top_uvalue 1 findline top_uvalue smallin smallin top_uvalue 1 findline top_uvalue smallout smallout top_uvalue 1 findline top_uvalue penvs replicate p nbredessin top_uvalue 1 findline top_uvalue xenvs replicate x nbredessin top_uvalue 1 findline top_uvalue yenvs replicate y nbredessin top_uvalue 1 findline top_uvalue nameprocedures strarr nbredessin top_uvalue 1 findline top_uvalue types strarr nbredessin top_uvalue 1 findline top_uvalue varinfo strarr 2 nbredessin top_uvalue 1 findline top_uvalue domaines fltarr 6 nbredessin top_uvalue 1 findline top_uvalue dates lonarr 2 nbredessin top_uvalue 1 findline top_uvalue txtcmd strarr nbredessin top_uvalue 1 findline top_uvalue optionsflag flag replicate 1 nbredessin ptr_free extractatt top_uvalue exextra top_uvalue 1 findline top_uvalue exextra ptrarr nbredessin allocate_heap top_uvalue 1 findline top_uvalue ENDELSE return ID:event handler TOP:event top HANDLER:0L end file_comments categories param PARENT in required The widget ID of the parent widget param SMALL keyword COLUMN Buttons will be arranged in the number of columns specified by this keyword keyword ROW Buttons will be arranged in the number of rows specified by this keyword keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: cw_pagelayout pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter FUNCTION cw_pagelayout parent small UVALUE uvalue UNAME uname UNZOOM unzoom COLUMN column ROW row _extra ex compile_opt idl2 strictarrsubs row keyword_set row 1 keyword_set column if NOT keyword_set uvalue then uvalue if NOT keyword_set uname then uname base widget_base parent EVENT_FUNC cw_pagelayout_event FUNC_GET_VALUE cw_pagelayout_get_value PRO_SET_VALUE cw_pagelayout_set_value UVALUE uvalue UNAME uname space 0 _extra ex IF n_elements small eq 0 then small 1 1 1 dummy widget_label base value cln yoffset 3 id widget_combobox base value strtrim indgen 9 1 1 uvalue name: column uname column xoffset 20 xsize 40 widget_control id set_combobox_select small 0 1 IF keyword_set row THEN BEGIN xoff 60 yoff 0 ENDIF ELSE BEGIN xoff 0 yoff 20 ENDELSE dummy widget_label base value row xoffset xoff yoffset yoff 3 id widget_combobox base value strtrim indgen 9 1 1 uvalue name: row uname row xoffset xoff 20 xsize 40 yoffset yoff widget_control id set_combobox_select small 1 1 return base end "); 365 a[363] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html", "cw_slide_slice.pro", "", "pro cw_slide_slice_set_value id value compile_opt idl2 strictarrsubs common topid findtopid id domainid widget_info topid find_by_uname domain widget_control domainid get_value boxzoom if boxzoom 1 boxzoom 0 LT boxzoom 3 boxzoom 2 then type y ELSE type x thickid widget_info topid find_by_uname thickness widget_control thickid get_uvalue thicknessuval widget_control thickid get_value thickness thickness thicknessuval choix thickness droplist_select sliderid widget_info topid find_by_uname slider if type EQ y then BEGIN mini floor min glamt glamf max maxi maxi ceil maxi thickness widget_control sliderid set_value slider_min:mini slider_max:maxi value:boxzoom 0 maxi value mini boxzoom 0 maxi value mini boxzoom 2 maxi column uname slider uvalue name: slider ENDELSE index where thicknessval EQ thickness index index 0 if index EQ 1 then BEGIN index 20 thicknessval 20 strtrim thickness 1 widget_control droplistid set_value thicknessval widget_control droplistid set_uvalue name: thickness choix:thicknessval endif widget_control droplistid set_value droplist_select:index if type EQ xt then begin mini floor min glamt glamf max maxi maxi ceil maxi ENDIF ELSE BEGIN mini floor min gphit gphif max maxi maxi ceil maxi ENDELSE return base end"); 366 a[364] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html", "cw_slider_pm.pro", "", " PRO testwid_event event help event STRUCT SliderBarId widget_info event top find_by_uname c est lui widget_control event id get_uvalue uval if n_elements uval EQ 0 then return case uval of done :widget_control event top destroy slider_min :BEGIN widget_control event id get_value value widget_control SliderBarId set_value slider_min:value END slider_max :BEGIN widget_control event id get_value value widget_control SliderBarId set_value slider_max:value END slider_value :BEGIN widget_control event id get_value value widget_control SliderBarId set_value value END get :BEGIN widget_control SliderBarId get_value value help value struct print value slider_min_max END ELSE: endcase return end PRO testwid _extra ex base widget_base COLUMN print base base nothing widget_label base value beginning of the test nothing cw_slider_pm base _extra ex uname c est lui uvalue c est lui print cw_slider_pm ID nothing nothing widget_label base value end of the test nothing widget_text base value 0 uvalue slider_min editable nothing widget_text base value 10 uvalue slider_max editable nothing widget_text base value 5 uvalue slider_value editable nothing widget_button base value get uvalue get nothing widget_button base value done uvalue done widget_control base REALIZE xmanager testwid base return end FUNCTION decvalue value compile_opt idl2 strictarrsubs a float value 0 return strtrim string floor a 0 1 indgen 10 format f15 1 2 end FUNCTION decind value compile_opt idl2 strictarrsubs a float value 0 return round 10 a floor a computation accuracy end PRO cw_slider_pm_set_value id value compile_opt idl2 strictarrsubs sbid widget_info id find_by_uname SliderBar dcid widget_info id find_by_uname decimal minmax widget_info sbid SLIDER_MIN_MAX if size value type eq 8 then BEGIN this is a structure tagnames tag_names value for tag 0 n_tags value 1 do begin case strtrim strlowcase tagnames tag 2 of slider_min :BEGIN IF float value slider_min 0 LT minmax 1 THEN BEGIN minmax 0 value slider_min 0 widget_control sbid set_slider_min floor float value slider_min 0 valuedc float widget_info dcid combobox_gettext IF valuedc LT value slider_min THEN BEGIN widget_control sbid set_value floor float value slider_min 0 widget_control dcid set_value decvalue value slider_min widget_control dcid set_combobox_select decind value slider_min ENDIF ENDIF end slider_max :BEGIN IF float value slider_max 0 GT minmax 0 THEN BEGIN minmax 1 value slider_max 0 widget_control sbid set_slider_max ceil float value slider_max 0 valuedc float widget_info dcid combobox_gettext IF valuedc GT value slider_max THEN BEGIN widget_control sbid set_value ceil float value slider_max 0 widget_control dcid set_value decvalue value slider_max widget_control dcid set_combobox_select decind value slider_max ENDIF ENDIF end value :IF float value value 0 GE minmax 0 AND float value value 0 LE minmax 1 THEN value2 float value value 0 ELSE:ras report wrong tag name in argument value of cw_slider_pm_set_value endcase endfor ENDIF ELSE BEGIN IF float value 0 GE minmax 0 AND float value 0 LE minmax 1 THEN value2 float value 0 ENDELSE IF n_elements value2 NE 0 THEN BEGIN widget_control sbid set_value fix value2 widget_control dcid set_value decvalue value2 widget_control dcid set_combobox_select decind value2 ENDIF return end FUNCTION cw_slider_pm_get_value id compile_opt idl2 strictarrsubs sbid widget_info id find_by_uname SliderBar dcid widget_info id find_by_uname decimal minmax widget_info sbid SLIDER_MIN_MAX value float widget_info dcid combobox_gettext return value:value slider_min_max:minmax end FUNCTION cw_slider_pm_event event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval sbid widget_info event handler find_by_uname SliderBar dcid widget_info event handler find_by_uname decimal minmax widget_info sbid SLIDER_MIN_MAX IF uval EQ decimal THEN value float event str ELSE value float widget_info dcid combobox_gettext out 0 defaut case case uval OF plus : if value 1 LE minmax 1 then value2 value 1 ELSE out 1 minus :if value 1 GE minmax 0 then value2 value 1 ELSE out 1 SliderBar :if event value value floor value LE minmax 1 THEN value2 event value value floor value decimal :BEGIN CASE 1 OF value GT minmax 1 : value2 minmax 1 value LT minmax 0 : value2 minmax 0 ELSE: ENDCASE END ELSE: ENDCASE IF n_elements value2 NE 0 THEN BEGIN value value2 widget_control sbid set_value floor value widget_control dcid set_value decvalue value widget_control dcid set_combobox_select decind value ENDIF return CW_SLIDER_PM ID:event handler TOP:event top HANDLER:0L VALUE:value OUT:OUT end file_comments Like WIDGET_SLIDER but here their are 2 buttons and to move the widget from 1 categories compound widget param PARENT in required The widget ID of the parent widget keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword VALUE keyword MAXIMUM keyword MINIMUM keyword STRMINLEN keyword _EXTRA Used to pass your keywords returns The returned value of this function is the widget ID of the newly created animation widget restrictions Widget Events Returned by the CW_SLIDER_PM Widget Slider widgets generate events when the mouse is used to change their value The event structure returned by the WIDGET_EVENT function is defined by the following statement: CW_SLIDER_PM ID:0L TOP:0L HANDLER:0L VALUE:0L DRAG:0 OUT:0 ID is the widget ID of the button generating the event TOP is the widget ID of the top level widget containing ID HANDLER contains the widget ID of the widget associated with the handler routine VALUE returns the new value of the slider DRAG returns integer 1 if the slider event was generated as part of a drag operation or zero if the event was generated when the user had finished positioning the slider Note that the slider widget only generates events during the drag operation if the DRAG keyword is set and if the application is running under Motif When the DRAG keyword is set the DRAG field can be used to avoid computationally expensive operations until the user releases the slider OUT:It is an integer which can take 3 values: 1 : If we press when the index is already at the max Comment: In this case the index stay at the max 1: If we press when the index is already at the min Comment: In this case the index stay at the min 0 : In other cases Keywords to WIDGET_CONTROL A number of keywords to the WIDGET_CONTROL procedure affect the behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE 1 GET_VALUE widget_control wid_id get_value resultat retourne ds la variable resultat une structure de 2 elements dont les noms sont inspires des mots cles que l on peut passer a widget_control qd on utilise WIDGET_SLIDER: VALUE:the value setting of the widget SLIDER_MIN_MAX: a 2 elements array: The minimum and the maximum value of the range encompassed by the slider 2 SET_VALUE widget_control wid_id set_value impose Allows to modify the state of the combobox like we can do it for WIDGET_COMBOBOX May impose: a un entier: donne la nouvelle position of the slider b A structure which can have for elements from 1 to 3 : VALUE: an integer which give the new position of the slider SLIDER_MIN:Set to a new minimum value for the specified slider widget SLIDER_MAX:Set to a new minimum value for the specified slider widget examples See the program provided above testwid and the associated procedure testwid_event history Sebastien Masson smasson lodyc jussieu fr 5 9 1999 version Id: cw_slider_pm pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter FUNCTION cw_slider_pm parent MAXIMUM maximum MINIMUM minimum STRMINLEN strminlen VALUE value UVALUE uvalue UNAME uname title title _extra ex compile_opt idl2 strictarrsubs IF N_PARAMS NE 1 THEN MESSAGE Incorrect number of arguments ON_ERROR 2 return to caller if n_elements minimum NE 0 then minimum floor minimum ELSE minimum 0 if n_elements maximum NE 0 then maximum ceil maximum ELSE maximum 100 if NOT keyword_set title then title cheking exclusive keywords column keyword_set column 1 keyword_set row keyword_set vertical xsize lenstr max strlen strtrim minimum maximum 1 if keyword_set strminlen then lenstr strminlen lenstr xsize 35 mlen lenstr 1 3 lenstr lt 4 xsize 35 mlen lenstr 2 dummyid widget_combobox base value decvalue minimum UVALUE decimal UNAME decimal xoffset xoff yoffset 2 xsize xsize dummyid widget_slider base MAXIMUM maximum MINIMUM minimum UVALUE SliderBar UNAME SliderBar suppress_value drag yoffset 30 xsize xoff xsize if keyword_set value then cw_slider_pm_set_value base value return base end"); 367 a[365] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html", "cw_specifie.pro", "", " PRO cw_specifie_set_value id value compile_opt idl2 strictarrsubs cm_general if size value type NE 8 then return widget_control widget_info id find_by_uname min set_value strtrim value min 2 widget_control widget_info id find_by_uname max set_value strtrim value max 2 widget_control widget_info id find_by_uname int set_value strtrim value inter 2 widget_control widget_info id find_by_uname palnum set_value strtrim value lct 2 autres extractstru value min max inter lct nothing xindex yindex if size autres type EQ 8 then BEGIN autresid widget_info id find_by_uname autres widget_control widget_info id find_by_uname autres get_value autresautres autresautres autresautres 0 if strtrim autresautres 2 NE then begin autresautres createfunc get_extra autresautres filename myuniquetmpdir for_createfunc pro autres mixstru autres autresautres endif autres strkeywd autres widget_control widget_info id find_by_uname autres set_value autres endif return end FUNCTION cw_specifie_get_value id compile_opt idl2 strictarrsubs cm_general widget_control widget_info id find_by_uname min get_value min min float min 0 widget_control widget_info id find_by_uname max get_value max max float max 0 widget_control widget_info id find_by_uname int get_value int int float int 0 widget_control widget_info id find_by_uname palnum get_value palnum palnum long palnum 0 widget_control widget_info id find_by_uname autres get_value autres autres autres 0 exextra min:min max:max inter:int lct:palnum if strtrim autres 2 NE then exextra createfunc get_extra autres _extra exextra kwdlist exextra exextra exextra exextra filename myuniquetmpdir for_createfunc pro return exextra end FUNCTION cw_specifie_event event on recuper les ID des differents widgets compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval widget_control event top get_uvalue top_uvalue smallin extractatt top_uvalue smallin numdessinin smallin 2 1 smallout extractatt top_uvalue smallout numdessinout smallout 2 1 case uval of default :BEGIN We find the name of the variable: vlstid widget_info event top find_by_uname varlist fieldname widget_info vlstid combobox_gettext exextra definedefaultextra fieldname widget_control widget_info event handler find_by_uname min set_value strtrim exextra min 1 widget_control widget_info event handler find_by_uname max set_value strtrim exextra max 1 widget_control widget_info event handler find_by_uname int set_value strtrim exextra inter 1 widget_control widget_info event handler find_by_uname palnum set_value strtrim exextra lct 1 widget_control widget_info event handler find_by_uname autres set_value END palcol :BEGIN ind fix strmid event value 0 strpos event value widget_control widget_info event handler find_by_uname palnum set_value strtrim ind 1 END ELSE: endcase return ID:event handler TOP:event top HANDLER:0L OK:uval EQ ok end file_comments categories param PARENT in required The widget ID of the parent widget keyword COLUMN Buttons will be arranged in the number of columns specified by this keyword keyword ROW Buttons will be arranged in the number of rows specified by this keyword keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword FRAME keyword FORXXX keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version ID todo seb: documenter FUNCTION cw_specifie parent ROW row COLUMN column UVALUE uvalue UNAME uname FRAME frame FORXXX forxxx _extra ex cheking exclusive keywords compile_opt idl2 strictarrsubs column keyword_set column 1 keyword_set row row keyword_set row 1 keyword_set column keyword_set row EQ column if NOT keyword_set uvalue then uvalue if NOT keyword_set uname then uname base widget_base parent space 0 frame EVENT_FUNC cw_specifie_event FUNC_GET_VALUE cw_specifie_get_value PRO_SET_VALUE cw_specifie_set_value UVALUE uvalue UNAME uname _extra ex base1 base1 widget_base base rien widget_label base1 value Min xoffset 85 yoffset 15 rien widget_label base1 value Max xoffset 145 yoffset 15 rien widget_label base1 value Int xoffset 210 yoffset 15 lct get_name nomcouleur nbrligne 30 nbrlist n_elements nomcouleur nbrligne nomcouleur strtrim sindgen n_elements nomcouleur 1 nomcouleur nomcouleur 0 nomcouleur nomcouleur 1 Color nomcouleur if nbrlist GT 1 then for i 1 nbrlist do nomcouleur nomcouleur 0:nbrligne i 1 i 1 nomcouleur nbrligne i i:n_elements nomcouleur 1 rien cw_pdmenu base1 nomcouleur RETURN_NAME uvalue palcol uname palcol xoffset 250 yoffset 0 base2 base2 widget_base base column 4 keyword_set forxxx yoffset 30 if keyword_set forxxx then rien widget_button base2 value Default uvalue default frame tooltip see find definedefaultextra 0 rien widget_text base2 value editable xsize 7 uname min uvalue min rien widget_text base2 value editable xsize 7 uname max uvalue max rien widget_text base2 value editable xsize 7 uname int uvalue int if keyword_set forxxx then colvalue ELSE colvalue 39 rien widget_text base2 value colvalue editable xsize 2 uname palnum uvalue palnum widget text containig other keywords pass into top_uvalue exextra Does it remain some If yes we have to put them as string rien widget_text base value editable uname autres uvalue autres xsize 54 ysize 3 yoffset 65 wrap no_newline if keyword_set forxxx then cw_specifie_set_value base definedefaultextra rien_du_tout return base end "); 368 a[366] = new Array("./ToBeReviewed/WIDGET/findtopid.html", "findtopid.pro", "", " file_comments Find from an Id of widget the Id of the widget which is the top level base i e it has no parent categories widget param WIDGET_ID This argument should be the widget ID of the widget for which information is desired returns The Id of the widget which is the top level base history Sebastien Masson smasson lodyc jussieu fr 22 9 1999 version Id: findtopid pro 150 2006 08 09 10:12:54Z navarro FUNCTION findtopid WIDGET_ID compile_opt idl2 strictarrsubs id long WIDGET_ID exist widget_info id managed if exist EQ 0 then return 1 topid id topid2 id while topid2 NE 0 do begin topid topid2 topid2 widget_info topid2 parent endwhile return long topid end"); 369 a[367] = new Array("./ToBeReviewed/WIDGET/slec.html", "slec.pro", "", " file_comments categories param NAME param DEBUT param FIN param NOMEXP keyword PARENT in required The widget ID of the parent widget keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: slec pro 150 2006 08 09 10:12:54Z navarro todo Seb: documenter FUNCTION slec name debut fin nomexp PARENT parent BOXZOOM boxzoom _EXTRA ex include common compile_opt idl2 strictarrsubs cm_4data IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF case n_params of 1:tab nlec name PARENT parent BOXZOOM boxzoom _EXTRA ex 2:tab nlec name debut PARENT parent BOXZOOM boxzoom _EXTRA ex 3:tab nlec name debut fin PARENT parent BOXZOOM boxzoom _EXTRA ex 4:tab nlec name debut fin nomexp PARENT parent BOXZOOM boxzoom _EXTRA ex endcase return tab:tab grille:vargrid unite:varunit experience:varexp nom:varname end"); 370 a[368] = new Array("./ToBeReviewed/WIDGET/xnotice.html", "xnotice.pro", "", " file_comments Create a widget with some text at the middle of the window categories Information param TEXT in required it is a string or a vector of string If it is a scalar we look for the line separator C to create a text with several lines keyword CHKWIDGET Force to verify that they are some active widget to create a widget otherwise print at the prompt returns The identity of the created widget restrictions It do not call xmanager It do not create any event We have to delete this widget manuelly: widget_control widgetid destroy examples IDL id xnotice ca marche C ou pas IDL widget_control id destroy history Sebastien Masson smasson lodyc jussieu fr 2000 3 17 version Id: xnotice pro 150 2006 08 09 10:12:54Z navarro FUNCTION xnotice text CHKWIDGET chkwidget We separate the text in different lines separated by C if it is not done yet n est pas deja fait compile_opt idl2 strictarrsubs if n_elements text EQ 1 then text str_sep text C trim if keyword_set chkwidget then makewid widget_info managed 0 ELSE makewid 1 if makewid EQ 0 then BEGIN for i 0 n_elements text 1 do print text i noticebase 0 endif noticebase widget_base column title information align_center screensize get_screen_size widget_control noticebase tlb_set_xoffset screensize 0 2 2 tlb_set_yoffset screensize 1 2 2 nothing widget_label noticebase value for i 0 n_elements text 1 do nothing widget_label noticebase value text i nothing widget_label noticebase value widget_control noticebase realize return noticebase end"); 371 a[369] = new Array("./ToBeReviewed/WIDGET/xquestion.html", "xquestion.pro", "", " pro xquestion_event event compile_opt idl2 strictarrsubs we get the answer widget_control widget_info event top find_by_uname text get_value answer answer answer 0 now we give the answer to xquestion pro by using the pointer uvalue widget_control event top get_uvalue ptranswer ptranswer answer we destroy the widget widget_control event top destroy return end file_comments A small widget who ask a question and give an answer WARNING: For a binary question with yes no answer use DIALOG_MESSAGE categories widget param QUESTION A scalar string or a array of string If this argument is set to : an array of strings: each array element is displayed as a separate line of text a scalar string: we are looking for the separate line character C param PROPOSEDANSWER A string proposing a answer keyword CHKWIDGET Active this keyword if you whant that xquestion check if managed widget are present If not xquestion do not open a widget but print the question in the IDL window keyword _EXTRA Used to pass your keywords returns answer: a string restrictions The function does not return to its caller until the user press Enter key in the widget examples IDL help xquestion Postscript name STRING toto ps history Sebastien Masson smasson lodyc jussieu fr 13 10 1999 version Id: xquestion pro 150 2006 08 09 10:12:54Z navarro FUNCTION xquestion question proposedanswer CHKWIDGET chkwidget _extra ex compile_opt idl2 strictarrsubs is separate line a scalar we must cut it into pieces if n_elements question EQ 1 then question str_sep question C trim is a widget necessary if keyword_set chkwidget then BEGIN if widget_info managed 0 EQ 0 then BEGIN if n_elements proposedanswer EQ 0 then BEGIN proposedanswer answer complete ENDIF ELSE BEGIN answer proposedanswer complete default answer is proposedanswer ENDELSE if n_elements question GT 1 THEN for i 0 n_elements question 2 do print question i read question n_elements question 1 complete answer if keyword_set answer EQ 0 then answer proposedanswer return answer endif endif definition of the widget BaseId widget_base column title Question _extra ex screensize get_screen_size widget_control BaseId tlb_set_xoffset screensize 0 2 2 tlb_set_yoffset screensize 1 2 2 for i 0 n_elements question 1 DO trash widget_label BaseId value question i align_left if n_elements proposedanswer EQ 0 then answer ELSE answer proposedanswer trash widget_text BaseId value answer editable _extra ex uname text trash widget_button BaseId value ok ptranswer ptr_new allocate_heap widget_control BaseId set_uvalue ptranswer we realize the widget and wait for an answer widget_control BaseId realize xmanager xquestion BaseId we get the answer answer ptranswer we freeing the pointer ptr_free ptranswer return answer end"); 372 a[370] = new Array("./ToBeReviewed/WIDGET/xx.html", "xx.pro", "", " file_comments categories keyword JOUR keyword MESHFILENAME keyword LISTVAR keyword LISTGRID keyword FUNCLEC_NAME keyword CALENDAR keyword _EXTRA Used to pass your keywords uses restrictions examples history version Id: xx pro 150 2006 08 09 10:12:54Z navarro todo seb documenter PRO xx JOUR jour MESHFILENAME meshfilename LISTVAR listvar LISTGRID listgrid FUNCLEC_NAME funclec_name CALENDAR calendar _extra ex compile_opt idl2 strictarrsubs common Name of the part to be changed Name of the reading function if NOT keyword_set funclec_name then funclec_name slec varexp INF list of variables if NOT keyword_set listvar then listvar tn sn un vn taux tauy hdep20 hdep28 hdep15 hturb hpycn htoth emp qn qs smltot11 smltot12 smltot13 smltot14 smltot15 smltot16 tmltot11 tmltot12 tmltot13 tmltot14 tmltot15 tmltot16 list of grids to which variables refer to if NOT keyword_set listgrid then BEGIN listgrid replicate T n_elements listvar listgrid 2 4 U listgrid 3 5 V ENDIF calendar to be used in IDL julian days if NOT keyword_set calendar then BEGIN if keyword_set jour then calendar calendriertotem julian_day ELSE calendar calendriertotem julian_day mensuel ENDIF Name of the file refering to the mask if NOT keyword_set meshfilename then meshfilename usr1 com smasson IDL INIT inittotem pro meshparameters whichgrid meshfilename parameters specifing how the field must be read readparameters funclec_name: funclec_name jpidta: jpidta jpjdta: jpjdta jpkdta: jpkdta ixmindta: ixmindta ixmaxdta: ixmaxdta iymindta: iymindta iymaxdta: iymaxdta izmindta: izmindta izmaxdta: izmaxdta End of the part to be change fileparameters filename: many time_counter: calendar listvar: listvar listgrid: strupcase listgrid multistructure fileparameters: temporary fileparameters readparameters: temporary readparameters meshparameters: temporary meshparameters xxx multistructure temporary multistructure _extra ex return end"); 373 a[371] = new Array("./ToBeReviewed/WIDGET/xxx.html", "xxx.pro", "", " PRO xxx_event event compile_opt idl2 strictarrsubs common widget_info event top find_by_uname What is the type of evenment if event id EQ 622 then help event struct widget_control event id get_uvalue uval if tag_names event structure_name 0 EQ WIDGET_TRACKING then uval name: ActiverFenetre if keyword_set uval EQ 0 then return help event struct help uval struct case on the type of evenment widget_control event top get_uvalue top_uvalue If we activate the keyword separate at the call of xxx if size top_uvalue type EQ 3 then begin event top top_uvalue widget_control event top get_uvalue top_uvalue endif we delete the small widget created by notice pro if it exists noticebase extractatt top_uvalue noticebase if noticebase NE 0 then BEGIN widget_control noticebase destroy top_uvalue 1 findline top_uvalue noticebase 0l endif options extractatt top_uvalue options case uval name OF menubar :xxxmenubar_event event ok :nouveaudessin 1 specifie : action : calendar1 :BEGIN date2id widget_info event top find_by_uname calendar2 widget_control date2id get_value date2 if event value GT date2 then widget_control date2id set_value event value END calendar2 :BEGIN date1id widget_info event top find_by_uname calendar1 widget_control date1id get_value date1 if event value LT date1 then widget_control date1id set_value event value END domain : varlist :BEGIN currentfile extractatt top_uvalue currentfile listvar extractatt top_uvalue fileparameters currentfile listvar name listvar event index changefield event top name END txtcmd : filelist :BEGIN changefile event top event index END ActiverFenetre :BEGIN if event enter EQ 1 AND d name NE PS then BEGIN graphid widget_info event top find_by_uname graph graphid extractatt top_uvalue graphid widget_control graphid get_value win wset win widget_control event top get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 p extractatt top_uvalue penvs numdessinin x extractatt top_uvalue xenvs numdessinin y extractatt top_uvalue yenvs numdessinin endif END graph :BEGIN quelclick identifyclick event case quelclick type of inutile :return long :longclickaction event single :singleclickaction event double :doubleclickaction event endcase END endcase if keyword_set nouveaudessin then letsdraw event top return end file_comments A maximum of possibilities with a minimum of clics categories widget param DATAFILENAME param IDLFILE param ARGSPRO keyword SEPARATE To separate the button part and the drawing part in 2 windows Useful for small screens but be careful to do not saturate the video memory of some antiquated Tx keyword RESTORE toto dat or toto dat is a file created at the time of a precedent use of xxx thanks to the command Widget of the menu save as keyword _EXTRA Used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: xxx pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter le reste des keywords PRO xxx datafilename idlfile argspro CALLERWIDID CallerWidId REDRAW redraw SEPARATE separate UVALUE uvalue RESTORE restore _EXTRA ex compile_opt idl2 strictarrsubs all_cm reinitialize the p x y z variables reinitplt we get back the uvalue of the widget that called xxx to create a new widget if keyword_set restore then BEGIN restore isafile filename restore iodir homedir _extra ex if size restore type NE 7 then restore 0 ELSE BEGIN restore isafile file restore iodir homedir _extra ex newgrid extractatt uvalue meshparameters 0 change changegrid newgrid ENDELSE endif if n_elements CallerWidId NE 0 THEN widget_control CallerWidId get_uvalue uvalue ELSE CallerWidId 0 list of files we want to look at if keyword_set uvalue then BEGIN currentfile extractatt uvalue currentfile filelist extractatt uvalue filelist fileparameters extractatt uvalue fileparameters readparameters extractatt uvalue readparameters meshparameters extractatt uvalue meshparameters ENDIF ELSE BEGIN newfile selectfile datafilename idlfile argspro _extra ex if size newfile type NE 8 then return fileparameters ptrarr 1 allocate_heap fileparameters 0 newfile fileparameters readparameters ptrarr 1 allocate_heap readparameters 0 newfile readparameters meshparameters ptrarr 1 allocate_heap meshparameters 0 newfile meshparameters currentfile 0 filelist newfile fileparameters filename ENDELSE if keyword_set uvalue THEN BEGIN smallin extractatt uvalue smallin smallout extractatt uvalue smallout ENDIF ELSE BEGIN smallin 1 1 1 smallout 1 1 1 ENDELSE nbredessin smallin 0 smallin 1 numdessinin smallin 2 1 warning flg definition must be consistent with cw_pdmenu argument see also flag definition in cw_pagelayout if keyword_set uvalue then BEGIN flag extractatt uvalue optionsflag key_portrait flag 0 numdessinin ENDIF ELSE flag key_portrait 0 0 0 0 replicate 1 nbredessin We start the widget definition widget and screen size scrsize get_screen_size 0 95 windsize givewindowsize xxxsize windsize 0 1 keyword_set separate 350 windsize 1 The top base IF xxxsize 0 LE scrsize 0 AND xxxsize 1 LE scrsize 1 THEN BEGIN base widget_base title xxx GROUP_LEADER group tracking_events uname base space 0 ENDIF ELSE BEGIN base widget_base title xxx GROUP_LEADER group tracking_events uname base space 0 xsize xxxsize 0 ysize xxxsize 1 x_scroll_size xxxsize 0 selectact ENDIF ELSE selectfile 0 menu options xoff xoff 110 if keyword_set uvalue then begin options extractatt uvalue options ENDIF ELSE options Portrait Landscape Overlay Vecteur Longitude x index Latitude y index desc 1 File 0 Open 0 New xxx 2 Quit 1 Save as 0 PostScript 0 Animated gif 0 Gif 0 IDL procedure 0 RESTORE kwd of xxx 2 Print to prompt 1 Flag options descsuite options if n_elements descsuite GE 2 then descsuite 0:n_elements descsuite 2 0 descsuite 0:n_elements descsuite 2 descsuite n_elements descsuite 1 2 descsuite n_elements descsuite 1 desc desc descsuite menu cw_pdmenu base desc RETURN_NAME uname menubar uvalue name: menubar xoffset xoff yoffset yoff Ok button yoff yoff 37 xoff 5 boutton OK baseok widget_button base value OK uvalue name: ok uname ok button frame xoffset xoff yoffset yoff Page Layout page layout xoff xoff 65 dummyid cw_pagelayout base smallin row frame xoffset xoff yoffset yoff List of Variables xoff xoff 140 currentlistvar fileparameters currentfile listvar vlstid widget_combobox base value currentlistvar uvalue name: varlist uname varlist xoffset xoff yoffset yoff 1 if keyword_set uvalue then BEGIN selectvar extractatt uvalue varinfo 1 numdessinin selectvar where currentlistvar EQ selectvar 0 widget_control vlstid set_combobox_select 0 selectvar ENDIF ELSE selectvar 0 List of files yoff yoff 35 flstid widget_combobox base value file_basename filelist uname filelist xsize 345 yoffset yoff uvalue name: filelist if keyword_set uvalue then BEGIN selectfile extractatt uvalue varinfo 0 numdessinin selectfile where file_basename filelist EQ selectfile 0 widget_control flstid set_combobox_select 0 selectfile ENDIF ELSE selectfile 0 Text for computation yoff yoff 32 computation done on the files if keyword_set uvalue then txtvalue extractatt uvalue txtcmd numdessinin ELSE txtvalue varexp dummyid widget_text base value txtvalue uvalue name: txtcmd uname txtcmd editable yoffset yoff xsize 54 frame Calendar yoff yoff 40 currentcalendar fileparameters currentfile time_counter key_caltype fileparameters currentfile caltype fakecal fileparameters currentfile fakecal if keyword_set uvalue then begin dates extractatt uvalue dates numdessinin date1 date2jul dates 0 date2 date2jul dates 1 ENDIF basecalid widget_base base column 2 space 0 yoffset yoff uname basecal dummyid cw_calendar basecalid currentcalendar date1 FAKECAL fakecal uname calendar1 uvalue name: calendar1 frame dummyid cw_calendar basecalid currentcalendar date2 FAKECAL fakecal uname calendar2 uvalue name: calendar2 frame Domain yoff yoff 60 vargrid strupcase fileparameters currentfile listgrid selectvar IF vargrid EQ W then zgrid W ELSE zgrid T if keyword_set uvalue then boxzoom extractatt uvalue domaines numdessinin dummyid cw_domain base uname domain uvalue name: domain unzoom frame boxzoom boxzoom yoffset yoff xoffset 15 Plots specifications yoff yoff 230 speid cw_specifie base uname specifie uvalue name: specifie frame column forxxx yoffset yoff if keyword_set uvalue then BEGIN exextra extractatt uvalue exextra numdessinin IF n_elements exextra NE 0 THEN widget_control speid set_value exextra ENDIF drawing part if keyword_set separate then basegraph widget_base title xxx window group_leader base uvalue base ELSE basegraph base graphid widget_draw basegraph uname graph button_events retain 2 uvalue name: graph press:0 click:0 x: 0 0 y: 0 0 xoffset 350 1 keyword_set separate xsize windsize 0 ysize windsize 1 tooltip toto realize the widget widget_control base realize if keyword_set separate then begin widget_control basegraph realize xmanager xxx basegraph no_block endif if keyword_set uvalue then BEGIN We recopy the pointer uvalue in top_uvalue Beware we have to redefine completely top_value from variables pointed by uvalue Otherwise if we simply do top_value uvalue when we delete by uvalue and variables on which it point we also delete variables on which point top_value case 1 of keyword_set redraw :BEGIN top_uvalue uvalue widget_control base set_uvalue top_uvalue we find homedir homedir isadirectory io homedir title Bad definition of homedir We recuperae the list of instructions globalcommand extractatt top_uvalue globalcommand We complete by first and last lines of the program createpro globalcommand filename myuniquetmpdir xxx2ps pro KWDLIST NOERASE noerase POSTSCRIPT postscript PORTRAIT portrait LANDSCAPE landscape noerase END keyword_set restore :begin top_uvalue uvalue widget_control base set_uvalue top_uvalue widget_control graphid get_value win wshow win wset win tv image true widgets s state updatewidget base END ELSE:BEGIN top_uvalue ptrarr 2 29 allocate_heap FOR i 0 28 do top_uvalue 0 i uvalue 0 i FOR i 0 14 do top_uvalue 1 i uvalue 1 i FOR i 18 27 do top_uvalue 1 i uvalue 1 i numfile n_elements extractatt uvalue filelist top_uvalue 1 15 ptrarr numfile allocate_heap top_uvalue 1 16 ptrarr numfile allocate_heap top_uvalue 1 17 ptrarr numfile allocate_heap for i 0 numfile 1 do begin top_uvalue 1 15 i uvalue 1 15 i top_uvalue 1 16 i uvalue 1 16 i top_uvalue 1 17 i uvalue 1 17 i endfor top_uvalue 1 28 ptrarr nbredessin allocate_heap for i 0 nbredessin 1 do top_uvalue 1 28 i uvalue 1 28 i widget_control base set_uvalue top_uvalue Copy the screen of the widget of uvalue in top_value s one if keyword_set CallerWidId then begin widget_control extractatt uvalue graphid get_value win wshow win wset win image tvrd true widget_control graphid get_value win wshow win wset win tv image true ENDIF END endcase top_uvalue 1 findline top_uvalue graphid graphid ENDIF ELSE BEGIN Otherwise we will define all elements we will hook at the widget thanks to the top_value which is a pointer array with 2 columns: names and variables We initialize all these elements Variables concerning the widget in its generality if NOT keyword_set ex then ex nothing:0 variables se rapportant aux differents fichiers que l on peut lire variables specifiques a chaque dessin creation of the pointer we will hook at the widget top_uvalue ptrarr 2 29 allocate_heap variables refering to the widget top_uvalue 0 0 options top_uvalue 1 0 options top_uvalue 0 1 smallin top_uvalue 1 1 smallin top_uvalue 0 2 smallout top_uvalue 1 2 smallout top_uvalue 0 3 graphid top_uvalue 1 3 graphid top_uvalue 0 4 alreadyvector top_uvalue 1 4 1 top_uvalue 0 5 alreadyover top_uvalue 1 5 1 top_uvalue 0 6 alreadyread top_uvalue 1 6 1 top_uvalue 0 7 currentreadcmd top_uvalue 1 7 top_uvalue 0 8 globalcommand top_uvalue 1 8 top_uvalue 0 9 globaloldcommand top_uvalue 1 9 top_uvalue 0 10 no more used top_uvalue 1 10 9999 top_uvalue 0 11 noticebase top_uvalue 1 11 0l top_uvalue 0 12 extra top_uvalue 1 12 ex variables refering to different files we can read top_uvalue 0 13 currentfile top_uvalue 1 13 currentfile top_uvalue 0 14 filelist top_uvalue 1 14 filelist top_uvalue 0 15 fileparameters top_uvalue 1 15 fileparameters top_uvalue 0 16 readparameters top_uvalue 1 16 readparameters top_uvalue 0 17 meshparameters top_uvalue 1 17 meshparameters variables refering to different drawing we can do top_uvalue 0 18 penvs top_uvalue 1 18 replicate p nbredessin top_uvalue 0 19 xenvs top_uvalue 1 19 replicate x nbredessin top_uvalue 0 20 yenvs top_uvalue 1 20 replicate y nbredessin top_uvalue 0 21 nameprocedures top_uvalue 1 21 strarr nbredessin top_uvalue 0 22 types top_uvalue 1 22 strarr nbredessin top_uvalue 0 23 varinfo top_uvalue 1 23 strarr 2 nbredessin top_uvalue 0 24 domaines top_uvalue 1 24 fltarr 6 nbredessin top_uvalue 0 25 dates top_uvalue 1 25 lonarr 2 nbredessin top_uvalue 0 26 txtcmd top_uvalue 1 26 strarr nbredessin top_uvalue 0 27 optionsflag top_uvalue 1 27 flag top_uvalue 0 28 exextra top_uvalue 1 28 ptrarr nbredessin allocate_heap widget_control base set_uvalue top_uvalue createhistory base smallin ENDELSE xmanager xxx base no_block return end"); 374 a[372] = new Array("./Utilities/createfunc.html", "createfunc.pro", "", " file_comments write an IDL function compile it and execute it useful to avoid the use of execute param command in required a scalar string defining the result to be given back by the function see examples keyword FILENAMEIN in default for_createfunc pro name of the function to be created keyword KWDLIST in a vector string to specify a list of keywords that must be included in the function definition Warning: the string must start with a for example: KWDLIST TOTO toto keyword _EXTRA used to pass your keywords to the created function restrictions arguments can be given only through keywords ends the function name with pro if needed examples IDL print createfunc 3 2 filename test IDL print createfunc 3 two filename test IDL kwdlist two two two 2 history Sebastien Masson smasson lodyc jussieu fr May 2005 version Id: createfunc pro 136 2006 07 10 15:20:19Z pinsard FUNCTION createfunc command FILENAMEIN filenamein KWDLIST kwdlist _EXTRA ex compile_opt idl2 hidden strictarrsubs IF n_elements command NE 1 THEN stop define filename if needed if NOT keyword_set filenamein then filename for_createfunc pro ELSE filename filenamein get the name of the function not the name of the file containing the function shortfilename file_basename filename pro check if the directory exists dirname isadirectory file_dirname filename title Redefine shortfilename pro directory IF size dirname type NE 7 THEN return 1 filename dirname shortfilename pro create the file if NOT keyword_set kwdlist then kwdlist kwdlist kwdlist _EXTRA ex IF strmid kwdlist 0 1 NE THEN kwdlist kwdlist putfile filename function shortfilename kwdlist compile_opt idl2 hidden strictarrsubs res command return res end go in dirname directory cd dirname current old_dir compile it resolve_routine shortfilename is_function cd old_dir execute it res call_function shortfilename _EXTRA ex return res end"); 375 a[373] = new Array("./Utilities/createpro.html", "createpro.pro", "", " file_comments write an idl procedure compile it and execute it param command in required a string array defining the procedure to be created each element will be a line of the created procedure keyword FILENAMEIN in default for_createpro pro name of the procedure to be created keyword KWDLIST in a vector string to specify a list of keywords that must be included in the procedure definition Warning: the string must start with a for example: KWDLIST TOTO toto keyword KWDUSED obsolete please pass directly your keywords through _EXTRA keyword _EXTRA used to pass your keywords to the created procedure restrictions is not working with functions use createfunc instead arguments can be given only through keywords ends the procedure name with pro if needed examples IDL createpro print OK filename test IDL createpro if keyword_set ok then print OK else print No IDL filename test kwdlist ok ok IDL createpro if keyword_set ok then print OK else print No IDL filename test kwdlist ok ok ok history Sebastien Masson smasson lodyc jussieu fr cleaning new keywords: October 2005 Feb 2006: supress keyword kwdused and use call_procedure instead of execute version Id: createpro pro 136 2006 07 10 15:20:19Z pinsard PRO createpro command FILENAMEIN filenamein KWDLIST kwdlist KWDUSED kwdused _EXTRA ex compile_opt idl2 hidden strictarrsubs IF keyword_set kwdused THEN BEGIN dummy report keyword KWDUSED has been suppressed please pass directly your keywords through _extra see examples in createpro header return ENDIF define filename if needed if NOT keyword_set filenamein then filename for_createpro pro ELSE filename filenamein get the name of the procedure not the name of the file containing the procedure shortfilename file_basename filename pro check if the directory exists dirname isadirectory file_dirname filename title Redefine shortfilename pro directory IF size dirname type NE 7 THEN return filename dirname shortfilename pro create the file if NOT keyword_set kwdlist then kwdlist kwdlist kwdlist _extra ex kwdlist strtrim kwdlist 2 IF strmid kwdlist 0 1 NE THEN kwdlist kwdlist for i 0 n_elements command 1 do print command i putfile filename pro shortfilename kwdlist compile_opt idl2 hidden strictarrsubs command return end go in dirname directory cd dirname current old_dir compile it resolve_routine shortfilename cd old_dir execute it call_procedure shortfilename _extra ex return end"); 376 a[374] = new Array("./Utilities/def_myuniquetmpdir.html", "def_myuniquetmpdir.pro", "", " file_comments if needed define and create myuniquetmpdir common variable from cm_general and add it to path categories utilities examples IDL def_myuniquetmpdir uses cm_general history Sebastien Masson smasson lodyc jussieu fr June 2005 version Id: def_myuniquetmpdir pro 128 2006 07 06 14:32:02Z pinsard PRO def_myuniquetmpdir compile_opt idl2 strictarrsubs cm_general IF n_elements myuniquetmpdir EQ 0 THEN BEGIN define a new and unique directory in getenv IDL_TMPDIR by using systime 1 look for the login if we use unix system IF d name EQ X THEN spawn whoami login noshell ELSE login idl myuniquetmpdir file_search getenv IDL_TMPDIR mark_directory myuniquetmpdir myuniquetmpdir 0 login 0 strtrim long systime 1 1 create it file_mkdir myuniquetmpdir add it to path path path : expand_path myuniquetmpdir ENDIF return end"); 377 a[375] = new Array("./Utilities/demomode_compatibility.html", "demomode_compatibility.pro", "", " categories utilities uses cm_general version Id: demomode_compatibility pro 128 2006 07 06 14:32:02Z pinsard PRO demomode_compatibility compile_opt idl2 strictarrsubs cm_general 1 remove all cm_demomode_used pro found in path to_rm find cm_demomode_used IF to_rm 0 NE NOT FOUND THEN file_delete to_rm 2 copy oldcm_full _empty to myuniquetmpdir oldcm_used pro select which file should be copied to oldcm_used pro IF lmgr demo EQ 1 THEN BEGIN democm find cm_demomode file_copy democm myuniquetmpdir cm_demomode_used pro overwrite ENDIF ELSE BEGIN create an empty file close the journal if already open IF journal NE 0 THEN journal open a new one journal myuniquetmpdir cm_demomode_used pro close it it will be empty journal ENDELSE return END"); 378 a[376] = new Array("./Utilities/find.html", "find.pro", "", " file_comments based on file_search but it is possible to specify a set of possibles names and a different set of possibles directories names By default look for files included in path all file_search keywords can be used categories find a file param filein in required A scalar or array variable of string type containing file names to match Input names specifications may contain wildcard characters enabling them to match multiple files see file_search for more informations By default and if necessary find is looking for filename and also for filename completed with pro keyword FIRSTFOUND activate this keyword to stop looking for the file as soon as we found one keyword IODIRECTORY default path A scalar or array variable of string type containing directories names where we are looking for the file Different directories can be separated by path_sep search_path : on unix type machine as it is done to define path Note that if filename s dirname is different from this keyword is not taken into account keyword LOOKALLDIR activate to look for the file with a recursive search in iodir homedir path the DATA:TestsData directory if it exists keyword NOPRO activate to avoid the automatic search of filename completed with pro keyword ONLYPRO force to look only at file ending with pro keyword ONLYNC force to look only at file ending with nc keyword RECURSIVE performs recursive searching of directory hierarchies In a recursive search find looks recursively for any and all subdirectories in the file hierarchy rooted at the IODIRECTORY argument keyword REPERTOIRE obsolete keep for compatibility use directory keyword keyword UNIQUE activate to make sure that each element of the output vector is unique keyword _EXTRA used to pass your keywords returns A scalar or array variable of string type containing the name with the full path of the matching files If no files exist with names matching the input arguments find returns the scalar string : NOT FOUND examples IDL print find loadct usr local rsi idl_6 0 lib utilities xloadct pro usr local rsi idl_6 0 lib loadct pro IDL print find loadct iodir dir recursive usr local rsi idl_6 0 lib loadct pro usr local rsi idl_6 0 lib utilities xloadct pro IDL print find loadct pro usr local rsi idl_6 0 lib utilities xloadct pro usr local rsi idl_6 0 lib loadct pro IDL print find loadct nopro NOT FOUND IDL print find loadct iodir usr local rsi idl_6 0 lib usr local rsi idl_6 0 lib loadct pro IDL print find loadct iodir usr local rsi idl_6 0 lib test_write NOT FOUND IDL print find loadct iodir usr local rsi idl_6 0 lib recursive usr local rsi idl_6 0 lib loadct pro usr local rsi idl_6 0 lib utilities xloadct pro IDL print find mesh iodirectory iodir path Users sebastie DATA ORCA2 meshmaskORCA2closea nc Users sebastie IDL meshmaskclosesea pro Users sebastie IDL meshmaskclosesea pro Users sebastie SAXO_RD Obsolete meshlec pro usr local rsi idl_6 0 lib mesh_obj pro history Sebastien Masson smasson lodyc jussieu fr 28 4 1999 6 7 1999: compatibility mac and windows June 2005: Sebastien Masson: cleaning use for file_ functions version Id: find pro 136 2006 07 10 15:20:19Z pinsard FUNCTION find filein IODIRECTORY iodirectory RECURSIVE recursive REPERTOIRE repertoire NOPRO nopro ONLYPRO onlypro ONLYNC onlync UNIQUE unique FIRSTFOUND firstfound LOOKALLDIR LOOKALLDIR _extra ex define where we look for the file compile_opt idl2 strictarrsubs CASE 1 OF keyword_set lookalldir :BEGIN cm_general dirnames iodir homedir path tstdtadir file_dirname find find onlypro mark_directory tstdtadir file_search tstdtadir DATA TestsData 0 IF tstdtadir NE THEN dirnames tstdtadir dirnames END keyword_set iodirectory : dirnames iodirectory keyword_set repertoire : dirnames repertoire ELSE: dirnames path ENDCASE tmp dirnames dirnames dummy FOR i 0 n_elements tmp 1 DO dirnames dirnames strsplit tmp i path_sep search_path extract dirnames dirnames 1: fileout dummy FOR i 0 n_elements filein 1 DO BEGIN dir file_dirname filein i base file_basename filein i try to complete the file name with pro or nc if needed CASE 1 OF keyword_set onlypro :BEGIN promiss strpos base pro reverse_search promiss promiss strlen base 4 bad where promiss NE 0 OR strlen base LE 4 cnt IF cnt NE 0 THEN base bad base bad pro end keyword_set onlync :BEGIN ncmiss strpos base nc reverse_search ncmiss ncmiss strlen base 3 bad where ncmiss NE 0 OR strlen base LE 3 cnt IF cnt NE 0 THEN base bad base bad nc END ELSE:if strmid base 0 1 reverse_offset NE AND NOT keyword_set nopro THEN base base pro ENDCASE use dirnames only if dir eq IF dir EQ THEN BEGIN if keyword_set recursive THEN found file_search dirnames base _extra ex ELSE found file_search dirnames base _extra ex ENDIF ELSE found file_search dir base _extra ex IF found 0 NE THEN BEGIN IF keyword_set firstfound THEN BEGIN IF keyword_set unique THEN return found uniq found sort found ELSE return found ENDIF fileout fileout found ENDIF ENDFOR IF n_elements fileout EQ 1 THEN fileout NOT FOUND ELSE fileout fileout 1: IF n_elements fileout GT 1 THEN BEGIN IF keyword_set unique THEN fileout fileout uniq fileout sort fileout ENDIF ELSE fileout fileout 0 RETURN fileout END"); 379 a[377] = new Array("./Utilities/fitintobox.html", "fitintobox.pro", "", " file_comments Check that the input array has size and dimensions compatible with the domain that was defined with the previous call of domdef categories domain compatibility param sz in required param nx in required param ny in required param nz in required param jpi in required param jpj in required param jpk in required param jpt in required returns 1 history Sebastien Masson smasson lodyc jussieu fr 10 juin 2000 June 2005: S Masson rewrite all version Id: fitintobox pro 136 2006 07 10 15:20:19Z pinsard hidden FUNCTION err_mess sz jpi nx jpj ny jpk nz jpt compile_opt idl2 strictarrsubs IF n_elements sz EQ 1 THEN RETURN report Error: the vector size tostr sz is incompatible with the the domain dimensions jpi nx jpj ny jpk nz jpt strtrim jpi 1 strtrim nx 1 strtrim jpj 1 strtrim ny 1 strtrim jpk 1 strtrim nz 1 strtrim jpt 1 simple RETURN report Error: the array dimensions tostr sz are incompatible with the the domain dimensions jpi nx jpj ny jpk nz jpt strtrim jpi 1 strtrim nx 1 strtrim jpj 1 strtrim ny 1 strtrim jpk 1 strtrim nz 1 strtrim jpt 1 simple END categories domain compatibility param field in required an array or a structure that can be read by the function litchamp pro param nx in optional default define by grille pro param ny in optional default define by grille pro param nz in optional default define by grille pro param firstx in optional default define by grille pro param firsty in optional default define by grille pro param firstz in optional default define by grille pro param lastx in optional default define by grille pro param lasty in optional default define by grille pro param lastz in optional default define by grille pro keyword WDEPTH To specify that we are at W level returns an array with dimensions matching the domain or 1 if there is an error uses cm_4mesh uses cm_4cal examples IDL help fitintobox findgen jpi jpj FLOAT Array 41 3 IDL help fitintobox findgen jpi jpj 78 Error: the array dimensions 180 148 78 are incompatible with the the domain dimensions jpi nx jpj ny jpk nz jpt 180 41 148 3 31 31 1 INT 1 history Sebastien Masson smasson lodyc jussieu fr 10 juin 2000 June 2005: S Masson rewrite all version Id: fitintobox pro 136 2006 07 10 15:20:19Z pinsard FUNCTION fitintobox field nx ny nz firstx firsty firstz lastx lasty lastz WDEPTH wdepth include commons compile_opt idl2 strictarrsubs cm_4mesh cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF arr litchamp field IF n_params EQ 1 THEN grille 1 1 1 1 nx ny nz firstx firsty firstz lastx lasty lastz WDEPTH wdepth case according the number of dimensions of the array sz size arr case sz 0 of 0:BEGIN scalar return report Error: scalar value strtrim arr 1 simple END 1:BEGIN 1D arrays CASE 1 OF x arrays sz 1 EQ jpi :arr temporary arr firstx:lastx sz 1 EQ nx : y arrays sz 1 EQ jpj :arr temporary arr firsty:lasty sz 1 EQ ny : z arrays sz 1 EQ jpk :arr temporary arr firstz:lastz sz 1 EQ nz : t arrays sz 1 EQ jpt : ELSE:return err_mess sz 1 jpi nx jpj ny jpk nz jpt ENDCASE END 2:BEGIN 2D arrays CASE 1 OF xy arrays sz 1 EQ jpi AND sz 2 EQ jpj :arr temporary arr firstx:lastx firsty:lasty sz 1 EQ jpi AND sz 2 EQ ny :arr temporary arr firstx:lastx sz 1 EQ nx AND sz 2 EQ jpj :arr temporary arr firsty:lasty sz 1 EQ nx AND sz 2 EQ ny :arr temporary arr x y z arrays sz 1 EQ jpi AND ny EQ 1 AND sz 2 EQ jpk :arr temporary arr firstx:lastx firstz:lastz sz 1 EQ jpi AND ny EQ 1 AND sz 2 EQ nz :arr temporary arr firstx:lastx sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ jpk :arr temporary arr firstz:lastz sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz : x yz arrays nx EQ 1 AND sz 1 EQ jpj AND sz 2 EQ jpk :arr temporary arr firsty:lasty firstz:lastz nx EQ 1 AND sz 1 EQ jpj AND sz 2 EQ nz :arr temporary arr firsty:lasty nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ jpk :arr temporary arr firstz:lastz nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz : xt arrays sz 1 EQ jpi AND sz 2 EQ jpt:arr temporary arr firstx:lastx sz 1 EQ nx AND sz 2 EQ jpt: yt arrays sz 1 EQ jpj AND sz 2 EQ jpt:arr temporary arr firsty:lasty sz 1 EQ ny AND sz 2 EQ jpt: zt arrays sz 1 EQ jpk AND sz 2 EQ jpt:arr temporary arr firstz:lastz sz 1 EQ nz AND sz 2 EQ jpt: ELSE:return err_mess sz 1:2 jpi nx jpj ny jpk nz jpt ENDCASE END 3:BEGIN 3D arrays CASE 1 OF xyz arrays sz 1 EQ jpi AND sz 2 EQ jpj AND sz 3 EQ jpk :arr temporary arr firstx:lastx firsty:lasty firstz:lastz sz 1 EQ jpi AND sz 2 EQ ny AND sz 3 EQ jpk :arr temporary arr firstx:lastx firstz:lastz sz 1 EQ nx AND sz 2 EQ jpj AND sz 3 EQ jpk :arr temporary arr firsty:lasty firstz:lastz sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpk :arr temporary arr firstz:lastz sz 1 EQ jpi AND sz 2 EQ jpj AND sz 3 EQ nz :arr temporary arr firstx:lastx firsty:lasty sz 1 EQ jpi AND sz 2 EQ ny AND sz 3 EQ nz :arr temporary arr firstx:lastx sz 1 EQ nx AND sz 2 EQ jpj AND sz 3 EQ nz :arr temporary arr firsty:lasty sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz : xyt arrays sz 1 EQ jpi AND sz 2 EQ jpj AND sz 3 EQ jpt:arr temporary arr firstx:lastx firsty:lasty sz 1 EQ jpi AND sz 2 EQ ny AND sz 3 EQ jpt:arr temporary arr firstx:lastx sz 1 EQ nx AND sz 2 EQ jpj AND sz 3 EQ jpt:arr temporary arr firsty:lasty sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt: x yzt arrays nx EQ 1 AND sz 1 EQ jpj AND sz 2 EQ jpk AND sz 3 EQ jpt:arr temporary arr firsty:lasty firstz:lastz nx EQ 1 AND sz 1 EQ jpj AND sz 2 EQ nz AND sz 3 EQ jpt:arr temporary arr firsty:lasty nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ jpk AND sz 3 EQ jpt:arr temporary arr firstz:lastz nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt: x y zt arrays sz 1 EQ jpi AND ny EQ 1 AND sz 2 EQ jpk AND sz 3 EQ jpt:arr temporary arr firstx:lastx firstz:lastz sz 1 EQ jpi AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:arr temporary arr firstx:lastx sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ jpk AND sz 3 EQ jpt:arr temporary arr firstz:lastz sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt: ELSE:return err_mess sz 1:3 jpi nx jpj ny jpk nz jpt ENDCASE END 4:BEGIN 4D arrays CASE 1 OF xyzt arrays sz 1 EQ jpi AND sz 2 EQ jpj AND sz 3 EQ jpk AND sz 4 EQ jpt:arr temporary arr firstx:lastx firsty:lasty firstz:lastz sz 1 EQ jpi AND sz 2 EQ ny AND sz 3 EQ jpk AND sz 4 EQ jpt:arr temporary arr firstx:lastx firstz:lastz sz 1 EQ nx AND sz 2 EQ jpj AND sz 3 EQ jpk AND sz 4 EQ jpt:arr temporary arr firsty:lasty firstz:lastz sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpk AND sz 4 EQ jpt:arr temporary arr firstz:lastz sz 1 EQ jpi AND sz 2 EQ jpj AND sz 3 EQ nz AND sz 4 EQ jpt:arr temporary arr firstx:lastx firsty:lasty sz 1 EQ jpi AND sz 2 EQ ny AND sz 3 EQ nz AND sz 4 EQ jpt:arr temporary arr firstx:lastx sz 1 EQ nx AND sz 2 EQ jpj AND sz 3 EQ nz AND sz 4 EQ jpt:arr temporary arr firsty:lasty sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz AND sz 4 EQ jpt: ELSE:return err_mess sz 1:4 jpi nx jpj ny jpk nz jpt ENDCASE END ELSE:return report Error: fitintobox is managing arrays with a maximum of 4 dimensions simple ENDCASE return arr end"); 380 a[378] = new Array("./Utilities/isadirectory.html", "isadirectory.pro", "", " file_comments check if a directory exists and make sure that it ends with the directory separator mark categories io param directoryin in optional a proposed directory If neither dirname input parameter of IODIRECTORY keyword are defined the ask the user to choose a directory keyword IODIRECTORY a proposed directory keyword TITLE the title of the window keyword _EXTRA used to pass your keywords file_comments all dialog_pickfile keywords like filter can be used returns the directory name examples IDL print dir usr local rsi idl_6 0 IDL print isadirectory dir usr local rsi idl_6 0 IDL print isadirectory dir notgood history Sebastien Masson smasson lodyc jussieu fr June 28 2000 June 2005: Sebastien Masson: cleaning use for file_ functions version Id: isadirectory pro 136 2006 07 10 15:20:19Z pinsard FUNCTION isadirectory directoryin TITLE title IODIRECTORY iodirectory _extra ex compile_opt idl2 strictarrsubs CASE 1 OF size directoryin type 0 EQ 7:directory directoryin keyword_set iodirectory :directory iodirectory ELSE:directory directory that is not existing ENDCASE testfile file_test directory directory if directory doesn t exist we ask the user to provide a directory name IF total testfile NE n_elements directory THEN BEGIN IF NOT keyword_set title THEN title choose a directory FOR i 0 n_elements directory 1 DO BEGIN IF testfile i EQ 0 THEN BEGIN directory i dialog_pickfile directory title title must_exist _extra ex if directory i EQ THEN RETURN report check find directory canceled ENDIF ENDFOR ENDIF directory file_search directory mark_directory IF n_elements directory EQ 1 THEN RETURN directory 0 ELSE RETURN directory END"); 381 a[379] = new Array("./Utilities/isafile.html", "isafile.pro", "", " file_comments same as find pro except that as long as the file is NOT FOUND isafile calls dialog_pickfile to ask the user to select a file categories io param filein in optional a proposed name If neither filein input parameter of filename keyword are defined the ask the user to choose a file keyword FILENAME a proposed filename keyword IODIRECTORY a directory where we look for the file this keyword is taken into account only if the dirname of filein or filename is keyword NEW to specify that filename is a new file and that we should check only its path keyword ONLYPRO force to look only at file ending with pro keyword ONLYNC force to look only at file ending with nc keyword RECURSIVE performs recursive searching of directory hierarchies In a recursive search find looks recursively for any and all subdirectories in the file hierarchy rooted at the IODIRECTORY argument keyword _EXTRA used to pass your keywords file_comments all find file_search and dialog_pickfile keywords like title can be used returns the filename with its path examples IDL print isafile Users sebastie SAXO_RD Commons cm_4mesh pro Users sebastie SAXO_RD Commons cm_4mesh pro IDL print isafile cm_4mesh pro iodir Users sebastie SAXO_RD Commons Users sebastie SAXO_RD Commons cm_4mesh pro IDL print isafile cm_4mesh pro iodir path Users sebastie SAXO_RD Commons cm_4mesh pro IDL print isafile cm_4mesh pro iodir Users sebastie SAXO_RD recursive Users sebastie SAXO_RD Commons cm_4mesh pro IDL print isafile cm_4mesh pro iodir getenv HOME recursive Users sebastie SAXO_RD Commons cm_4mesh pro IDL print isafile fake_file pro history Sebastien Masson smasson lodyc jussieu fr 11 2 2000 June 2005: Sebastien Masson: cleaning use for file_ functions version Id: isafile pro 136 2006 07 10 15:20:19Z pinsard FUNCTION isafile filein FILENAME filename IODIRECTORY iodirectory NEW new RECURSIVE RECURSIVE ONLYPRO onlypro ONLYNC onlync _extra ex compile_opt idl2 strictarrsubs CASE 1 OF size filein type 0 EQ 7:fileout filein keyword_set filename :fileout filename 0 ELSE:fileout file that is not existing ENDCASE if size fileout type NE 7 THEN return 1 CASE 1 OF keyword_set onlypro : filter pro keyword_set onlync : filter nc else: filter ENDCASE basename file_basename fileout dirname file_dirname fileout should we redefine dirname if keyword_set iodirectory AND dirname EQ then dirname iodirectory if keyword_set new then return dirname path_sep basename fileout find basename iodirectory dirname recursive recursive unique firstfound ONLYPRO onlypro ONLYNC onlync _extra ex WHILE fileout 0 EQ NOT FOUND DO BEGIN fileout dialog_pickfile path dirname 0 filter filter _extra ex if fileout EQ THEN RETURN report check find file canceled check again everything basename file_basename fileout dirname file_dirname fileout check if the name of the dirname is ok dirname isadirectory dirname title choose a directory for the file basename if we cancel the check IF size dirname type NE 7 THEN return report check find file canceled fileout find basename iodirectory dirname recursive recursive unique firstfound ONLYPRO onlypro ONLYNC onlync _extra ex ENDWHILE RETURN fileout END"); 382 a[380] = new Array("./Utilities/linearequation.html", "linearequation.pro", "", " file_comments Calculate a linear equation of the type ax by c 0 thanks to coordinates of 2 points comment: we can have a table with pairs of points categories utilities param point1 in required This is the first point of the straight line s whose we want to calculate equation s param point2 in required This is the second point of the straight line s whose we want to calculate equation s There is 2 possibilities: 1 point is a complex or a table of complex where each element is the coordinates of the point 2 point is a table of real of dimension 2 number_of_straight_line For each row of the table we have coordinates of the point returns abc is a table of dimension 3 number_of_straight_line where for each line of the table we obtain the 3 parameters a b and c of the linear equation ax by c 0 examples IDL abc linearequation complex 1 2 3 4 IDL print abc 0 1 abc 1 2 abc 2 0 00000 history Sebastien Masson smasson lodyc jussieu fr 10 juin 2000 version Id: linearequation pro 136 2006 07 10 15:20:19Z pinsard FUNCTION linearequation point1 point2 compile_opt idl2 strictarrsubs if size point1 type EQ 6 OR size point1 type EQ 9 then begin x1 float point1 y1 imaginary point1 ENDIF ELSE BEGIN x1 float reform point1 0 y1 float reform point1 1 ENDELSE if size point2 type EQ 6 OR size point2 type EQ 9 then begin x2 float point2 y2 imaginary point2 ENDIF ELSE BEGIN x2 float reform point2 0 y2 float reform point2 1 ENDELSE vertical where x1 EQ x2 novertical where x1 NE x2 abc fltarr 3 n_elements x1 IF novertical 0 NE 1 then BEGIN y mx p nele n_elements novertical m y2 novertical y1 novertical x2 novertical x1 novertical p x2 novertical y1 novertical y2 novertical x1 novertical x2 novertical x1 novertical abc novertical reform m 1 nele replicate 1 1 nele reform p 1 nele ENDIF IF vertical 0 NE 1 then BEGIN x ny p nele n_elements vertical n x2 vertical x1 vertical y2 vertical y1 vertical p y2 vertical x1 vertical x2 vertical y1 vertical y2 vertical y1 vertical abc vertical replicate 1 1 nele reform n 1 nele reform p 1 nele ENDIF return abc end"); 383 a[381] = new Array("./Utilities/lineintersection.html", "lineintersection.pro", "", " file_comments Calculate coordinates of the intersection between 2 straight lines or of a succession of 2 straight lines categories utilities param abc1 in required is the first table of dimension 3 number_of_pairs_of_straight_lines whose each line contain the 3 parameters a b and c of the first linear equation of the type ax by c 0 param abc2 in required is second table of dimension 3 number_of_pairs_of_straight_lines whose each line contain the 3 parameters a b and c of the second linear equation of the type ax by c 0 keyword FLOAT To return the output as a table of real numbers instead of vectors of complex by default returns 2 possibilities: 1 by default: it is a vector of complex whose each element is the coordinates of the intersection point of a pair of straight lines 2 if FLOAT is activated it is a table of reals of dimension 2 number_of_pairs_of_straight_lines whose each row is the coordinates of the intersection point of a pair of straight line restrictions If the 2 straight line are parallel we return coordinates values f_nan values f_nan restrictions Beware of the precision of the machine which make that calculated coordinates may not exactly verify equations of the pair of straight lines examples IDL abc1 linearequation complex 1 2 3 4 IDL abc2 linearequation complex 1 2 8 15 IDL print lineintersection abc1 abc2 1 00000 2 00000 IDL print lineintersection abc1 abc2 float 1 00000 2 00000 history Sebastien Masson smasson lodyc jussieu fr 10 juin 2000 version Id: lineintersection pro 136 2006 07 10 15:20:19Z pinsard FUNCTION lineintersection abc1 abc2 FLOAT float compile_opt idl2 strictarrsubs a1 float reform abc1 0 b1 float reform abc1 1 c1 float reform abc1 2 a2 float reform abc2 0 b2 float reform abc2 1 c2 float reform abc2 2 determinant a1 b2 a2 b1 nan where determinant EQ 0 if nan 0 NE 1 THEN determinant values f_nan x b1 c2 c1 b2 determinant y c1 a2 a1 c2 determinant if keyword_set float then begin npts n_elements x res reform x 1 npts over reform y 1 npts over ENDIF ELSE res complex x y return res end"); 384 a[382] = new Array("./Utilities/protype.html", "protype.pro", "", " file_comments test is a pro file corresponds to an IDL procedure function or batch file categories utilities param file in A scalar of string type the name of the pro file to be tested if necessary the input name is completed with pro and its path found in path returns A scalar of string type: proc func or batch examples IDL print protype protype func IDL print protype protype pro func IDL print protype init batch IDL print protype plt proc history Sebastien Masson smasson lodyc jussieu fr Feb 2006 version Id: protype pro 136 2006 07 10 15:20:19Z pinsard FUNCTION protype file compile_opt idl2 strictarrsubs filepro find file 0 onlypro firstfound 0 if filepro EQ NOT FOUND then return 1 name file_basename filepro pro allines getfile filepro CASE 1 OF this is a procedure max stregex allines pro name fold_case boolean :RETURN proc this is a function max stregex allines function name fold_case boolean :RETURN func this is an IDL batch file ELSE:RETURN batch ENDCASE RETURN 1 END"); 385 a[383] = new Array("./Utilities/pwd.html", "pwd.pro", "", " file_comments print the current directory categories like unix function history Sebastien Masson smasson lodyc jussieu fr version Id: pwd pro 136 2006 07 10 15:20:19Z pinsard PRO pwd compile_opt idl2 strictarrsubs cd current pwd print pwd return end"); 386 a[384] = new Array("./Utilities/report.html", "report.pro", "", " file_comments Like dialog_message pro if there is already some widget active or like message pro if there is not any widget active To ask a question whose answer is not yes no use xquestion param text in required one string or one vector of string Si le string ne comporte qu un element on cherche les eventuels characteres de retour a la ligne: C If text is set to an array of strings each array element is displayed as a separate line of text keyword SIMPLE activate to print only the message without the name and the line of the routine defined by calling routine_name keyword _extra used to pass keywords from dialog_message pro and message pro keyword PARENT same as DIALOG_PARENT de dialog_message pro keyword QUESTION default Warning Set this keyword to create a Question dialog keyword DEFAULT_NO default Yes Set this keyword to make the No button the default selection for Question dialog keyword SIMPLE Activate to print the error message without printing the routine name with its full path returns 1 if the keyword QUESTION is not activated If the keyword is activated return 1 for yes and 0 for no examples If there is not any widget activated: IDL help report toto tata MAIN : toto tata INT 1 IDL help report does it works question does it works y n default answer is y BYTE 1 IDL help report question1: C does it works question question1: does it works y n default answer is y BYTE 1 If widgets are already activated it is the same thing but with widgets history Sebastien Masson smasson lodyc jussieu fr 21 10 1999 version Id: report pro 136 2006 07 10 15:20:19Z pinsard FUNCTION report text DEFAULT_NO default_no PARENT parent QUESTION question SIMPLE simple _extra ex compile_opt idl2 strictarrsubs res 1 we separate the text in different lines separated by C if it is not already done if n_elements text EQ 1 then text str_sep text C trim there is some widgets activated it is easy we call dialog_massage if widget_info managed 0 NE 0 then BEGIN res dialog_message text dialog_parent parent QUESTION question title routine_name 1 DEFAULT_NO default_no _extra ex if keyword_set question THEN res res EQ Yes ELSE res 1 ENDIF ELSE BEGIN there is not any widget activated do we ask a question if keyword_set question then BEGIN what i sthe answer by default if keyword_set default_no then answer n ELSE answer y default_answer answer if n_elements text GT 1 THEN for i 0 n_elements text 2 do print text i read text n_elements text 1 y n default answer is default_answer answer answer strlowcase answer if the answer is not appropriated while answer NE and answer NE y and answer NE n do begin read text n_elements text 1 y n default answer is default_answer answer answer strlowcase answer ENDWHILE we adjust res in function of th answer case answer of :res default_answer EQ y y :res 1 n :res 0 endcase endif ELSE BEGIN If we do not ask any question we just make a print IF keyword_set simple THEN prefix ELSE prefix routine_name 1 : if n_elements text GT 1 THEN for i 0 n_elements text 2 do print prefix text i print prefix text n_elements text 1 ENDELSE ENDELSE return res end"); 387 a[385] = new Array("./Utilities/routine_name.html", "routine_name.pro", "", " file_comments Give us the name of the routine procedure or function where we are categories utilities param pilingnum in optional A whole number which give us how many level we have to reascend in the piling up of routines and subroutines to find the looked for routine returns a string giving either the full name of the routine with the path or MAIN restrictions This function use the keyword OUTPUT in help pro and it is specified in the online help that the return syntax of this word can change in function of the version of the code This version works with IDL 5 2 examples IDL print routine_name usr1 com smasson IDL_RD UTILITAIRE report pro IDL print routine_name 1 usr1 com smasson IDL_RD PLOTS DIVERS determineminmax pro IDL print routine_name 2 usr1 com smasson IDL_RD PLOTS DESSINE plt pro IDL print routine_name 3 MAIN IDL print routine_name 4 MAIN history Sebastien Masson smasson lodyc jussieu fr 21 10 1999 version Id: routine_name pro 136 2006 07 10 15:20:19Z pinsard FUNCTION routine_name pilingnum compile_opt idl2 strictarrsubs help traceback output name name strtrim name 1 we remove blanks at the beginning of lines and we put elements of the vector stuck ones with each others to make an unique string allnames for i 0 n_elements name 1 do allnames allnames name i name str_sep allnames we cut it out again name strtrim name 2 we remouve blanks in front of and behind name strcompress name we compress blanks we do not hold back the two first elements who are a blanck and the line concerning routine_name name name 2: n_elements name 1 we choose the line which concern us if NOT keyword_set pilingnum then pilingnum 0 if pilingnum GE n_elements name then return MAIN name name pilingnum if strpos name MAIN NE 1 then return MAIN name str_sep name if n_elements name LT 3 then name name 0 ELSE name L name 1 name 2 return name end"); 388 a[386] = new Array("./Utilities/testvar.html", "testvar.pro", "", " file_comments A kind of keyword_set but when the value exist it send it back categories utlities keyword var any kind of returns 0 if the variable does not exist examples IDL print testvar var toto 0 IDL print testvar var toto toto history Sebastien Masson smasson lodyc jussieu fr 14 12 1999 version Id: testvar pro 136 2006 07 10 15:20:19Z pinsard FUNCTION testvar var var compile_opt idl2 strictarrsubs if keyword_set var then return var ELSE return 0 end"); 389 a[387] = new Array("./Utilities/text_box.html", "text_box.pro", "", " file_comments This procedure writes a short text message within a box shaped area in a graphics window The message may be split at word boundaries into several lines and the character size and orientation may be adjusted for the text to fit within the box param TEXT in required ASCII text string containing the message keyword pos 4 element vector specifying the box position and size pos 0 pos 1 specify the lower left corner coordinate pos 2 pos 3 specify the upper right corner coordinate data window normalized coordinates are use keyword fg_color color of box and legend titles default 0 keyword bg_color background color Setting BG_COLOR erases the area covered by the text box filling it with color BG_COLOR prior to writing the text If both BG_COLOR and p color are zero then the background color is reset to 255 to gaurantee a readability keyword right if set right justify text keyword center if set center the text keyword vert_space default 1 5 vertical spacing of lines in units of character height keyword _EXTRA used to pass your keyword keyword box activate to show the box on graphics window history Paul Ricchiazzi 7Jul93 Institute for Computational Earth System Science University of California Santa Barbara version Id: text_box pro 136 2006 07 10 15:20:19Z pinsard PRO text_box text pos pos fg_color fg_color bg_color bg_color center center right right box box vert_space vert_space _EXTRA ex compile_opt idl2 strictarrsubs ON_ERROR 2 Check the number of parameters justify 1 if keyword_set right ne 0 then justify 1 if keyword_set center ne 0 then justify 0 if keyword_set vert_space eq 0 then vert_space 1 5 IF n_elements text eq 0 then message must specify text nnx x window d x_vsize nny y window d y_vsize nnx 0 1 d x_vsize nny 0 1 d y_vsize if n_elements pos eq 0 then begin box_cursor xx1 yy1 nx ny xx2 xx1 nx yy2 yy1 ny pos xx1 nnx 0 nnx 1 nnx 0 yy1 nny 0 nny 1 nny 0 xx2 nnx 0 nnx 1 nnx 0 yy2 nny 0 nny 1 nny 0 posstring string form a 4 f5 2 a pos pos 0 pos 1 pos 2 pos 3 print strcompress posstring remove_all endif else begin xx1 nnx 0 pos 0 nnx 1 nnx 0 xx2 nnx 0 pos 2 nnx 1 nnx 0 yy1 nny 0 pos 1 nny 1 nnx 0 yy2 nny 0 pos 3 nny 1 nnx 0 endelse calculate the height and width of the box in characters width xx2 xx1 d x_ch_size height yy2 yy1 d y_ch_size decompose the message into words words str_sep text print f 20a words nwords n_elements words wordlen lenstr words d x_vsize blanklen lenstr d x_vsize maxcharsize xx2 xx1 4 blanklen max wordlen charsize 1 lpnt intarr nwords nomore 0 ntries 0 repeat begin ntries ntries 1 if ntries gt 20 then message Can not fit message into box ychsiz vert_space d y_ch_size charsize wlen wordlen charsize blen blanklen charsize n_lines fix yy2 yy1 ychsiz 1 sum 0 ilines 0 print f 8a8 charsz i ilines n_lines lpnt wlen sum xwdth for i 0 nwords 1 do begin sum sum wlen i blen if sum 3 blen gt xx2 xx1 then begin ilines ilines 1 sum wlen i blen endif lpnt i ilines print f f8 2 4i8 3f8 2 charsize i ilines n_lines lpnt i wlen i blen sum 3 blen xx2 xx1 endfor case 1 of ilines 1 lt n_lines: if charsize 1 1 gt maxcharsize then vert_space yy2 yy1 n_lines 1 d y_ch_size charsize else charsize charsize 1 1 ilines 1 eq n_lines: nomore 1 ilines 1 gt n_lines: charsize charsize 9 endcase endrep until nomore lines strarr n_lines maxlen 0 for i 0 n_lines 1 do begin ii where lpnt eq i nc maxlen total wlen ii nc blen maxlen lines i string f 200a words ii print i words ii print i lines i endfor align 5 1 justify case justify of 1:xx xx1 5 xx2 xx1 maxlen 0:xx 0 5 xx1 xx2 1:xx xx2 5 xx2 xx1 maxlen endcase dy d y_ch_size charsize vert_space yy yy2 0 5 dy xbox xx1 xx2 xx2 xx1 xx1 ybox yy1 yy1 yy2 yy2 yy1 if n_elements bg_color ne 0 then begin if p color eq 0 and bg_color eq 0 then bgc 255 else bgc bg_color polyfill xbox ybox color bgc device endif if n_elements fg_color eq 0 then color 0 else color fg_color for i_line 0 n_lines 1 do begin yy yy dy print xx yy lines i_line charsize xyouts xx yy lines i_line device charsize charsize alignment align color color font 1 _extra ex endfor if keyword_set box then plots xbox ybox color color device return end "); 390 a[388] = new Array("./Utilities/undefine.html", "undefine.pro", "", " file_comments erase a variable same thing that delvar but usable in a program and usable for one variable simultaneously categories utilities param varname in required The name of the variable we want erase examples IDL a 1 IDL undefine a Compiled module: UNDEFINE IDL help a A UNDEFINED history trouve sur la page web de D Fanning http: www dfanning com : QUESTION: How do I make an IDL variable have a type undefined ANSWER: At the main IDL level you can use the IDL procedure DELVAR to delete an IDL variable and make it undefined Inside of procedures and functions I use this little program named UNDEFINE that I got from Andrew Cool at the DSTO High Frequency Radar Division in Adelaide Australia version Id: undefine pro 136 2006 07 10 15:20:19Z pinsard PRO UNDEFINE varname compile_opt idl2 strictarrsubs tempvar SIZE TEMPORARY varname END "); 391 a[389] = new Array("./Utilities/xfile.html", "xfile.pro", "", " file_comments display in a widget an ASCII file It is the same thing that xdisplayfile but here we use it to display the content of a procedure or of a function even if it is not in the current directory thanks to the path categories utilities param filename in required It is the name of the procedure or of the function we want to display with or without pro at the end keyword _extra used to pass your keywords examples xfile plt history Sebastien Masson smasson lodyc jussieu fr 7 1 99 6 7 1999: compatibility mac and windows version Id: xfile pro 136 2006 07 10 15:20:19Z pinsard PRO xfile filename _extra ex compile_opt idl2 strictarrsubs pfile strlowcase filename we have to find the full name if strpos pfile pro lt 0 then pfile pfile pro thisOS strupcase strmid version os_family 0 3 CASE thisOS of MAC :BEGIN sep : pathsep end WIN :BEGIN sep pathsep end ELSE: BEGIN sep pathsep : end ENDCASE cd current current if strpos pfile sep lt 0 then BEGIN if rstrpos current sep NE strlen current 1 then current current sep multipath str_sep path pathsep if rstrpos multipath 0 sep NE strlen multipath 0 1 then multipath multipath sep pfile current multipath pfile ENDIF i 0 repeat begin res findfile pfile i i i 1 endrep until res 0 NE OR i EQ n_elements pfile if res 0 NE then BEGIN we open the file in a widget xdisplayfile pfile i 1 _extra ex ENDIF ELSE ras report le fichier demande n existe pas return end"); 392 a[390] = new Array("./Utilities/xhelp.html", "xhelp.pro", "", " file_comments Display an IDL procedure header using widgets and the widget manager categories Widgets param Filename in required A scalar string that contains the filename of the file to display If FILENAME does not include a complete path specification xhelp will search for the file in the current working directory and then each of the directories listed in PATH environment variable The pro file suffix will be appended if it is not supplied keyword _extra used to pass your keywords restrictions Triggers the XMANAGER if it is not already in use examples Open a file and create a widget to display its contents history Written By Steve Richards December 1990 Graceful error recovery DMS Feb 1992 Modified to extract pro documentation headers PJR ESRG mar94 Paul Ricchiazzi jun93 Institute for Computational Earth System Science University of California Santa Barbara 7 1 99 : legeres mofification par Sebastien Masson : utilisation de xdisplayfile de findfile et de _extra 6 7 1999: compatibility mac and windows version Id: xhelp pro 141 2006 07 21 09:17:25Z theetten PRO xhelp filename _extra ex compile_opt idl2 strictarrsubs Are we sure filename is a string cquoidonc size filename type if cquoidonc NE 7 then begin ras report Input parameter must be a string and not a size filename tname return endif We have to find the full name pfile FILENAME if strpos pfile pro lt 0 then pfile pfile pro thisOS strupcase strmid version os_family 0 3 CASE thisOS of MAC :BEGIN sep : pathsep end WIN :BEGIN sep pathsep end ELSE: BEGIN sep pathsep : end ENDCASE cd current current if strpos pfile sep lt 0 then BEGIN if rstrpos current sep NE strlen current 1 then current current sep multipath str_sep path pathsep if rstrpos multipath 0 sep NE strlen multipath 0 1 then multipath multipath sep pfile current multipath pfile ENDIF We test each possible name to find where the file is nfile n_elements pfile n 0 repeat begin res findfile pfile n n n 1 endrep until res 0 NE OR n EQ n_elements pfile if res 0 NE then BEGIN openr unit pfile n 1 get_lun opening of the file we select the heading piece a strarr 1000 Maximum of lines xsize 0 i 0 c readon 0 while not eof unit do begin readf unit c if strpos c eq 0 then readon 0 if readon then BEGIN dum where byte c eq 9b ntab count tab characters xsize xsize strlen c 8 ntab a i strmid c 1 200 i i 1 endif if strpos c eq 0 then readon 1 endwhile if i EQ 0 then ras report le programme a etait mal ecrit il n y a pas d en tete utiliser xfile pro ELSE BEGIN a a 0:i 1 we wrote the a s content in a widget xdisplayfile toto text a title pfile n 1 _extra ex ENDELSE FREE_LUN unit free the file unit ENDIF ELSE ras report le fichier demande n existe pas return end "); 393 a[391] = new Array("./buildinit.html", "buildinit.pro", "", " NAME: PURPOSE: CATEGORY: CALLING SEQUENCE: INPUTS: OPTIONAL INPUTS: KEYWORD PARAMETERS: OUTPUTS: OPTIONAL OUTPUTS: COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: PROCEDURE: EXAMPLE: MODIFICATION HISTORY: slightly mofified version of cw_field FUNCTION CW_FIELD2 Parent COLUMN Column ROW Row EVENT_FUNC efun FLOATING Float INTEGER Int LONG Long STRING String FONT LabelFont FRAME Frame TITLE Title UVALUE UValue VALUE TextValueIn RETURN_EVENTS ReturnEvents ALL_EVENTS AllUpdates FIELDFONT FieldFont NOEDIT NoEdit TEXT_FRAME Text_Frame XSIZE XSize YSIZE YSize UNAME uname FLOOR vmin CEILING vmax compile_opt idl2 strictarrsubs resolve_routine cw_field compile_full_file is_function Examine our keyword list and set default values for keywords that are not explicitly set Column KEYWORD_SET Column Row 1 Column AllEvents 1 KEYWORD_SET NoEdit Enum Update None All CRonly Update 0 IF KEYWORD_SET AllUpdates THEN Update 1 IF KEYWORD_SET ReturnEvents THEN Update 2 IF N_ELEMENTS efun LE 0 THEN efun IF N_ELEMENTS Title EQ 0 THEN Title Input Field: TextValue N_ELEMENTS TextValueIn gt 0 TextValueIn : Convert non string values to strings if SIZE TextValue TNAME ne STRING then TextValue STRTRIM TextValue 2 IF N_ELEMENTS YSize EQ 0 THEN YSize 1 IF N_ELEMENTS uname EQ 0 THEN uname CW_FIELD_UNAME Type 0 string is default IF KEYWORD_SET Float THEN Type 1 IF KEYWORD_SET Int THEN Type 2 IF KEYWORD_SET Long THEN Type 3 Don t allow multiline non string widgets if Type ne 0 then YSize 1 YSize YSize 1 Build Widget Base WIDGET_BASE Parent ROW Row COLUMN Column UVALUE UValue EVENT_FUNC CW_FIELD_EVENT PRO_SET_VALUE CW_FIELD_SET FUNC_GET_VALUE CW_FIELD_GET FRAME Frame UNAME uname FOR i 0 n_elements title 1 DO Label WIDGET_LABEL Base VALUE Title i FONT LabelFont UNAME uname _LABEL align_left Text WIDGET_TEXT Base VALUE TextValue XSIZE XSize YSIZE YSize FONT FieldFont ALL_EVENTS AllEvents EDITABLE AllEvents AND TYPE EQ 0 FRAME Text_Frame UNAME uname _TEXT NO_ECHO AllEvents AND TYPE NE 0 Save our internal state in the first child widget State efun: efun TextId:Text Title:Title Update:Update Type:Type WIDGET_CONTROL WIDGET_INFO Base CHILD SET_UVALUE State NO_COPY RETURN Base END PRO printerdef_event event get back the ids of the cw_field widgets compile_opt idl2 strictarrsubs widget_control event id get_uvalue cwids IF size cwids n_dimensions EQ 1 THEN cwids reform cwids 3 1 help cwids dims size cwids dimensions help dims print dims results strarr dims FOR i 0 dims 1 1 DO BEGIN widget_control cwids 0 i get_value res results 0 i res widget_control cwids 1 i get_value res results 1 i res widget_control cwids 2 i get_value res results 2 i res ENDFOR nothing where results EQ count IF count NE 0 THEN BEGIN nothing dialog_message Some of the text box are still empty dialog_parent event top information return ENDIF now we give the result to buildinit pro by using the pointer uvalue widget_control event top get_uvalue ptresult ptresult temporary results we destroy the widget widget_control event top destroy RETURN END PRO papsize_event event get back the ids of the cw_field widgets compile_opt idl2 strictarrsubs widget_control event id get_uvalue uvalue IF uvalue 0 NE ok THEN return idist widget_info event top find_by_uname list id widget_info idist list_select widget_control idist get_uvalue selected selected selected id selected strsplit selected extract now we give the result to buildinit pro by using the pointer uvalue widget_control event top get_uvalue ptresult ptresult float selected 3 float selected 4 we destroy the widget widget_control event top destroy RETURN END PRO xask_event event now we give the answer to buildinit pro by using the pointer uvalue compile_opt idl2 strictarrsubs widget_control event top get_uvalue ptranswer ptranswer event value we destroy the widget widget_control event top destroy RETURN END FUNCTION xask _extra ex compile_opt idl2 strictarrsubs base widget_base field cw_field2 base frame return_events column _extra ex ptranswer ptr_new allocate_heap we realize the widget and wait for an answer widget_control base realize set_uvalue ptranswer xmanager xask base we get the answer answer ptranswer we freeing the pointer ptr_free ptranswer RETURN answer END FUNCTION getdir title title nomark nomark nowrite nowrite compile_opt idl2 strictarrsubs REPEAT BEGIN dir dialog_pickfile directory must_exist title title make sure dir is ok check read write access and directory separator mark dir file_search dir test_directory test_read test_write 1 keyword_set nowrite mark_directory 1 keyword_set nomark dir dir 0 ENDREP UNTIL dir NE RETURN dir END PRO buildinit compile_opt idl2 strictarrsubs IF fix strmid version release 0 1 LT 6 THEN BEGIN print print ERROR print print This version of SAXO needs at least IDL version 6 0 print print ERROR print return ENDIF IF lmgr demo EQ 1 THEN BEGIN print impossible to use buildinit in demo mode return ENDIF init This is the initialisation file it defines the path and the defaut values of some of the common variables this is supposed to speed up IDL a fltarr 1000 1000 100 a 0 path definition define myIDL directory myIDL getdir title Select the home directory my IDL nomark define SAXO directory saxodir getdir title Select SAXO directory nomark nowrite define the path init init path expand_path myIDL : expand_path saxodir : expand_path dir should we keep the compatibility with the old version yes dialog_message shall we keep the compatibility with the old version question default_no yes strlowcase yes init init compatibility with the old version keep_compatibility strtrim fix yes EQ yes 2 define all the commons init init define all the commons all_cm define default directories init init define default directories homedir isadirectory myIDL title Select the default HOME directory iodir getdir title Select the default IO directory init init iodir isadirectory iodir title Select the default IO directory psdir getdir title Select the default postscripts directory init init psdir isadirectory psdir title Select the default postscripts directory imagedir getdir title Select the default images directory init init imagedir isadirectory imagedir title Select the default images directory animdir getdir title Select the default animations directory init init animdir isadirectory animdir title Select the default animations directory number of printer ptnumb xask title Number of accessible printers value 0 long define all the printer parameters init init define printer parameters IF ptnumb NE 0 THEN BEGIN base widget_base column frame cwids lonarr 3 ptnumb FOR i 0 ptnumb 1 DO BEGIN subbase widget_base base row cwids 0 i cw_field subbase string Title printer_human_names strtrim i 2 cwids 1 i cw_field subbase string Title printer_machine_names strtrim i 2 cwids 2 i cw_field subbase string value lpr P Title print_command strtrim i 2 ENDFOR trash widget_button base value ok uvalue cwids ptresult ptr_new allocate_heap we realize the widget and wait for an answer widget_control base realize set_uvalue ptresult xmanager printerdef base init init printer_human_names strarr strtrim ptnumb 2 printer_machine_names strarr strtrim ptnumb 2 print_command strarr strtrim ptnumb 2 FOR i 0 ptnumb 1 DO BEGIN init init printer_human_names strtrim i 2 ptresult 0 i printer_machine_names strtrim i 2 ptresult 1 i print_command strtrim i 2 ptresult 2 i ENDFOR we freeing the pointer ptr_free ptresult ENDIF ELSE BEGIN init init printer_human_names printer_machine_names print_command ENDELSE Colors init init colors device decomposed 0 device retain 2 default color tables loadct get_names names ntables 40 title Choose the default color table the following lines come from loadct procedure nlines ntables 2 3 of lines to print nend nlines nlines 3 ntables for i 0 nend 1 do Print each line title title string format i2 a17 3x i2 a17 3x i2 a17 i names i i nlines names i nlines i 2 nlines xask title title value 39 long xask title title value 0 long 2 init init archive_ps strtrim archive_ps 2 end of the part that should be modified by the users if needed keep compatibility with the old version updateold filename xask title name of the init file written in homedir: myIDL value init pro string journal myIDL filename FOR i 0 n_elements init 1 DO journal init i journal RETURN END"); 254 a[252] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltt.html", "pltt.pro", "", " file_comments Trace hovmoller graphs: xt yt zt t categories Graphics param TAB in required The field whose we want to make the hovmoller map can be 2 kind of thing: 1 An array which can be: 3d or 4d: array xt yt zt t The last component is the time In this case the array will pass in grossemoyenne to be averaged and become an 1d or 2d array 2d: If the array is already 2d it is not modified beware lands must be masked at the value valmask and nevertheless type must be specified to we know of which trace it is about To have a correct caption respecify the xctraction zone via BOXZOOM 1d: only for traces of the t type Nevertheless type must be specified to we know of which trace it is about To have a correct caption respecify the xctraction zone via BOXZOOM 2 a structure respecting all criterions specified by litchamp pro See IDL xhelp litchamp The array contained in the structure respecting criterions of case 1 PARAM: MAX: valeur maximum que l on veut prendre en compte dans le trace des contours Par defaut on prend le max de tableau sur les pts mer MIN: valeur minimum que l on veut prendre en compte dans le trace des contours Par defaut on prend le min de tableau sur les pts mer DATMIN: c est la borne inf de l axe temporel c est un longinteger de la forme yyyymmdd ou bien yymmdd DATMAX: c est la borne max de l axe temporel c est un longinteger de la forme yyyymmdd ou bien yymmdd keyword BOXZOOM Vector indicating the geographique zone 3d on which the extraction of the field must be done to do the hovmoeller If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom vert1 vert2 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 vert1 vert2 are global variables defined at the last domdef keyword CONTINTERVALLE When CONTOUR is activated it is the value between 2 isolines traced by a trait So it can be different from the one specified by INTERVALLE which in this case does not control colored isolines in color anymore If there is noone specified min we choose a contour min which goes well with the specified interval If this keyword is not specified we trace 20 isolines from the min to the max keyword CONTLABEL It is an integer n When CONTOUR is actvated if n is different of 0 choose the label type corresponding to n cases for the traced by a traitisolines To specify the type of label of the colored contour use LABEL keyword CONTMAX When CONTOUR is activated max value we want to consider in the isoline traced by a trait s line By default we take the max on ocean points of the array passed in the keyword CONTOUR keyword CONTMIN When CONTOUR is activated min value we want to consider in the isoline traced by a trait s line By default we take the min on ocean points of the array passed in the keyword CONTOUR keyword CONTNLEVEL When CONTOUR is activated it is the numbre of contours traced by a trait for drawing active if CONTLABEL 0 by default 20 keyword CONTOUR If we want to trace contours of a different field than the one whose we have the colored drawing by examlpe E P in color and QSR in contours It must be a field respecting same caracteristics than the argument number one of pltt keyword ENDPOINTS keyword specifing that we want to make a vertical cut in diagonal Then coorinated of extremities of these one are difined by the 4 elements of the vector ENDPOINTS: x1 y1 x2 y2 which are coordinates keyword EXCHANGE_XY Allows to invert axes keyword FILTER Apply a slippery average of width FILTER keyword INTERVALLE Value of an internal between to isoline If there is none specified min we choose a min contour which goes well with the specified interval If this keyword is not specified we trace 20 isoline from the min to the max Comment: When CONTOUR is activated INTERVALLE only specify the interval between 2 colored isoline To specify the interval between 2 isolines traced by a trait use CONTINTERVALLE keyword INV Invert the color vector used to color the graph without use the black the white and the used palette keyword LABEL It is an integer n If n different of 0 it choose the label s type corresponding to cases n cf label pro Comment: When CONTOUR is activated it only specify the label s type for colored isolines For tese one traced by a trait use CONTLABEL keyword COL1d OBSOLETE Color number when we make a trace 1d by default 0 It is better to use the keyword COLOR used by plot keyword MAXIN to specify the max value we want to plot with a keyword instead of with the input parameter max If max is defined by both parameter and keyword the keyword is retained keyword MININ to specify the min value we want to plot with a keyword instead of with the input parameter min If min is defined by both parameter and keyword the keyword is retained keyword NLEVEL Number of contour to draw by default 20 active if LABEL 0 or is not specified keyword CONTNLEVEL When CONTOUR is activated it is the numbre of contours traced by a trait for drawing active if CONTLABEL 0 by default 20 keyword OV1D Allows to overprint a 1d curve over a precedent 1d drawing keyword OVERPLOT To make a plot over an other one Comment: Contrarily to the use of CONTOUR or VECTEUR the use of this keyword does not the caption and or the color bar keyword STRICTFILL Activate this keyword to that the filling of contours be precisely done between the min and the max specified letting values inferior at the specified min and values superior at the specified max in white keyword STYLE Contour s style to adopt to draw isolines by default style 0 see style pro keyword STY1D OBSOLETE Number of the style used when we make a 1d drawing We should better use the keyword LINESTYLE which is tho one of the plot Beware this keyword is still useful if we want to d bars instead of curves put sty1d bar keyword TREND_TYPE Modify field by calling trends pro keyword TYPEIN allows to specify the type of hovmoller we want to do xt yt zt t with help of a keyword rather than the argument type If the argument andthe keyword are specified in the same time it is the value specified by the keyword which is retained uses common pro history Sebastien Masson smasson lodyc jussieu fr 27 5 98 Jerome Vialard adapting plt to hovmoller drawing 2 7 98 Sebastien Masson 14 8 98 continents barres 15 1 98 Adaptation for arrays 3 and 4d to the average be done in pltt rather than during the reading Sebastien Masson 14 8 98 7 1999 Eric Guilyardi 29 7 99 FILTER TREND_TYPE REPEAT_C Sebastien Masson 08 02 2000 checkfield and usetri keyword version Id: pltt pro 152 2006 08 10 07:01:35Z smasson todo seb: L 24 36 L 426 427 L 492 493 pro pltt tab giventype givenmin givenmax datmin datmax BOXZOOM boxzoom CONTOUR contour ENDPOINTS endpoints INTERVALLE intervalle INV inv CONTINTERVALLE contintervalle LABEL label CONTLABEL contlabel STYLE style CONTMAX contmax CONTMIN contmin NLEVEL nlevel CONTNLEVEL contnlevel COL1D col1d STY1D sty1d MININ minin MAXIN maxin OV1D ov1d FILTER filter TREND_TYPE trend_type REPEAT_C repeat_c TYPEIN typein XT XT YT YT ZT zt TT tt STRICTFILL strictfill OVERPLOT overplot EXCHANGE_XY exchange_xy _extra ex include common compile_opt idl2 strictarrsubs cm_4mesh cm_4data cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 For key_performance I2 reinitialization p x y Comment: we do not reinitializate when we call back plt in loop to use contour if n_elements contour ne 4 AND NOT keyword_set overplot AND NOT keyword_set ov1d then reinitplt I1 Reading of the field if keyword_set boxzoom OR keyword_set endpoints AND n_elements contour ne 4 THEN BEGIN savedbox 1b saveboxparam boxparam4pltt dat ENDIF if n_elements giventype NE 0 then type giventype if n_elements givenmin NE 0 then min givenmin if n_elements givenmax NE 0 then max givenmax if n_elements minin NE 0 then min minin if n_elements maxin NE 0 then max maxin if keyword_set typein then BEGIN if size type type NE 7 AND size type type NE 0 then begin if n_elements min NE 0 then max min min type endif type typein ENDIF checktypeminmax pltt TYPE type MIN min MAX max XT XT YT YT ZT zt TT tt ENDPOINTS endpoints _extra ex if keyword_set endpoints then begin section tab z2d glam gphi ENDPOINTS endpoints TYPE type BOXZOOM boxzoom DIREC direc nx n_elements glam ny nx if strupcase vargrid EQ W then begin z gdepw firstzw:lastzw nz nzw ENDIF ELSE BEGIN z gdept firstzt:lastzt nz nzt ENDELSE ENDIF ELSE BEGIN z2d checkfield tab pltt TYPE type BOXZOOM boxzoom direc direc _extra ex if z2d 0 EQ 1 then BEGIN IF keyword_set savedbox THEN restoreboxparam boxparam4pltt dat return endif grille mask glam gphi gdep nx ny nz ENDELSE Calculation of trend anomaly following TREND_TYPE IF NOT keyword_set trend_type THEN trend_type 0 IF trend_type GT 0 THEN z2d trends z2d trend_type type Filtering of fields in the t case IF type EQ t AND keyword_set filter THEN BEGIN print Applying a running mean filter of width string filter format I3 z2d smooth z2d filter z2d 0:filter 2 1 0 z2d size z2d 1 filter 2 1: size z2d 1 1 0 ENDIF Repetition of the temporal series IF NOT keyword_set repeat_c THEN repeat_c 1 temps time 0:jpt 1 IF repeat_c GT 1 THEN BEGIN taille size z2d CASE taille 0 OF 1: z2d reform z2d replicate 1 repeat_c taille 1 repeat_c 2: BEGIN z2d z2d replicate 1 repeat_c z2d reform z2d taille 1 taille 2 repeat_c over END ELSE: ENDCASE temps temps lindgen jpt REPEAT_c 1 1 temps 1 temps 0 temps jpt 1 ENDIF Selection of graphic s type taille size z2d case taille 0 of 2 : typdes 2d 1 : begin z1d z2d typdes 1d if keyword_set OV1D then begin yy z2d if n_elements datmin NE 0 then tempsmin date2jul datmin ELSE tempsmin temps 0 on shift l axe du temps pour des questions de precision sur les dates du calendier julien en long qui sont passes en float ds les axes xx temps tempsmin x range x range tempsmin x tickv x tickv tempsmin We do a false plot to apply these changes plot 0 0 noerase xstyle 5 ystyle 5 title subtitle ytitle xtitle goto trace1d endif end endcase We build the mask For that the table must be masked automaticaly done at the value valmask if we pass in moyenne or grossemoyenne nan total finite z2d nan z2d not very nice when xgridstyle 2 same if xticklen 0 5 not very nice in the middle so we draw the top right axis by hand using axis if n_elements ex NE 0 then BEGIN pour avoir un cadre de la couleur noire if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR 0 ENDIF plot 0 0 nodata noerase _extra ex xstyle 1 4 keyword_set endpoints AND type EQ xt AND lat1 NE lat2 8 type EQ yt OR type EQ zt ystyle 1 4 keyword_set endpoints AND type EQ yt 8 type EQ xt call axis for the missing axis IF type EQ xt AND NOT keyword_set endpoints THEN BEGIN if n_elements ex NE 0 then if where tag_names ex EQ YTICKNAME 0 NE 1 then ex YTICKNAME replicate n_elements ex YTICKNAME axis yaxis 1 ystyle 1 yticklen 0 ytickname replicate y ticks 1 _extra ex ENDIF IF type EQ yt OR type EQ zt AND NOT keyword_set endpoints THEN BEGIN if n_elements ex NE 0 then if where tag_names ex EQ XTICKNAME 0 NE 1 then ex XTICKNAME replicate n_elements ex XTICKNAME axis xaxis 1 xstyle 1 xticklen 0 xtickname replicate x ticks 1 _extra ex ENDIF ajout d un axe ds le cas ou l on utilise endpoints if keyword_set endpoints then addaxe endpoints type posfenetre _EXTRA ex color bar colnumb colnumb 0:ncontour 1 keyword_set strictfill barrecouleur colnumb min max ncontour keyword_set strictfill 2 position posbar _extra ex endif 1d trace1d: if typdes eq 1d then begin if not keyword_set col1d then col1d 0 if keyword_set sty1d then BEGIN if we want to make bars IF strlowcase strtrim sty1d EQ bar then begin y range y range 0 y range 1 y range 0 05 y range 1 bar_plot yy background d n_colors 1 not very nice when xgridstyle 2 same if xticklen 0 5 not very nice in the middle so we draw the top axis by hand using axis if n_elements ex NE 0 then BEGIN To have a black frame if where tag_names ex EQ COLOR 0 NE 1 then ex COLOR 0 ENDIF plot 0 0 nodata noerase xstyle 1 8 1 keyword_set exchange_xy ystyle 1 8 keyword_set exchange_xy _extra ex call axis for the missing axis if n_elements ex NE 0 then BEGIN force tickname to blank array if where tag_names ex EQ YTICKNAME 0 NE 1 AND keyword_set exchange_xy then ex YTICKNAME replicate n_elements ex YTICKNAME if where tag_names ex EQ XTICKNAME 0 NE 1 AND NOT keyword_set exchange_xy then ex XTICKNAME replicate n_elements ex XTICKNAME ENDIF if keyword_set exchange_xy then axis yaxis 1 ystyle 1 yticklen 0 ytickname replicate y ticks 1 _extra ex ELSE axis xaxis 1 xstyle 1 xticklen 0 xtickname replicate x ticks 1 _extra ex ENDIF ELSE oplot xx yy color col1d linestyle sty1d thick 2 _extra ex endif fini: we reput time axis in IDL julian days and not in julian days count from tempsmin if type EQ xt then BEGIN y range y range tempsmin y tickv y tickv tempsmin ENDIF ELSE BEGIN x range x range tempsmin x tickv x tickv tempsmin ENDELSE We do a false plot to these values are considerated plot 0 0 nodata noerase xstyle 5 ystyle 5 title subtitle ytitle xtitle 3rd part: possible print terminedessin _extra ex if keyword_set savedbox THEN restoreboxparam boxparam4pltt dat if n_elements key_performance NE 0 then IF key_performance EQ 1 THEN print temps pltt systime 1 tempsun return end "); 255 a[253] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltv.html", "pltv.pro", "", " file_comments Draw 2d plots with TV procedure categories find a file graphic param DATA in required The field we want to display can be: 1 an array If the array is not a 2D array its mean along the z and t direction will be automatically performed as it is done in plt 2 a structure respecting all criterions specified by litchamp pro cf IDL xhelp litchamp param MIN in optional default min of DATA on non masked points param MAX in optional default max of DATA on non masked points keyword BOTTOM default 0 The lowest color index of the colors to be used keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword C_NAN default d n_colors 1 e6 the test to find the masked value is ge abs mask 10 This is necessary to avoid the rounding errors keyword NCOLORS default d n_colors tvplus dist 100 history Aug 2006: Sebastien Masson smasson lodyc jussieu fr version Id PRO pltv data min max BOTTOM bottom BOXZOOM boxzoom C_MASK c_mask C_NAN c_nan MININ minin MAXIN maxin MASKVAL maskval NCOLORS ncolors NOINTERP nointerp _EXTRA ex compile_opt idl2 strictarrsubs cm_general for key_performance tempsun systime 1 for key_performance I2 Reading of the field and checkup IF n_elements minin NE 0 THEN min minin IF n_elements maxin NE 0 THEN max maxin IF size data type NE 8 THEN z2d reform float data ELSE z2d data IF size z2d n_dimensions NE 2 then BEGIN if keyword_set boxzoom then BEGIN savedbox 1b saveboxparam boxparam4pltv dat ENDIF z2d checkfield temporary z2d plt TYPE xy direc direc BOXZOOM boxzoom if z2d 0 EQ 1 then BEGIN IF keyword_set savedbox THEN restoreboxparam boxparam4pltv dat return ENDIF ENDIF dtasize size z2d dimensions def of ncolmax bottom topcol et ncolors ncolmax d n_colors c_nan c_mask ncolmax 1 ELSE cmask ncolmax 1 z2d maskind cmask ENDIF z2d round temporary z2d use byte type to save memory z2d byte temporary z2d if NOT keyword_set overplot then reinitplt z invert placedessin plt posplot posbar _extra ex 3 Drawing xsize p position 2 p position 0 ysize p position 3 p position 1 IF d name EQ X THEN BEGIN xsize ceil xsize d x_size ysize ceil ysize d y_size z2d congrid z2d xsize ysize ENDIF tv z2d p position 0 p position 1 xsize xsize ysize ysize normal _EXTRA ex caption display of these axe pltv dtasize _EXTRA ex legende truemin truemax plt DIREC direc INTERVALLE float max min topcol bottom _extra ex plot 0 0 noerase nodata xstyle 1 ystyle 1 IF keyword_set masked THEN tracemask msk indgen dtasize 0 indgen dtasize 1 color bar barrecouleur 0 min max 10 bottom bottom position posbar ncolors topcol bottom 1 _extra ex 4 End of drawing terminedessin _extra ex if keyword_set savedbox THEN restoreboxparam boxparam4pltv dat if keyword_set key_performance NE 0 THEN print time pltv systime 1 tempsun return end"); 256 a[254] = new Array("./ToBeReviewed/PLOTS/DESSINE/pltz.html", "pltz.pro", "", " file_comments Trace vertical graphs categories Graphics param TAB The field whose we want to make a vertical cut can be 2 kind of thing: 1 An 2d or 3d array If the field is 2d indicate with the keyword BOXZOOM geographic delineations of the boxzoom If the field is 3d we extract the section on we average possibly before to do the plot 2 a structure respecting all criterions specified by litchamp pro See IDL xhelp litchamp The array contin in the structure must be 2 or 3d See case 1 ces arguments ne sont pas obligatoires: MAX: valeur maximum que l on veut prendre en compte dans le trace des contours Par defaut on prend le max de tab1 sur les pts mer MIN: valeur minimum que l on veut prendre en compte dans le trace des contours Par defaut on prend le min de tab1 sur les pts mer keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword CONTINTERVALLE When CONTOUR is activated it is the value between 2 isolines traced by a trait So it can be different from the one specified by INTERVALLE which in this case does not control colored isolines in color anymore If there is noone specified min we choose a contour min which goes well with the specified interval If this keyword is not specified we trace 20 isolines from the min to the max keyword CONTLABEL It is an integer n When CONTOUR is actvated if n is different of 0 choose the label type corresponding to n cases for the traced by a traitisolines To specify the type of label of the colored contour use LABEL keyword CONTMAX When CONTOUR is activated max value we want to consider in the isoline traced by a trait s line By default we take the max on ocean points of the array passed in the keyword CONTOUR keyword CONTMIN When CONTOUR is activated min value we want to consider in the isoline traced by a trait s line By default we take the min on ocean points of the array passed in the keyword CONTOUR keyword CONTNLEVEL When CONTOUR is activated it is the numbre of contours traced by a trait for drawing active if CONTLABEL 0 by default 20 keyword CONTOUR If we want to trace contours of a different field than the one whose we have the colored drawing by examlpe E P in color and QSR in contours It must be a field respecting same caracteristics than the argument number one of plt keyword ENDPOINTS keyword specifing that we want to make a vertical cut in diagonal Then coorinated of extremities of these one are difined by the 4 elements of the vector ENDPOINTS: x1 y1 x2 y2 which are coordinates keyword INTERVALLE Value of an internal between to isoline If there is none specified min we choose a min contour which goes well with the specified interval If this keyword is not specified we trace 20 isoline from the min to the max Comment: When CONTOUR is activated INTERVALLE only specify the interval between 2 colored isoline To specify the interval between 2 isolines traced by a trait use CONTINTERVALLE keyword INV Invert the color vector used to color the graph without use the black the white and the used palette keyword ZRATIO When the drawing has a zoomed part it is the size rapport between the zoomed part hz zoom height and the whole drawing ht total height By default 2 3 keyword LABEL It is an integer n If n different of 0 it choose the label s type corresponding to cases n cf label pro Comment: When CONTOUR is activated it only specify the label s type for colored isolines For tese one traced by a trait use CONTLABEL keyword MAXIN to specify the max value we want to plot with a keyword instead of with the input parameter max If max is defined by both parameter and keyword the keyword is retained keyword MININ to specify the min value we want to plot with a keyword instead of with the input parameter min If min is defined by both parameter and keyword the keyword is retained keyword NLEVEL Number of contour to draw by default 20 active if LABEL 0 or is not specified keyword NOTRI To force not to use the triangulation Beware in this case the drawing only works if the grid is undeformed It means that each point of a longitude give one latitude and each point of a latitude give one longitude exept if we use the keyword CELL_FILL 2 Comment: if the field contain points values f_nan then we even do a triangulation keyword OVERPLOT To make a plot over an other one Comment: Contrarily to the use of CONTOUR or VECTEUR the use of this keyword does not the caption and or the color bar keyword SIN Activate this keyword if we want the x axis to be traced in sinus of the latitude when we make a drawing f y keyword STRICTFILL Activate this keyword to that the filling of contours be precisely done between the min and the max specified letting values inferior at the specified min and values superior at the specified max in white keyword STYLE Contour s style to adopt to draw isolines by default style 0 see style pro keyword WDEPTH To specify that the field is at W depth instead of T depth automatically activated if vargrid eq W keyword XZ Force to make a cut following xz keyword YZ Force to make a cut following yz keyword ZOOM Depth where i can make our maximum zoom By default 200m or max depth if it is inferior at 200m uses common pro history Sebastien Masson smasson lodyc jussieu fr 7 1999 Sebastien Masson 08 02 2000 checkfield and notri keyword version Id: pltz pro 152 2006 08 10 07:01:35Z smasson todo seb L 20 26 L 215 221 pro pltz tab giventype givenmin givenmax BOXZOOM boxzoom CONTOUR contour ENDPOINTS endpoints INTERVALLE intervalle INV inv ZRATIO zratio CONTINTERVALLE contintervalle LABEL label CONTLABEL contlabel STYLE style CONTMAX contmax SIN sin TYPEIN typein CONTMIN contmin NLEVEL nlevel CONTNLEVEL contnlevel NOTRI notri USETRI usetri FILLXDIR fillxdir ZOOM zoom XZ xz YZ yz MININ minin MAXIN maxin STRICTFILL strictfill OVERPLOT overplot MASKFILL maskfill WDEPTH wdepth REALSECTION realsection _EXTRA ex include common compile_opt idl2 strictarrsubs cm_4mesh cm_4data cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 For key_performance 1st part: initialization small calculations Comment: we do not reinitializate when we call back plt in loop to use contour if n_elements contour ne 4 AND NOT keyword_set overplot then reinitplt if n_elements contour ne 4 THEN saveboxparam boxparam4pltz dat Reading of the field if n_elements giventype NE 0 then type giventype if n_elements givenmin NE 0 then min givenmin if n_elements givenmax NE 0 then max givenmax if n_elements minin NE 0 then min minin if n_elements maxin NE 0 then max maxin if n_elements realsection EQ 0 then realsection 1 IF n_elements usetri EQ 0 THEN BEGIN IF n_elements notri NE 0 THEN usetri 2 notri ELSE usetri 1 ENDIF no need of triangulation IF usetri EQ 1 AND keyword_set realsection THEN usetri 0 did we specify the type if keyword_set typein then BEGIN if size type type NE 7 AND size type type NE 0 then begin if n_elements min NE 0 then max min min type endif type typein ENDIF checktypeminmax pltz TYPE type MIN min MAX max XZ xz YZ yz ENDPOINTS endpoints _extra ex if keyword_set endpoints then begin section tab z2d glam gphi ENDPOINTS endpoints TYPE type BOXZOOM boxzoom DIREC direc WDEPTH wdepth _extra ex if z2d 0 EQ 1 AND n_elements contour ne 4 then BEGIN restoreboxparam boxparam4pltz dat return ENDIF nx n_elements glam ny nx if strupcase vargrid EQ W then begin gdep gdepw firstzw:lastzw nz nzw ENDIF ELSE BEGIN gdep gdept firstzt:lastzt nz nzt ENDELSE mask z2d LE valmask 10 ENDIF ELSE BEGIN z2d checkfield tab pltz TYPE type BOXZOOM boxzoom DIREC direc WDEPTH wdepth _extra ex if z2d 0 EQ 1 AND n_elements contour ne 4 then BEGIN restoreboxparam boxparam4pltz dat return ENDIF IF realsection EQ 1 THEN grille mask glam gphi gdep nx ny nz ifpltz type WDEPTH wdepth ELSE grille mask glam gphi gdep nx ny nz WDEPTH wdepth ENDELSE stop profmax y range 0 profmin y range 1 if not keyword_set zoom then zoom 200 zoom zoom 0 IF zoom LT profmin THEN zoom profmax if zoom GE vert2 then zoom profmax construction of the mask and of the axis axis4pltz type mask glam gphi gdep XXAXIS xxaxis ZZAXIS zzaxis SIN sin ZRATIO zratio ZOOM zoom PROFMAX profmax PROFMIN profmin _extra ex to draw from bottom to top avoid using cell_fill z2d reverse z2d 2 Determination of the mi:min and of the ma:max of z2d in the same way as max: max and min: min for the drawing nan total finite z2d nan z2d max if n_elements maskfill NE 0 then BEGIN z2d z2d mask masknan if maskfill NE 0 then z2d temporary z2d maskfill 1b mask masknan ENDIF check the mask and the triangulation according to the grid type and nan values find the coordinates of the mask if where mask EQ 0 0 EQ 1 AND NOT keyword_set nan then notri 1 if keyword_set notri then trifield 1 ELSE trifield triangule mask basic if usetri GE 1 AND vargrid EQ T OR vargrid EQ W OR usetri EQ 2 AND vargrid NE T AND vargrid NE W THEN trifield triangule mask basic IF NOT keyword_set endpoints THEN BEGIN if keyword_set nan then trinan triangule masknan basic coinmonte coinmontenan coindescend coindescendnan decoupeterre mask glammsk gphimsk gdepmsk type type WDEPTH wdepth REALSECTION realsection axis4pltz type mask glammsk gphimsk gdepmsk XXAXIS xmask ZZAXIS zmask SIN sin ZRATIO zratio ZOOM zoom PROFMAX profmax PROFMIN profmin _extra ex ENDIF ELSE BEGIN xmask xxaxis zmask zzaxis ENDELSE if usetri GE 1 AND vargrid NE T AND vargrid NE W THEN BEGIN IF keyword_set realsection THEN trimsk triangule mask basic ELSE trimsk triangule mask basic coinmonte coinmontemask coindescend coindescendmask ENDIF dessin en lui meme pltbase z2d xxaxis zzaxis mask xmask zmask level_z2d colnumb overplot overplot contour contour trichamp trifield trimsk trimsk c_linestyle linestyle c_labels 1 indgen n_elements level_z2d MOD 2 c_thick thick unsur2 unsur2 masknan masknan trinan trinan coinmontenan coinmontenan coindescendnan coindescendnan coinmontemask coinmontemask coindescendmask coindescendmask REALSECTION realsection USETRI usetri _extra ex recall of pltz in loop when contour is activated if n_elements contour eq 4 then BEGIN It is the second time I pass in pltt contour mietma: mi ma unit:varunit inter:intervalle I send back the min the max and the unity return endif if keyword_set contour THEN BEGIN pourlegende 1 1 1 1 oldattributs saveatt oldcolnumb colnumb pltz contour contmin contmax CONTOUR pourlegende ZRATIO zratio INTERVALLE contintervalle LABEL contlabel STYLE style noerase NLEVEL contnlevel ZOOM zoom BOXZOOM boxzoom ENDPOINTS endpoints STRICTFILL strictfill REALSECTION realsection MASKFILL maskfill USETRI usetri WDEPTH wdepth _extra ex restoreatt oldattributs colnumb oldcolnumb ENDIF 3rd part: drawing of the frame caption colorbar if keyword_set overplot then BEGIN y range zoom profmin We get back on physic coordinates plot 0 0 nodata noerase title subtitle xstyle 5 ystyle 5 GOTO fini endif Caption dysplay of them legende mi ma type CONTOUR pourlegende INTERVALLE intervalle DIREC direc endpoints endpoints _EXTRA ex if type eq yz then xaxe lataxe else xaxe lonaxe if keyword_set sin OR NOT key_onearth then xaxe Frame applied by default plot xxaxis 0 xxaxis n_elements xxaxis 1 zratio zratio noerase xstyle 1 4 keyword_set endpoints AND type EQ xz AND lat1 NE lat2 OR type EQ yz AND lon1 NE lon2 xtickformat xaxe _extra ex Add of an axis in the case of we use endpoints if keyword_set endpoints then addaxe endpoints type posfenetre _EXTRA ex Y axis in 1 or 2 part if n_elements ex NE 0 then BEGIN To do not put title anymore if where tag_names ex EQ TITLE 0 NE 1 then ex TITLE To do not put subtitle anymore if where tag_names ex EQ SUBTITLE 0 NE 1 then ex SUBTITLE To have just one ytitle if where tag_names ex EQ YTITLE 0 NE 1 then BEGIN ytitle ex YTITLE ex YTITLE endif ENDIF htotal posfenetre 3 posfenetre 1 hzoom 1 zratio htotal if zoom LT profmax then plot 0 0 nodata noerase ystyle 1 yrange profmax zoom 0 001 position posfenetre 0 0 0 hzoom _extra ex title subtitle ytitle y range zoom profmin We get back in physic coordinates plot 0 0 nodata noerase ystyle 1 _extra ex title subtitle ytitle position posfenetre 0 htotal hzoom 0 0 to write the ytitle if d name EQ PS then xs max page_size min mi 1 key_portrait mi key_portrait d x_px_cm ELSE xs d x_size if n_elements ytitle NE 0 then y title ytitle charsize chkstru ex ycharsize extract if charsize EQ 1 then charsize p charsize IF chkstru ex charsize THEN ex charsize charsize if chkstru ex ytitle extract NE then decalage string format e10 3 profmax decalage float strmid decalage strpos decalage e 1 posy posfenetre 1 1 htotal 2 posx posfenetre 0 decalage 3 d x_ch_size charsize xs xyouts posx posy y title normal orientation 90 color 0 ALIGNMENT 5 charsize charsize _extra ex colorbar colnumb colnumb 0:ncontour 1 keyword_set strictfill barrecouleur colnumb min max ncontour keyword_set strictfill 2 position posbar _extra ex 4th part: possible print fini: terminedessin _extra ex sortie: restoreboxparam boxparam4pltz dat if keyword_set key_performance NE 0 THEN print temps pltz systime 1 tempsun return end "); 257 a[255] = new Array("./ToBeReviewed/PLOTS/DESSINE/sbar_plot.html", "sbar_plot.pro", "", " file_comments Same thing that bar_plot but compatible with the whole environnement common pro inclued categories graphics INPUTS: cd IDL bar_plot keyword COLORS A vector the same size as VALUES containing the color index to be used for each bar If not specified the colors are selected based on spacing the color indices as widely as possible within the available colors specified by D N_COLORS keyword COLORS Is an integer giving color of all colorbars contrarily to colors which is a vector giving the color of each colorbar keyword NOREINITPLT We active it if we do not want environnement variables p x y z to be reinitilalizted by the procedure reinitplt keyword _EXTRA used to pass your keyword uses common pro restrictions If NOREINITPLT is not activated all environnement variables p x y z are reinitializtedby the procedure reinitplt examples IDL sbar_plot indgen 10 small 2 2 2 rempli IDL sbar_plot indgen 10 small 2 2 3 noerase IDL ps history Sebastien Masson smasson lodyc jussieu fr 10 10 1999 version Id: sbar_plot pro 142 2006 07 21 12:47:49Z navarro PRO sbar_plot Values COLORS colors NOREINITPLT noreinitplt _extra ex compile_opt idl2 strictarrsubs common 1 I reinitialize the graphic environment variables x y et p : if NOT keyword_set NOREINITPLT then reinitplt _extra ex 2 I place the drawing on the screen like on the postscript IF chkstru ex overplot EQ 0 THEN placedessin autre _extra ex 3 Drawing if n_elements COLORS NE 0 then BEGIN if n_elements COLORS EQ n_elements Values then col colors ELSE col replicate colors 0 n_elements Values ENDIF ELSE col congrid indgen d n_colors 256 n_elements Values bar_plot Values background p background colors col xstyle 1 ystyle 1 _extra ex 4 End of drawing terminedessin _extra ex return end"); 258 a[256] = new Array("./ToBeReviewed/PLOTS/DESSINE/scontour.html", "scontour.pro", "", " File_comments Same thing that contour but compatible with the whole environnement common pro inclued categories graphics INPUTS:cd IDL contour keyword NOREINITPLT We active it if we do not want environnement variables p x y z to be reinitilalizted by the procedure reinitplt keyword _EXTRA used to pass your keywords uses common pro examples IDL z dist 100 IDL scontour z nlevels 10 small 1 2 1 xstyle 1 ystyle 1 IDL ps history Sebastien Masson smasson lodyc jussieu fr 10 10 1999 version Id: scontour pro 142 2006 07 21 12:47:49Z navarro PRO scontour x y z NOREINITPLT noreinitplt _EXTRA ex compile_opt idl2 strictarrsubs common 1 I reinitializate the graphic environment variables x y et p : if NOT keyword_set NOREINITPLT then reinitplt _extra ex 2 i put the drawing on the screen like on the postcript if ex contains norease and c_orientation keywords we force ex noerase 0 IF chkstru ex overplot EQ 0 THEN placedessin autre _extra ex fiddle when noerase is used with c_orentation call contour with nodata to get the graphic environment then force noerase 0 and overplot 1 IF size ex type EQ 8 THEN BEGIN check if noerase is used with c_orentation alltags strlowcase tag_names ex dummy where alltags EQ noerase count1 dummy where alltags EQ c_orientation count2 IF count1 count2 NE 0 THEN BEGIN case n_params OF 1:contour x nodata _EXTRA ex 2:contour x y nodata _EXTRA ex 3:contour x y z nodata _EXTRA ex endcase ex noerase 0 ex get_extra overplot _extra ex noerase_orientation 1 ENDIF ENDIF 3 je fais mon joli dessin case n_params OF 1:contour x xstyle 1 ystyle 1 _EXTRA ex 2:contour x y xstyle 1 ystyle 1 _EXTRA ex 3:contour x y z xstyle 1 ystyle 1 _EXTRA ex ENDCASE fiddle when noerase is used with c_orentation draw the contour axis IF keyword_set noerase_orientation THEN BEGIN ex noerase 1 ex overplot 0 case n_params OF 1:contour x xstyle 1 ystyle 1 nodata _EXTRA ex 2:contour x y xstyle 1 ystyle 1 nodata _EXTRA ex 3:contour x y z xstyle 1 ystyle 1 nodata _EXTRA ex ENDCASE ENDIF 4 End of drawing terminedessin _extra ex return end"); 259 a[257] = new Array("./ToBeReviewed/PLOTS/DESSINE/splot.html", "splot.pro", "", " file_comments Same thing that plot but compatible with the whole environnement common pro inclued categories graphics INPUTS:cd IDL plot keyword NOREINITPLT We active it if we do not want environnement variables p x y z to be reinitilalizted by the procedure reinitplt keyword _EXTRA used to pass your keywords uses common pro restrictions If NOREINITPLT is not activated all environnement variables p x y z are reinitializtedby the procedure reinitplt examples IDL splot indgen 10 ystyle 1 small 1 2 1 portrait IDL splot indgen 10 ystyle 1 small 1 2 2 noerase IDL ps history Sebastien Masson smasson lodyc jussieu fr 18 10 1999 version Id: splot pro 142 2006 07 21 12:47:49Z navarro PRO splot x y NOREINITPLT noreinitplt _EXTRA ex compile_opt idl2 strictarrsubs common 1 I reinitializate the graphic environment les variables x y et p : if NOT keyword_set NOREINITPLT then reinitplt _extra ex 2 i put the drawing on the screen like on the postcript placedessin autre _extra ex 3 Drawing if n_elements y EQ 0 then plot x xstyle 1 ystyle 1 _EXTRA ex ELSE plot x y xstyle 1 ystyle 1 _EXTRA ex 4 End of drawing terminedessin _extra ex return end"); 260 a[258] = new Array("./ToBeReviewed/PLOTS/DESSINE/tvplus.html", "tvplus.pro", "", " file_comments Enhanced version of tvscl categories quick exploration of 2D arrays INPUTS: param Z2D in required 2D array to visualize param CELLSIZE in optiona This is the size in pixel of the square representing 1 array element By default this size is computed automatically in order that the size of the plotting window do not exceed the screen size If the user specify a large value of cellsize that forces tvplus to create a window larger than the screen a scrolling window will be displayed instead of a regular window Unfortunately the nice fonctionnalities of tvplus are not coded for scrolling window case keyword BOTTOM default 1 The lowest color index of the colors to be used keyword C_NAN default d n_colors 1 e6 the test to find the masked value is ge abs mask 10 This is necessary to avoid the rounding errors keyword MIN Scalar used to specify the min value to be drawn keyword MAX Scalar used to specify the max value to be drawn keyword NCOLORS default d n_colors tvplus dist 100 history Sebastien Masson smasson lodyc jussieu fr 18 12 98 Aug 2005: quick cleaning english version Id: tvplus pro 152 2006 08 10 07:01:35Z smasson PRO tvplus z2d cellsize BOTTOM bottom C_MASK c_mask C_NAN c_nan WINDOW window MIN min MAX max MASK mask OFFSET offset NOUSEINFOS NOUSEINFOS NCOLORS ncolors NOINTERP nointerp _EXTRA ex compile_opt idl2 strictarrsubs IF n_elements z2d EQ 0 THEN return arr reform float z2d check the size of the input array if size arr 0 NE 2 then begin ras report Input array must have only 2 dimensions and not strtrim size arr n_dimensions 1 return endif def of ncolmax bottom topcol et ncolors ncolmax d n_colors arr truemin min ENDIF ELSE truemin min arr if n_elements max NE 0 then BEGIN arr arr floor x cellsize floor y cellsize floor x cellsize floor y cellsize floor x2 cellsize floor y2 cellsize size arr 2 cellsize 1 x x x2 x x sort x y y y2 y y sort y IF keyword_set OFFSET THEN offset x 0 y 0 offset ELSE offset x 0 y 0 tvplus z2d x 0 :x 1 y 0 :y 1 WINDOW window MIN min MAX max MASK mask C_MASK c_mask C_NAN c_nan NOUSEINFOS OFFSET OFFSET NCOLORS ncolors NOINTERP nointerp BOTTOM bottom _EXTRA ex return END ELSE: endcase ENDWHILE x xenvsauve y yenvsauve p penvsauve x range 1 0 nx cellsize 5 offset 0 y range 1 0 ny cellsize 5 offset 1 return end"); 261 a[259] = new Array("./ToBeReviewed/PLOTS/DIVERS/addaxe.html", "addaxe.pro", "", " file_comments Add an axis when we do an oblique section in pltz pltt or plt1d categories graphic param ENDPOINTS in required Coordonnees of extremities of the section param TYPE in required A string of two characters specifying the type of plot we do param POSFENETRE in required The vector p position corresponding to the frame position of the drawing part of the plot uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: addaxe pro 142 2006 07 21 12:47:49Z navarro PRO addaxe endpoints type posfenetre _EXTRA ex compile_opt idl2 strictarrsubs common IF strpos type x NE 1 THEN BEGIN IF endpoints 1 EQ endpoints 3 THEN return IF key_onearth THEN BEGIN formeaxe0 lonaxe formeaxe1 lataxe titreaxe latitude ENDIF ELSE BEGIN formeaxe0 formeaxe1 titreaxe j index ENDELSE range endpoints 1 endpoints 3 if endpoints 2 LT endpoints 0 THEN range reverse range ENDIF ELSE BEGIN IF endpoints 0 EQ endpoints 2 THEN return IF key_onearth THEN BEGIN formeaxe0 lataxe formeaxe1 lonaxe titreaxe longitude ENDIF ELSE BEGIN formeaxe0 formeaxe1 titreaxe i index ENDELSE range endpoints 0 endpoints 2 if endpoints 3 LT endpoints 1 THEN range reverse range ENDELSE if type EQ yt then BEGIN axis yaxis 0 ytickformat formeaxe0 color 0 ystyle 1 _EXTRA ex axis yaxis 1 ytickformat formeaxe1 color 0 ystyle 1 ytitle titreaxe yrange range _EXTRA ex ENDIF ELSE BEGIN axis xaxis 0 xtickformat formeaxe0 color 0 xstyle 1 _EXTRA ex axis xaxis 1 xtickformat formeaxe1 color 0 xstyle 1 xtitle titreaxe xrange range _EXTRA ex ENDELSE return end"); 262 a[260] = new Array("./ToBeReviewed/PLOTS/DIVERS/autoscale.html", "autoscale.pro", "", " file_comments We give a min and a max and the procedure send back the good contour interval and labels s value categories graphic param MIN in required A reel number specifying above what value we want to trace a contour param MAX in required A reel number specifying below what value we want to trace a contour param CI out It is a reel number giving the contour interval Use it in CONTOUR with the keyword LEVEL restrictions CI is a multiple of the unity in unity log of 10 It force the number of contour to be even history G Roullet aout 99 gr lodyc jussieu fr version Id: autoscale pro 142 2006 07 21 12:47:49Z navarro PRO autoscale min max ci Estimation of a first CI notice the presence of the floor Inferior round This CI is a multiple of the unity in unity log of 10 compile_opt idl2 strictarrsubs ci max min 20 ci 10 floor alog10 ci n 0 ci0 ci coef 2 2 5 5 10 We test differents CI contour intervals i e 1 2 2 5 5 and 10 until the number of contour is inferior to 30 WHILE ceil max min ci GE 30 DO BEGIN ci ci0 coef n n n 1 ENDWHILE min floor min ci 2 ci 2 max ceil max ci 2 ci 2 nlevels round max min ci We force the number of contour to be even IF nlevels MOD 2 EQ 1 THEN BEGIN nlevels nlevels 1 max max ci END END "); 263 a[261] = new Array("./ToBeReviewed/PLOTS/DIVERS/axis4pltz.html", "axis4pltz.pro", "", " file_comments compute the mask and the axis for a vertical section param MASK in required 3d mask param GLAM in required 2d longitude param GPHI in required 2d latitude param Z in required 1d depth keyword XXAXIS to get the xaxis we need to use in pltbase keyword ZZAXIS to get the yaxis we need to use in pltbase keyword SIN Activate this keyword if we want the x axis to be traced in sinus of the latitude when we make a drawing f y keyword ZRATIO When the drawing has a zoomed part it is the size rapport between the zoomed part hz zoom height and the whole drawing ht total height By default 2 3 keyword _EXTRA used to pass your keywords Others: see pltz history Sebastien Masson smasson lodyc jussieu fr June 24 2002 version Id: axis4pltz pro 142 2006 07 21 12:47:49Z navarro PRO axis4pltz type mask glam gphi z XXAXIS xxaxis ZZAXIS zzaxis SIN sin ZRATIO zratio ZOOM zoom PROFMAX profmax PROFMIN profmin _extra ex include common compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatekwd ENDIF define the mask used for this section if mask 0 NE 1 AND size mask 0 NE 2 then begin if type EQ xz then mask total mask 2 1 ELSE mask total mask 1 1 endif define xxaxis and yyaxis the axis used for this section nx size glam 1 CASE size gphi 0 OF 1:ny size gphi 1 2:ny size gphi 2 ENDCASE CASE size z 0 OF 1:nz size z 1 2:nz size z 2 ENDCASE if type eq yz then BEGIN IF size gphi 0 EQ 1 then xxaxis gphi ELSE BEGIN IF keyword_set key_irregular THEN BEGIN cln where gphi EQ max gphi 0 xxaxis reform gphi cln MOD nx ENDIF ELSE xxaxis reform gphi 0 ENDELSE if keyword_set sin then xxaxis sin pi 180 xxaxis if size z 0 EQ 1 THEN zzaxis z ELSE zzaxis z ENDIF ELSE BEGIN xxaxis glam 0 if size z 0 EQ 1 then zzaxis z ELSE zzaxis z ENDELSE We project the z axis in 0 1 if not keyword_set zratio then zratio 2 3 if zoom ge profmax then zratio 1 if zoom LT profmax then begin mp projsegment profmin zoom 0 zratio mp zzaxis where zzaxis LE zoom mp 0 zzaxis where zzaxis LE zoom mp 1 mp projsegment zoom profmax zratio 1 mp zzaxis where zzaxis GE zoom mp 0 zzaxis where zzaxis GE zoom mp 1 ENDIF ELSE BEGIN mp projsegment profmin profmax 0 1 mp zzaxis mp 0 zzaxis mp 1 ENDELSE to draw from bottom to top avoid using cell_fill CASE size zzaxis n_dimensions OF 1:zzaxis reverse zzaxis 2:zzaxis reverse zzaxis 2 ENDCASE if mask 0 NE 1 then mask reverse mask 2 return end"); 264 a[262] = new Array("./ToBeReviewed/PLOTS/DIVERS/barrecouleur.html", "barrecouleur.pro", "", " file_comments Overlayeur of colorbar categories utilities restrictions pass all argument we want thanks to _extra history Sebastien Masson smasson lodyc jussieu fr 23 12 98 version Id: barrecouleur pro 152 2006 08 10 07:01:35Z smasson todo seb: mettre les keyword et les param PRO barrecouleur colnumb clbinf clbsup clbdiv NOCOLORBAR nocolorbar CB_TITLE cb_title NOFILL nofill COLOR_c color_c MIN min MAX max divisions divisions CB_SUBTITLE cb_subtitle POST post _extra ex compile_opt idl2 strictarrsubs cm_general IF NOT keyword_set key_forgetold THEN BEGIN updatekwd ENDIF if keyword_set min then clbinf min if keyword_set max then clbsup min if keyword_set divisions THEN clbdiv divisions nocolorbar keyword_set nocolorbar keyword_set nofill keyword_set color_c def_myuniquetmpdir IF lmgr demo EQ 1 THEN BEGIN if we are in demo mode we cannot save the parameters in a temporary file cm_demomode_used colorbarparam colnumb:colnumb clbinf:clbinf clbsup:clbsup clbdiv:clbdiv ENDIF ELSE BEGIN save colnumb clbinf clbsup clbdiv file myuniquetmpdir 4colorbar dat ENDELSE if keyword_set nocolorbar then return ancienx x ancieny y ancienp p reinitplt x style 1 y style 1 colorbar cb_color 0 cb_charsize ancienp charsize pscolor keyword_set post division clbdiv min clbinf max clbsup cb_title cb_title discret colnumb _extra ex x ancienx y ancieny p ancienp return end"); 265 a[263] = new Array("./ToBeReviewed/PLOTS/DIVERS/checkfield.html", "checkfield.pro", "", "FUNCTION err_1d type n1 name n2 compile_opt idl2 strictarrsubs return report Error in type type plot with a 1D input array: the number of elements of the input vector strtrim n1 1 is not equal to name strtrim n2 1 simple END FUNCTION err_2d type sz nx ny nz compile_opt idl2 strictarrsubs cm_4mesh cm_4cal return report Error in type type plot with a 2D input array: the array dimensions tostr sz 1:2 are incompatible with the the domain dimensions jpi nx jpj ny jpk nz jpt strtrim jpi 1 strtrim nx 1 strtrim jpj 1 strtrim ny 1 strtrim jpk 1 strtrim nz 1 strtrim jpt 1 simple END FUNCTION err_3d type sz nx ny nz compile_opt idl2 strictarrsubs cm_4mesh cm_4cal return report Error in type type plot with a 3D input array: the array dimensions tostr sz 1:3 are incompatible with the the domain dimensions jpi nx jpj ny jpk nz jpt strtrim jpi 1 strtrim nx 1 strtrim jpj 1 strtrim ny 1 strtrim jpk 1 strtrim nz 1 strtrim jpt 1 simple END file_comments In input of plt pltz pltt and plt1d it check that the field give a size compatible with the domain and if needed average to give us a 2d array if we make a plot of the type: xy xz xt yz yt zt or a 1d array if we make a plot of the type: x y z t categories graphic param FIELD in required A field respecting litchamp pro s criterions See IDL xhelp litchamp keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword WDEPTH to specify that the field is at W depth instad of T depth automatically activated if vargrid eq W keyword VECTEUR It is a structure composed by 2 elements containing the 2 fields U and V of values of the zonal and meridian component of the vector of the fields to draw These fields can be an array or a structure For example: vecteur matriceu:lec unsurface matricev:lec vnsurface Comment: name of elements of vectors are inconsenquential vecteur u:lec unsurface v:lec vnsurface is also appropriated keyword _EXTRA used to pass your keywords keyword DIREC uses common pro history Sebastien Masson smasson lodyc jussieu fr 08 02 2000 version Id: checkfield pro 142 2006 07 21 12:47:49Z navarro todo seb: mettre les param FUNCTION checkfield field procedure TYPE type BOXZOOM boxzoom DIREC direc NOQUESTION noquestion VECTEUR vecteur WDEPTH wdepth _EXTRA ex compile_opt idl2 strictarrsubs include commons cm_4mesh cm_4cal cm_4data IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF I1 Reading of the field if n_elements field EQ 0 then return report field undefined arr litchamp field first check IF n_elements arr EQ 1 THEN BEGIN if arr EQ 1 then return report Error: input array 1 Maybe the reading did ont perform well simple ELSE return report Error: input array is a scalar simple ENDIF nan total finite arr nan firstzw 1 lastzw lastzw 1 firstzt 1 lastzt lastzt 1 jpk 1 nzt lastzt firstzt 1 ENDELSE updateold ENDIF make the automatic definition of type for pltz if type is not specified IF type EQ z AND procedure EQ pltz THEN if lon2 lon1 gt lat2 lat1 then type xz else type yz make the automatic definition of type for pltt if type is not specified IF type EQ unkownpltt AND procedure EQ pltt THEN if lon2 lon1 gt lat2 lat1 then type xt else type yt verification of the input array size and the value of the type grille 1 1 1 1 nx ny nz firstx firsty firstz lastx lasty lastz WDEPTH wdepth basic checks CASE 1 OF nx EQ 1: IF strpos type x NE 1 THEN return report Error: impossible to make a type type plot with nx 1 simple ny EQ 1: IF strpos type y NE 1 THEN return report Error: impossible to make a type type plot with ny 1 simple nz EQ 1: IF strpos type z NE 1 THEN return report Error: impossible to make a type type plot with nz 1 simple jpt EQ 1: IF strpos type t NE 1 THEN return report Error: impossible to make a type type plot with jpt 1 simple ELSE: ENDCASE is the size of the array compatible with teh domain arr fitintobox temporary arr nx ny nz firstx firsty firstz lastx lasty lastz sz size arr case sz 0 of 0:return arr 1:BEGIN nele n_elements arr case type of t :if jpt NE nele THEN return err_1d type nele jpt jpt x :IF nx NE nele THEN return err_1d type nele nx nx y :IF ny NE nele THEN return err_1d type nele ny ny z :IF nz NE nele THEN return err_1d type nele nz nx ELSE:return report Error: Impossible to make a type plot with a 1D array simple ENDCASE END 2:BEGIN case type of x :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny:direc y xy array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz:direc z x y z array sz 1 EQ nx AND sz 2 EQ jpt:direc t xt array ELSE:return err_2d type sz nx ny nz endcase end y :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny:direc x xy array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz:direc z x yz array sz 1 EQ ny AND sz 2 EQ jpt:direc t yt array ELSE:return err_2d type sz nx ny nz endcase END z :BEGIN case 1 of sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz:direc x x y z array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz:direc y x yz array sz 1 EQ nz AND sz 2 EQ jpt:direc t zt array ELSE:return err_2d type sz nx ny nz endcase END t :BEGIN case 1 OF sz 1 EQ nx AND sz 2 EQ jpt:direc x xt array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ jpt:direc y x yt array nx EQ 1 AND ny EQ 1 AND sz 1 EQ nz AND sz 2 EQ jpt:direc z x y zt array ELSE:return err_2d type sz nx ny nz ENDCASE END xy :IF sz 1 NE nx OR sz 2 ne ny THEN return err_2d type sz nx ny nz xy array xz :IF sz 1 NE nx OR sz 2 ne nz THEN return err_2d type sz nx ny nz xz array yz :IF sz 1 NE ny OR sz 2 NE nz THEN return err_2d type sz nx ny nz yz array xt :IF sz 1 NE nx OR sz 2 NE jpt THEN return err_2d type sz nx ny nz xt array yt :IF sz 1 NE ny OR sz 2 NE jpt THEN return err_2d type sz nx ny nz yt array zt :IF sz 1 NE nz OR sz 2 NE jpt THEN return err_2d type sz nx ny nz zt array ENDCASE END 3:BEGIN case type of x :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc yz xyz array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc zt x y zt array sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc yt xyt array ELSE:return err_3d type sz nx ny nz endcase END y :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc xz xyz array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc zt x yzt array sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc xt xyt array ELSE:return err_3d type sz nx ny nz endcase END z :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc xy xyz array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc yt x yzt array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc xt x y zt array ELSE:return err_3d type sz nx ny nz endcase END t :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc xy xyt array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc yz x yzt array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc xz x y zt array ELSE:return err_3d type sz nx ny nz endcase END xy :BEGIN case 1 OF sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc z xyz array sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc t xyt array ELSE:return err_3d type sz nx ny nz endcase END xz :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc y xyz array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc t x y zt ELSE:return err_3d type sz nx ny nz endcase END yz :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz:direc x xyz array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc t x yzt ELSE:return err_3d type sz nx ny nz endcase END xt :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc y xyt array sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc z x y zt array ELSE:return err_3d type sz nx ny nz endcase END yt :BEGIN case 1 of sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt:direc x xyt array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc z x yzt array ELSE:return err_3d type sz nx ny nz endcase END zt :BEGIN case 1 of sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:direc x x y zt array nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt:direc y x yzt array ELSE:return err_3d type sz nx ny nz ENDCASE END ENDCASE END 4:BEGIN CASE type OF x :direc yzt y :direc xzt z :direc xyt t :direc xyz xy :direc zt xz :direc yt yz :direc xt xt :direc yz yt :direc xz zt :direc xy ENDCASE END ENDCASE IF keyword_set direc THEN BEGIN IF strpos direc t NE 1 OR strpos type t NE 1 THEN arr grossemoyenne temporary arr direc boxzoom localbox NAN nan NODOMDEF WDEPTH wdepth _extra ex ELSE arr moyenne temporary arr direc boxzoom localbox NAN nan NODOMDEF WDEPTH wdepth _extra ex ENDIF RETURN arr END"); 266 a[264] = new Array("./ToBeReviewed/PLOTS/DIVERS/checktypeminmax.html", "checktypeminmax.pro", "", " NAME: PURPOSE: CATEGORY: CALLING SEQUENCE: INPUTS: KEYWORD PARAMETERS: OUTPUTS: COMMON BLOCKS:common pro SIDE EFFECTS: RESTRICTIONS: EXAMPLE: MODIFICATION HISTORY:Sebastien Masson smasson lodyc jussieu fr todo seb PRO checktypeminmax procedure TYPE type MIN min MAX max XY xy XZ xz YZ yz XT XT YT YT ZT zt TT tt XX xx YY yy ZZ zz XINDEX xindex YINDEX yindex ENDPOINTS endpoints _extra ex compile_opt idl2 strictarrsubs common case size type type of 0: 7: ELSE:BEGIN vraimin type case size min type of 0:BEGIN min vraimin type 0 END 7:BEGIN type min min vraimin end ELSE:BEGIN case size max type of 0:BEGIN max min min vraimin type 0 END 7:BEGIN type max max min min vraimin end ELSE:BEGIN rien report Probleme dans la definition des arguments en entree de procedure chkwidget return end endcase end endcase end endcase if keyword_set xy then type xy if keyword_set xz then type xz if keyword_set yz then type yz if keyword_set xt then type xt if keyword_set yt then type yt if keyword_set zt then type zt if keyword_set tt then type t if keyword_set xx then type x if keyword_set yy then type y if keyword_set zz then type z if keyword_set type then begin if type EQ plt then type if type EQ pltz then type if type EQ pltt then type if type EQ plt1d then type endif determination du type de plot que l on veut faire if NOT keyword_set type then BEGIN case procedure of plt :type xy pltz :BEGIN if keyword_set endpoints then BEGIN lon1 min endpoints 0 endpoints 2 max lon2 lat1 min endpoints 1 endpoints 3 max lat2 if lon2 lon1 gt lat2 lat1 then type xz else type yz ENDIF ELSE type z END pltt :BEGIN if keyword_set endpoints then BEGIN lon1 min endpoints 0 endpoints 2 max lon2 lat1 min endpoints 1 endpoints 3 max lat2 lat2 max endpoints 1 endpoints 3 if lon2 lon1 gt lat2 lat1 then type xt else type yt ENDIF ELSE type unkownpltt END plt1d :BEGIN if keyword_set endpoints then BEGIN lon1 min endpoints 0 endpoints 2 max lon2 lat1 min endpoints 1 endpoints 3 max lat2 if lon2 lon1 gt lat2 lat1 then type x else type y ENDIF ELSE BEGIN type WHILE type NE x AND type NE y AND type NE z DO BEGIN type xquestion Quel type de plot 1D voulez vous faire x y z ou t chkwidget type strlowcase type endwhile ENDELSE END endcase ENDIF WHILE type NE xy AND type NE xz AND type NE yz AND type NE xt AND type NE yt AND type NE zt AND type NE t AND type NE x AND type NE y AND type NE z AND type NE unkownpltt DO BEGIN type xquestion What kind of plot do you want to do xy xz yz xt yt zt t x y z chkwidget type strlowcase type ENDWHILE return end"); 267 a[265] = new Array("./ToBeReviewed/PLOTS/DIVERS/determineminmax.html", "determineminmax.pro", "", " file_comments Determine the min and the max of a mask array categories Lightening of the writting of plt pltz and pltt param TAB in required The array whose we determine the min and the max param MASK in required The mask array keyword MININ It is a scalar which if it is not defined take the value of VRAIMIN keyword MAXIN It is a scalar which if it is not defined take the value of VRAIMAX keyword ZEROMIDDLE Force the middle of the colorbar to be equal to 0 force max max abs min max and min max keyword _EXTRA used to pass your keywords keyword USETRI To force using triangulation param VRAIMIN out The min of the array param VRAIMAX out The max of the array uses Common pro restrictions Look if the field is constant on the sea history Sebastien Masson smasson lodyc jussieu fr 11 12 98 version Id: determineminmax pro 142 2006 07 21 12:47:49Z navarro todo seb: manque les param glam et gphi PRO determineminmax tab mask vraimin vraimax glam gphi MAXIN maxin MININ minin INTERVALLE intervalle usetri usetri ZEROMIDDLE zeromiddle _extra ex compile_opt idl2 strictarrsubs common Type o fthe vertical grid: if vargrid EQ W then nz nzw ELSE nz nzt liste des points mer if size mask 0 EQ 3 then mer mask 0 ELSE mer mask If key_irregular eq 1 we mask also points which are not in the geographic domain defined by lon1 lon2 lat1 lat2 if keyword_set key_irregular AND n_elements glam NE 0 AND n_elements gphi NE 0 then begin dom where glam LT lon1 OR glam GT lon2 OR gphi LT lat1 OR gphi GT lat2 if dom 0 NE 1 then mer dom 0 endif mer where mer eq 1 if mer 0 eq 1 then begin ras report Il n y a que de la terre sur le dessin vraimax 0 vraimin 0 maxin vraimax 1 minin vraimin 1 usetri 0 return endif ma and mi : max and min on ocean points vraimax max tab mer min vraimin _extra ex sameminmax testvar var minin EQ testvar var maxin if n_elements maxin EQ 0 OR sameminmax then maxin vraimax if n_elements minin EQ 0 OR sameminmax then BEGIN if keyword_set intervalle then minin floor vraimin intervalle intervalle ELSE minin vraimin endif if vraimin eq vraimax then BEGIN IF size vraimin type EQ 1 THEN vraimin fix vraimin question Warning: constant filed same value everywhere : strtrim vraimin 2 Shall we make the plot answer report question default_no question if answer then begin maxin vraimax 1 minin vraimin 1 endif ELSE tab 1 ENDIF IF keyword_set zeromiddle THEN BEGIN maxin max abs minin maxin minin maxin ENDIF return end"); 268 a[266] = new Array("./ToBeReviewed/PLOTS/DIVERS/givewindowsize.html", "givewindowsize.pro", "", " todo seb FUNCTION givewindowsize include commons compile_opt idl2 strictarrsubs cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF dimensions get_screen_size RESOLUTION resolution coef floor 1 resolution 0 if NOT keyword_set windowsize_scale then BEGIN windowsize_scale 1 IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF ENDIF coef windowsize_scale coef mipgsz min page_size max mapgsz xsize coef mipgsz key_portrait mapgsz 1 key_portrait ysize coef mipgsz 1 key_portrait mapgsz key_portrait return xsize ysize end"); 269 a[267] = new Array("./ToBeReviewed/PLOTS/DIVERS/meridienparallele.html", "meridienparallele.pro", "", " file_comments Trace some meridians or parallel categories graphic param COUPE The type of drawing we treat uses common pro history Sebastien Masson smasson lodyc jussieu fr 11 12 98 version Id: meridienparallele pro 142 2006 07 21 12:47:49Z navarro PRO meridienparallele coupe compile_opt idl2 strictarrsubs common case coupe of xy :BEGIN if lon1 lt 180 and lon2 gt 180 then plot 180 180 lat1 lat2 noerase color 0 if lon1 lt 0 and lon2 gt 0 then plot 0 0 lat1 lat2 noerase color 0 if lon1 lt 360 and lon2 gt 360 then plot 360 360 lat1 lat2 noerase color 0 if lat1 lt 0 and lat2 gt 0 then plot lon1 lon2 0 0 noerase color 0 END endcase return end"); 270 a[268] = new Array("./ToBeReviewed/PLOTS/DIVERS/placecolor.html", "placecolor.pro", "", " file_comments allows to trace the independently from a graph By default trace a color bar of the same type tahn the one present in plt and pltz If max min and divisions are not stipulated then max sup min inf and divisions div categories graphic param POS Vecteur composed by 4 elements giving coordinates of the left bottom corner and of the right up one in cm in which we want to do the color bar keyword _extra used to pass your keywords uses common pro restrictions Only usable for POSTCRIPTs effectuated with plein2dessin history Sebastien Masson smasson lodyc jussieu fr 7 5 98 version Id: placecolor pro 142 2006 07 21 12:47:49Z navarro pro placecolor pos _extra ex include commons compile_opt idl2 strictarrsubs cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF xsave x ysave y psave p reinitplt z invert pos 1 pos mipgsz min page_size max mapgsz if key_portrait eq 1 then begin pos 0 pos 0 mipgsz pos 1 pos 1 mapgsz pos 2 pos 2 mipgsz pos 3 pos 3 mapgsz endif else begin pos 0 pos 0 mapgsz pos 1 pos 1 mipgsz pos 2 pos 2 mapgsz pos 3 pos 3 mipgsz ENDELSE def_myuniquetmpdir IF lmgr demo EQ 1 THEN BEGIN if we are in demo mode we cannot save the parameters in a temporary file cm_demomode_used colnumb colorbarparam colnumb clbinf colorbarparam clbinf clbsup colorbarparam clbsup clbdiv colorbarparam clbdiv ENDIF ELSE BEGIN file myuniquetmpdir 4colorbar dat IF file_test file THEN BEGIN restore file if size ex type EQ 8 then BEGIN if where tag_names ex EQ MIN 0 NE 1 then clbinf ex MIN if where tag_names ex EQ MAX 0 NE 1 then clbsup ex MAX if where tag_names ex EQ DIVISIONS 0 NE 1 then clbdiv ex DIVISIONS ENDIF COLORBAR COLOR 0 DIVISIONS clbdiv DISCRET colnumb cb_color 0 POSITION pos MAX clbsup MIN clbinf cb_charsize p charsize _extra ex ENDIF ENDELSE x xsave y ysave p psave return end"); 271 a[269] = new Array("./ToBeReviewed/PLOTS/DIVERS/placedessin.html", "placedessin.pro", "", " file_comments Putting into place of the drawing opening of the window or of the PS categories Utilities param TYPEDESSIN It is a chain or characteres specifying what procedure is called by PLACEDESSIN: plt pltz or pltt keyword LANDSCAPE Force the page or the window on the screen to be in lenthened position keyword LCT Is an integer designating the number of the palette of color we want to use for the plot keyword MAP We use it when we want to do a projection This keyword can be of two types: MAP P0lat P0lon Rot For the descrption of these 3 values see the online help of MAP_SET MAP: In this case map is automatically caculated have the value: map 0 lon1 lon2 2 0 Comment: A good way to choose the type of the projection we want to do is to have a look at IDL demo: IDL demo Then choose earth sciences and mapping Comment2: By default it is a cindrical projection which is effectuated with or without the keyword map If we want an other projection MAP must be activated and we have to add the keyword: nom_projection For example for a polar projection centered on the south pole: IDL domdef 180 180 90 45 IDL plt tab stereo map 90 0 0 keyword NOCOLORBAR We active it if we do not want the colorbar keyword NOFILL We active it if we only want contours in black and white with a white background keyword NOERASE We active it to make a drawing without creating a new frame keyword SMALL Vector composed of 3 or 4 elements applyed to make a drawing on a small portion of a page or screen It delimit the zone where the drawing will be done If there is 4 elements: then is constituated of coordinates expressed in cm located from the up and left corner of the page or the window in portrait like in lanscape of the bottom and left corner and of the up and right corner of the drawing zone If there is 3 elements: in this case we divide the page or the screen in small 0 columns and in small 1 lines the drawing made in the box numbered small 2 The numerotation starting up and left by the number 1 and then following the writing direction By default we make the largest drawing we can do conserving the aspect rapport exept when REMPLI is activated keyword PORTRAIT Force the page or the window to be in standing position keyword POST Make a postscript Only works if we made one drawing on the page If we make several drawing use ps keyword REMPLI Force the drawing to occupy the whole space defined by small keyword WINDOW Number of the window on which we want to do the graph Allow to open several windows By default we open IDL0 keyword CB_TITLE The colorbar s title keyword CONTOUR If we want to trace contours of a different field than the one whose we have the colored drawing by examlpe E P in color and QSR in contours It must be a field respecting same caracteristics than the argument number one of plt keyword ENDPOINTS keyword specifing that we want to make a vertical cut in diagonal Then coorinated of extremities of these one are difined by the 4 elements of the vector ENDPOINTS: x1 y1 x2 y2 which are coordinates keyword VECTEUR It is a structure composed by 2 elements containing the 2 fields U and V of values of the zonal and meridian component of the vector of the fields to draw These fields can be an array or a structure For example: vecteur matriceu:lec unsurface matricev:lec vnsurface Comment: name of elements of vectors are inconsenquential vecteur u:lec unsurface v:lec vnsurface is also appropriated keyword DIREC t x y z xys xz yz xyz xt yt zt xyt xzt yzt xyzt Direction on which do averages keyword _EXTRA Used to pass your keywords keyword COLOR_C To draw the contour in color instead of in black with filling in color param POSFENETRE out It is a vector composed by 4 elements containing the position of the frame containing captions and the graph in normalized coorinates Comment: To position the drawing we have to do p position posfenetre after the call of the caliber param POSBAR out Like POSFENETRE but for the color bar Same comment to position the color bar p position posbar uses common pro history Sebastien Masson smasson lodyc jussieu fr 26 4 1999 version Id: placedessin pro 142 2006 07 21 12:47:49Z navarro PRO placedessin typedessin posfenetre posbar BARMARGES barmarges NOCOLORBAR nocolorbar NOFILL nofill COLOR_c color_c CONTOUR contour VECTEUR vecteur PORTRAIT portrait LANDSCAPE landscape SMALL small MARGES marges MAP map REMPLI REMPLI POST post WINDOW window ENDPOINTS endpoints TYPE type BASICMARGES basicmarges NOERASE noerase LCT lct DIREC direc CB_TITLE cb_title _extra ex include common compile_opt idl2 strictarrsubs cm_4ps cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatekwd ENDIF 1 Determination of the size of margins unity number of lines or columns to the left to the right up and down BEWARE in margebar the last element is the right up corner instead of the up margin if n_elements typedessin EQ 0 then typedessin autre if keyword_set basicmarges then begin marge 1 6 2 4 3 if keyword_set marges THEN marge marge marges margebar 1 marge 0 1 marge 1 1 marge 2 8 marge 2 6 if keyword_set barmarges then margebar margebar barmarges ENDIF ELSE BEGIN nocolorbar keyword_set nocolorbar keyword_set nofill keyword_set color_c case typedessin of plt :marge 1 6 2 4 3 pltt :marge 1 6 4 type EQ xt 2 4 4 pltz :marge 1 6 2 4 3 else:marge 1 6 2 4 3 ENDCASE if keyword_set marges THEN marge marge marges if NOT keyword_set barmarges then barmarges replicate 0 4 barmarges 3 barmarges 3 margebar 1 marge 0 1 marge 1 1 2 4 barmarges marge marge 0 0 4 0 keyword_set cb_title IF keyword_set direc THEN marge marge 0 0 2 0 strlowcase direc NE t marge marge 0 0 2 0 keyword_set contour marge marge 0 0 2 0 keyword_set vecteur if n_elements lon1 NE 0 and n_elements lon2 NE 0 and n_elements lat1 NE 0 and n_elements lat2 NE 0 then begin if keyword_set type then marge marge 0 3 type EQ yt AND lon1 NE lon2 0 2 type NE yt AND lat1 NE lat2 keyword_set endpoints ELSE marge marge 0 0 0 2 lat1 NE lat2 keyword_set endpoints endif marge marge 0 0 2 margebar 3 0 1 keyword_set nocolorbar ENDELSE Portrait or landscape IF NOT keyword_set noerase THEN BEGIN CASE 1 OF n_elements portrait NE 0:key_portrait portrait n_elements landscape NE 0:key_portrait 1 landscape ELSE: ENDCASE ENDIF What type of aspect rapport it will be crushed if YXASPECT exist case typedessin of plt :yaspect 1 lat2 lat1 lon2 lon1 pltt :yaspect 1 pltz :yaspect 5 ELSE:yaspect 1 endcase 2 calculation of p position see calibre pro IF NOT keyword_set small then small 1 1 1 if keyword_set map then rempli 1 calibre yaspect marge margebar small posfenetre posbar REMPLI rempli _extra ex p position posfenetre 3 opening of the graphic window or of the postscript case 1 of case of the first drawing on a postcript keyword_set post AND d name ne PS :openps _extra ex case of the first drawing on a screen keyword_set post EQ 0 AND keyword_set noerase EQ 0 AND d name ne PS AND d name ne Z :BEGIN if not keyword_set window then window 0 For the using of ps oups et de vzoom if lmgr demo EQ 0 then BEGIN Are we in the demo mode if journal NE 0 then journal We close te journal if it is open homedir isadirectory io homedir title Bad definition of homedir def_myuniquetmpdir journal myuniquetmpdir idlsave pro We open a new one help recall_commands output listecommande We recuperate the last command listecommande strmid strcompress listecommande 1 2 journal listecommande We write it in the journal ENDIF windsize givewindowsize window window xsize windsize 0 ysize windsize 1 retain 2 _extra ex When we used colors which are coded on 24bit we can not stipulate the background color of a window thanks to p background so we have to to this: if d n_colors gt 256 then begin device decomposed 1 p background ffffff x plot 0 0 nodata xstyle 4 ystyle 4 device decomposed 0 endif END ELSE: endcase if n_elements lct NE 0 then lct lct _extra ex return end"); 272 a[270] = new Array("./ToBeReviewed/PLOTS/DIVERS/projsegment.html", "projsegment.pro", "", " file_comments project linearly a segment a vector whose boundaries are a b on a vector whose boundaries are c d categories calculation param VECTEUR A vector whose the first element must be the smallest one and the last must be the biggest one param BORNES New boundaries of the vector keyword MP Activate this keyword to the function send back this a vector of 2 elements which are the m and p of the linear projection y mx p used to pass from the a b segment to the c d segment returns A vector whose new boudaries are specified by BORNES examples IDL a indgen 9 IDL print a 0 1 2 3 4 5 6 7 8 IDL print projsegment a 0 80 0 10 20 30 40 50 60 70 80 IDL print projsegment a 0 80 0 10 20 30 40 50 60 70 80 IDL print projsegment a 80 0 80 70 60 50 40 30 20 10 0 history Sebastien Masson smasson lodyc jussieu fr 24 6 1999 version Id: projsegment pro 142 2006 07 21 12:47:49Z navarro FUNCTION projsegment vecteur bornes MP mp compile_opt idl2 strictarrsubs a1 float vecteur 0 b1 float vecteur n_elements vecteur 1 a2 float bornes 0 b2 float bornes 1 if a1 EQ b1 then return 1 m b2 a2 b1 a1 p a2 m a1 if keyword_set mp then return m p ELSE return m vecteur p end"); 273 a[271] = new Array("./ToBeReviewed/PLOTS/DIVERS/restoreatt.html", "restoreatt.pro", "", " file_comments Allows to reattribuate global variables associated with a field when we give a stucture created by saveatt pro by example categories Utilities param STRUCT in required a structure like the one who read litchamp See IDL xhelp litchamp uses common pro restrictions Change the value if global variables attribute of a field: vargrid varname varunit vardate varexp valmask and time history Sebastien Masson smasson lodyc jussieu fr 15 6 1999 version Id: restoreatt pro 142 2006 07 21 12:47:49Z navarro PRO restoreatt struct compile_opt idl2 strictarrsubs common nomelements tag_names struct for i 0 n_tags struct 1 do begin case strlowcase strmid nomelements i 0 1 of g :vargrid strupcase struct i n :varname struct i u :varunit struct i e :varexp struct i m :valmask struct i d :BEGIN if size struct i type EQ 7 THEN BEGIN vardate struct i ENDIF ELSE BEGIN vardate time series time struct i ENDELSE end ELSE:BEGIN ras report Le nom nomelements i ne correspont a aucun element reconnu de la structure C cf IDL xhelp litchamp end endcase endfor return end"); 274 a[272] = new Array("./ToBeReviewed/PLOTS/DIVERS/rotation.html", "rotation.pro", "", " file_comments Rotate two vectors by a specified amount param X in required orignal data point pairs param Y in required orignal data point pairs param DEG in required degrees to rotate param NX out rotated point pairs param NY out rotated point pairs history Jeff Bennett U of Colorado version Id: rotation pro 142 2006 07 21 12:47:49Z navarro PRO ROTATION X Y DEG NX NY compile_opt idl2 strictarrsubs ang deg dtor convert to polar coordinates for rotation r sqrt x x y y theta r 0 get angle in for loop so that zero radii will be left as zero angle for i 0 n_elements r 1 do if r i ne 0 then theta i atan y i x i range from pi to pi add rotation angle theta theta ang convert back to rectangular coordinates now rotated nx r cos theta ny r sin theta return end"); 275 a[273] = new Array("./ToBeReviewed/PLOTS/DIVERS/saveatt.html", "saveatt.pro", "", " file_comments Allows to put in a structure attributes which can be associated with a variable categories utilities returns A structure of the form: n:varname g:vargrid d:vardate e:varexp u:varunit m:valmask l:niveau uses common pro history Sebastien Masson smasson lodyc jussieu fr 15 6 1999 version Id: saveatt pro 142 2006 07 21 12:47:49Z navarro FUNCTION saveatt compile_opt idl2 strictarrsubs common return n:varname g:vargrid d:vardate e:varexp u:varunit m:valmask end"); 276 a[274] = new Array("./ToBeReviewed/PLOTS/DIVERS/terminedessin.html", "terminedessin.pro", "", " file_comments End the drawing if needed when it is a postscript categories utilities graphic keyword POST Make a postscript Only works if we made one drawing on the page If we make several drawing use ps keyword SMALL Vector composed of 3 or 4 elements applyed to make a drawing on a small portion of a page or screen It delimit the zone where the drawing will be done If there is 4 elements: then is constituated of coordinates expressed in cm located from the up and left corner of the page or the window in portrait like in lanscape of the bottom and left corner and of the up and right corner of the drawing zone If there is 3 elements: in this case we divide the page or the screen in small 0 columns and in small 1 lines the drawing made in the box numbered small 2 The numerotation starting up and left by the number 1 and then following the writing direction By default we make the largest drawing we can do conserving the aspect rapport exept when REMPLI is activated keyword _EXTRA Used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr 3 6 1999 version Id: terminedessin pro 142 2006 07 21 12:47:49Z navarro PRO terminedessin POST post SMALL small _extra ex compile_opt idl2 strictarrsubs cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF if keyword_set post then BEGIN if keyword_set small then if total small NE page_margins 2 page_margins 0 total page_size page_margins 1 page_margins 3 then return closeps printps endif return end"); 277 a[275] = new Array("./ToBeReviewed/PLOTS/LABEL/label.html", "label.pro", "", " file_comments Allows to choose the type of the label we want to use at the time of a contour categories graphic param CAS in required Number of the type of the label we want to trace param MIN in required Smallest value for the drawing of the contour param MAX in required Biggest value for the drawing of the contour keyword INTERVALLE Value of an interval betwenn two isolines By default it is calculated to draw 20 isolines In all cases this keyword must be returnedt have a nice caption If levels do not contain regular intervals put it at 1 keyword NLEVEL Number of contour to be drawn By default 20 Active if LABEL 0 or is not specified param NCONTOUR out Number of contour to be drawn param LEVEL_Z2D out Vector containing values of contours we draw param COLNUMB out Vector containing the number of colors which will serve to fill contours uses common pro history Sebastien Masson smasson lodyc jussieu fr 7 5 98 version Id: label pro 142 2006 07 21 12:47:49Z navarro pro label cas min max ncontour level_z2d colnumb NLEVEL nlevel INTERVALLE intervalle STRICTFILL strictfill compile_opt idl2 strictarrsubs common if d name EQ PS OR d name EQ Z then BEGIN old_dname d name thisOS VERSION OS_FAMILY thisOS STRMID thisOS 0 3 thisOS STRUPCASE thisOS CASE thisOS of MAC : SET_PLOT thisOS WIN : SET_PLOT thisOS ELSE: SET_PLOT X ENDCASE p BACKGROUND d n_colors 1 ncontour level_z2d min max min findgen Ncontour Ncontour colnumb ncoul findgen Ncontour Ncontour ncoul 2 ncontour intervalle level_z2d 1 level_z2d 0 end 1: begin a certain number of label from the min to the nearest possible to the max with a constant step by interval ncontour fix max min intervalle ncontour 1 ncontour level_z2d min intervalle findgen Ncontour colnumb ncoul findgen Ncontour Ncontour ncoul 2 ncontour max level_z2d Ncontour 1 intervalle end label to do same sss than dessier 2: begin lct 63 file palette tbl level_z2d 20 25 30 31 32 33 33 5 34 25 findgen 16 ncontour 23 colnumb findgen 23 1 masx 37 75 intervalle 1 return end 3: begin Readinf of intervals palette in the file GMT label_gmt min max intervalle ncoul ncontour level_z2d colnumb end else: begin ras report Le numero de label demande n existe pas end ENDCASE if keyword_set strictfill then begin ncontour ncontour 1 level_z2d level_z2d max colnumb colnumb ncoul 1 endif return end"); 278 a[276] = new Array("./ToBeReviewed/PLOTS/LABEL/label_date.html", "label_date.pro", "", " Copyright c 1993 1998 Research Systems Inc All rights reserved Unauthorized reproduction prohibited file_comments This function labels axes with dates and times categories Plotting param AXIS in required param INDEX in required param X in required keyword DATE_FORMAT a format string which may contain the following: M for month 3 character abbr N for month 2 digit abbr D for day of month Y for 4 digit year Z for last two digits of year For time: H for Hours 2 digits I for mInutes 2 digits S for Seconds 2 digits is Other characters are passed directly thru For example M D Y prints DEC 11 1993 M 2Y yields DEC 93 D M yields 11 DEC D N Y yields 11 12 1993 M C Y yields DEC on the top line 1993 on the bottom C is the new line graphic command keyword MONTHS The names of the months a twelve element string array If omitted use Jan Feb Dec keyword OFFSET An optional starting offset of the plot Unfortunately single precision floating point is not accurate enough to properly represent Julian times This offset which may be double precision contains an offset that is added to all x values before conversion to Julian date and time uses LABEL_DATE_COM restrictions Only one date axis may be simultaneously active examples For example to plot from Jan 1 1993 to July 12 1994: Start_date julday 1 1 1993 End_date julday 7 12 1994 Dummy LABEL_DATE DATE_FORMAT N D Simple mm dd x findgen end_date 1 start_date start_date Time axis PLOT x sqrt x XTICKFORMAT LABEL_DATE XSTYLE 1 Plot with X axis style set to exact Example with times: For example to plot from 3PM Jan 1 1993 to 5AM Jan 3 1993: Start_date Julday 1 1 1993 Also starting offset Start_time 3 12 24 Starting_time less offset End_time Julday 1 3 1993 Start_date 5 24 Ending date time offset note that the order of operations is important to avoid loss of precision Dummy LABEL_DATE DATE_FORMAT D M C H: I offset Start_date MMM NN HH:MM format x findgen 20 End_time Start_time 19 start_time Time axis PLOT x sqrt x XTICKFORMAT LABEL_DATE XSTYLE 1 history DMS RSI April 1993 Written DMS RSI March 1997 Added Time format Copyright c 1993 1998 Research Systems Inc All rights reserved Unauthorized reproduction prohibited version Id: label_date pro 142 2006 07 21 12:47:49Z navarro FUNCTION LABEL_DATE axis index x DATE_FORMAT format MONTHS months OFFSET offs _EXTRA ex compile_opt idl2 strictarrsubs COMMON label_date_com fmt month_chr offset if keyword_set format then begin Save format string if n_elements offs ne 0 then offset double offs else offset 0 0d0 if keyword_set months then month_chr months else month_chr Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec fmt format return 0 endif if n_elements month_chr ne 12 or n_elements fmt le 0 or n_elements offset eq 0 then message Not initialized x1 x offset caldat long x1 month day year _EXTRA ex Get the calendar date from julian frac x1 long x1 time of day from 0 to 1 n strlen fmt out for i 0 n 1 do begin Each format character c strmid fmt i 1 The character if c eq then begin i i 1 c strmid fmt i 1 The function case c of format character M : out out month_chr month 1 N : out out string format i2 2 month D : out out string format i2 2 day Y : out out string format i4 year Z : out out string format i2 2 year mod 100 H : out out string format i2 2 floor 24 frac I : out out string format i2 2 floor 1440 frac mod 60 S : out out string format i2 2 86400L frac mod 60 : out out else : message Illegal character in date format string: fmt endcase endif else out out c endfor return out end"); 279 a[277] = new Array("./ToBeReviewed/PLOTS/LABEL/label_gmt.html", "label_gmt.pro", "", " Apply GMT palette into IDL color intervals system PRO label_gmt min max intervalle ncoul ncontour level_z2d coul compile_opt idl2 strictarrsubs common com_eg IF pal_type NE 2dom THEN BEGIN color defined in lec_pal_gmt pro ncontour ncont_gmt level_z2d levels_gmt coul coul_gmt max max_gmt intervalle 1 ENDIF ELSE BEGIN grey_shade palette case 1 in label IF finite min EQ 0 THEN read Grey shade needs a min max : min max ncontour fix max min intervalle level_z2d min intervalle findgen Ncontour max level_z2d Ncontour 1 intervalle print Number of contour intervals plotting min max ncontour min max print color index IF idx_pal EQ 0 THEN BEGIN build palette red lonarr 99 red 255 red 50:98 long 100 float grey_shade 100 255 IF field origin EQ diff THEN BEGIN difference plot : lighter below first negative interval red 51:98 long 100 float grey_shade_2 100 255 red 1:48 long 100 float grey_shade 100 255 red 50 255 ENDIF first color black last white red 0 red red 99 255 gray scale green red blue red tvlct red green blue ENDIF mid_index max where level_z2d LE fldatt mid coul findgen Ncontour 49 mid_index 2 ENDELSE END "); 280 a[278] = new Array("./ToBeReviewed/PLOTS/LABEL/lataxe.html", "lataxe.pro", "", " file_comments function called by XYZ TICKFORMAT see the help to see how to use it to label axes in latitude categories graphic param AXIS It is the axis number: 0 for X axis 1 for Y axis 2 for Z axis param INDEX It is the tick mark index which starts at 0 param VALUE It is the default tick mark value a floating point number returns A string used automatically to label history Sebastien Masson smasson lodyc jussieu fr 14 10 1999 format of labels version Id: lataxe pro 142 2006 07 21 12:47:49Z navarro FUNCTION lataxe axis index value We put back value in the segment 0 180 compile_opt idl2 strictarrsubs lat value mod 360 if lat lt 0 then lat lat 360 if lat gt 180 then lat lat 180 format of labels: case 1 of lat EQ round lat :fmt i4 10 lat EQ round 10 lat :fmt f6 1 ELSE:fmt f7 2 endcase we write the label if lat le 90 and lat ne 0 then nom string lat format fmt N if lat gt 90 then nom string 180 lat format fmt S if lat eq 0 then nom string lat format fmt return nom end "); 281 a[279] = new Array("./ToBeReviewed/PLOTS/LABEL/lonaxe.html", "lonaxe.pro", "", " file_comments function called by XYZ TICKFORMAT see the help to see how to use it to label axes in longitude categories graphic param AXIS It is the axis number: 0 for X axis 1 for Y axis 2 for Z axis param INDEX It is the tick mark index which starts at 0 param VALUE It is the default tick mark value a floating point number returns A string used automatically to label history Sebastien Masson smasson lodyc jussieu fr 14 10 1999 format of labels version Id: lonaxe pro 142 2006 07 21 12:47:49Z navarro FUNCTION lonaxe axis index value We put back value in the segment 0 360 compile_opt idl2 strictarrsubs lon value mod 360 if lon lt 0 then lon lon 360 format of labels: case 1 of lon EQ round lon :fmt i4 10 lon EQ round 10 lon :fmt f6 1 ELSE:fmt f7 2 endcase we write the label if lon lt 180 then nom string lon format fmt E if lon gt 180 then nom string 360 lon format fmt W if lon eq 180 then nom string lon format fmt return nom end "); 282 a[280] = new Array("./ToBeReviewed/PLOTS/VECTEUR/ajoutvect.html", "ajoutvect.pro", "", " file_comments Overprint vectors in a field traced by plt categories graphic param VECTEUR in required It is a structure with 2 elements containing we 2 matrixes U and V of values of the zonal and meridian component of the fiel of vectors to be traced For ex: vecteur matriceu:lec unsurface matricev:lec vnsurface rq:the name of elements of vector does not have any importance vecteur u:lec unsurface v:lec vnsurface goes well too keyword UNVECTSUR It is a scalar n or an array with 2 elements n1 n2 In the first case we will trace a vector on n following x and y In the second case we will trace a vector on n1 following x and a vector n2 following n2 Comments: To trace all vectors following y and one vector on two following x put unvectsur 2 1 keyword VECTMIN in required Minimum norme of vectors to be traced keyword VECTMAX in required Maximum norme of vectors to be traced keyword _EXTRA Used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr 10 3 1999 11 6 1999 compatibilite avec NAN et la lecture des structures version Id: ajoutvect pro 142 2006 07 21 12:47:49Z navarro pro ajoutvect vecteur vectlegende UNVECTSUR unvectsur VECTMIN vectmin VECTMAX vectmax _EXTRA ex compile_opt idl2 strictarrsubs common tempsun systime 1 For key_performance u litchamp vecteur 0 u checkfield u plt TYPE xy NOQUESTION v litchamp vecteur 1 v checkfield v plt TYPE xy NOQUESTION We recuperate possible informations on fields grilleu litchamp vecteur 0 grid if grilleu EQ then grilleu U grillev litchamp vecteur 1 grid if grillev EQ then grillev V IF grilleu EQ V AND grillev EQ U THEN inverse 1 IF grilleu EQ grillev THEN interpolle 0 ELSE interpolle 1 if keyword_set inverse then begin rien u u v v rien endif We find common points between u and v if interpolle then begin indicexu lindgen jpi firstxu:firstxu nxu 1 indicexv lindgen jpi firstxv:firstxv nxv 1 indicex inter indicexu indicexv indiceyu lindgen jpj firstyu:firstyu nyu 1 indiceyv lindgen jpj firstyv:firstyv nyv 1 indicey inter indiceyu indiceyv nx n_elements indicex ny n_elements indicey indice2d lindgen jpi jpj indice2d indice2d indicex 0 :indicex 0 nx 1 indicey 0 :indicey 0 ny 1 extraction of u and v on the appropriated domain case 1 of size u 0 NE 2 OR size v 0 NE 2: return size u 1 EQ nxu AND size u 2 EQ nyu AND size v 1 EQ nxv AND size v 2 EQ nyv:BEGIN if nxu NE nx then if indicex 0 EQ firstxu then u u 0:nx 1 ELSE u u 1: nx IF nxv NE nx THEN if indicex 0 EQ firstxv then v v 0:nx 1 ELSE v v 1: nx IF nyu NE ny THEN if indicey 0 EQ firstyu then u u 0:ny 1 ELSE u u 1: ny IF nyv NE ny THEN if indicey 0 EQ firstyv then v v 0:ny 1 ELSE v v 1: ny END size u 1 EQ jpi AND size u 2 EQ jpj AND size v 1 EQ jpi AND size v 2 EQ jpj:BEGIN u u indice2d v v indice2d END ELSE:BEGIN ras report problemes d adequation entre la taille du domaine et la taille des matrices necessaires a tracer des vecteurs return end endcase We reshape u and v to make sure that none dimension has been erased if ny EQ 1 then begin u reform u nx ny v reform v nx ny endif construction of u and v at points T a u 0 u u shift u 1 0 2 if NOT keyword_set key_periodic OR nx NE jpi then u 0 a a v 0 v v shift v 0 1 2 if NOT keyword_set key_periodic OR nx NE jpi then v 0 a attribution of the mask and of longitude and latitude arrays We recuperate the complete grid to establish a big mask extensive in the four directions to cover points for which a land point has been considerated do a small drawing vargrid T msku umask indice2d jpi jpj firstzt mskv vmask indice2d jpi jpj firstzt glam glamt indice2d gphi gphit indice2d if ny EQ 1 then begin msku reform msku nx ny mskv reform mskv nx ny glam reform glam nx ny gphi reform gphi nx ny endif We mask u and v et v the long of coasts the place where we can not calculate the average extention of the mask u u msku shift msku 1 0 v v mskv shift mskv 0 1 ENDIF ELSE BEGIN u u tmask firstxt:lastxt firstyt:lastyt firstzt v v tmask firstxt:lastxt firstyt:lastyt firstzt indice2d lindgen jpi jpj indice2d indice2d firstxt:lastxt firstyt:lastyt nx nxt ny nyt endelse tabnorme sqrt u 2 v 2 nan where finite u nan EQ 1 if nan 0 NE 1 then u nan 1e5 nan where finite v nan EQ 1 if nan 0 NE 1 then v nan 1e5 if keyword_set vectmin then BEGIN toosmall where tabnorme lt vectmin if toosmall 0 NE 1 then begin u toosmall 1e5 v toosmall 1e5 ENDIF endif if keyword_set vectmax then BEGIN toobig where tabnorme gt vectmax if toobig 0 NE 1 then begin u toobig 1e5 v toobig 1e5 ENDIF ENDIF Put back of a big value on all points for which we can do the calculation if interpolle then t2 msku shift msku 1 0 mskv shift mskv 0 1 ELSE t2 tmask firstxt:lastxt firstyt:lastyt firstzt if NOT keyword_set key_periodic OR nx NE jpi then t2 0 0 t2 0 0 terre where t2 eq 0 if terre 0 ne 1 then begin u terre 1e5 v terre 1e5 ENDIF trace only one vector one two if keyword_set unvectsur then BEGIN indx is a vector containing number of columns to be selected indy is a vector containing number of lines to be selected if n_elements unvectsur EQ 1 then begin indx where lindgen nx MOD unvectsur 0 eq 0 indy where lindgen ny MOD unvectsur 0 eq 0 ENDIF ELSE BEGIN indx where lindgen nx MOD unvectsur 0 eq 0 indy where lindgen ny MOD unvectsur 1 eq 0 ENDELSE From indx and indy we will construct an array which will give indexes of intersections points of columns specified by indx indicereduit indx replicate 1 n_elements indy nx replicate 1 n_elements indx indy We reduce arrays which will be passed to vecteur u u indicereduit v v indicereduit tabnorme tabnorme indicereduit endif if keyword_set inverse then begin rien u u v v rien endif Drawing of vectors vecteur u v tabnorme indice2d indicereduit missing 1e5 _extra ex We complete the caption if terre 0 ne 1 then mini min tabnorme where t2 eq 1 max maxi nan ELSE mini min tabnorme max maxi nan if litchamp vecteur 0 u NE then vectlegende minmax: mini maxi unite:litchamp vecteur 0 u ELSE vectlegende minmax: mini maxi unite:varunit sortie: if keyword_set key_performance NE 0 THEN print temps ajoutvect systime 1 tempsun return end "); 283 a[281] = new Array("./ToBeReviewed/PLOTS/VECTEUR/vecteur.html", "vecteur.pro", "", "FUNCTION cv_cm2normal angle Give the lenth in normal coordinates of a trait oriented of an angle by rapport at the x axis and which must do 1 cm on the drawing Angle can be an array compile_opt idl2 strictarrsubs common What is the lenth in normal coordinates of a trait which will do 1 cm on the paper an which is parallel to x mipgsz min page_size max mapgsz sizexfeuille mipgsz key_portrait mapgsz 1 key_portrait sizeyfeuille mapgsz key_portrait mipgsz 1 key_portrait cm_en_normal 1 sizexfeuille If the aspect rapport of the window is not equal to 1 the lenth in normalized coordinates of a trait of 1 cm vary following the polar angle of this trait aspect sizexfeuille sizeyfeuille cm_en_normal cm_en_normal sqrt 1 aspect 2 1 sin angle 2 return cm_en_normal END PRO normalise u v w normalize the vector compile_opt idl2 strictarrsubs IF n_elements w NE 0 THEN BEGIN norme sqrt u 2 v 2 w 2 ind where norme NE 0 u ind u ind norme ind v ind v ind norme ind w ind w ind norme ind ENDIF ELSE BEGIN norme sqrt u 2 v 2 ind where norme NE 0 u ind u ind norme ind v ind v ind norme ind ENDELSE END file_comments Trace vectors even if they are on a deformed grid on any projection In this way all vectors have a comparable norme on the drawing to be clear a vector which measure 1 cm measure it no matter the projection and is position on the sphere categories graphic param COMPOSANTEU in required It is the u component of the vector to be traced This 2d array has the same dimension that reduitindice2d see further param COMPOSANTEV in required It is the v component of the vector to be traced This 2d array has the same dimension that reduitindice2d see further param INDICE2D in required It in an index allowing to to pass from an jpi or jpj array to the zoom on which we do the drawing param REDUITINDICE2D in required It is an index allowing to pass from an array defined by indice2d to the array for which we really have vectors to be traced to be clear it is for example when we trace only one vector on two keyword CMREF The lenth in cm that must measure the arrow normed normeref By default it is ajusted t othe drawing and included between 5 and 1 5 cm keyword MISSING The value of a missing value Do not use this keyword Fixed at 1e5 by ajoutvect pro keyword NORMEREF The norme of the reference arrow keyword VECTCOLOR The color of the arrow Black by default color 0 keyword VECTTHICK The thick of the arrow 1 by default keyword VECTREFPOS Vector composed of 2 elements specifing the position on DATA coordinates from de begining of the reference vector By default at the right bottom of the drawing keyword VECTREFFORMAT The format to be used to specify the norme of the reference vector keyword NOVECTREF To delete the display of the reference vector keyword _EXTRA Used to pass your keywords uses common pro history Creation : 13 02 98 G Roullet grlod lodyc jussieu fr Modification : 14 01 99 realise la transformation spheriquecartesien G Roullet 12 03 99 verification de la routine G Roullet 8 11 1999: G Roullet et Sebastien Masson smasson lodyc jussieu fr adaptation pour les zoom reverification traitement separe de la direction et de la norme des vecteurs mots cles NORMEREF et CMREF version Id: vecteur pro 142 2006 07 21 12:47:49Z navarro PRO vecteur composanteu composantev normevecteur indice2d reduitindice2d CMREF cmref MISSING missing NORMEREF normeref VECTCOLOR vectcolor VECTTHICK vectthick VECTREFPOS vectrefpos VECTREFFORMAT vectrefformat NOVECTREF novectref _extra extra compile_opt idl2 strictarrsubs common tempsun systime 1 For key_performance taille size composanteu nx taille 1 ny taille 2 if n_elements reduitindice2d EQ 0 then reduitindice2d lindgen nx ny zu composanteu zv composantev norme normevecteur taille size indice2d nxgd taille 1 nygd taille 2 msk replicate 1 nx ny if keyword_set missing then terre where abs zu GE missing 10 ELSE terre 1 if terre 0 NE 1 then BEGIN msk terre 0 zu terre 0 zv terre 0 norme terre 0 ENDIF Stage 1: Given that the directions and the sense that the vector has on the sphere we have to try to determinate this direction and the sense that the vector will have on the screen once it will have been projected In theory: on the sphere a vector in a given point has for direction the tangent at the circle passing by the center of the Earth and by the vector So find the direction once the projection is done it is find the tangent to the curve representing the projection of the circle on the 2d plan at the point representing the projection of the starting point of the shere on the 2d plan In practice we do no know the definition of the curve given by the projection of a circle so find its tangente in a point What we do: In a 3d cartesian reference a We find coorinates of the point T starting of the arrow situed on the sphere b To each point T we determine local directions defined by the grid on this point and on which coordinates u v of the vector refer to These local directions are defined by gradients of glam and gphi Once we have obtain these directions we considare them like orthogonal and by norming them we build an orthonormal reference nu nv on which coordinates u v of the vector refer to In the starting 3d cartesian reference the vector is defined by: V u nu v nv where V nu and nv are 3d vectors and u and v are scalars c To approximate the tangente to the circle by the chord defined by the beginning and the ending of the arrow we will normalize V and then divide it by 100 d This allows us to determine coordinates of extremities of the chord in the 3d cartesian reference We pass them in spherical coordinates in order to recuperate latitude and longitude position of these points on the sphere e We pass coordinates of these points in normalized coordinates then in polar coordinates in order to find the angle and the direction they dertermine on the drawing Stage 1 a coordinates of the point T beginning of the arrow in spherical coordinates glam glamt indice2d reduitindice2d gphi gphit indice2d reduitindice2d Coordinates of the point T beginning of the arrow in the cartesian reference For the sphere we use a sphere with a radius of 1 radius replicate 1 nx ny coord_sphe transpose glam gphi radius r cv_coord from_sphere coord_sphe to_rect degrees x0 reform r 0 nx ny y0 reform r 1 nx ny z0 reform r 2 nx ny Stage 1 b Construction of a vector nu resp nv vectr normed carried by the axis of points u i j and u i 1 j resp v i j and v i j 1 which define for each point on the sphere local directions associated with u and v These vectors define a local orthonormal reference These vectors are built in a cartesian reference cv_coord We have choose a unity radius of the Earth unit definition of nu radius replicate 1 nxgd nygd IF finite glamu 0 gphiu 0 NE 0 THEN coord_sphe transpose glamu indice2d gphiu indice2d radius ELSE coord_sphe transpose glamf indice2d gphit indice2d radius r cv_coord from_sphere coord_sphe to_rect degrees coordinates of points of the grid u in cartesian ux reform r 0 nxgd nygd uy reform r 1 nxgd nygd uz reform r 2 nxgd nygd calculation of nu nux ux shift ux 1 0 nuy uy shift uy 1 0 nuz uz shift uz 1 0 conditions at extremities if NOT keyword_set key_periodic OR nxgd NE jpi then begin nux 0 nux 1 nuy 0 nuy 1 nuz 0 nuz 1 ENDIF reduction of the grid nux nux reduitindice2d nuy nuy reduitindice2d nuz nuz reduitindice2d definition of nv IF finite glamv 0 gphiv 0 NE 0 THEN coord_sphe transpose glamv indice2d gphiv indice2d radius ELSE coord_sphe transpose glamt indice2d gphif indice2d radius r cv_coord from_sphere coord_sphe to_rect degrees coordinates of points of the grid in cartesian vx reform r 0 nxgd nygd vy reform r 1 nxgd nygd vz reform r 2 nxgd nygd calcul of nv nvx vx shift vx 0 1 nvy vy shift vy 0 1 nvz vz shift vz 0 1 conditions at extremities nvx 0 nvx 1 nvy 0 nvy 1 nvz 0 nvz 1 reduction of the grid nvx nvx reduitindice2d nvy nvy reduitindice2d nvz nvz reduitindice2d normalization normalise nux nuy nuz normalise nvx nvy nvz Stage 1 c coordinates of the vector V in the cartesian reference direcx zu nux zv nvx direcy zu nuy zv nvy direcz zu nuz zv nvz normalization of the vector V normalise direcx direcy direcz on divide by 100 direcx direcx 100 direcy direcy 100 direcz direcz 100 Stege 1 d coordinates of the point of the arrow in the cartesian reference x1 x0 direcx y1 y0 direcy z1 z0 direcz coordinates of the point of the arrow in spherical coordinates coord_rect transpose x1 y1 z1 r cv_coord from_rect coord_rect to_sphere degrees glam1 reform r 0 nx ny gphi1 reform r 1 nx ny modification of glams Everything take place at the level of the line of changing of date BEWARE do not cut arrow which goes out of the window test: If it goes out of the frame but thanks to 360 it come in we modify it ind where glam1 LT x range 0 AND glam1 360 LE x range 1 if ind 0 NE 1 then glam1 ind glam1 ind 360 ind where glam1 GT x range 1 AND glam1 360 GE x range 0 if ind 0 NE 1 then glam1 ind glam1 ind 360 ind where glam LT x range 0 AND glam 360 LE x range 1 if ind 0 NE 1 then glam ind glam ind 360 ind where glam GT x range 1 AND glam 360 GE x range 0 if ind 0 NE 1 then glam ind glam ind 360 Stage 1 e r convert_coord glam gphi data to_normal x0 r 0 normal coordinates of the beginning of the array y0 r 1 r convert_coord glam1 gphi1 data to_normal x1 r 0 normal coordinates of the ending of the array Before scaling y1 r 1 tests to avoid that arrows be drawing out of the domain out where x0 LT p position 0 OR x0 GT p position 2 OR y0 LT p position 1 OR y0 GT p position 3 if out 0 NE 1 THEN x0 out values f_nan Following projections there may are points at NaN when we pass in normal coordinates We delete these points nan finite x0 y0 x1 y1 number where nan EQ 1 x0 x0 number x1 x1 number y0 y0 number y1 y1 number msk msk number norme norme number We define the vector direction in the normalize reference dirx x1 x0 diry y1 y0 We pass in polar coordinates to recuperate the angle which wasb the goal of all the first stage dirpol cv_coord from_rect transpose dirx diry to_polar dirpol msk dirpol 0 Stage 2 Now we take care of the norme Automatic putting at the scale if NOT keyword_set cmref then BEGIN mipgsz min page_size max mapgsz sizexfeuille mipgsz key_portrait mapgsz 1 key_portrait sizexfeuille 10 sizexfeuille cmref 5 floor sizexfeuille 10 15 cmref cmref 10 ENDIF if NOT keyword_set normeref then BEGIN value max norme puissance10 10 floor alog10 value normeref puissance10 floor value puissance10 endif cm 1 normeref cmref We modify the array norme to an element having the value cm be represented by a trait of lenght 1 cm on the paper Norme contain the norme of vectors we want to draw norme 1 1 cm norme cv_cm2normal dirpol Stage 3 Now that we have the angle and the norme we recuperate coordinates in rectangular and we draw arrows r cv_coord from_polar transpose dirpol norme to_rect composantex r 0 composantey r 1 x1 x0 composantex y1 y0 composantey Drawing if NOT KEYWORD_SET vectcolor then vectcolor 0 points where msk EQ 1 IF points 0 NE 1 THEN arrow x0 points y0 points x1 points y1 points norm hsize 2 COLOR vectcolor THICK vectthick Draw an arrow at the right bottom of the drawing as a caption if NOT keyword_set novectref then BEGIN dx cmref cv_cm2normal 0 Lenght of the vector of reference in normalzed coordinates if keyword_set vectrefformat then normelegende strtrim string normeref format vectrefformat 1 ELSE normelegende strtrim normeref 1 if keyword_set vectrefpos then begin r convert_coord vectrefpos data to_normal x0 r 0 y0 r 1 ENDIF ELSE BEGIN x0 x window 1 dx r convert_coord d x_ch_size d y_ch_size device to_normal dy 3 r 1 p charsize y0 y window 0 dy ENDELSE arrow x0 y0 x0 dx y0 norm hsize 2 color 0 xyouts x0 y0 normelegende norm align 1 charsize p charsize color 0 endif if keyword_set key_performance NE 0 THEN print temps vecteur systime 1 tempsun return END "); 284 a[282] = new Array("./ToBeReviewed/PLOTS/VECTEUR/velovect.html", "velovect.pro", "", " file_comments Produce a two dimensional velocity field plot A directed arrow is drawn at each point showing the direction and magnitude of the field categories Plotting two dimensional param U in required The X component of the two dimensional field U must be a two dimensional array param V in required The Y component of the two dimensional field Y must have the same dimensions as X The vector at point i j has a magnitude of: U i j 2 V i j 2 0 5 and a direction of: ATAN2 V i j U i j param X in optional Optional abcissae values X must be a vector with a length equal to the first dimension of U and V param Y in optional Optional ordinate values Y must be a vector with a length equal to the first dimension of U and V keyword COLOR The color index used for the plot keyword DOTS Set this keyword to 1 to place a dot at each missing point Set this keyword to 0 or omit it to draw nothing for missing points Has effect only if MISSING is specified keyword LENGTH Length factor The default of 1 0 makes the longest U V vector the length of a cell keyword MISSING Missing data value Vectors with a LENGTH greater than MISSING are ignored keyword OVERPLOT Set this keyword to make VELOVECT overplot That is the current graphics screen is not erased no axes are drawn and the previously established scaling remains in effect keyword CLIP keyword NOCLIP keyword _EXTRA Used to pass your keywords restrictions Plotting on the selected device is performed System variables concerning plotting are changed Note: All other keywords are passed directly to the PLOT procedure and may be used to set option such as TITLE POSITION NOERASE etc history DMS RSI Oct 1983 For Sun DMS RSI April 1989 Added TITLE Oct 1990 Added POSITION NOERASE COLOR Feb 91 RES August 1993 Vince Patrick Adv Visualization Lab U of Maryland fixed errors in math August 1993 DMS Added _EXTRA keyword inheritance January 1994 KDB Fixed integer math which produced 0 and caused divide by zero errors December 1994 MWR Added _EXTRA inheritance for PLOTS and OPLOT June 1995 MWR Removed _EXTRA inheritance for PLOTS and changed OPLOT to PLOTS September 1996 GGS Changed denominator of x_step and y_step vars February 1998 DLD Add support for CLIP and NO_CLIP keywords June 1998 DLD Add support for OVERPLOT keyword Copyright c 1983 1998 Research Systems Inc All rights reserved Unauthorized reproduction prohibited version Id: velovect pro 142 2006 07 21 12:47:49Z navarro PRO VELOVECT U V X Y Missing Missing Length length Dots dots Color color CLIP clip NOCLIP noclip OVERPLOT overplot _EXTRA extra compile_opt idl2 strictarrsubs on_error 2 Return to caller if an error occurs s size u t size v if s 0 ne 2 then begin baduv: message U and V parameters must be 2D and same size endif if total abs s 0:2 t 0:2 ne 0 then goto baduv if n_params 0 lt 3 then x findgen s 1 else if n_elements x ne s 1 then begin badxy: message X and Y arrays have incorrect size endif if n_params 1 lt 4 then y findgen s 2 else if n_elements y ne s 2 then goto badxy if n_elements missing le 0 then missing 1 0e30 if n_elements length le 0 then length 1 0 mag sqrt u 2 v 2 magnitude Subscripts of good elements nbad 0 of missing points if n_elements missing gt 0 then begin good where mag lt missing if keyword_set dots then bad where mag ge missing nbad endif else begin good lindgen n_elements mag endelse ugood u good vgood v good x0 min x get scaling x1 max x y0 min y y1 max y x_step x1 x0 s 1 1 0 Convert to float Integer math y_step y1 y0 s 2 1 0 could result in divide by 0 maxmag max max abs ugood x_step max abs vgood y_step sina length ugood maxmag cosa length vgood maxmag if n_elements title le 0 then title plot to get axes if n_elements color eq 0 then color p color if n_elements noclip eq 0 then noclip 1 x_b0 x0 x_step x_b1 x1 x_step y_b0 y0 y_step y_b1 y1 y_step if not keyword_set overplot then begin if n_elements position eq 0 then begin plot x_b0 x_b1 y_b1 y_b0 nodata xst yst color color _EXTRA extra endif else begin plot x_b0 x_b1 y_b1 y_b0 nodata xst yst color color _EXTRA extra endelse endif if n_elements clip eq 0 then clip x crange 0 y crange 0 x crange 1 y crange 1 r 3 len of arrow head angle 22 5 dtor Angle of arrowhead st r sin angle sin 22 5 degs length of head ct r cos angle for i 0 n_elements good 1 do begin Each point x0 x good i mod s 1 get coords of start end dx sina i x1 x0 dx y0 y good i s 1 dy cosa i y1 y0 dy xd x_step yd y_step plots x0 x1 x1 ct dx xd st dy yd xd x1 x1 ct dx xd st dy yd xd y0 y1 y1 ct dy yd st dx xd yd y1 y1 ct dy yd st dx xd yd color color clip clip noclip noclip _EXTRA extra endfor if nbad gt 0 then Dots for missing PLOTS x bad mod s 1 y bad s 1 psym 3 color color clip clip noclip noclip _EXTRA extra end"); 285 a[283] = new Array("./ToBeReviewed/PLOTS/axe.html", "axe.pro", "", " file_comments Manage axes for the different drawings created by plt pltz and pltt categories Graphic environment param COUPE It is a string designating the type of cut to which the axes we create must report For example: xy xt param TEMPSMIN in required In the case where we do cut containing the time dimension we have to specify the beginning of the time s axis in julian days param TEMPSMAX in required In the case where we do cut containing the time dimension we have to specify the end of the time s axis in julian days keyword SIN activated when we trace in sinus of the latitude keyword SEPDATE string separating the diff rent constituents of the date By default it is a return to the linewhen we do a yt zt or a t In the other cases it is a blank keyword DIGITSYEAR 2 to use Z format 2 digits to code years instead of Y format See help of label_date for more informations on Z and Y keyword _EXTRA used to pass your keywords uses common pro restrictions It modify x and y history Sebastien Masson smasson lodyc jussieu fr 11 12 98 Eric Guilyardi types x y z amelioration de l axe temporel version Id: axe pro 152 2006 08 10 07:01:35Z smasson PRO axe coupe tempsmin tempsmax REVERSE_X reverse_x REVERSE_Y reverse_y SIN sin SEPDATE sepdate DIGITSYEAR digitsyear _EXTRA ex compile_opt idl2 strictarrsubs common tempsun systime 1 pour key_performance Management of ticks of the time axis in the case of TEMPSMIN and TEMPSMAX are definied divday 0 if n_params EQ 3 then BEGIN if keyword_set sepdate then sep sepdate ELSE if coupe EQ yt OR coupe EQ zt OR coupe EQ t then sep C ELSE sep caldat tempsmin mmin dmin ymin hmin mnmin smin _EXTRA ex caldat tempsmax mmax dmax ymax hmax mnmax smax _EXTRA ex format used for the year 2 or 4 5 digits IF NOT keyword_set digitsyear THEN digitsyear 4 IF digitsyear EQ 2 THEN fmtyr Z ELSE fmtyr Y if ymax EQ ymin then BEGIN if mmin ne mmax then BEGIN Same year but several monthes nticks mmax mmin 1 ticknom lonarr nticks for m 0 nticks 1 do ticknom m julday m mmin 1 ymin _EXTRA ex tminor 6 datfmt M sep fmtyr We check that labels are betwenn TEMPSMIN and TEMPSMAX ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom Particular case where we are overlap two monthes if nticks LE 1 then begin nticks dmax jourdsmois mmin ymin 0 dmin 1 2 ticknom lonarr nticks for d 0 nticks 1 do ticknom d julday mmin d 2 dmin ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 2 datfmt D sep M endif ENDIF ELSE BEGIN Same year and same month IF dmax dmin 1 GT 4 THEN BEGIN more than 4 days nticks dmax dmin 1 ticknom lonarr nticks for d 0 nticks 1 do ticknom d julday mmin d dmin ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 2 datfmt D sep M ENDIF ELSE BEGIN less than 4 days : divday ticks per day divday 4 nticks dmax dmin divday 1 ticknom fltarr nticks for d 0 nticks 1 do ticknom d julday mmin d divday dmin ymin _EXTRA ex d MOD divday float divday tminor 2 datfmt H:00 ENDELSE ENDELSE ENDIF ELSE BEGIN Several years CASE 1 OF ymax ymin 1 LE 10: BEGIN freq 1 tminor 12 datfmt M sep fmtyr end ymax ymin 1 LE 20: BEGIN freq 2 tminor 6 datfmt M sep fmtyr end ymax ymin 1 LE 50: BEGIN freq 5 tminor 5 datfmt M sep fmtyr end ymax ymin 1 LE 100: BEGIN freq 10 tminor 10 datfmt fmtyr end ymax ymin 1 LE 1000: BEGIN freq 50 tminor 5 datfmt fmtyr end ELSE : BEGIN freq 100 tminor 50 datfmt Y end ENDCASE nticks floor ymax ymin freq 1 IF floor ymin freq NE ymin freq THEN yminf floor ymin freq 1 freq ELSE yminf floor ymin freq freq ticknom lonarr nticks for y 0 nticks 1 do ticknom y julday 1 1 yminf y freq _EXTRA ex We check that labels are betwenn TEMPSMIN and TEMPSMAX ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom Particular case where we are overlap two monthes if nticks LE 1 then begin nticks mmax 12 mmin 1 ticknom lonarr nticks for m 0 nticks 1 do ticknom m julday m mmin 1 ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 6 datfmt M sep fmtyr Particular case where we are overlap two monthes if nticks LE 1 then begin nticks dmax jourdsmois mmin ymin 0 dmin 1 2 ticknom lonarr nticks for d 0 nticks 1 do ticknom d julday mmin d 2 dmin ymin _EXTRA ex ticknom ticknom where ticknom GE tempsmin AND ticknom LE tempsmax AND ticknom NE 1 nticks n_elements ticknom tminor 2 datfmt D sep M endif endif ENDELSE toto label_date 0 0 0 DATE_FORMAT datfmt _EXTRA ex if chkstru ex DATE_FORMAT then ex DATE_FORMAT ENDIF Definition of axes parameters case by case case coupe of pltv :BEGIN dtasize tempsmin x range 0 5 dtasize 0 0 5 y range 0 5 dtasize 1 0 5 if keyword_set reverse_x then x range reverse x range if keyword_set reverse_y then y range reverse y range x title nx y title ny END xy :BEGIN if keyword_set reverse_x then x range lon2 lon1 ELSE x range lon1 lon2 if keyword_set reverse_y then y range lat2 lat1 ELSE y range lat1 lat2 IF key_onearth THEN x tickformat lonaxe IF key_onearth THEN y tickformat lataxe END yz :BEGIN if keyword_set reverse_x then x range lat2 lat1 ELSE x range lat1 lat2 if keyword_set reverse_y then y range 0 1 ELSE y range 1 0 if keyword_set sin then BEGIN number of ticks by default plot 0 0 noerase nodata xtick_get xaxe We increase this number to it be around 10 ticks n_elements xaxe 1 ticks ticks 1 2 4 8 ticks ticks sort abs ticks 10 0 We recuperate the x axis for this new number of ticks plot 0 0 xticks ticks noerase nodata xtick_get xaxe x ticks ticks x tickv sin pi 180 xaxe tickname strarr ticks 1 for i 0 ticks do tickname i lataxe 0 0 xaxe i x tickname tickname x range sin pi 180 x range endif end xz :BEGIN if keyword_set reverse_x then x range lon2 lon1 ELSE x range lon1 lon2 if keyword_set reverse_y then y range 0 1 ELSE y range 1 0 end xt : begin if keyword_set reverse_x then x range lon2 lon1 ELSE x range lon1 lon2 if keyword_set reverse_y then y range tempsmax tempsmin tempsmin ELSE y range tempsmin tempsmax tempsmin IF key_onearth THEN x tickformat lonaxe result LABEL_DATE DATE_FORMAT M sep fmtyr y tickformat LABEL_DATE y tickname LABEL_DATE 1 0 ticknom _EXTRA ex y ticklen 1 y gridstyle 2 y ticks nticks 1 y tickv ticknom tempsmin y minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end yt : begin if keyword_set reverse_x then x range tempsmax tempsmin tempsmin ELSE x range tempsmin tempsmax tempsmin if keyword_set reverse_y then y range lat2 lat1 ELSE y range lat1 lat2 IF key_onearth THEN y tickformat lataxe x tickname LABEL_DATE 0 0 ticknom _EXTRA ex x ticklen 1 x gridstyle 2 x ticks nticks 1 x tickv ticknom tempsmin x minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end zt : begin if keyword_set reverse_x then x range tempsmax tempsmin tempsmin ELSE x range tempsmin tempsmax tempsmin if vargrid EQ W then gdep gdepw 0:nzw 1 ELSE gdep gdept 0:nzt 1 x tickname LABEL_DATE 0 0 ticknom _EXTRA ex x ticklen 1 x gridstyle 2 x ticks nticks 1 x tickv ticknom tempsmin x minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end t : BEGIN if keyword_set reverse_x then x range tempsmax tempsmin tempsmin ELSE x range tempsmin tempsmax tempsmin x tickname LABEL_DATE 0 0 ticknom _EXTRA ex x ticklen 1 x gridstyle 2 x ticks nticks 1 x tickv ticknom tempsmin x minor tminor IF divday GT 0 THEN y title Time from strtrim dmin 1 def_month 1m strtrim mmin 1 strtrim ymin 1 end x : begin x range lon1 lon2 IF key_onearth THEN x tickformat lonaxe END y : begin if keyword_set sin then BEGIN Number of ticks by default plot 0 0 nodata noerase xstyle 5 ystyle 5 xtick_get xaxe We increase this number to it be around 10 ticks n_elements xaxe 1 ticks ticks 1 2 4 8 ticks ticks sort abs ticks 10 0 We recuperate the x axis for this new number of ticks plot 0 0 xticks ticks nodata noerase xstyle 5 ystyle 5 xtick_get xaxe x ticks ticks x tickv sin pi 180 xaxe tickname strarr ticks 1 for i 0 ticks do tickname i lataxe 0 0 xaxe i x tickname tickname x range sin pi 180 x range ENDIF ELSE x range lat1 lat2 IF key_onearth THEN x tickformat lataxe END z : begin if vargrid EQ W then gdep gdepw 0:nzw 1 ELSE gdep gdept 0:nzt 1 if keyword_set reverse_y then y range gdep 0 gdep n_elements gdep 1 ELSE y range gdep n_elements gdep 1 gdep 0 END endcase if keyword_set key_performance THEN print temps axe systime 1 tempsun return end"); 286 a[284] = new Array("./ToBeReviewed/PLOTS/legende.html", "legende.pro", "", " file_comments Provide caption categories graphic annex param MI in required The min of the drawing param MA in required The max of the plot param COUPE Charactere containing two letters giving the type of the cut for example: xz keyword CONTOUR If we want to trace contours of a different field than the one whose we have the colored drawing by examlpe E P in color and QSR in contours It must be a field respecting same caracteristics than the argument number one of plt keyword ENDPOINTS Used when we do vertical cuts in diagonal keyword _EXTRA used to pass your keywords uses common pro restrictions The use of the global variable langage allows to change the language and the caption easily history Sebastien Masson smasson lodyc jussieu fr 14 8 98 Eric Guilyardi ericg lodyc jussieu fr GB version 11 6 99 version Id: legende pro 152 2006 08 10 07:01:35Z smasson pro legende mi ma coupe CONTOUR contour ENDPOINTS endpoints DIREC direc VECTLEGENDE vectlegende INTERVALLE intervalle TYPE_YZ type_yz VARNAME2 varname2 NPTS npts _EXTRA ex compile_opt idl2 strictarrsubs common tempsun systime 1 pour key_performance grille 1 1 1 gdep nx ny nz English legends fmt_mm f12 2 fmt_bt f7 1 colorf contourf Contour plot vecteurf Vector norm expf datef fieldf depthf endpointsf Diag Section zonalf IF key_onearth THEN latintf latitudes in ELSE latintf j index in timintf time in onf depthf2 Depth m Meridf Zonal Mean IF key_onearth THEN lonintf longitudes in ELSE lonintf i in hovxt XT plot diaghovxt Diag XT plot depintf depths in timef Time hovyt YT plot diaghovyt Diag YT plot hovzt ZT plot hovt IF key_onearth THEN lontitle Longitude ELSE lontitle i index IF key_onearth THEN lattitle Latitude ELSE lattitle j index vertz depthf2 legniv m IF keyword_set TYPE_YZ THEN BEGIN IF type_yz EQ hPa THEN vertz hPa IF type_yz EQ hPa THEN legniv hPa ENDIF Start legende definition and possible complement of p subtitle if n_elements varunit ne 0 then unite varunit else unite p subtitle colorf unite : Min strtrim string format fmt_mm mi 2 Max strtrim string format fmt_mm ma 2 if keyword_set intervalle then BEGIN if intervalle NE 1 then p subtitle p subtitle Int strtrim string format fmt_mm intervalle 2 endif if size contour type EQ 8 then BEGIN it is a structure unite contour 1 p subtitle p subtitle C contourf unite : Min strtrim string format fmt_mm contour 0 0 2 Max strtrim string format fmt_mm contour 0 1 2 if contour inter NE 1 then p subtitle p subtitle Int strtrim string format fmt_mm contour inter 2 ENDIF if size vectlegende type EQ 8 then begin unite vectlegende 1 p subtitle p subtitle C vecteurf unite : Min strtrim string format fmt_mm vectlegende 0 0 2 Max strtrim string format fmt_mm vectlegende 0 1 2 endif Shapping of subdomain s dimensions la1 strtrim string format fmt_bt lat1 2 la2 strtrim string format fmt_bt lat2 2 lo1 strtrim string format fmt_bt lon1 2 lo2 strtrim string format fmt_bt lon2 2 pr1 strtrim string format fmt_bt vert1 2 pr2 strtrim string format fmt_bt vert2 2 Management of the date if n_elements vardate EQ 0 then vardate if NOT keyword_set direc then direc if strpos direc t NE 1 then begin svardate strtrim vairdate time 0 1 strtrim vairdate time jpt 1 1 ENDIF ELSE svardate vardate case on the caes where the caption is applied case coupe of xy :begin if strupcase vargrid EQ W then firstz firstzw ELSE firstz firstzt if strpos direc z EQ 1 AND firstz NE 0 then BEGIN prof strtrim round gdep 0 1 p title expf varexp datef svardate fieldf varname depthf prof legniv ENDIF ELSE p title expf varexp datef svardate fieldf varname x title lontitle y title lattitle end xz :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim ny 1 IF long n LE 3 THEN zonalf Section if keyword_set endpoints AND lat1 NE lat2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title zonalf varexp datef svardate fieldf varname x title lontitle if keyword_set endpoints AND lat1 EQ lat2 then BEGIN IF key_onearth THEN x title x title at strtrim lataxe 0 0 lat1 1 ELSE x title x title at j index strtrim lat1 1 ENDIF y title depthf2 end yz :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx 1 IF long n LE 3 THEN meridf if keyword_set endpoints AND lon1 NE lon2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title meridf varexp datef svardate fieldf varname y title vertz x title lattitle if keyword_set endpoints AND lon1 EQ lon2 then BEGIN IF key_onearth THEN x title x title at strtrim lonaxe 0 0 lon1 1 ELSE x title x title at i index strtrim lon1 1 ENDIF end xt :begin IF keyword_set npts THEN n strtrim npts 1 if keyword_set endpoints AND lat1 NE lat2 then p title diaghovxt varexp fieldf varname ELSE p title hovxt varexp fieldf varname IF time size time 0 1 time 0 GE 10 THEN y title timef x title lontitle if keyword_set endpoints AND lat1 EQ lat2 then BEGIN IF key_onearth THEN x title x title at strtrim lataxe 0 0 lat1 1 ELSE x title x title at j index strtrim lat1 1 ENDIF end yt :begin IF keyword_set npts THEN n strtrim npts 1 if keyword_set endpoints AND lon1 NE lon2 then p title diaghovyt varexp fieldf varname ELSE p title hovyt varexp fieldf varname IF time size time 0 1 time 0 GE 10 THEN x title timef y title lattitle if keyword_set endpoints AND lon1 EQ lon2 then BEGIN IF key_onearth THEN x title x title at strtrim lonaxe 0 0 lon1 1 ELSE x title x title at i index strtrim lon1 1 ENDIF end zt :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx ny 1 p title hovzt varexp fieldf varname y title depthf2 IF time size time 0 1 time 0 GE 10 THEN x title timef end t :begin IF keyword_set npts THEN n strtrim npts 1 ELSE BEGIN if keyword_set integration3d then n strtrim nx ny nz 1 ELSE n strtrim nx ny 1 ENDELSE p title hovt varexp fieldf varname y title varname IF time size time 0 1 time 0 GE 10 THEN x title timef end x :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim ny nz 1 if keyword_set endpoints AND lat1 NE lat2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title varexp datef svardate fieldf varname x title lontitle if keyword_set endpoints AND lat1 EQ lat2 then BEGIN IF key_onearth THEN x title x title at strtrim lataxe 0 0 lat1 1 ELSE x title x title at j index strtrim lat1 1 ENDIF y title varname end y :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx nz 1 if keyword_set endpoints AND lon1 NE lon2 then p title endpointsf varexp datef svardate fieldf varname ELSE p title varexp datef svardate fieldf varname x title lattitle if keyword_set endpoints AND lon1 EQ lon2 then BEGIN IF key_onearth THEN x title x title at strtrim lonaxe 0 0 lon1 1 ELSE x title x title at i index strtrim lon1 1 ENDIF y title varname end z :begin IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx ny 1 p title varexp datef svardate fieldf varname y title depthf2 x title varname end yfx : BEGIN IF keyword_set npts THEN n strtrim npts 1 ELSE n strtrim nx ny nz 1 p title varexp datef svardate varunit x title varname2 y title varname END else: ENDCASE if keyword_set direc then BEGIN if strpos direc x NE 1 then p subtitle lonintf lo1 lo2 onf strtrim nx 1 points C p subtitle if strpos direc y NE 1 then BEGIN if strpos p subtitle EQ 1 then p subtitle latintf la1 la2 onf strtrim ny 1 points C p subtitle ELSE p subtitle latintf la1 la2 onf strtrim ny 1 points p subtitle ENDIF if strpos direc z NE 1 AND nz NE 1 OR coupe NE xy then BEGIN if strpos p subtitle EQ 1 then p subtitle depintf pr1 pr2 onf strtrim nz 1 points C p subtitle ELSE p subtitle depintf pr1 pr2 onf strtrim nz 1 points p subtitle ENDIF ENDIF if keyword_set endpoints AND coupe NE yt AND lat1 NE lat2 then p title p title C C if keyword_set key_performance THEN print temps legende systime 1 tempsun return end"); 287 a[285] = new Array("./ToBeReviewed/PLOTS/plotsym.html", "plotsym.pro", "", " file_comments function to make plotting symbols much easier categories Graphic Keyword circle circle symbol Keyword TRIANGLE triangle symbol Keyword DIAMOND diamond symbold Keyword BOX box symbol Keyword LINE line symbol Keyword SCALE scales the symbol Keyword ANGLE angle the symbol should be rotated Keyword _EXTRA extra keywords for usersym These are thick color and fill history Written by: Ronn Kling Ronn Kling Consulting 7038 Westmoreland Dr Warrenton VA 20187 klingrl juno com copyright 1999 all rights reserved version Id: plotsym pro 142 2006 07 21 12:47:49Z navarro function plotsym circle circle triangle triangle diamond diamond angle angle box box line line scale scale _extra extra compile_opt idl2 strictarrsubs if not keyword_set scale then scale 1 0 if not keyword_set angle then angle 0 0 if keyword_set circle then begin theta findgen 30 29 360 endif else if keyword_set triangle then begin theta 30 90 210 30 endif else if keyword_set diamond then begin theta 0 90 180 270 0 endif else if keyword_set box then begin theta 315 45 135 225 315 endif else if keyword_set line then begin theta 180 0 endif theta theta angle x cos theta dtor scale y sin theta dtor scale usersym x y _extra extra return 8 end"); 288 a[286] = new Array("./ToBeReviewed/PLOTS/reinitplt.html", "reinitplt.pro", "", " file_comments This procedure will reinitialise all or a selection ofthe system plot variables categories plot Utility keyword X clear the appropriate variable keyword Y clear the appropriate variable keyword Z clear the appropriate variable keyword P clear the appropriate variable keyword ALL Clear all this is equivalent to x y z p keyword INVERT Invert the logic Clear all unselected variables Therefore clearplt all invert does nothing uses common pro restrictions The sytem plot variables are changed history Written by: Trevor Harris Physics Dept University of Adelaide July 1990 Sebastien Masson 7 5 98 version Id: reinitplt pro 142 2006 07 21 12:47:49Z navarro pro reinitplt all all x x y y z z p p invert invert compile_opt idl2 strictarrsubs clearx 0 cleary 0 clearz 0 clearp 0 if keyword_set x then clearx 1 if keyword_set y then cleary 1 if keyword_set z then clearz 1 if keyword_set p then clearp 1 if keyword_set all or not keyword_set x and not keyword_set y and not keyword_set z and not keyword_set p then begin clearx 1 cleary 1 clearz 1 clearp 1 endif if keyword_set invert then begin clearx not clearx cleary not cleary clearz not clearz clearp not clearp endif if clearx then begin x charsize 0 x GRIDSTYLE 0 X MARGIN 10 3 X MINOR 0 X OMARGIN 0 0 x region 0 X RANGE 0 x STYLE 5 x tick 1 x TICKFORMAT x TICKLEN 0 x tickname x ticks 0 X TICKV 0 X TICKV 1 x title x TYPE 0 endif if cleary then begin y charsize 0 y GRIDSTYLE 0 Y MARGIN 10 3 Y MINOR 0 Y OMARGIN 0 0 y region 0 Y RANGE 0 y STYLE 5 y tick 1 y TICKFORMAT y TICKLEN 0 y tickname y ticks 0 Y TICKV 0 Y TICKV 1 y title y TYPE 0 endif if clearz then begin z charsize 0 z GRIDSTYLE 0 Z MARGIN 10 3 Z MINOR 0 Z OMARGIN 0 0 z region 0 Z RANGE 0 z STYLE 1 z tick 1 z TICKFORMAT z TICKLEN 0 z tickname z ticks 0 Z TICKV 0 Z TICKV 1 z title z TYPE 0 endif if clearp then begin p BACKGROUND d n_colors 1 255 p CHARSIZE 1 p CHARTHICK 0 p LINESTYLE 0 p MULTI replicate 0 5 p NOERASE 0 p POSITION 0 p region 0 p title p subtitle p ticklen 0 02 p thick 0 1 p color 0 endif return end "); 289 a[287] = new Array("./ToBeReviewed/PLOTS/style.html", "style.pro", "", " file_comments Choose the way to trace isolines categories graphic param LABSTYLE in required Number to which the style of drawing choosen refer to param LEVEL_Z2D in required Vector containing values of isolignes to be traced param LINESTYLE out Vector used to define the isocontour s style Comment: remenber: Index Linestyle 0 Solid 1 Dotted 2 Dashed 3 Dash Dot 4 Dash Dot Dot Dot 5 Long Dashes param THICK out Vector defining the thick of the isoline history Sebastien Masson smasson lodyc jussieu fr version Id: style pro 142 2006 07 21 12:47:49Z navarro pro style labstyle level_z2d linestyle thick compile_opt idl2 strictarrsubs case labstyle of 0: begin series: Two thin continuous lines one boldface continuous line thick 1 1 2 linestyle 0 return end 1: begin series: Before the middle of levels: thin dash Then thin continuous trait If the middle of the drawing is drawn it is in boldface continuous trait impair n_elements level_z2d 2 fix n_elements level_z2d 2 a replicate 0 fix n_elements level_z2d 2 b replicate 1 fix n_elements level_z2d 2 c replicate 2 fix n_elements level_z2d 2 if impair then begin thick b 2 b linestyle c 0 a endif else begin thick 0 linestyle c a endelse return end 2: begin series: Before the sill defined by answering to a question : thin dash Then thin continuous trait If the sill is drawn it is in boldface continuous trait seuil xquestion Quelle est la limite tirets trait continu 0 seuil float seuil rien where level_z2d lt seuil n a replicate 0 n_elements level_z2d n c replicate 2 n if seuil eq level_z2d n then begin thick replicate 1 n 2 replicate 1 n_elements level_z2d 1 n linestyle c a endif else begin thick 0 linestyle c a endelse return end 3: begin n n_elements level_z2d seuil level_z2d 1 n 2 thick intarr n thick indgen n 4 4 1 thick indgen n 4 4 1 1 thick indgen n 4 4 2 2 thick indgen n 4 4 3 1 linestyle intarr n linestyle indgen n 4 4 3 linestyle indgen n 4 4 1 0 linestyle indgen n 4 4 2 0 linestyle indgen n 4 4 3 0 labels intarr n labels indgen n 2 2 1 labels n 2 0 return end 4: begin Boldface continuous trait seuil 1 e 6 thick replicate 5 n_elements level_z2d linestyle 0 rien where abs level_z2d max abs level_z2d LT seuil if rien 0 NE 1 then thick rien 0 3 end else: begin ras report Le numero de labstyle demande n existe pas stop end endcase return end"); 290 a[288] = new Array("./ToBeReviewed/PLOTS/symbols.html", "symbols.pro", "", " file_comments Create custom plotting symbols param NSYM in required 1 open circle 2 filled circle 3 arrow pointing right 4 arrow pointing left 5 arrow pointing up 6 arrow pointing down 7 arrow pointing up and left 45 degrees 8 arrow pointing down and left 9 arrow pointing down and right 10 arrow pointing up and right 11 through 18 are bold versions of 3 through 10 19 horizontal line 20 box 21 diamond 22 triangle 30 filled box 31 filled diamond 32 filled triangle param SCALE in required size of symbols keyword COLOR color of symbols restrictions The desired symbol is stored in the user buffer and will be plotted if P PSYM 8 history Jeff Bennett U of Colorado 198 version Id: symbols pro 142 2006 07 21 12:47:49Z navarro pro symbols nsym scale color col compile_opt idl2 strictarrsubs on_error 2 fill 0 case 1 of nsym le 2 : begin circles for large scales increase number of points for res if scale ge 4 then a findgen 25 else a findgen 13 a a 3 14159 6 0 12 or 24 pi 6 xarr cos a yarr sin a if nsym eq 2 then fill 1 end nsym ge 3 nsym le 18 : begin arrow heads xarr fltarr 5 yarr xarr xarr 1 10 xarr 2 6 yarr 2 2 nsyms greater than 10 should be filled arrows if nsym gt 10 then begin xarr 3 6 xarr 4 10 yarr 3 2 fill 1 endif else begin xarr 3 10 xarr 4 6 yarr 4 2 endelse case 1 of nsym eq 3 : dummy 0b nsym eq 4 : xarr 1 xarr nsym eq 11 nsym eq 12 : begin xarr extrac xarr 0 11 yarr extrac yarr 0 11 yarr 6 0 5 xarr 7 6 yarr 7 0 5 xarr 8 6 yarr 8 0 5 yarr 9 0 5 if nsym eq 12 then begin rotation xarr yarr 180 nx ny xarr nx yarr ny endif end nsym eq 5 nsym eq 13 : begin temp xarr xarr yarr yarr temp end nsym eq 6 nsym eq 14 : begin temp 1 xarr xarr yarr yarr temp end nsym ge 7 nsym le 10 nsym ge 15 nsym le 18 : begin case 1 of nsym eq 7 nsym eq 15 : deg 45 nsym eq 8 nsym eq 16 : deg 135 nsym eq 9 nsym eq 17 : deg 225 nsym eq 10 nsym eq 18 : deg 315 endcase rotation xarr yarr deg nx ny xarr nx yarr ny end end nsym ge 7 endcase end nsym between 3 and 18 nsym eq 20 nsym eq 21 nsym eq 30 nsym eq 31 : begin xarr fltarr 5 3 yarr xarr xarr 1 3 xarr 2 3 yarr 2 3 yarr 3 3 if nsym eq 21 nsym eq 31 then begin rotation xarr yarr 45 nx ny nx 0 70 nx shrink the x direction xarr nx yarr ny endif if nsym ge 30 then fill 1 end nsym 20 21 30 31 nsym eq 22 nsym eq 32 : begin side length 6 0 at centroid yarr fltarr 4 6 4 xarr fltarr 4 6 2 xarr 1 6 2 xarr 2 0 yarr 2 6 sqrt 3 2 6 4 if nsym eq 32 then fill 1 end else: begin xarr fltarr 2 1 yarr xarr 0 xarr 1 1 end endcase xarr xarr scale yarr yarr scale set symbol buffer if keyword_set col then usersym xarr yarr fill fill color col else usersym xarr yarr fill fill return end"); 291 a[289] = new Array("./ToBeReviewed/POSTSCRIPT/calibre.html", "calibre.pro", "", " file_comments From a rapport of aspect and values in line of character of different margins it calculate POSFENETRE and POSBAR which serve to place the drawing and the color bar thanks to p position on a leaf or a screen output whose the window has the same proportion categories graphics param RAPPORTYX in required Scale rapport between the lenght of the y axis and the x one For example for an xy map: RAPPORTYX lat2 lat1 lon2 lon1 param MARGE in required Vector made of 4 elements containing the size of the left right up and bottom margin having to surround the graph All is measured in lines of characters param MARGEBAR in required Vector made of 4 elements containing the size of the left right and bottom margin and BEWARE the last element is this time the positio of the right up corner having to surround the color bar All is measured in lines of characters param SMALLDRAW in required 2 possibilities: It is vector made of 4 elements giving in portrait or landscape the position of the frame in which the drawing must go in This position is given by coordinates of the 2 corners of the frame: in the left bottom and the right up It is always for a postscript or a screen output express in cm the origin being the left bottom corner It is a vector made of 3 elements giving the number of column to be done in the drawing the number of line and the number of the case the number have to occupy see matlab For example to do 6 drawing in 3 columns and 2 lines and occupy the 4th case small 2 3 4 keyword REMPLI Force the drawing to occupy the biggest possible place defined by SMALLDRAW without respect the rapport y on x keyword YXASPECT Force the rapport y on x to take the value RAPPORTYX YXASPECT This keyword can be used in 2 cases: 1 YXASPECT 1 : force RAPPORTYX to be respected otherwise Calibre take the initiative to change it a little inthe case of the aspect rapport of SMALL is too different of the one of SMALLDRAW 2 YXASPECT n : multiply by n the aspect rapport given by default For example in plt RAPPORTYX is calculated to the reference be orthonormal to have a reference where the y axis is 2 time bigger than the x one YXASPECT 2 keyword PORTRAIT Force the page or the window to be in standing position keyword LANDSCAPE Force the page or the window on the screen to be in lenthened position keyword _EXTRA Used to pass your keywords param POSFENETRE It is a vector made of 4 elements containing the position of the frame containing captions the graph in normalized coordinates Comment: to position the drawing we have to do p position POSFENETRE after the call of calibre param POSBAR See POSFENTRE but for the color bar Same comment to position the color bar p position POSBAR uses common pro history Sebastien Masson smasson lodyc jussieu fr 11 12 98 version Id: calibre pro 150 2006 08 09 10:12:54Z navarro pro calibre rapportyx marge margebar smalldraw posfenetre posbar REMPLI rempli YXASPECT yxaspect PORTRAIT portrait LANDSCAPE lanscape _extra ex compile_opt idl2 strictarrsubs cm_4ps IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 For key_performance if keyword_set portrait then key_portrait 1 if keyword_set landscape then key_portrait 0 if keyword_set yxaspect then begin rapportyx rapportyx yxaspect test2 0 endif else begin yxaspect 1 test2 1 ENDELSE mipgsz min page_size max mapgsz choice of Landscape or Portrait if n_elements key_portrait eq 0 then begin if rapportyx ge 1 then key_portrait 1 if rapportyx lt 1 then key_portrait 0 endif If smalldraw is count like in matlab if n_elements smalldraw EQ 3 then begin if n_elements page_margins EQ 0 then page_margins 1 1 1 1 smalldraw long smalldraw nbrecol smalldraw 0 nbrelig smalldraw 1 numero smalldraw 2 1 numlig numero nbrecol numcol numero numlig nbrecol bas mipgsz key_portrait mapgsz 1 key_portrait cote mapgsz key_portrait mipgsz 1 key_portrait poscol page_margins 0 findgen nbrecol 1 1 bas page_margins 0 page_margins 1 nbrecol poslig cote page_margins 3 findgen nbrelig 1 1 cote page_margins 2 page_margins 3 nbrelig smalldraw poscol numcol poslig numlig 1 poscol numcol 1 poslig numlig endif determination of the size of characters p charsize nombre_de_mots_ds_titre 60 p charsize 1 smalldraw 2 smalldraw 0 d x_px_cm nombre_de_mots_ds_titre d y_ch_size if p charsize gt 1 then p charsize 1 transfert of margin in cm cm 1 d x_px_cm marge 1 marge d y_ch_size p charsize cm margebar 1 margebar d y_ch_size p charsize cm definition of the part of the leaf where we draw if key_portrait eq 0 then begin big smalldraw 2 smalldraw 0 small smalldraw 3 smalldraw 1 endif else begin small smalldraw 2 smalldraw 0 big smalldraw 3 smalldraw 1 endelse if key_portrait eq 0 then rapportmax 1 small marge 3 marge 1 big marge 2 marge 0 else rapportmax 1 small marge 2 marge 0 big marge 3 marge 1 If YXASPECT is not specified we modify the value of RAPPORTYX to it match better with the leaf s proportions if rapportyx le rapportmax then begin if test2 then begin rap 1 rapportmax rapportyx if rap ge 5 and rap lt 6 then rapportyx rapportyx 1 5 if rap ge 6 and rap lt 7 then rapportyx rapportyx 2 if rap ge 7 and rap lt 8 then rapportyx rapportyx 2 5 if rap ge 8 then rapportyx rapportyx 3 endif endif else begin if test2 then begin rap 1 rapportmax rapportyx if rap lt 1 5 and rap ge 1 6 then rapportyx rapportyx 1 5 if rap lt 1 6 and rap ge 1 7 then rapportyx rapportyx 2 if rap lt 1 7 and rap ge 1 8 then rapportyx rapportyx 2 5 if rap lt 1 8 then rapportyx rapportyx 3 endif endelse in the case where we do a Landscape: if key_portrait eq 0 then begin if keyword_set rempli then begin xs big ys small endif else begin if rapportyx le rapportmax then begin xs big ys 1 big marge 0 marge 1 rapportyx marge 2 marge 3 if ys gt small then begin xs 1 small marge 2 marge 3 rapportyx marge 0 marge 1 ys small endif endif else begin xs 1 small marge 2 marge 3 rapportyx marge 0 marge 1 ys small if xs gt big then begin xs big ys 1 big marge 0 marge 1 rapportyx marge 2 marge 3 endif endelse endelse xoff 1 small ys 2 smalldraw 1 yoff 1 big xs 2 xs mapgsz smalldraw 2 a 1 mapgsz yoff mapgsz b 1 xoff mipgsz c a 1 xs mapgsz d b 1 ys mipgsz endif In the case where we do a portrait: else begin if keyword_set rempli then begin xs small ys big endif else begin if rapportyx le rapportmax then begin xs small ys 1 small marge 0 marge 1 rapportyx marge 2 marge 3 if ys gt big then begin xs 1 big marge 2 marge 3 rapportyx marge 0 marge 1 ys big endif endif else begin xs 1 big marge 2 marge 3 rapportyx marge 0 marge 1 ys big if xs gt small then begin xs small ys 1 small marge 0 marge 1 rapportyx marge 2 marge 3 endif endelse endelse xoff 1 small xs 2 smalldraw 0 yoff 1 big ys 2 smalldraw 1 a 1 xoff mipgsz b 1 yoff mapgsz c a 1 xs mipgsz d b 1 ys mapgsz xset xoff yset yoff endelse bas mapgsz 1 key_portrait mipgsz key_portrait cote mipgsz 1 key_portrait mapgsz key_portrait posfenetre a b c d marge 0 bas marge 2 cote marge 1 bas marge 3 cote posbar a b c d margebar 0 bas margebar 2 cote margebar 1 bas ys margebar 3 cote if keyword_set key_performance THEN print temps calibre systime 1 tempsun IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF return end"); 292 a[290] = new Array("./ToBeReviewed/POSTSCRIPT/chcolps.html", "chcolps.pro", "", "PRO format_colortable_hexa table compile_opt idl2 strictarrsubs tvlct r g b get z strarr 256 y strarr 256 for k 0 255 do z k 00 strtrim string r k format Z 2 for k 0 255 do y k y k strmid z k strlen z k 2 2 for k 0 255 do z k 00 strtrim string g k format Z 2 for k 0 255 do y k y k strmid z k strlen z k 2 2 for k 0 255 do z k 00 strtrim string b k format Z 2 for k 0 255 do y k y k strmid z k strlen z k 2 2 table strlowcase y END PRO build_table tableout Fabrique le bloc de colortable compile_opt idl2 strictarrsubs format_colortable_hexa table tableout strarr 25 tableout 0 COLORTAB def END PRO chcolps n1 n2 file PALIT1 palit1 PALIT2 palit2 Modifie les couleurs d un fichier postscript Creation : G Roullet 1999 recupere les palettes compile_opt idl2 strictarrsubs lct n1 IF keyword_set palit1 THEN palit palit1 tvlct red green blue get lct n2 IF keyword_set palit2 THEN palit palit2 tvlct red1 green1 blue1 get filein file fileout file new openr numin filein get_lun openw numout fileout get_lun ligne nl 0 colortab 0 Scan le fichier WHILE NOT eof numin DO BEGIN readf numin ligne format A nl nl 1 Replace setrgbcolor statements pos strpos ligne setrgbcolor IF pos NE 1 THEN BEGIN r round float strmid ligne pos 18 6 255 g round float strmid ligne pos 12 6 255 b round float strmid ligne pos 6 6 255 ind where r EQ red AND g EQ green AND b EQ blue ind ind 0 IF ind 0 NE 1 THEN BEGIN r1 red1 ind 255 g1 green1 ind 255 b1 blue1 ind 255 color string r1 g1 b1 format 3 F5 3 : X strput ligne color pos 18 ENDIF ELSE BEGIN print erreur ligne : nl dist abs r red abs g green abs b blue ind where dist EQ min dist 0 ind ind 0 print je trouve long r g b print je remplace par red ind green ind blue ind r1 red1 ind 255 g1 green1 ind 255 b1 blue1 ind 255 color string r1 g1 b1 format 3 F5 3 : X strput ligne color pos 18 ENDELSE ENDIF Replace COLORTAB pos strpos ligne COLORTAB IF pos NE 1 THEN BEGIN build_table table n 0 colortab 1 ENDIF IF colortab THEN BEGIN ligne table n n n 1 IF n EQ 24 THEN colortab 0 ENDIF Ecrit le fichier de sorti printf numout ligne format A ENDWHILE close numin close numout free_lun numin free_lun numout spawn gs fileout END "); 293 a[291] = new Array("./ToBeReviewed/POSTSCRIPT/ps.html", "ps.pro", "", ""); 294 a[292] = new Array("./ToBeReviewed/STATISTICS/a_correlate2d.html", "a_correlate2d.pro", "", " FUNCTION Auto_Cov2d X Lag Double Double zero2nan zero2nan compile_opt idl2 strictarrsubs XDim SIZE X dimensions nx XDim 0 ny XDim 1 Sample autocovariance function Xmean TOTAL X Double Double 1 nx ny res TOTAL X 0:nx 1 lag 0 0:ny 1 lag 1 Xmean X lag 0 :nx 1 lag 1 :ny 1 Xmean Double Double if keyword_set zero2nan AND res EQ 0 then res values f_nan RETURN res END file_comments This function computes the autocorrelation Px K L or autocovariance Rx K L of a sample population X nx ny as a function of the lag K L categories Statistics param X in required An 2 dimension Array nx ny param LAG in required 2 element vector in the intervals nx 2 nx 2 ny 2 ny 2 of type integer that specifies the absolute distance s between indexed elements of X keyword COVARIANCE If set to a non zero value the sample autocovariance is computed keyword DOUBLE If set to a non zero value computations are done in double precision arithmetic history 28 2 2000 Sebastien Masson smasson lodyc jussieu fr Based on the A_CORRELATE procedure of IDL version Id: a_correlate2d pro 150 2006 08 09 10:12:54Z navarro FUNCTION A_Correlate2d X Lag Covariance Covariance Double Double compile_opt idl2 strictarrsubs Compute the sample autocorrelation or autocovariance of Xt Xt l as a function of the lag l ON_ERROR 2 XDim SIZE X dimensions XNDim SIZE X n_dimensions nx XDim 0 ny XDim 1 if XNDim NE 2 then MESSAGE X array must contain 2 dimensions Check length if nx lt 2 then MESSAGE first dimension of X array must contain 2 or more elements if ny lt 2 then MESSAGE second dimension of X array must contain 2 or more elements if n_elements Lag NE 2 THEN MESSAGE Lag array must contain 2 elements If the DOUBLE keyword is not set then the internal precision and result are identical to the type of input if N_ELEMENTS Double eq 0 then Double SIZE X type eq 5 if KEYWORD_SET Covariance eq 0 then begin Compute Autocorrelation Auto Auto_Cov2d X ABS Lag Double Double Auto_Cov2d X 0L 0L Double Double zero2nan endif else begin Compute Autocovariance Auto Auto_Cov2d X ABS Lag Double Double n_elements X endelse if Double eq 0 then RETURN FLOAT Auto else RETURN Auto END"); 295 a[293] = new Array("./ToBeReviewed/STATISTICS/a_timecorrelate.html", "a_timecorrelate.pro", "", "FUNCTION TimeAuto_Cov X M nT Double Double zero2nan zero2nan Sample autocovariance function compile_opt idl2 strictarrsubs TimeDim size X n_dimensions Xmean TOTAL X TimeDim Double Double nT if double then one 1 0d ELSE one 1 0 Xmean Xmean replicate one nT M case TimeDim of 1:res TOTAL X 0:nT M 1L Xmean X M:nT 1L Xmean TimeDim Double Double 2:res TOTAL X 0:nT M 1L Xmean X M:nT 1L Xmean TimeDim Double Double 3:res TOTAL X 0:nT M 1L Xmean X M:nT 1L Xmean TimeDim Double Double 4:res TOTAL X 0:nT M 1L Xmean X M:nT 1L Xmean TimeDim Double Double ENDCASE if keyword_set zero2nan then begin zero where res EQ 0 if zero 0 NE 1 then res zero values f_nan endif RETURN res END file_comments Same function as A_CORRELATE but accept array until 4 dimension for input and do the autocorrelation or the autocovariance along the time dimension which must be the last one of the input array This function computes the autocorrelation Px L or autocovariance Rx L of a sample population X as a function of the lag L categories Statistics param X in required An Array which last dimension is the time dimension os size n param LAG in required A scalar or n element vector in the interval n 2 n 2 of type integer that specifies the absolute distance s between indexed elements of X keyword COVARIANCE If set to a non zero value the sample autocovariance is computed keyword DOUBLE If set to a non zero value computations are done in double precision arithmetic examples Define an n element sample population x 3 73 3 67 3 77 3 83 4 67 5 87 6 70 6 97 6 40 5 57 Compute the autocorrelation of X for LAG 3 0 1 3 4 8 lag 3 0 1 3 4 8 result a_correlate x lag The result should be: 0 0146185 1 00000 0 810879 0 0146185 0 325279 0 151684 history 24 2 2000 Sebastien Masson smasson lodyc jussieu fr Based on the A_CORRELATE procedure of IDL INTRODUCTION TO STATISTICAL TIME SERIES Wayne A Fuller ISBN 0 471 28715 6 version Id: a_timecorrelate pro 150 2006 08 09 10:12:54Z navarro FUNCTION A_TimeCorrelate X Lag COVARIANCE Covariance DOUBLE Double compile_opt idl2 strictarrsubs Compute the sample autocorrelation or autocovariance of Xt Xt l as a function of the lag l ON_ERROR 2 XDim SIZE X dimensions XNDim SIZE X n_dimensions nT XDim XNDim 1 Check length if nT lt 2 then MESSAGE Time axis of X array must contain 2 or more elements If the DOUBLE keyword is not set then the internal precision and result are identical to the type of input if N_ELEMENTS Double eq 0 then Double SIZE X type eq 5 if n_elements lag EQ 0 then lag 0 nLag N_ELEMENTS Lag if nLag eq 1 then Lag Lag Create a 1 element vector case XNDim of 1:if Double eq 0 then Auto FLTARR nLag else Auto DBLARR nLag 2:if Double eq 0 then Auto FLTARR XDim 0 nLag else Auto DBLARR XDim 0 nLag 3:if Double eq 0 then Auto FLTARR XDim 0 XDim 1 nLag else Auto DBLARR XDim 0 XDim 1 nLag 4:if Double eq 0 then Auto FLTARR XDim 0 XDim 1 XDim 2 nLag else Auto DBLARR XDim 0 XDim 1 XDim 2 nLag endcase if KEYWORD_SET Covariance eq 0 then begin Compute Autocorrelation for k 0 nLag 1 do case XNDim of 1:Auto k TimeAuto_Cov X ABS Lag k nT Double Double TimeAuto_Cov X 0L nT Double Double zero2nan 2:Auto k TimeAuto_Cov X ABS Lag k nT Double Double TimeAuto_Cov X 0L nT Double Double zero2nan 3:Auto k TimeAuto_Cov X ABS Lag k nT Double Double TimeAuto_Cov X 0L nT Double Double zero2nan 4:Auto k TimeAuto_Cov X ABS Lag k nT Double Double TimeAuto_Cov X 0L nT Double Double zero2nan endcase endif else begin Compute Autocovariance for k 0 nLag 1 do case XNDim of 1:Auto k TimeAuto_Cov X ABS Lag k nT Double Double nT 2:Auto k TimeAuto_Cov X ABS Lag k nT Double Double nT 3:Auto k TimeAuto_Cov X ABS Lag k nT Double Double nT 4:Auto k TimeAuto_Cov X ABS Lag k nT Double Double nT endcase endelse if Double eq 0 then RETURN FLOAT Auto else RETURN Auto END"); 296 a[294] = new Array("./ToBeReviewed/STATISTICS/c_timecorrelate.html", "c_timecorrelate.pro", "", "FUNCTION TimeCross_Cov Xd Yd M nT Ndim Double Double ZERO2NAN zero2nan Sample cross covariance function compile_opt hidden case Ndim OF 1:res TOTAL Xd 0:nT M 1L Yd M:nT 1L Double Double 2:res TOTAL Xd 0:nT M 1L Yd M:nT 1L Ndim Double Double 3:res TOTAL Xd 0:nT M 1L Yd M:nT 1L Ndim Double Double 4:res TOTAL Xd 0:nT M 1L Yd M:nT 1L Ndim Double Double ENDCASE if keyword_set zero2nan then begin zero where res EQ 0 if zero 0 NE 1 then res zero values f_nan ENDIF RETURN res END file_comments This function computes the time cross correlation Pxy L or the time cross covariance between 2 arrays this is some kind of c_correlate but for multidimenstionals arrays as a function of the lag L categories Statistics param X in required An Array which last dimension is the time dimension of size n float or double param Y in required An Array which last dimension is the time dimension of size n float or double param LAG in required A scalar or n element vector in the interval n 2 n 2 of type integer that specifies the absolute distance s between indexed elements of X keyword COVARIANCE If set to a non zero value the sample cross covariance is computed keyword DOUBLE If set to a non zero value computations are done in double precision arithmetic examples Define two n element sample populations x 3 73 3 67 3 77 3 83 4 67 5 87 6 70 6 97 6 40 5 57 y 2 31 2 76 3 02 3 13 3 72 3 88 3 97 4 39 4 34 3 95 Compute the cross correlation of X and Y for LAG 5 0 1 5 6 7 lag 5 0 1 5 6 7 result c_timecorrelate x y lag The result should be: 0 428246 0 914755 0 674547 0 405140 0 403100 0 339685 history 01 03 2000 Sebastien Masson smasson lodyc jussieu fr Based on the C_CORRELATE procedure of IDL August 2003 Sebastien Masson update according to the update made in C_CORRELATE by W Biagiotti and available in IDL 5 5 INTRODUCTION TO STATISTICAL TIME SERIES Wayne A Fuller ISBN 0 471 28715 6 version Id: c_timecorrelate pro 150 2006 08 09 10:12:54Z navarro FUNCTION C_Timecorrelate X Y Lag Covariance Covariance Double Double Compute the sample cross correlation or cross covariance of Xt Xt l and Yt Yt l as a function of the lag l ON_ERROR 2 xsize SIZE X ysize SIZE Y nt float xsize xsize 0 NDim xsize 0 if total xsize 0:xsize 0 NE ysize 0:ysize 0 NE 0 then MESSAGE X and Y arrays must have the same size and the same dimensions Check length if nt lt 2 then MESSAGE Time dimension of X and Y arrays must contain 2 or more elements If the DOUBLE keyword is not set then the internal precision and result are identical to the type of input if N_ELEMENTS Double eq 0 then Double Xsize Xsize 0 1 eq 5 or ysize ysize 0 1 eq 5 if n_elements lag EQ 0 then lag 0 nLag N_ELEMENTS Lag Deviations if double then one 1 0d ELSE one 1 0 Ndim size X n_dimensions Xd TOTAL X Ndim Double Double nT Xd X Xd replicate one nT Yd TOTAL Y Ndim Double Double nT Yd Y Yd replicate one nT if nLag eq 1 then Lag Lag Create a 1 element vector case NDim of 1:if Double eq 0 then Cross FLTARR nLag else Cross DBLARR nLag 2:if Double eq 0 then Cross FLTARR Xsize 1 nLag else Cross DBLARR Xsize 1 nLag 3:if Double eq 0 then Cross FLTARR Xsize 1 Xsize 2 nLag else Cross DBLARR Xsize 1 Xsize 2 nLag 4:if Double eq 0 then Cross FLTARR Xsize 1 Xsize 2 Xsize 3 nLag else Cross DBLARR Xsize 1 Xsize 2 Xsize 3 nLag endcase if KEYWORD_SET Covariance eq 0 then begin Compute Cross Crossation for k 0 nLag 1 do begin if Lag k ge 0 then BEGIN case NDim of 1: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double 2: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double 3: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double 4: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double endcase ENDIF else BEGIN case NDim of 1: Cross k TimeCross_Cov Yd Xd ABS Lag k nT Ndim Double Double 2: Cross k TimeCross_Cov Yd Xd ABS Lag k nT Ndim Double Double 3: Cross k TimeCross_Cov Yd Xd ABS Lag k nT Ndim Double Double 4: Cross k TimeCross_Cov Yd Xd ABS Lag k nT Ndim Double Double endcase ENDELSE ENDFOR div sqrt TimeCross_Cov Xd Xd 0L nT Ndim Double Double zero2nan TimeCross_Cov Yd Yd 0L nT Ndim Double Double zero2nan Cross temporary Cross temporary div replicate one nLag endif else begin Compute Cross Covariance for k 0 nLag 1 do begin if Lag k ge 0 then BEGIN case NDim of 1: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double nT 2: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double nT 3: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double nT 4: Cross k TimeCross_Cov Xd Yd Lag k nT Ndim Double Double nT ENDCASE ENDIF else BEGIN case NDim of 1: Cross k TimeCross_Cov yd xd ABS Lag k nT Ndim Double Double nT 2: Cross k TimeCross_Cov yd xd ABS Lag k nT Ndim Double Double nT 3: Cross k TimeCross_Cov yd xd ABS Lag k nT Ndim Double Double nT 4: Cross k TimeCross_Cov yd xd ABS Lag k nT Ndim Double Double nT ENDCASE ENDELSE endfor endelse if Double eq 0 then RETURN FLOAT Cross else RETURN Cross END "); 297 a[295] = new Array("./ToBeReviewed/STRING/chkeywd.html", "chkeywd.pro", "", " file_comments In a string containing an order to executewith EXECUTE by example We change the value of one of keywords More generally in a string we look for the caracter chain: keywdname and we change the value of categories string keywords param STRINGIN in required it is a string param KEYWDNAME in required it is a string designating the name of keyword to look for param KEYWDVALUE in required The new value of the keyword to considerate in STRINGIN keyword SEPARATOR To look for the keyword we look for the first sign which follow the position of keywdname By default we substitute the string before the comma With the keyword SEPARATOR we can modify the cut of the string SEPARATOR give a caractere before the one we have to look for the comma which delimit the keyword in the string see examples keyword AFTER To look for the keyword we look for the first sign which follow the position of keywdname By default we substitute the string before the comma With the keyword AFTER we can modify the cut of the string AFTER give a caractere after the one we have to look for the comma which delimit the keyword in the string see examples returns stringout stringin modified if keywdname has been found in stringin uses common pro restrictions If keywdvalue is an array it will be convert in a vector restrictions Beware this function has loops ifs ad cases everywhere So it can not be used by big keywords with a lot of elements which are big arrays The input keyword must not contain Complex floatings structure Double precision complex Pointer Object reference Unsigned Integer Unsigned Longword Integer 64 bit Integer or Unsigned 64 bit Integer examples IDL b ok 111 year 1997 1998 1999 age_capitaine 35 IDL print b ok 111 year 1997 1998 1999 age_capitaine 35 IDL print chkeywd b ok c est bon ok c est bon year 1997 1998 1999 age_capitaine 35 IDL print chkeywd b YEAR indgen 5 sep ok 111 year 0 1 2 3 4 age_capitaine 35 IDL print chkeywd b YEAR indgen 5 sep after ok 111 year 0 1 2 3 4 age_capitaine 35 IDL b ok 111 year age_capitaine IDL print chkeywd b year c est bon ok 111 year c est bon age_capitaine history Sebastien Masson smasson lodyc jussieu fr 18 10 1999 24 11 1999: adaptation for keywords starting by version Id: chkeywd pro 142 2006 07 21 12:47:49Z navarro FUNCTION chkeywd stringin keywdname keywdvalue SEPARATOR separator AFTER after compile_opt idl2 strictarrsubs stringout stringin poskeywd strpos strlowcase stringout strlowcase keywdname if poskeywd EQ 1 then return stringout while poskeywd NE 1 do BEGIN change a keyword starting by toto if strmid stringout poskeywd 1 1 EQ then BEGIN ajoute keywdname tostr keywdvalue stringout strmid stringout 0 poskeywd 1 ajoute strmid stringout poskeywd strlen keywdname poskeywd poskeywd strlen ajoute poskeywd strpos stringout keywdname poskeywd ENDIF ELSE BEGIN change a keyword sarting by toto posegal strpos stringout poskeywd if posegal EQ 1 then return stringout if NOT keyword_set separator then separator posvirgule strpos stringout separator posegal 1 if keyword_set after then posvirgule strpos stringout posvirgule 1 ELSE posvirgule rstrpos stringout posvirgule 1 if posvirgule EQ 1 then posvirgule strlen stringout stringout strmid stringout 0 posegal 1 tostr keywdvalue strmid stringout posvirgule poskeywd strpos stringout keywdname posvirgule 1 ENDELSE endwhile return stringout end"); 298 a[296] = new Array("./ToBeReviewed/STRING/delchr.html", "delchr.pro", "", " file_comments Delete all occurrences of a character from a text string categories param OLD in required original text string param C in required character to delete keyword HELP returns new resulting string history R Sterner 5 Jul 1988 Johns Hopkins Applied Physics Lab RES 11 Sep 1989 converted to SUN R Sterner 27 Jan 1993 dropped reference to array Copyright C 1988 Johns Hopkins University Applied Physics Laboratory This software may be used copied or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made This routine is provided as is without any express or implied warranties whatsoever Other limitations apply as described in the file disclaimer txt version Id: delchr pro 142 2006 07 21 12:47:49Z navarro FUNCTION DELCHR OLD C help hlp compile_opt idl2 strictarrsubs if n_params 0 lt 2 or keyword_set hlp then begin print Delete all occurrences of a character from a text string print new delchr old char print old original text string in print char character to delete in print new resulting string out return 1 endif B BYTE OLD convert string to a byte array CB BYTE C convert char to byte w where b ne cb 0 if w 0 eq 1 then return Nothing left return string b w Return new string END"); 299 a[297] = new Array("./ToBeReviewed/STRING/getfile.html", "getfile.pro", "", " file_comments Read a text file into a string array param filein in required text file name Keyword ERROR err error flag: 0 ok 1 file not opened 2 no lines in file keyword QUIET means give no error message keyword LINES n Number of lines to read def all Much faster if number of lines is known Automatic for IDL 5 6 or later keyword FIND search te file in the all path directories use find pro keyword HELP returns history R Sterner 20 Mar 1990 R Sterner 1999 Apr 14 Added LINES n keyword R Sterner 2003 Aug 29 Automatic lines if IDL 5 6 R Sterner 2003 Sep 02 Check if file exists first R Sterner 2003 Sep 04 Fixed error in number of lines in file R Sterner 2003 Oct 10 Fixed error when no lines R Sterner 2004 Jan 27 Fixed to work in IDL as old as vers 4 S Masson smasson lodyc jussieu fr 4 Feb 2002 search te file in the all path directories use find pro when using find keyword Use spawn cat for unix os Copyright C 1990 Johns Hopkins University Applied Physics Laboratory This software may be used copied or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made This routine is provided as is without any express or implied warranties whatsoever Other limitations apply as described in the file disclaimer txt version Id: getfile pro 142 2006 07 21 12:47:49Z navarro function getfile filein error err help hlp quiet quiet lines lines find find compile_opt idl2 strictarrsubs if n_params 0 lt 1 or keyword_set hlp then begin print Read a text file into a string array print s getfile f print f text file name in print s string array out print Keywords: print ERROR err error flag: 0 ok 1 file not opened print 2 no lines in file print QUIET means give no error message print LINES n Number of lines to read def all print Much faster if number of lines is known print Automatic for IDL 5 6 or later return 1 endif if keyword_set find then begin file find filein file file 0 if file EQ NOT FOUND then begin print Error in getfile: File filein not fouond return 1 endif ENDIF ELSE file filein if version os_family EQ unix then begin spawn cat file res if res 0 NE then return res ELSE return endif if version release 0 ge 5 5 then begin f call_function file_search file count c endif else begin f findfile file count c endelse if c eq 0 then begin err 1 return endif if n_elements line eq 0 and version release 0 ge 5 6 then begin lines file_lines file if lines eq 0 then begin if not keyword_set quiet then print No lines in file err 2 return 1 endif minlines 0 endif else minlines 1 get_lun lun on_ioerror err openr lun file if n_elements lines ne 0 then begin s strarr lines readf lun s endif else begin s t while not eof lun do begin readf lun t s s t endwhile endelse close lun free_lun lun if n_elements s eq minlines then begin if not keyword_set quiet then print No lines in file err 2 return 1 endif if minlines eq 1 then s s 1: err 0 return s err: if err eq 168 then begin if not keyword_set quiet then print Non standard text file format free_lun lun return s endif if not keyword_set quiet then print Error in getfile: File file not opened free_lun lun err 1 return 1 end"); 300 a[298] = new Array("./ToBeReviewed/STRING/getwrd.html", "getwrd.pro", "", " file_comments Return the n th word from a text string categories param TXTSTR in required text string to extract from The first element is used if txt is an array param NTH in required word number to get first 0 def param MTH in required optional last word number to get keyword LOCATION l Return word n string location keyword DELIMITER d Set word delimiter def space tab keyword LAST means n is offset from last word So n 0 gives last word n 1 gives next to last If n 2 and m 0 then last 3 words are returned keyword NOTRIM suppresses whitespace trimming on ends keyword NWORDS n Returns number of words in string returns wrd returned word or words uses getwrd_com restrictions If a NULL string is given txt then the last string given is used This saves finding the words again If m n wrd will be a string of words from word n to word m If no m is given wrd will be a single word n n wrd will be a string of words from word n to print word m If no m is given wrd will be a single word print n 0 Smaller of in and im im im 0 to zero if in gt lst and im gt lst then return Out of range in in lst Larger of in and im im im lst to be last ll loc in Nth word start return strtrim strmid txtstr0 ll loc im loc in len im 2 endif N ABS NTH Allow nth 0 IF N GT NWDS 1 THEN RETURN out of range null ll loc n N th word position IF NTH LT 0 THEN GOTO NEG Handle nth 0 IF MTH GT NWDS 1 THEN MTH NWDS 1 Words to end if keyword_set notrim then begin RETURN STRMID TXTSTR0 ll LOC MTH LOC NTH LEN MTH endif else begin RETURN strtrim STRMID TXTSTR0 ll LOC MTH LOC NTH LEN MTH 2 endelse NEG: if keyword_set notrim then begin RETURN STRMID TXTSTR0 ll 9999 endif else begin RETURN strtrim STRMID TXTSTR0 ll 9999 2 endelse END"); 301 a[299] = new Array("./ToBeReviewed/STRING/isnumber.html", "isnumber.pro", "", " file_comments Determine if a text string is a valid number categories param TXT0 in required text string to test param X in required keyword HELP returns x optionaly returned numeric value if valid i test flag: 0: not a number 1: txt is a long integer 2: txt is a float 1: first word of txt is a long integer 2: first word of txt is a float history R Sterner 15 Oct 1986 Johns Hopkins Applied Physics Lab R Sterner 12 Mar 1990 upgraded Richard Garrett 14 June 1992 fixed bug in returned float value R Sterner 1999 Nov 30 Fixed a bug found by Kristian Kjaer Denmark Copyright C 1986 Johns Hopkins University Applied Physics Laboratory This software may be used copied or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made This routine is provided as is without any express or implied warranties whatsoever Other limitations apply as described in the file disclaimer txt version Id: isnumber pro 142 2006 07 21 12:47:49Z navarro function isnumber txt0 x help hlp compile_opt idl2 strictarrsubs if n_params 0 lt 1 or keyword_set hlp then begin print Determine if a text string is a valid number print i isnumber txt x print txt text string to test in print x optionaly returned numeric value if valid out print i test flag: out print 0: not a number print 1: txt is a long integer print 2: txt is a float print 1: first word of txt is a long integer print 2: first word of txt is a float return 1 endif txt strtrim txt0 2 trim blanks x 0 define X if txt eq then return 0 null string not a number sn 1 if nwrds txt gt 1 then begin get first word if more than one sn 1 txt getwrd txt 0 endif f_flag 0 Floating flag b byte txt Convert to byte array if b 0 eq 45 then b b 1: Drop leading Kristian Kjaer if b 0 eq 43 then b b 1: Drop leading bug fix w where b eq 43 cnt Look for if cnt gt 1 then return 0 Alow only 1 t delchr txt Drop it w where b eq 45 cnt Look for if cnt gt 1 then return 0 Allow only 1 t delchr t Drop it w where b eq 46 cnt Look for if cnt gt 1 then return 0 Allow only 1 if cnt eq 1 then f_flag 1 If one then floating t delchr t Drop it w where b eq 101 cnt Look for e if cnt gt 1 then return 0 Allow only 1 if cnt eq 1 then f_flag 1 If 1 then assume float t delchr t e Drop it w where b eq 69 cnt Look for E if cnt gt 1 then return 0 Allow only 1 if cnt eq 1 then f_flag 1 If 1 then assume float t delchr t E Drop it w where b eq 100 cnt Look for d if cnt gt 1 then return 0 Allow only 1 if cnt eq 1 then f_flag 1 If 1 then assume float t delchr t d Drop it w where b eq 68 cnt Look for D if cnt gt 1 then return 0 Allow only 1 if cnt eq 1 then f_flag 1 If 1 then assume float t delchr t D Drop it Allow only one e E d or D if total b eq 101 b eq 69 b eq 100 b eq 68 gt 1 then return 0 b byte t Allow no alphabetic characters if total b ge 65 and b le 122 ne 0 then return 0 c strmid t 0 1 if c lt 0 or c gt 9 then return 0 First char not a digit x txt 0 0 Convert to a float if f_flag eq 1 then return 2 sn Was floating if x eq long x then begin x long x return sn endif else begin return 2 sn endelse end"); 302 a[300] = new Array("./ToBeReviewed/STRING/lenstr.html", "lenstr.pro", "", " ROUTINE: lenstr USEAGE: result lenstr str input: str a single string or string array output: result length of the string s in normalized units the number of elements of RESULT matches the number of elements of STRING procedure: This function returns the physical length of the string on the output device not the number of characters This is done by first switching to X and writing the string s with XYOUTS in graphics mode 5 which disables display to the screen but does not interfere with operation of XYOUTS The WIDTH keyword parameter of XYOUTS is used to retrieve the physical length of the string s author: Paul Ricchiazzi 7apr93 Institute for Computational Earth System Science University of California Santa Barbara todo seb function lenstr str compile_opt idl2 strictarrsubs dsave d name thisOS VERSION OS_FAMILY thisOS STRMID thisOS 0 3 thisOS STRUPCASE thisOS CASE thisOS of MAC : SET_PLOT thisOS WIN : SET_PLOT thisOS ELSE: SET_PLOT X ENDCASE p BACKGROUND d n_colors 1 255 p color 0 if d n_colors gt 256 then p background ffffff x device get_graphics oldg set_graphics 5 if keyword_set charsize eq 0 then charsize 1 nn n_elements str case nn of 0:w 0 1:xyouts 0 0 device str width w else:begin w fltarr nn for i 0 nn 1 do begin xyouts 0 0 device str i width ww w i ww endfor end endcase fac1 float d x_ch_size d x_vsize ratio of char width to device1 width device set_graphics oldg set_plot dsave IF dsave EQ X OR dsave EQ MAC OR dsave EQ WIN then BEGIN p BACKGROUND d n_colors 1 255 p color 0 if d n_colors gt 256 then p background ffffff x ENDIF fac2 float d x_ch_size d x_vsize ratio of char width to device2 width return w fac2 fac1 string width adjusted for device width end "); 303 a[301] = new Array("./ToBeReviewed/STRING/nwrds.html", "nwrds.pro", "", " file_comments Return the number of words in the given text string categories param TXTSTR text string to examine keyword DELIMITER d Set delimiter character def space keyword HELP returns n number of words found restrictions See also getwrd history R Sterner 7 Feb 1985 Johns Hopkins University Applied Physics Laboratory RES 4 Sep 1989 converted to SUN Copyright C 1985 Johns Hopkins University Applied Physics Laboratory This software may be used copied or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made This routine is provided as is without any express or implied warranties whatsoever Other limitations apply as described in the file disclaimer txt version Id: nwrds pro 142 2006 07 21 12:47:49Z navarro function nwrds txtstr help hlp delimiter delim compile_opt idl2 strictarrsubs if n_params 0 lt 1 or keyword_set hlp then begin print Return the number of words in the given text string print n nwrds txt print txt text string to examine in print n number of words found out print Keywords: print DELIMITER d Set delimiter character def space print Notes: See also getwrd return 1 endif if strlen txtstr eq 0 then return 0 A null string has 0 words ddel Default word delimiter is a space if n_elements delim ne 0 then ddel delim Use given word delimiter tst byte ddel 0 Delimiter as a byte value tb byte txtstr String to bytes if ddel eq then begin Check for tabs w where tb eq 9B cnt Yes if cnt gt 0 then tb w 32B Convert any to space endif x tb ne tst Locate words x 0 x 0 Pad ends with delimiters y x shift x 1 eq 1 Look for word beginnings n fix total y Count word beginnings return n end"); 304 a[302] = new Array("./ToBeReviewed/STRING/putfile.html", "putfile.pro", "", " file_comments Write a text file from a string array categories INPUTS: param FILE in required text file name param S in required string array keyword ERROR err error flag: 0 ok 1 invalid string array history R Sterner 20 Mar 1990 R Sterner 4 Nov 1992 allowed scalar strings Copyright C 1990 Johns Hopkins University Applied Physics Laboratory This software may be used copied or redistributed as long as it is not sold and this copyright notice is reproduced on each copy made This routine is provided as is without any express or implied warranties whatsoever Other limitations apply as described in the file disclaimer txt version Id: putfile pro 142 2006 07 21 12:47:49Z navarro pro putfile file s error err help hlp compile_opt idl2 strictarrsubs if n_params 0 lt 1 or keyword_set hlp then begin print Write a text file from a string array print putfile f s print f text file name in print s string array in print Keywords: print ERROR err error flag: 0 ok 1 invalid string array return endif if lmgr demo then begin print you are in Demo mode It is impossible to write a file return endif if size s type ne 7 then begin print Error in putfile: argument must be a string array err 1 return endif get_lun lun openw lun file for i 0 n_elements s 1 do begin t s i if t eq then t printf lun t endfor close lun free_lun lun err 0 return end"); 305 a[303] = new Array("./ToBeReviewed/STRING/str_size.html", "str_size.pro", "", " file_comments The purpose of this function is to return the proper character size to make a specified string a specifed width in a window The width is specified in normalized coordinates The function is extremely useful for sizing strings and labels in resizeable graphics windows categories Graphics Programs Widgets param STRING in required This is the string that you want to make a specifed target size or width param TARGETWIDTH in optional This is the target width of the string in normalized coordinates in the current graphics window The character size of the string returned as thisCharSize will be calculated to get the string width as close as possible to the target width The default is 0 25 keyword INITSIZE This is the initial size of the string Default is 1 0 keyword STEP This is the amount the string size will change in each step of the interative process of calculating the string size The default value is 0 05 returns thisCharSize This is the size the specified string should be set to if you want to produce output of the specified target width The value is in standard character size units where 1 0 is the standard character size examples To make the string Happy Holidays take up 30 of the width of the current graphics window type this: XYOUTS 0 5 0 5 ALIGN 0 5 Happy Holidays CHARSIZE STR_SIZE Happy Holidays 0 3 history Written by: David Fanning 17 DEC 96 Added a scaling factor to take into account the aspect ratio of the window in determing the character size 28 Oct 97 DWF version Id: str_size pro 142 2006 07 21 12:47:49Z navarro FUNCTION STR_SIZE string targetWidth INITSIZE initsize STEP step compile_opt idl2 strictarrsubs ON_ERROR 1 Check positional parameters np N_PARAMS CASE np OF 0: MESSAGE One string parameter is required 1: targetWidth 0 25 ELSE: ENDCASE Check keywords Assign default values IF N_ELEMENTS step EQ 0 THEN step 0 05 IF N_ELEMENTS initsize EQ 0 THEN initsize 1 0 Calculate a trial width size initsize XYOUTS 0 5 0 5 ALIGN 0 5 string WIDTH thisWidth CHARSIZE size NORMAL Size is perfect IF thisWidth EQ targetWidth THEN RETURN size Float D Y_Size D X_Size Initial size is too big IF thisWidth GT targetWidth THEN BEGIN REPEAT BEGIN XYOUTS 0 5 0 5 ALIGN 0 5 string WIDTH thisWidth CHARSIZE size NORMAL size size step ENDREP UNTIL thisWidth LE targetWidth RETURN size Float D Y_Size D X_Size ENDIF Initial size is too small IF thisWidth LT targetWidth THEN BEGIN REPEAT BEGIN XYOUTS 0 5 0 5 ALIGN 0 5 string WIDTH thisWidth CHARSIZE size NORMAL size size step ENDREP UNTIL thisWidth GT targetWidth size size step Need a value slightly smaller than target RETURN size Float D Y_Size D X_Size ENDIF END"); 306 a[304] = new Array("./ToBeReviewed/STRING/string2struct.html", "string2struct.pro", "", " This is a really really cool way to turn keywords into a structure function too_cool _extra extra compile_opt idl2 strictarrsubs return extra end file_comments Takes an input string set up as keywords and returns an anonymous structure This is particularly useful for taking keywords entered by a user in a text field and passing then to other routines categories Utility param STRVAL IN REQUIRED String set up as keywords Keywords require a little special treatment Such as plot findgen 100 _extra stringToStructure title testing RETURNS This function returns the string as an anonymous structure If an error was found then this function returns a structure with a null field examples The code below creates a widget that uses this routine pro tPlot event widget_control event top get_uvalue field widget_control field get_value strVal extra stringToStructure strVal plot findgen 100 _extra extra wshow return end pro testWid enter any keyword to plot and see how it works base widget_base col field cw_field base title test value ax 0 string void widget_button base value plot event_pro tPlot widget_control base realize set_uvalue field xmanager testWid base no_block return end history Written by: RLK Ronn Kling Consulting ronn rlkling com www rlkling com May 1999 version Id: string2struct pro 142 2006 07 21 12:47:49Z navarro function string2struct strVal compile_opt idl2 strictarrsubs r execute extra too_cool strVal 0 if r 0 then user did not enter keywords correctly so return a structure with a null field if r eq 0 then begin print Error in input string return null:0 endif return extra end "); 307 a[305] = new Array("./ToBeReviewed/STRING/strkeywd.html", "strkeywd.pro", "", " file_comments Translate a sturcture in a string able to be used to specify keywords in the calling of a function when we use EXECUTE see example categories param STRUCT a structure returns a string composed like following: For each element of the structure we write a part of the string as: name_of_the_element content_of_the_element restrictions If an element of the structure contain an array it will be convert in a vector restrictions Beware this function has loops ifs ad cases everywhere So it can not be used by big keywords with a lot of elements which are big arrays The input keyword must not contain Complex floatings structure Double precision complex Pointer Object reference Unsigned Integer Unsigned Longword Integer 64 bit Integer or Unsigned 64 bit Integer examples We create a structure IDL b get_extra ok 111 year 1997 1998 1999 age_capitaine 35 IDL help b struct Structure 3 tags length 10 refs 1: AGE_CAPITAINE INT 35 OK INT 111 YEAR INT Array 3 We put this structure as a string IDL a strkeywd b IDL print a AGE_CAPITAINE 35 OK 111 YEAR 1997 1998 1999 Now we can use the string a to pass keywords in a function thanks to execute IDL test execute c get_extra a IDL help c struct Structure 3 tags length 10 refs 1: AGE_CAPITAINE INT 35 OK INT 111 YEAR INT Array 3 history Sebastien Masson smasson lodyc jussieu fr 11 10 1999 version Id: strkeywd pro 142 2006 07 21 12:47:49Z navarro FUNCTION strkeywd struct compile_opt idl2 strictarrsubs if size struct type NE 8 then return tname tag_names struct if n_elements tname EQ 0 then return on s occupe du premier element res strlowcase tname 0 tostr struct 0 if n_elements tname EQ 1 then return res on s occupe des autres elements for n 1 n_elements tname 1 do res res strlowcase tname n tostr struct n return res end"); 308 a[306] = new Array("./ToBeReviewed/STRING/strrepl.html", "strrepl.pro", "", " file_comments replace one or more character s string s in a string categories string routines param STR in required the string to be changed param RCHAR in required replacement character string returns another string restrictions Known shortcoming: if index is an array it must contain all valid elements only the first entry is checked examples Convert one letter into upper case abc abcdefghijklmnopqrstuvwxyz print strrepl abc strpos abc m M prints abcdefghijklMnopqrstuvwxyz Use with strwhere function a abcabcabc print strrepl a strwhere a a prints bc bc bc bc bc IDL print strrepl a bc eeee a eeee a eeee a eeee IDL print strrepl a b 0000 a0000ca0000ca0000 IDL print strrepl a toto 0000 abcabcabc history mgs 02 Jun 1998: VERSION 1 00 sebastien Masson smlod ipsl jussieu fr version Id: strrepl pro 142 2006 07 21 12:47:49Z navarro Copyright C 1998 Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to mgs io harvard edu with subject IDL routine strrepl function strrepl str agument1 rchar compile_opt idl2 strictarrsubs if n_elements str eq 0 then return convert strign and replace character to byte BStr byte str new byte rchar if size agument1 type EQ 7 then begin old byte agument1 index strpos str agument1 pos index while strpos str agument1 pos 1 NE 1 do BEGIN pos strpos str agument1 pos 1 index index pos ENDWHILE make sure index is in range if index 0 lt 0 OR index 0 ge n_elements BStr THEN return Str ENDIF ELSE BEGIN index agument1 if index 0 lt 0 OR index 0 ge n_elements BStr then return Str old BStr index 0 ENDELSE replace indexed characters in string nelenew n_elements new neleold n_elements old nindex n_elements index if nelenew neleold NE 1 then begin if index 0 EQ 0 then BStr NEW BStr index 0 neleold: n_elements BStr 1 ELSE BStr BStr 0:index 0 1 NEW BStr index 0 neleold: n_elements BStr 1 if nindex EQ 1 then return string BStr if nindex GT 2 then for i 1 nindex 2 do BStr BStr 0:index i i nelenew neleold 1 NEW BStr index i i nelenew neleold neleold: n_elements BStr 1 BStr BStr 0:index n_elements index 1 nindex 1 nelenew neleold 1 NEW ENDIF ELSE BStr index NEW return result as string return string BStr end"); 309 a[307] = new Array("./ToBeReviewed/STRING/strright.html", "strright.pro", "", " file_comments return right subportion from a string categories string handling param S in required the string to be searched param LASTN in required the number of characters to be returned Default is 1 If NLAST is ge strlen STRING the complete string is returned returns The portion of LASTN characters of S counted from the back examples if strright path ne then path path history mgs 19 Nov 1997: VERSION 1 00 version Id: strright pro 142 2006 07 21 12:47:49Z navarro Copyright C 1997 Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to mgs io harvard edu with subject IDL routine strright function strright s lastn compile_opt idl2 strictarrsubs on_error 2 return to caller if n_elements s le 0 then return 1L l strlen s if n_elements lastn le 0 then lastn 1 if lastn gt l then lastn l result strmid s l lastn l return result end"); 310 a[308] = new Array("./ToBeReviewed/STRING/strsci.html", "strsci.pro", "", " file_comments Given a number returns a string of that B number in scientific notation format e g A x 10 categories String Utilities param DATA in required A floating point or integer number to be converted into a power of 10 keyword FORMAT The format specification used in the string conversion for the mantissa i e the A of A x 10 B Default is f12 2 keyword POT_ONLY Will return only the power of 10 part of the string i e the 10 B Default is to return the entire string e g A x 10 B keyword MANTISSA_ONLY return only mantissa of the string keyword SHORT return 10 0 as 1 and 10 1 as 10 keyword TRIM don t insert blanks i e return Ax10 B restrictions This function does not evaluate the format statement thoroughly which can result in somewhat quirky strings Example: print strsci 9 999 results in 10 0x10 0 instead of 1 0x10 1 Need a better symbol than the x for the multiplier examples Result STRSCI 2000000 format i1 print result 6 prints 2 x 10 u6 n which gets plotted as 2 x 10 Result STRSCI 0 0001 print result 4 prints 1 00 x 10 u 4 n which gets plotted as 1 00 x 10 Result STRSCI 0d0 format f13 8 print result prints 0 00000000 history bmy 28 May 1998: VERSION 1 00 B now returns string of the form A x 10 mgs 29 May 1998: bug fix: now allows negative numbers keyword MANTISSA_ONLY added default format changed to f12 2 bmy 02 Jun 1998: renamed to STRSCI STRing SCIentific notation mgs 03 Jun 1998: added TRIM keyword mgs 22 Sep 1998: added SHORT keyword modified handling of TRIM keyword mgs 24 Sep 1998: bug fix with SHORT flag bmy mgs 02 Jun 1999: now can handle DATA 0 0 correctly updated comments mgs 03 Jun 1999: can now also handle values lt 1 and doesn t choke on arrays version Id: strsci pro 142 2006 07 21 12:47:49Z navarro Copyright C 1998 1999 Bob Yantosca and Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to bmy io harvard edu or mgs io harvard edu with subject IDL routine strsci function StrSci Data Format Format POT_Only POT_Only MANTISSA_ONLY MANTISSA_ONLY SHORT SHORT TRIM TRIM compile_opt idl2 strictarrsubs Error checking Keyword settings on_error 2 if n_elements Data eq 0 then begin return endif if not Keyword_Set Format then Format f12 2 POT_Only keyword_set POT_Only MANTISSA_Only keyword_set MANTISSA_Only Short Keyword_Set Short Trim Keyword_Set Trim NDat n_elements Data Result strarr NDat for i 0 NDat 1 do begin If ABS DATA 0 then we can proceed to take the common log For DATA 0 place a sign in front of the number if Abs Data i ne 0 0 then begin take the common log and store in LOG10DATA Log10Data ALog10 Abs Data i Boolean flag if data 0 sign Data i lt 0 0 Compute the characteristic int part Add the 1d 6 to prevent roundoff errors Characteristic Fix Log10Data 1 0d 6 if Log10Data lt 0 then Characteristic Characteristic 1 Compute the Mantissa frac part and take its antilog Mantissa Log10Data Characteristic Mantissa 10 0 Mantissa print data i log10data mantissa characteristic format 3f24 14 i8 String for the coefficient part The coefficient is just antilog of the Mantissa Add the minus sign if DATA 0 0 A StrTrim String Mantissa Format Format 2 if Sign then A A String for the power of 10 part B 10 u strtrim string Characteristic 2 n if Short then begin if Characteristic eq 0 then B 1 if Characteristic eq 1 then B 10 endif composite string Result i A x B if Short AND B eq 1 then Result i A If DATA 0 then we cannot take the common log so return zeroes for the result strings Use the FORMAT string endif else begin A String 0d0 Format Format B A Result i A endelse Return result to calling program depending on keyword settings Eliminate blanks if TRIM keyword is set if POT_Only then Result i B if MANTISSA_Only then Result i A if Trim then Result i StrCompress Result i Remove_All endfor if n_elements Result eq 1 then Result Result 0 return Result end"); 311 a[309] = new Array("./ToBeReviewed/STRING/strtok.html", "strtok.pro", "", " file_comments Retrieve portion of string up to token categories text strings param STRING in required String to be split Contains text after in out token on output param TOKEN in required Token to use in splitting old keyword TRIM set to remove leading blanks from old before returning keyword HELP print useful message and exit returns new portion of string up to token out old portion of old after token out in restrictions Input parameter old is modified Token may be one or more characters If token is not found returns old and sets old to examples If old is foo44 bar then strtok old 44 would return foo and upon return old will be left with bar If TRIM were set old would be bar on return If old xyz then new strtok old a would return with new xyz and old history Log: strtok pro v Revision 1 3 1996 06 14 20:00:27 mcraig Updated Copyright info Revision 1 2 1996 05 09 00:22:17 mcraig Added built in help Revision 1 1 1996 01 31 18:47:37 mcraig Initial revision Thanks: To D Linder who wrote GETTOK part of the goddard library upon which this is based Release: Name: Rel_1_2 Copyright: Copyright C 1996 The Regents of the University of California All Rights Reserved Written by Matthew W Craig See the file COPYRIGHT for restrictions on distrubting this code This code comes with absolutely NO warranty see DISCLAIMER for details version Id: strtok pro 142 2006 07 21 12:47:49Z navarro FUNCTION Strtok string token TRIM trim HELP Help compile_opt idl2 strictarrsubs Back to the caller if error occurs On_error 2 IF n_params NE 2 OR keyword_set Help THEN BEGIN offset print offset Retrieve portion of string up to token print offset new strtok old token print offset Inputs: print offset offset old String to be split Contains text after in out print offset offset token on output print offset offset token Token to use in splitting old in print offset Keywords: print offset offset TRIM set to remove leading blanks from old print offset offset before returning print offset offset HELP print useful message and exit print offset Outputs: print offset offset new portion of string up to token out print offset offset old portion of old after token out in print offset Side effects: print offset offset Input parameter old is modified print offset Notes: print offset offset Token may be one or more characters print offset offset If token is not found returns old and sets old to print offset Examples: print offset offset If old is foo44 bar then strtok old 44 would return print offset offset foo and upon return old will be left with bar If TRIM print offset offset were set old would be bar on return print offset offset If old xyz then new strtok old a would return with print offset offset new xyz and old return 1 ENDIF pos strpos string token IF pos GE 0 THEN BEGIN front strmid string 0 pos string strmid string pos strlen token strlen string IF keyword_set trim THEN string strtrim string 1 return front ENDIF front string string return front END "); 312 a[310] = new Array("./ToBeReviewed/STRING/strwhere.html", "strwhere.pro", "", " file_comments return position array for occurence of a character in a string categories string tools param STR in required the string param SCHAR in required the character to look for returns COUNT out optional The number of matches that were found The function returns an index array similar to the result of the where function examples ind strwhere abcabcabc a returns 0 3 6 history mgs 02 Jun 1998: VERSION 1 00 bmy 30 Jun 1998: now returns COUNT the number of matches that are found this is analogous to the WHERE command version Id: strwhere pro 142 2006 07 21 12:47:49Z navarro Copyright C 1998 Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to mgs io harvard edu with subject IDL routine strwhere function strwhere str schar Count compile_opt idl2 strictarrsubs if n_elements str eq 0 then return 1 convert to byte BStr byte Str BSC byte schar 0 Search for matches Ind where Bstr eq BSC Count bmy return where BStr eq BSC return Ind end "); 313 a[311] = new Array("./ToBeReviewed/STRING/tostr.html", "tostr.pro", "", " file_comments Convert an input in a string categories param INPUT in required input can not contain or be of the type of: Complex floating structure Double precision complex Pointer Object reference Unsigned Integer Unsigned Longword Integer 64 bit Integer Unsigned 64 bit Integer returns a string restrictions If keywdvalue is an array it will be convert in a vector restrictions Beware this function has loops ifs ad cases everywhere So it can not be used by big keywords with a lot of elements which are big arrays examples IDL help tostr 1 tostr a tostr indgen 4 tostr a jkfjo STRING 1 STRING a STRING 0 1 2 3 STRING a jkfjo IDL print tostr c est bon c est bon c est bon c est bon history Sebastien Masson smasson lodyc jussieu fr 18 10 1999 version Id: tostr pro 142 2006 07 21 12:47:49Z navarro FUNCTION tostr input compile_opt idl2 strictarrsubs case 1 of size input type LE 5:BEGIN if size input type EQ 1 then input long input if n_elements input EQ 1 then res strtrim input 1 ELSE BEGIN res strtrim input 0 1 for i 1 n_elements input 1 do res res strtrim input i 1 res res ENDELSE END size input type eq 7:BEGIN if n_elements input EQ 1 then BEGIN sinput strrepl input res sinput ENDIF ELSE BEGIN res strrepl input 0 for i 1 n_elements input 1 do res res strrepl input i res res ENDELSE END ELSE:BEGIN ras report la fonction tostr ne marche pas pour input qui est de type size input tname res END ENDCASE return res end"); 314 a[312] = new Array("./ToBeReviewed/STRUCTURE/chkstru.html", "chkstru.pro", "", " file_comments check validity of a structure and test if necessary fields are contained categories tools param STRUCTURE in required The structure to be tested If STRUCTURE is not of type structure the function will return 0 param FIELDS in required A string or string array with field names to be contained in STRUCTURE CHKSTRU returns 1 true only if all field names are contained in STRUCTURE The entries of FIELDS may be upper or lowercase keyword INDEX A named variable that will contain the indices of the required field names in the structure They can then be assessed through structure index i Index will contain 1 for all fields entries that are not in the structure keyword VERBOSE set this keyword to return an error message in case of an error keyword EXTRACT set this keyword to extract a fields from the structure 1 is return is fields or structure are incorrect returns CHKSTRU returns 1 if successful otherwise 0 examples test a:1 b:2 c:3 required a c if CHKSTRU test required then print found a and c IDL print CHKSTRU test b 1 IDL print CHKSTRU test b extract 2 history mgs 02 Mar 1998: VERSION 1 00 mgs 07 Apr 1998: second parameter FIELDS now optional 12 Jan 2001: EXTRACT keyword by S Masson smasson lodyc jussieu fr version Id: chkstru pro 150 2006 08 09 10:12:54Z navarro Copyright C 1998 Martin Schultz Harvard University This software is provided as is without any warranty whatsoever It may be freely used copied or distributed for non commercial purposes This copyright notice must be kept with any copy of this software If this software shall be used commercially or sold as part of a larger package please contact the author to arrange payment Bugs and comments should be directed to mgs io harvard edu with subject IDL routine chkstru function chkstru structure fields index index verbose verbose extract extract compile_opt idl2 strictarrsubs default index index 1 first check number of parameters must be at least 1 if n_params lt 1 then begin if keyword_set verbose then ras report CHKSTRU: invalid number of parameters if keyword_set extract THEN return 1 ELSE return 0 endif check if the user really passed a structure s size structure if s 1 s 0 ne 8 then begin if keyword_set verbose then ras report CHKSTRU: No structure passed if keyword_set extract THEN return 1 ELSE return 0 endif only one parameter: then we are finished if n_params eq 1 then return 1 see if required field names are contained in the structure and return indices of these fields names tag_names structure index intarr n_elements fields 1 default index to not found for i 0 n_elements fields 1 do begin ind where names eq strupcase fields i if ind 0 lt 0 then begin if keyword_set verbose then ras report CHKSTRU: Cannot find field fields i endif else index i ind 0 endfor check minimum value of index field: 1 indicates error if keyword_set extract then BEGIN if index 0 NE 1 THEN return structure index 0 ELSE return 1 ENDIF ELSE return min index ge 0 end "); 315 a[313] = new Array("./ToBeReviewed/STRUCTURE/extractstru.html", "extractstru.pro", "", " file_comments extract elements of a structure to constitute a new structure categories utilities param STRU in required A structure param LISTE in required A vector of string including names of STRU to be deleted by default or to be kept if KEEP is activated keyword KEEP Specify that the given liste concern elements of STRU to be kept keyword DELETE: Specify that the given liste concern elements of STRU to be deleted This keyword is activated by default returns A structure or 1 in case of problem examples IDL extra get_extra ok year 1999 age_capitaine 35 IDL help extra struct Structure 3 tags length 6 refs 1: AGE_CAPITAINE INT 35 OK INT 1 YEAR INT 1999 IDL help extractstru extra ok hhuihi YEAR stru Structure 1 tags length 2 refs 1: AGE_CAPITAINE INT 35 IDL help extractstru extra ok hhuihi YEAR keep stru Structure 2 tags length 4 refs 1: OK INT 1 YEAR INT 1999 history Sebastien Masson smasson lodyc jussieu fr 8 10 1999 version Id: extractstru pro 150 2006 08 09 10:12:54Z navarro FUNCTION extractstru stru liste KEEP keep DELETE delete compile_opt idl2 strictarrsubs if size stru type NE 8 then return 1 if size liste type NE 7 then return 1 cheking for keep and vire keywords keep keyword_set keep 1 keyword_set delete delete keyword_set delete 1 keyword_set keep keyword_set delete EQ keep tname tag_names stru index make_selection tname strupcase liste only_valid quiet if keep then BEGIN We just keep the list if index 0 EQ 1 then return 1 if n_elements index EQ n_elements tname then return stru res create_struct tname index 0 stru index 0 if n_elements index GT 1 then for i 1 n_elements index 1 do res create_struct res tname index i stru index i ENDIF ELSE BEGIN We delete the list if n_elements index EQ n_elements tname then return 1 if index 0 EQ 1 then return stru We take the complementary one of index to obtain indexes we keep index different indgen n_elements tname index res create_struct tname index 0 stru index 0 if n_elements index GT 1 then for i 1 n_elements index 1 do res create_struct res tname index i stru index i ENDELSE return res end"); 316 a[314] = new Array("./ToBeReviewed/STRUCTURE/mixstru.html", "mixstru.pro", "", " file_comments Concatenate 2 structures together The difference with CREATE_STRUCT is that if the 2 structure have same elements s name then mixstru do not break down but choose for the common element the value specified by the first structure categories structure param STRU1 in required Structure which can have same elements s name than STRU2 but with a different value param STRU2 in required Structure which can have same elements s name than STRU1 but with a different value returns A stucture restrictions If STRU1 or STRU2 is not a structure mixstru send back 1 examples IDL a get_extra toto ok 123 IDL b get_extra ok 111 year 1999 age_capitaine 35 IDL help a b struct Structure 2 tags length 4 refs 1: OK INT 123 TOTO INT 1 Structure 3 tags length 6 refs 1: AGE_CAPITAINE INT 35 OK INT 111 YEAR INT 1999 IDL help mixstru a b struct Structure 4 tags length 8 refs 1: AGE_CAPITAINE INT 35 YEAR INT 1999 OK INT 123 TOTO INT 1 IDL help mixstru b a struct Structure 4 tags length 8 refs 1: TOTO INT 1 AGE_CAPITAINE INT 35 OK INT 111 YEAR INT 1999 history Sebastien Masson smasson lodyc jussieu fr 7 10 1999 version Id: mixstru pro 150 2006 08 09 10:12:54Z navarro FUNCTION mixstru stru1 stru2 compile_opt idl2 strictarrsubs cm_general IF size stru1 type EQ 0 AND size stru2 type EQ 8 THEN return stru2 IF size stru2 type EQ 0 AND size stru1 type EQ 8 THEN return stru1 if size stru1 type NE 8 then return 1 if size stru2 type NE 8 then return 1 tname tag_names stru2 str FOR i 0 n_tags stru2 1 DO str str tname i stru2 strtrim i 2 res createfunc get_extra str _extra stru1 kwdlist stru1 stru1 stru2 stru2 stru1 stru1 stru2 stru2 filename myuniquetmpdir for_createfunc pro return res end"); 317 a[315] = new Array("./ToBeReviewed/STRUCTURE/struct2string.html", "struct2string.pro", "", " file_comments Convert a structure to an executable string categories utilities param STRUCT in required A structure keyword MAX_STRUCT_LENGTH The maximum length of the structure permetted to convert the structure to string Default is 10000l keyword DIRECT2STRING To get a string instead an executable string keyword CUT_IN_STRING Try it restrictions Use tostr pro cf this function header examples IDL print struct2string d create_struct NAME X X_SIZE 891 Y_SIZE 630 X_VSIZE 891 Y_VSIZE 630 X_CH_SIZE 6 Y_CH_SIZE 10 X_PX_CM 40 0000 Y_PX_CM 40 0000 N_COLORS 16777216 TABLE_SIZE 256 FILL_DIST 1 WINDOW 32 UNIT 0 FLAGS 328124 ORIGIN 0 0 ZOOM 1 1 history Sebastien Masson smasson lodyc jussieu fr 2000 07 03 version Id: struct2string pro 150 2006 08 09 10:12:54Z navarro FUNCTION struct2string struct CUT_IN_STRING cut_in_string MAX_STRUCT_LENGTH max_struct_length DIRECT2STRING direct2string compile_opt idl2 strictarrsubs if size struct type NE 8 then return if NOT keyword_set max_struct_length then max_struct_length 10000l if n_tags struct length GT max_struct_length then begin rien report The structure is too big to be converted to string C See the MAX_STRUCT_LENGTH keyword return endif names tag_names struct case 1 of keyword_set direct2string :BEGIN res names 0 tostr struct 0 if n_tags struct GT 1 then begin FOR i 1 n_tags struct 1 do begin res res names i tostr struct i endfor endif END keyword_set CUT_IN_STRING :BEGIN res create_struct names 0 tostr struct 0 if n_tags struct GT 1 then begin FOR i 1 n_tags struct 1 do begin res res create_struct res names i tostr struct i endfor endif END ELSE:BEGIN res create_struct names 0 tostr struct 0 if n_tags struct GT 1 then begin FOR i 1 n_tags struct 1 do begin res res names i tostr struct i endfor endif res res END endcase return res end"); 318 a[316] = new Array("./ToBeReviewed/STRUCTURE/where_tag.html", "where_tag.pro", "", " file_comments Like WHERE but works on structure tag names Obtain subscripts of elements in structure array for which a particular Tag has values in a range or matching specified values Like the WHERE function but for use with structures categories Structures param STRUCT in required structure array to search keyword TAG_NAME Scalar string specifying Tag Name keyword TAG_NUMBER Otherwise give the Tag Number keyword RANGE min max range to search for in Struct keyword VALUES One or array of numbers to match for in Struct keyword ISELECT Specifies indices to select only part of structure array use it to recycle subscripts from previous searches keyword NOPRINT Suppress informational messages about nothing found returns Nfound out of occurences found restrictions User must specify 1 TAG_NAME or TAG_NUMBER to search and 2 the VALUES or RANGE to search on examples Suppose STR is a structure with tags CAT_NO:indgen 10 and NAME:strarr 10 Find the indices where STR CAT_NO is between 3 and 5 IDL print WHERE_TAG str TAG_NAME CAT_NO VALUE 3 4 5 or IDL print WHERE_TAG str TAG_NUM 0 RANGE 3 5 history written 1990 Frank Varosi STX NASA GSFC Stop printing Tag not found with NOPRINT CD Pike 8 Jun 93 version Id: where_tag pro 150 2006 08 09 10:12:54Z navarro function where_Tag Struct Nfound TAG_NAME Tag_Name TAG_NUMBER Tag_Num ISELECT ipart NOPRINT noprint RANGE range VALUES values First check required parameters compile_opt idl2 strictarrsubs Ntag N_tags Struct if Ntag LE 1 then begin message expecting a Structure Array try again CONTIN return 1 endif if N_elements Tag_Num NE 1 AND N_elements Tag_Name NE 1 then begin message specify TAG_NAME or TAG_NUMBER to search CONTIN return 1 endif Tags Tag_names Struct if N_elements Tag_Name EQ 1 then begin Tag_Name strupcase Tag_Name Tag_Num where Tags EQ Tag_Name Tag_Num Tag_Num 0 if Tag_Num LT 0 then begin if NOT keyword_set noprint then message Tag not found CONTIN return 2 endif endif if Tag_Num LT 0 OR Tag_Num GE Ntag then begin message Tag strtrim Tag_Num 2 exceeds Max Tag strtrim Ntag 1 2 in structure CONTIN return 1 endif if N_elements ipart GT 0 then begin check if any searching on a subset of input w where ipart GE 0 nf if nf LE 0 then return 1 if nf LT N_elements ipart then ipart ipart w endif Now find out where for RANGE : if N_elements range EQ 2 then begin if N_elements ipart GT 0 then begin w where Struct ipart Tag_Num GE range 0 AND Struct ipart Tag_Num LE range 1 Nfound if Nfound GT 0 then windex ipart w else windex w endif else windex where Struct Tag_Num GE range 0 AND Struct Tag_Num LE range 1 Nfound if Nfound LE 0 AND NOT keyword_set noprint then begin strnums strtrim range 2 string strnums 0 strnums 1 message NO values of found in the Range string CONTIN endif where Values: endif else if N_elements values GE 1 then begin Nval N_elements values vals values Nfound 0 if N_elements ipart GT 0 then begin for v 0 Nval 1 do begin w where Struct ipart Tag_Num EQ vals v Nf if Nf GT 0 then begin if Nfound GT 0 then ww ww w else ww w endif Nfound Nfound Nf endfor if Nfound GT 0 then windex ipart ww sort ww else windex w endif else begin for v 0 Nval 1 do begin w where Struct Tag_Num EQ vals v Nf if Nf GT 0 then begin if Nfound GT 0 then ww ww w else ww w endif Nfound Nfound Nf endfor if Nfound GT 0 then windex ww sort ww else windex w endelse if Nfound LE 0 AND NOT keyword_set noprint then begin strnums strtrim vals 2 string strnums 0 for i 1 Nval 1 do string string strnums i message NO values of found Equaling string CONTIN endif endif else begin message must specify a RANGE or VALUES s CONTIN windex 1 endelse return windex end"); 319 a[317] = new Array("./ToBeReviewed/TRIANGULATION/ciseauxtri.html", "ciseauxtri.pro", "", " file_comments Delete arrays which do not have to be drawn thanks to 2 tests: 1 Corners of the array must be in the window 2 Lenghtes of side of triangles expressed in normalized coordinates must not surpass a sill lenght categories param TRIANG param GLAM param GPHI keyword ALL keyword _EXTRA Used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr 20 2 99 version Id: ciseauxtri pro 150 2006 08 09 10:12:54Z navarro FUNCTION ciseauxtri triang glam gphi ALL all _EXTRA ex compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF IF NOT keyword_set key_periodic AND NOT keyword_set key_irregular AND NOT map projection LE 7 AND map projection NE 0 AND NOT map projection EQ 14 OR map projection EQ 15 OR map projection EQ 18 THEN return triang tempsun systime 1 For key_performance taille size glam nx taille 1 ny taille 2 tempdeux systime 1 For key_performance 2 z convert_coord glam gphi data to_normal x z 0 y z 1 tempvar SIZE TEMPORARY z delete z IF testvar var key_performance EQ 2 THEN print temps ciseauxtri: convert_coord data to_normal systime 1 tempdeux Beware following the projection some points x or y can become NaN see points behind the Earth in an orthographic projection In this case we have to remove all triangle which contain one of these points if map projection LE 7 AND map projection NE 0 OR map projection EQ 14 OR map projection EQ 15 OR map projection EQ 18 then begin tempdeux systime 1 For key_performance 2 test x y triang test finite temporary test nan test total temporary test 1 ind where temporary test EQ 0 if ind 0 NE 1 then triang triang temporary ind ELSE return 1 trichanged 1b IF testvar var key_performance EQ 2 THEN print temps ciseauxtri: recherche points a NAN systime 1 tempdeux endif seuil 5 indxtriang2 indxtriang indxmin nx 1 indxmin EQ 0 AND indxmax EQ nx 1 ENDIF ELSE indxtriang indxmin listrect nx indytriang indxtriang IF testvar var key_performance EQ 2 THEN print temps ciseauxtri: liste des rectangles systime 1 tempdeux Now we have this list we will make sure that we do not have triangles with only a common summit test bytarr nx ny test listrect 1 dejavire 1b test tempdeux systime 1 For key_performance 2 vire1 0 vire2 0 while vire1 0 NE 1 OR vire2 0 NE 1 ne 0 do begin vire1 where test shift test 1 1 1 shift test 0 1 1 shift test 1 0 EQ 1 if vire1 0 NE 1 THEN test vire1 0 We delete the rectangle vire2 where 1 test 1 shift test 1 1 shift test 0 1 shift test 1 0 EQ 1 We delete the top rectangle same x index but equal to 1 if vire2 0 NE 1 THEN test vire2 nx 0 ENDWHILE stop test test temporary dejavire avirer where temporary test EQ 0 IF testvar var key_performance EQ 2 THEN print temps ciseauxtri: determinationdes rectangles a virer systime 1 tempdeux if avirer 0 NE 1 then begin tempdeux systime 1 For key_performance 2 indnx n_elements listrect indny n_elements avirer ind listrect replicate 1l indny ind ind EQ replicate 1 indnx avirer if indny GT 1 then ind total ind 2 ind where ind EQ 0 if ind 0 NE 1 then triang triang ind ELSE return 1 endif IF testvar var key_performance EQ 2 THEN print temps ciseauxtri: derniere retouche de la triangulation systime 1 tempdeux endif if keyword_set key_performance THEN print temps ciseauxtri systime 1 tempsun return triang end"); 320 a[318] = new Array("./ToBeReviewed/TRIANGULATION/completecointerre.html", "completecointerre.pro", "", "PRO draw_corner_triangle lons lats seuil CONT_COLOR cont_color _extra ex compile_opt idl2 strictarrsubs cm_4mesh the triangle must not be out of the domain IF min lons max maxlon GE lon1 AND maxlon LE lon2 AND min lats max maxlat GE lat1 AND maxlat LE lat2 then BEGIN the triangle must not be too big z convert_coord lons lats data to_normal alldist z 0 2 z 0 0 2 z 1 2 z 1 0 2 z 0 0 z 0 1 2 z 1 0 z 1 1 2 z 0 1 z 0 2 2 z 1 1 z 1 2 2 IF max alldist LT seuil 2 THEN polyfill lons lats color cont_color _extra ex return ENDIF end file_comments To color cleanly continents categories graphic keyword _EXTRA Used to pass your keywords keyword CONT_COLOR The color of the continent defaut value is d n_colors 1 white uses common pro history Sebastien Masson smasson lodyc jussieu fr 01 10 1999 version Id: completecointerre pro 150 2006 08 09 10:12:54Z navarro PRO completecointerre COINMONTE coinmonte COINDESCEND coindescend CONT_COLOR cont_color INDICEZOOM indicezoom _extra ex compile_opt idl2 strictarrsubs common if NOT keyword_set coinmonte then return if NOT keyword_set coindescend then return if NOT keyword_set indicezoom then return tempsun systime 1 For key_performance definitions of vectors coinmont and coindesc if keyword_set coinmonte then coinmont coinmonte ELSE coinmont twin_corners_up if keyword_set coindescend then coindesc coindescend ELSE coindesc twin_corners_dn IF NOT keyword_set cont_color THEN cont_color d n_colors 1 255 definition of coordinates of points numbered 1 2 3 4 5 6 see figures below tempdeux systime 1 For key_performance 2 if coinmont 0 NE 1 OR coindesc 0 NE 1 then BEGIN if keyword_set indicezoom then BEGIN if we use key_stide the t u v and f points are no more related to the same cell because glamf and gphif has be recomputed to be in the middle of two t points IF total key_stride EQ 3 AND finite glamv 0 gphiv 0 NE 0 THEN BEGIN long1 glamv indicezoom lati1 gphiv indicezoom ENDIF ELSE BEGIN long1 glamt indicezoom lati1 gphif indicezoom ENDELSE IF total key_stride EQ 3 AND finite glamu 0 gphiu 0 NE 0 THEN BEGIN long2 glamu indicezoom lati2 gphiu indicezoom ENDIF ELSE BEGIN long2 glamf indicezoom lati2 gphit indicezoom ENDELSE long3 glamf indicezoom lati3 gphif indicezoom ENDIF ELSE BEGIN IF total key_stride EQ 3 AND finite glamv 0 gphiv 0 NE 0 THEN BEGIN long1 glamv lati1 gphiv ENDIF ELSE BEGIN long1 glamt lati1 gphif ENDELSE IF total key_stride EQ 3 AND finite glamu 0 gphiu 0 NE 0 THEN BEGIN long2 glamu lati2 gphiu ENDIF ELSE BEGIN long2 glamf lati2 gphit ENDELSE long3 glamf lati3 gphif ENDELSE nx size long1 dimensions 0 ny size long1 dimensions 1 seuil 5 min nx ny 2 seuil min p position 2 p position 0 seuil p position 3 p position 1 seuil ENDIF IF testvar var key_performance EQ 2 THEN print temps completecointerre: positions des points systime 1 tempdeux Case land corner in ascent: 2 land points in diagonal ascending with 2 ocean points on the descendant diagonal 4 t i nx 1 u i nx t i nx 1 0 1 3 5 v i f i v i 1 t i 0 2 u i t i 1 1 if coinmont 0 NE 1 then BEGIN tempdeux systime 1 For key_performance 2 for id 0 n_elements coinmont 1 do BEGIN i coinmont id ii i MOD nx ij i nx bottom triangle lons long1 i long2 i long3 i lats lati1 i lati2 i lati3 i draw_corner_triangle lons lats seuil CONT_COLOR cont_color _extra ex upper triangle IF ii NE nx 1 AND ij NE ny 1 THEN BEGIN lons long3 i long1 i 1 long2 i nx lats lati3 i lati1 i 1 lati2 i nx draw_corner_triangle lons lats seuil CONT_COLOR cont_color _extra ex ENDIF ENDFOR IF testvar var key_performance EQ 2 THEN print temps completecointerre: trace de cointerremonte systime 1 tempdeux ENDIF Case land corner in descent: 2 land points in diagonal descending with 2 ocean points on the ascendant diagonal 4 t i nx 1 u i nx t i nx 1 0 3 5 v i f i v i 1 1 t i 0 2 u i t i 1 1 if coindesc 0 NE 1 then begin tempdeux systime 1 For key_performance 2 for id 0 n_elements coindesc 1 do BEGIN i coindesc id ii i MOD nx ij i nx IF ii NE nx 1 AND ij NE ny 1 THEN BEGIN left triangle lons long1 i long3 i long2 i nx lats lati1 i lati3 i lati2 i nx draw_corner_triangle lons lats seuil CONT_COLOR cont_color _extra ex right triangle lons long3 i long2 i long1 i 1 lats lati3 i lati2 i lati1 i 1 draw_corner_triangle lons lats seuil CONT_COLOR cont_color _extra ex ENDIF ENDFOR IF testvar var key_performance EQ 2 THEN print temps completecointerre: trace de cointerredescend systime 1 tempdeux ENDIF IF keyword_set key_performance THEN print temps completecointerre systime 1 tempsun return end"); 321 a[319] = new Array("./ToBeReviewed/TRIANGULATION/definetri.html", "definetri.pro", "", " file_comments efine a triangulation array like TRIANGULATE But in a VERY SIMPLE CASE: the points are regulary gridded on nx ny array Find a Delaunay triangulation for this set of points is easy: Points define nx 1 ny 1 rectangles which we can cut in 2 triangles cf figure above ny 1 ny 2 1 0 0 1 2 nx 3 nx 2 nx 1 You have 2 ways to cut a rectangle: 1 the upward diagonal 2 the downward diagonal categories utilities param NX in required The x dimension array param NY in required The y dimension array param DOWNWARD in optional When downward is undefine all rectangles are cut in using the upward diagonal Downward is a vector which contains the rectangles numbers which are cut in using the downward diagonal The rectangle number is define by the index in a nx ny vector of the lower left corner of the rectangle returns triangles is a 2d array and is dimensions are 3 and 2 nx 1 ny 1 triangles is define like in the TRIANGULATE procedure examples triangles definetri 3 3 1 3 triangles will be a this kind of triangulation: history sebastien Masson smlod ipsl jussieu fr 4 3 1999 version Id: definetri pro 150 2006 08 09 10:12:54Z navarro FUNCTION definetri nx ny downward compile_opt idl2 strictarrsubs nx long nx ny long ny if n_elements downward NE 0 THEN BEGIN if n_elements downward GT nx 1 ny 1 then begin print downward a trop d elements par rapport a nx et ny return 1 endif downward long downward ENDIF we define triangles triangles lonarr 3 2 nx 1 ny 1 we cut the rectangles with the upward diagonal if n_elements downward NE nx 1 ny 1 then BEGIN there is some rectangle to cut we define upward: upward is a vector which contains the rectangles numbers which are cut in using the upward diagonal The rectangle number is define by the index in a nx ny vector of the lower left corner of the rectangle upward bytarr nx ny 1 upward ny 1 0 upward nx 1 0 if n_elements downward NE 0 then upward downward 0 upward where upward EQ 1 n1 n_elements upward 4 corners indexes of a rectangle number i are i nx i nx 1 i i 1 trinumber 2 upward upward nx we define the right triangles triangles 0 trinumber upward triangles 1 trinumber upward 1 triangles 2 trinumber upward 1 nx we define the left triangles triangles 0 trinumber 1 upward 1 nx triangles 1 trinumber 1 upward nx triangles 2 trinumber 1 upward ENDIF ELSE n1 0 we cut the rectangles with the downward diagonal if n_elements downward NE 0 then BEGIN n2 n_elements downward trinumber 2 downward downward nx we define the right triangles triangles 0 trinumber downward 1 triangles 1 trinumber downward nx 1 triangles 2 trinumber downward nx we define the left triangles triangles 0 trinumber 1 downward nx triangles 1 trinumber 1 downward triangles 2 trinumber 1 downward 1 endif return triangles end"); 322 a[320] = new Array("./ToBeReviewed/TRIANGULATION/definetri_e.html", "definetri_e.pro", "", "function numtri index nx ny compile_opt idl2 strictarrsubs y index nx x index y nx numtri y NE 0 nx 1 2 y 1 1 2 y EQ ny 1 OR y EQ ny 1 x return numtri end file_comments Define a triangulation array like TRIANGULATE but for a E grid type categories Make contours with E grid type param NX in required The x dimension array param NY in required The y dimension array param SINGULAR in optional When singular is undefined all rectangles are cut in using the vertical diagonal Singular is a vector which contains the rectangles numbers which are cut in using the horizontal diagonal The rectangle number is define by the index in a nx ny vector of the lower left corner of the rectangle keyword SHIFTED returns Triangles is a 2d array and is dimensions are 3 and nx 1 ny 1 Triangles is defined like in the TRIANGULATE procedure history Sebastien Masson smlod ipsl jussieu fr June 2001 version Id: definetri_e pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter SHIFTED FUNCTION definetri_e nx ny singular SHIFTED shifted compile_opt idl2 strictarrsubs nx long nx ny long ny triangles lonarr 3 2 nx 1 ny 1 build the base triangulation with the diamond cut in two triangles by the vertical diagonal first line index lindgen nx 1 trinumber index triangles 0 trinumber index triangles 1 trinumber index 1 triangles 2 trinumber index nx 1 shifted last line index ny 1 nx lindgen nx 1 trinumber numtri index nx ny triangles 0 trinumber index triangles 1 trinumber index nx index nx 1 shifted MOD 2 triangles 2 trinumber index 1 other lines if ny GT 2 then begin index lindgen nx ny index index 0:nx 2 1:ny 2 index index oddeven index nx 1 shifted MOD 2 trinumber numtri index nx ny triangles 0 trinumber index triangles 1 trinumber index nx oddeven triangles 2 trinumber index nx oddeven triangles 0 trinumber 1 index nx oddeven triangles 1 trinumber 1 index nx oddeven triangles 2 trinumber 1 index 1 endif cut the diamond specified by singular in two triangles by the horizontal diagonal IF keyword_set singular then BEGIN yindex singular nx otherline where yindex NE 0 AND yindex NE ny 1 if otherline 0 NE 1 then begin index singular otherline oddeven index nx 1 shifted MOD 2 trinumber numtri index nx ny triangles 0 trinumber index triangles 1 trinumber index nx oddeven triangles 2 trinumber index 1 triangles 0 trinumber 1 index triangles 1 trinumber 1 index 1 triangles 2 trinumber 1 index nx oddeven endif endif return triangles end "); 323 a[321] = new Array("./ToBeReviewed/TRIANGULATION/dessinetri.html", "dessinetri.pro", "", " file_comments Draw the triangulation categories utilities param TRI in optional Array which define the triangulation provided by triangule pro or triangulate param X in optional The x position of points to which the trangulation refer to see the x array provided in triangulate param Y in optional The y position of points to which the trangulation refer to see the y array provided in triangulate keyword WAIT x to call wait x second between each triangle draw keyword ONEBYONE To draw the triangles one by one keyword FILL To fill the triangles using polyfill instead of plotting them keyword CHANGECOLOR n To change the color of each traingle n colors will be used and repeted if necessary uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: dessinetri pro 150 2006 08 09 10:12:54Z navarro PRO dessinetri tri x y WAIT wait ONEBYONE onebyone FILL fill CHANGECOLOR changecolor _extra ex compile_opt idl2 strictarrsubs common tempsun systime 1 For key_performance a if n_params EQ 3 then BEGIN CASE size x n_dimensions size y n_dimensions OF 2:BEGIN nx n_elements x ny n_elements y glam x replicate 1 ny gphi replicate 1 nx y END 4:BEGIN glam x gphi y END ELSE:BEGIN dummy report x and y inputs of dessinetri must have the same number of dimensions 1 or 2 return END ENDCASE ENDIF ELSE BEGIN grille mask glam gphi tri tri undefine mask tri ciseauxtri tri glam gphi ENDELSE IF keyword_set changecolor THEN BEGIN oldname d name if d name EQ PS OR d name EQ Z then BEGIN thisos strupcase strmid version os_family 0 3 CASE thisOS of MAC : set_plot thisOS WIN : set_plot thisOS ELSE: set_plot X ENDCASE ncolors d n_colors 1 255 set_plot oldname ENDIF ELSE ncolors d n_colors 1 255 color 1 indgen changecolor ncolors changecolor 1 ENDIF ELSE color 0 color color replicate 1 n_elements tri 3 n_elements color 1 tempdeux systime 1 For key_performance 2 for i 0L n_elements tri 3 1 do begin t tri i tri 0 i IF keyword_set fill THEN polyfill glam t gphi t color color i _extra ex ELSE plots glam t gphi t color color i _extra ex IF keyword_set wait THEN wait wait IF keyword_set onebyone THEN read a prompt press a key ENDFOR IF testvar var key_performance EQ 2 THEN print temps dessinetri: trace des triangles systime 1 tempdeux if keyword_set key_performance THEN print temps dessinetri systime 1 tempsun return end"); 324 a[322] = new Array("./ToBeReviewed/TRIANGULATION/drawcoast_c.html", "drawcoast_c.pro", "", " file_comments categories param MASK param XF param YF param NX param NY keyword COAST_COLOR The color of the coastline defaut value is 0 black keyword COAST_THICK The thick of the trait to trace continents By default it is 1 keyword XSEUIL To eliminate segments of coasts which are to big which link points which can be close on the sphere but distant on the drawing We delete all segments whose the size surpass the size of the window following X XSEUIL By default XSEUIL 5 But it can be to big if we do a big zoom or a little one for some projections We specify it the keyword thanks to this keyword keyword YSEUIL See XSEUIL keyword _EXTRA Used to pass our keywords returns uses restrictions examples history version todo Seb: remplir le header PRO drawcoast_c mask xf yf nx ny COAST_COLOR coast_color COAST_THICK coast_thick YSEUIL yseuil XSEUIL xseuil _extra ex compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 For key_performance We trace vertical segments: if NOT keyword_set yseuil then yseuil 5 min nx ny 2 distanceseuil p position 3 p position 1 yseuil list: list of points i for which we will trace a segment between the point i j 1 and i j tempdeux systime 1 For key_performance 2 liste where mask shift mask 1 0 EQ 1 AND xf shift xf 0 1 2 yf shift yf 0 1 2 LE distanceseuil 2 IF liste 0 NE 1 THEN BEGIN We recuperate lx an dly which are indexes in a 2d array of points given by list ly liste nx lx temporary liste nx ly indice where ly NE 0 We do not take points concerning if indice 0 NE 1 then begin the first line because in this case the point j 1 is undefined lx lx indice ly ly temporary indice Loop on concerned points and drawing of the segment Comment: we use plots instead of plot because plots goes faster IF testvar var key_performance EQ 2 THEN print temps tracecote: determiner liste des points concernes par un trait vertical systime 1 tempdeux tempdeux systime 1 For key_performance 2 for pt 0L n_elements lx 1 do BEGIN i lx pt j ly pt plots xf i j 1 xf i j yf i j 1 yf i j color coast_color thick coast_thick normal _extra ex endfor IF testvar var key_performance EQ 2 THEN print temps tracecote: trace des traits verticaux systime 1 tempdeux endif ENDIF For the drawing of horizontal segments it is the same thing but we have to be careful if it is periodic If it is periodic we duplicate the first column and we put it at the end This is made not for the shift which is periodic by default but for the plots tempdeux systime 1 For key_performance 2 if keyword_set key_periodic AND nx EQ jpi then begin mask mask mask 0 xf xf xf 0 yf yf yf 0 nx nx 1 ENDIF if NOT keyword_set xseuil then xseuil 5 min nx ny 2 distanceseuil p position 2 p position 0 xseuil liste where mask shift mask 0 1 EQ 1 AND xf shift xf 1 0 2 yf shift yf 1 0 2 LE distanceseuil 2 IF liste 0 NE 1 THEN BEGIN ly liste nx lx temporary liste nx ly indice where ly NE ny 1 AND lx NE 0 if indice 0 NE 1 then begin We do not take points of the first column and of the last line because we added artificially lx lx indice ly ly temporary indice IF testvar var key_performance EQ 2 THEN print temps tracecote: determiner liste des points concernes par un trait horizontal systime 1 tempdeux tempdeux systime 1 For key_performance 2 for pt 0L n_elements lx 1 do BEGIN i lx pt j ly pt plots xf i 1 j xf i j yf i 1 j yf i j color coast_color thick coast_thick normal _extra ex endfor IF testvar var key_performance EQ 2 THEN print temps tracecote: trace des traits horizontaux systime 1 tempdeux endif endif if keyword_set key_performance THEN print temps drawcoast_c systime 1 tempsun return end"); 325 a[323] = new Array("./ToBeReviewed/TRIANGULATION/drawcoast_e.html", "drawcoast_e.pro", "", " file_comments categories param MASK param XF param YF param NX param NY keyword COAST_COLOR The color of the coastline defaut value is 0 black keyword COAST_THICK The thick of the trait to trace continents By default it is 1 keyword XSEUIL To eliminate segments of coasts which are to big which link points which can be close on the sphere but distant on the drawing We delete all segments whose the size surpass the size of the window following X XSEUIL By default XSEUIL 5 But it can be to big if we do a big zoom or a little one for some projections We specify it the keyword thanks to this keyword keyword YSEUIL See XSEUIL keyword _EXTRA Used to pass our keywords returns uses restrictions examples history version todo Seb: remplir le header PRO drawcoast_e mask xf yf nx ny COAST_COLOR coast_color COAST_THICK coast_thick YSEUIL yseuil XSEUIL xseuil onemore onemore _extra ex compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF tempsun systime 1 pour key_performance if keyword_set key_periodic AND nx EQ jpi then begin mask mask mask 0 xf xf xf 0 yf yf yf 0 nx nx 1 ENDIF we plot the borders of the diamond in this sense : if NOT keyword_set onemore then onemore 0 if NOT keyword_set xseuil then xseuil 5 min nx ny 2 distanceseuil p position 2 p position 0 xseuil liste: liste des points i pourlesquels on va tracer un segment index lindgen nx ny index index 0:nx 2 1:ny 1 indexbis index nx index nx onemore MOD 2 liste where mask index 1 mask indexbis EQ 1 AND xf index xf indexbis 2 yf index yf indexbis 2 LE distanceseuil 2 IF liste 0 NE 1 THEN BEGIN index index liste indexbis indexbis liste for pt 0 n_elements index 1 do begin plots xf index pt xf indexbis pt yf index pt yf indexbis pt color coast_color thick coast_thick normal _extra ex endfor ENDIF we plot the borders of the diamond in this sense : if NOT keyword_set xseuil then xseuil 5 min nx ny 2 distanceseuil p position 2 p position 0 xseuil liste: liste des points i pourlesquels on va tracer un segment index lindgen nx ny 1 index index 0:nx 2 indexbis index nx index nx onemore MOD 2 liste where mask index 1 mask indexbis EQ 1 AND xf index xf indexbis 2 yf index yf indexbis 2 LE distanceseuil 2 IF liste 0 NE 1 THEN BEGIN index index liste indexbis indexbis liste for pt 0 n_elements index 1 do begin plots xf index pt xf indexbis pt yf index pt yf indexbis pt color coast_color thick coast_thick normal _extra ex endfor ENDIF if keyword_set key_performance THEN print temps drawcoast_e systime 1 tempsun return end"); 326 a[324] = new Array("./ToBeReviewed/TRIANGULATION/drawsectionbottom.html", "drawsectionbottom.pro", "", " file_comments Fill and draw the bottom continents for a real section categories param MASKIN in requierd param XXAXISIN in requierd param DEPTHSIN in requierd keyword COAST_COLOR The color of the coastline defaut value is 0 black keyword COAST_THICK The thickness of the coastline defaut value is 1 keyword CONT_COLOR The color of the continent defaut value is d n_colors 1 white uses common pro restrictions Simple way to fill continents for a section using the fact that continents are wider at the bottom than at the top history Sebastien Masson smasson lodyc jussieu fr June 14 2002 version Id: drawsectionbottom pro 150 2006 08 09 10:12:54Z navarro todo Seb: definir params PRO drawsectionbottom maskin xxaxisin depthsin COAST_COLOR coast_color COAST_THICK coast_thick CONT_COLOR cont_color CONT_NOFILL cont_nofill OVERPLOT overplot _extra ex compile_opt idl2 strictarrsubs cm_general IF NOT keyword_set key_forgetold THEN BEGIN updatekwd ENDIF if keyword_set overplot then return mask is from bottom to top boundaries conditions: nx size maskin 1 nz size maskin 2 1 IF size xxaxisin n_dimensions EQ 1 THEN xxaxisin temporary xxaxisin replicate 1 nz IF size depthsin n_dimensions EQ 1 THEN depthsin replicate 1 nx temporary depthsin for the mask : we add ocean at the top then it is always possible to find one ocean point on each water column mask maskin replicate 1 nx for x axis we also add one level xxaxis xxaxisin xxaxisin 0 x axis must cover nx 1 points because we will draw the edge of the mask if it was mot possible in decoupeterre pro to extend the xxaxis we do it now by hand xxaxis xxaxisin 0 if size xxaxis 1 EQ nx then begin if n_elements xxaxis EQ nx then begin deltax abs x range 1 x range 0 10 xxaxis xxaxis 0 deltax xxaxis x0 xxaxis 0 deltax xxaxis replicate x0 1 nz xxaxis ENDIF for the depth usepartial total depthsin 2 usepartial total usepartial NE usepartial 0 GE 1 depths depthsin 0:nx 1 we add one level according to the ocean level we had to the mask deltaz abs y range 1 y range 0 10 zmax max depthsin deltaz depths depths replicate zmax nx 1 depths depths replicate zmax nx if min depths gt 1 then we must add one line at the bottom this appens when the bottom limit is defined between T k and W k points IF min depthsin GT 1 OR max total mask 2 EQ nz THEN BEGIN zmin min y range deltaz depths replicate zmin nx depths mask replicate 0 nx mask nz nz 1 ENDIF xleft xxaxis 0:nx 1 xright xxaxis 1:nx looking for the position of the bottom of the ocean pos nz 1 total mask 2 depths depths lindgen nx nx pos xx transpose xleft xright xx x range 0 xx zz max y range xx float xx zz float zz filling of the continents IF NOT keyword_set cont_color THEN cont_color d n_colors 1 255 if NOT keyword_set cont_nofill then polyfill min xx max maxx xx maxx min zz max mazz zz mazz color cont_color if NOT keyword_set cont_nofill then polyfill min xx max maxx xx maxx y range 0 zz y range 0 color cont_color drawing of the coast bottom line we could have plot directly xx and yy but if countout ne 0 doing this will draw an non existing bottom line along y range values which is not so good we thus do this ugly for if loops to make sure that we don t draw these lines but we keep all vertical lines IF countout NE 0 THEN BEGIN FOR i 0 countout 1 DO BEGIN CASE 1 OF out i EQ 0:BEGIN if we start with a out point xxx values f_nan zzz values f_nan END i EQ 0:BEGIN i eq 0 but out i ne 0 xxx xx 0:out i values f_nan zzz zz 0:out i values f_nan END ELSE:BEGIN two consecutive out values at the same depth: we just keep values f_nan values until the next change of depth IF out i 1 EQ out i 1 AND zz out i 1 EQ zz out i THEN BEGIN xxx xxx values f_nan zzz zzz values f_nan ENDIF ELSE BEGIN we keep everything inbetween the out values including themselves for the vertical lines but we had values f_nan to remove the horizontal lines xxx xxx xx out i 1 :out i values f_nan zzz zzz zz out i 1 :out i values f_nan ENDELSE END ENDCASE IF i EQ countout 1 AND out i NE n_elements xx 1 THEN BEGIN xxx xxx xx out i : zzz zzz zz out i : ENDIF ENDFOR plots xxx zzz color coast_color thick coast_thick _extra ex ENDIF ELSE plots xx zz color coast_color thick coast_thick _extra ex return end "); 327 a[325] = new Array("./ToBeReviewed/TRIANGULATION/fillcornermask.html", "fillcornermask.pro", "", " file_comments To color cleanly continents categories graphic keyword _EXTRA Used to pass your keywords keyword CONT_COLOR The color of the continent defaut value is d n_colors 1 white uses common pro history Sebastien Masson smasson lodyc jussieu fr 8 8 2002 version Id: fillcornermask pro 150 2006 08 09 10:12:54Z navarro PRO fillcornermask xin yin COINMONTE coinmonte COINDESCEND coindescend CONT_COLOR cont_color INDICEZOOM indicezoom _extra ex compile_opt idl2 strictarrsubs common if NOT keyword_set coinmonte AND NOT keyword_set coindescend then return tempsun systime 1 For key_performance IF NOT keyword_set cont_color THEN cont_color d n_colors 1 255 definition of coordinates of points numbered 1 2 3 4 5 6 see figures below x1 reform xin y1 reform yin IF size x1 0 EQ 2 THEN x1 x1 0 IF size y1 0 EQ 2 THEN y1 y1 0 x2 5 x1 shift x1 1 y2 5 y1 shift y1 1 nx n_elements x1 ny n_elements y1 Case land corner in ascent: 2 land points in diagonal ascending with 2 ocean points on the descendant diagonal 3 t i nx 1 u i nx t i nx 1 0 1 4 v i f i v i 1 t i 0 2 u i t i 1 1 if keyword_set coinmonte then BEGIN if coinmonte 0 NE 1 then BEGIN iup coinmonte MOD nx jup coinmonte nx for id 0 n_elements coinmonte 1 do BEGIN i iup id j jup id IF i NE nx 1 AND j NE ny 1 THEN BEGIN polyfill x1 i x2 i x2 i x1 i 1 x1 i y2 j y1 j y1 j 1 y2 j y2 j color cont_color _extra ex ENDIF endfor endif endif Case land corner in descent: 2 land points in diagonal descending with 2 ocean points on the ascendant diagonal 4 t i nx 1 u i nx t i nx 1 0 3 5 v i f i v i 1 1 t i 0 2 u i t i 1 1 if keyword_set coindescend then BEGIN if coindescend 0 NE 1 then begin idw coindescend MOD nx jdw coindescend nx for id 0 n_elements coindescend 1 do BEGIN i idw id j jdw id IF i NE nx 1 AND j NE ny 1 THEN BEGIN polyfill x1 i x2 i x2 i x1 i 1 x1 i y2 j y1 j 1 y1 j y2 j y2 j color cont_color _extra ex ENDIF endfor endif endif IF keyword_set key_performance THEN print temps fillcornermask systime 1 tempsun return end"); 328 a[326] = new Array("./ToBeReviewed/TRIANGULATION/section.html", "section.pro", "", " file_comments categories param FIELD param RES param GLAMAXE param GPHIAXE keyword ENDPOINTS keyword BOXZOOM keyword TYPE keyword WDEPTH keyword DIREC keyword SHOWBUILD keyword ONLYBOX keyword _EXTRA Used to pass your keywords returns uses common pro restrictions examples history Sebastien Masson smasson lodyc jussieu fr version PRO section field res glamaxe gphiaxe ENDPOINTS endpoints BOXZOOM boxzoom TYPE type WDEPTH wdepth DIREC direc SHOWBUILD showbuild ONLYBOX onlybox _extra ex include common compile_opt idl2 strictarrsubs cm_4mesh cm_4data cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF definition of boxzoom in function of endpoints then redefinition of the domain boxzoom2d min endpoints 0 endpoints 2 max ma02 ma02 min endpoints 1 endpoints 3 max ma13 ma13 minprof 0 profdefault 200 if n_elements type EQ 0 then type nothing Case N_Elements Boxzoom OF 0:localbox boxzoom2d minprof profdefault 1:localbox boxzoom2d minprof boxzoom 0 2:localbox boxzoom2d boxzoom 0 4:if strpos type z NE 1 THEN localbox boxzoom2d minprof profdefault ELSE localbox boxzoom2d 5:localbox boxzoom2d minprof boxzoom 4 6:localbox boxzoom2d boxzoom 4:5 Else:BEGIN print report Bad definition of the box stop END ENDCASE nelbox n_elements localbox if keyword_set wdepth then grillechoice vargrid W ELSE grillechoice vargrid domdef localbox GRIDTYPE grillechoice findalways _extra ex grille 1 1 1 1 nx ny if less than 10 points where found we apply domdef over the whole domain problem why 10 points as a test value how can we find a good test value IF nx ny LE 10 THEN domdef GRIDTYPE grillechoice _extra ex We redefine lon1 in case findalways has been used in domdef lon1 min endpoints 0 endpoints 2 max lon2 lat1 min endpoints 1 endpoints 3 max lat2 we extend the box along the z axis i that way the plot will be drawn until its bottom part if strpos type z NE 1 THEN BEGIN We keep yranges axis z before changing the boxzoom y range localbox nelbox 1 localbox nelbox 2 if vargrid EQ W OR keyword_set wdepth then BEGIN firstzw 0 firstzw 1 lastzw lastzw 1 firstzt 1 lastzt lastzt 1 firstx 1 lastx lastx 1 firsty 1 lasty lasty 1 jpj 1 domdef firstx lastx firsty lasty firstz lastz index gridtype vargrid IF keyword_set onlybox THEN return grille mask glam gphi gdep nx ny nz firstx firsty firstz lastx lasty lastz We define the triangulation which will allows us to determinate the section We recalculate it because it must be defined on the Earth and on oceans Following the direction of the section rather longitude or rather latitude we define the way to triangulate if strpos type x NE 1 then BEGIN downward lindgen nx ny 0:nx 2 0:ny 2 tri definetri nx ny downward ENDIF ELSE tri definetri nx ny If we have an irregular grid that is periodic then it is possible that some of the triangle have a very large size neighborg points on the sphere but far away when doing the projection and should not be taken into account IF keyword_set key_irregular AND keyword_set key_periodic THEN BEGIN glamtri glam tri glamtri abs glamtri shift glamtri 1 0 good temporary glamtri LT 10 max glam nx good where total temporary good 1 EQ 3 tri temporary tri temporary good ENDIF Equation of the line on which we do the section abc linearequation endpoints 0:1 endpoints 2:3 glamtri glam tri gphitri gphi tri Which points of the triangulation are above and below the line if abc 1 NE 0 THEN test temporary gphitri GE abc 0 abc 1 temporary glamtri abc 2 abc 1 ELSE test temporary glamtri GE abc 1 abc 0 temporary gphitri abc 2 abc 0 zero123 total test 1 to keep: triangles of the triangulation which are over the line tokeep1 where zero123 EQ 1 tokeep2 where temporary zero123 EQ 2 tokeep tokeep1 tokeep2 test test tokeep tri tri tokeep Which summit of the triangle is alone in a side of the line single1 where test 0:n_elements tokeep1 1 EQ 1 single1 single1 single1 3 3 single2 where test n_elements tokeep1 :n_elements tokeep 1 EQ 0 single2 single2 single2 3 3 undefine tokeep undefine tokeep1 undefine tokeep2 undefine test single temporary single1 temporary single2 points1 the point of the triangle alone in a side of the line point2 the other point of the triangle in the other side of the line point1 single single point2 single EQ 0 1 single LE 1 undefine single ntri size tri 2 index lindgen ntri lindgen ntri points1 tri point1 index points2 tri point2 temporary index points : complex containing couples of points in a side and the other side of the line We have to delete duplicates points dcomplex points1 points2 points points uniq points sort points symetrique dcomplex imaginary points double points points points where points shift temporary symetrique 1 NE 0 points1 coordinates of the point of the triangle which is alone in a side of the line point2 coordinates of the other point of the triangle in the other side of the line points1 complex glam double points gphi double points points2 complex glam imaginary points gphi imaginary points droites equations of line whose we look for the intersection wit the section droites linearequation points1 points2 inter lineintersection droites abc replicate 1 n_elements points1 Geographic coordinates of points we look for on the section glamaxe float inter gphiaxe imaginary inter We arrange them in the growing order between boundaries of the section if strpos type x NE 1 then BEGIN sort sort glamaxe glamaxe glamaxe sort inbox where glamaxe GE lon1 AND glamaxe LE lon2 glamaxe glamaxe inbox sort sort inbox gphiaxe gphiaxe sort ENDIF ELSE BEGIN sort sort gphiaxe gphiaxe gphiaxe sort inbox where gphiaxe GE lat1 AND gphiaxe LE lat2 gphiaxe gphiaxe inbox sort sort inbox glamaxe glamaxe sort ENDELSE points points sort points1 points1 sort points2 points2 sort inter inter sort poids abs points2 inter abs points2 points1 array litchamp field array fitintobox array if array 0 EQ 1 THEN BEGIN res 1 return ENDIF if n_elements valmask EQ 0 THEN valmask 1e20 taille size array if jpt GT 1 AND taille 0 GE 3 AND strpos type t EQ 1 then BEGIN direc t array grossemoyenne array t taille size array jpt 1 ENDIF case 1 of xy taille 0 EQ 2:BEGIN value1 array double points terre where value1 GT valmask 10 if terre 0 NE 1 then value1 terre values f_nan value2 array imaginary points terre where value2 GT valmask 10 if terre 0 NE 1 then value2 terre values f_nan res poids value1 1 poids value2 END xyz taille 0 EQ 3 AND jpt EQ 1:BEGIN npoints n_elements points index double points replicate 1 nz replicate nx ny npoints lindgen nz value1 array index terre where value1 GT valmask 10 if terre 0 NE 1 then value1 terre values f_nan index imaginary points replicate 1 nz replicate nx ny npoints lindgen nz value2 array index terre where value2 GT valmask 10 if terre 0 NE 1 then value2 terre values f_nan poids poids replicate 1 nz res poids value1 1 poids value2 average following z if strpos type z EQ 1 then begin nan where finite res EQ 0 if vargrid EQ W then e3 e3w firstzw:lastzw ELSE e3 e3t firstzt:lastzt weight replicate 1 npoints e3 if nan 0 NE 1 then weight nan values f_nan totalweight total weight 2 nan zero where totalweight EQ 0 if zero 0 NE 1 then totalweight zero values f_nan res total res weight 2 nan totalweight direc z string byte testvar var toto endif END xyt taille 0 EQ 3 AND jpt NE 1:BEGIN npoints n_elements points index double points replicate 1 jpt replicate nx ny npoints lindgen jpt value1 array index terre where value1 GT valmask 10 if terre 0 NE 1 then value1 terre values f_nan index imaginary points replicate 1 jpt replicate nx ny npoints lindgen jpt value2 array index terre where value2 GT valmask 10 if terre 0 NE 1 then value2 terre values f_nan poids poids replicate 1 jpt res poids value1 1 poids value2 END xyzt taille 0 EQ 4:BEGIN npoints n_elements points index double points replicate 1 nz jpt replicate nx ny npoints lindgen nz jpt index reform index npoints nz jpt over value1 array index terre where value1 GT valmask 10 if terre 0 NE 1 then value1 terre values f_nan index imaginary points replicate 1 nz jpt replicate nx ny npoints lindgen nz jpt index reform index npoints nz jpt over value2 array index terre where value2 GT valmask 10 if terre 0 NE 1 then value2 terre values f_nan poids poids replicate 1 nz jpt poids reform poids npoints nz jpt over res poids value1 1 poids value2 average following z if strpos type z EQ 1 then begin nan where finite res EQ 0 if vargrid EQ W then e3 e3w firstzw:lastzw ELSE e3 e3t firstzt:lastzt weight replicate 1 npoints e3 weight weight replicate 1 jpt weight reform weight npoints nz jpt over if nan 0 NE 1 then weight nan values f_nan totalweight total weight 2 nan zero where totalweight EQ 0 if zero 0 NE 1 then totalweight zero values f_nan res total res weight 2 nan totalweight direc z string byte testvar var toto endif END endcase terre where finite res EQ 0 if terre 0 NE 1 then res terre valmask if n_elements showbuild then BEGIN winsave window psave p xsave x ysave y plt findgen nx ny nodata nofill rempli title subtitle coast_thick 2 window showbuild p title p subtitle plots endpoints 0 endpoints 2 endpoints 1 endpoints 3 color 50 plots endpoints 0 endpoints 2 endpoints 1 endpoints 3 color 50 psym 2 thick 2 FOR i 0 n_elements points1 1 DO plots float points1 i float points2 i imaginary points1 i imaginary points2 i color 150 plots float points1 imaginary points1 color 150 psym 1 plots float points2 imaginary points2 color 150 psym 1 plots float inter imaginary inter color 250 psym 1 bug IF terre 0 NE 1 THEN plots float terre inter imaginary terre inter color 0 psym 1 dummy read dummy prompt press return to continue IF d name EQ PS THEN erase ELSE wset winsave p psave x xsave y ysave ENDIF restoreboxparam boxparam4section dat return end"); 329 a[327] = new Array("./ToBeReviewed/TRIANGULATION/tracecote.html", "tracecote.pro", "", " file_comments Draw coasts in plt categories graphic INPUTS:mask le tableau mask sur la zone consideree pour le dessin keyword SURFACE_COASTLINE To draw the surface coast line instead of the coast line at level firstz tw Usefull only for deep plots keyword _EXTRA used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr 30 9 1999 version Id: tracecote pro 150 2006 08 09 10:12:54Z navarro PRO tracecote SURFACE_COASTLINE surface_coastline _EXTRA ex include commons compile_opt idl2 strictarrsubs cm_4data cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF tempsun systime 1 For key_performance if n_elements key_gridtype EQ 0 then key_gridtype c We enlarge a bit the frame defined by firsts lasts in order to recuperate edges of the coast which are in the edging of the domain tempdeux systime 1 For key_performance 2 firstx 0 min firstxt firstxf 1 lastx max lastxt lastxf 1 min firstyt firstyf 1 lasty max lastyt lastyf 1 jpj 1 nx lastx firstx 1 ny lasty firsty 1 Which vertical level choose IF keyword_set surface_coastline THEN firstz 0 ELSE IF strupcase vargrid eq W THEN firstz firstzw ELSE firstz firstzt Attribution of the mask and of coordinates delimiting limits of the land coordinates f mask tmask firstx:lastx firsty:lasty firstz xf glamf firstx:lastx firsty:lasty yf gphif firstx:lastx firsty:lasty IF testvar var key_performance EQ 2 THEN print temps tracecote: determiner mask xf yf systime 1 tempdeux if key_gridtype EQ e then onemore xf 0 0 gT xf 0 1 We pass in normalized coordinates to be able to become independant from the projection s type choosen and from the support on which we do the drawing screen or postscript z convert_coord xf yf data to_normal xf reform z 0 nx ny yf reform z 1 nx ny tempvar SIZE TEMPORARY z Beware following the projection some points x or y can become NaN see point behind the earth in an orthographic projection We put points to be eliminated at a very big value so that they will not pass the test with distanceseuil see further if map projection LE 7 AND map projection NE 0 OR map projection EQ 14 OR map projection EQ 15 OR map projection EQ 18 then begin ind where finite xf yf EQ 0 IF ind 0 NE 1 THEN BEGIN xf ind 1e5 yf ind 1e5 ENDIF ENDIF ind where xf LT p position 0 OR xf GT p position 2 IF ind 0 NE 1 THEN xf ind 1e5 ind where yf LT p position 1 OR yf GT p position 3 IF ind 0 NE 1 THEN yf ind 1e5 tempvar SIZE TEMPORARY ind we delete ind if n_elements key_gridtype EQ 0 then key_gridtype c case key_gridtype of c :drawcoast_c mask xf yf nx ny _extra ex e :drawcoast_e mask xf yf nx ny onemore onemore _extra ex endcase if keyword_set key_performance THEN print temps tracecote systime 1 tempsun return end"); 330 a[328] = new Array("./ToBeReviewed/TRIANGULATION/tracemask.html", "tracemask.pro", "", " file_comments Draw contours of a mask categories utilities param MASKENTREE in required 2d array specifing the mask param XIN in required 2d array specifing longitude coordinates param YIN in required 2d array specifing latitude coordinates keyword COAST_COLOR The color of the coastline defaut value is 0 black keyword COAST_THICK The thick of the trait to trace continents It is 1 by default keyword OVERPLOT To do a plot over an other one keyword _EXTRA used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: tracemask pro 150 2006 08 09 10:12:54Z navarro PRO tracemask maskentree xin yin COAST_COLOR coast_color COAST_THICK coast_thick OVERPLOT overplot _extra ex compile_opt idl2 strictarrsubs if keyword_set overplot then return cm_general IF NOT keyword_set key_forgetold THEN BEGIN updatekwd ENDIF tempsun systime 1 For key_performance We avoid edging problems: tempdeux systime 1 For key_performance 2 tailleentree size maskentree nx tailleentree 1 1 ny tailleentree 2 1 we check the input axis IF n_elements xin EQ 0 THEN xentree findgen nx 1 ELSE xentree xin IF size xentree 0 EQ 1 THEN xentree xentree replicate 1 ny 1 IF n_elements yin EQ 0 THEN yentree findgen ny 1 ELSE yentree yin IF size yentree 0 EQ 1 THEN yentree replicate 1 nx 1 yentree We enlarge the mask by 1 column to the left an d1 line to the bottom mask intarr tailleentree 1 1 tailleentree 2 1 mask 1:tailleentree 1 1:tailleentree 2 maskentree The 2 first columns are identical mask 0 1:tailleentree 2 maskentree 0 The 2 first lines are identical mask 1:tailleentree 1 0 maskentree 0 We calculate the position following x of points which will serve to trace the mask They are situated between each points of the mask exept for the last column we can not calculate and so we put at max x range xrange x range sort x range if REVERSE_X is used xentree 5 xentree shift xentree 1 0 IF not keyword_set overplot THEN xentree nx 2 xrange 1 ELSE xentree nx 2 xentree nx 3 we sill xentree xrange 0 xentree yentree yrange 1 yf fltarr nx ny yf 1:nx 1 1:ny 1 yentree yf 0 1:ny 1 yentree 0 IF not keyword_set overplot THEN BEGIN if yinverse then yf 0 yrange 1 ELSE yf 0 yrange 0 ENDIF ELSE yentree 0 yentree 1 IF testvar var key_performance EQ 2 THEN print temps tracemask: determination du mask et des ses coordonnes systime 1 tempdeux We trace vertical segments: tempdeux systime 1 For key_performance 2 liste where mask shift mask 1 0 EQ 1 IF liste 0 NE 1 THEN BEGIN We recuperate lx and ly which are indexes in a 2d array of points given by list ly liste nx lx temporary liste nx ly indice where ly NE 0 We do not take points concernining the first line because in this case the point j 1 is not defined if indice 0 NE 1 then begin lx lx indice ly ly temporary indice IF testvar var key_performance EQ 2 THEN print temps tracemask: liste traits verticaux systime 1 tempdeux tempdeux systime 1 For key_performance 2 loop on concerned points and drawing of the segment comments: we use plots instead of plot because plots is faster for pt 0L n_elements lx 1 do BEGIN i lx pt j ly pt plots xf i j 1 xf i j yf i j 1 yf i j color coast_color thick coast_thick _extra ex if pt LT 5 then begin endif endfor IF testvar var key_performance EQ 2 THEN print temps tracemask: trace traits verticaux systime 1 tempdeux endif ENDIF We trace horizontal segments: tempdeux systime 1 For key_performance 2 liste where mask shift mask 0 1 EQ 1 IF liste 0 NE 1 THEN BEGIN ly liste nx lx temporary liste nx ly indice where lx NE 0 We do not take point sof the first column if indice 0 EQ 1 then return lx lx indice ly ly temporary indice IF testvar var key_performance EQ 2 THEN print temps tracemask: liste traits horizontaux systime 1 tempdeux tempdeux systime 1 For key_performance 2 for pt 0L n_elements lx 1 do BEGIN i lx pt j ly pt plots xf i 1 j xf i j yf i 1 j yf i j color coast_color thick coast_thick _extra ex endfor IF testvar var key_performance EQ 2 THEN print temps tracemask: trace traits horizontaux systime 1 tempdeux endif if keyword_set key_performance THEN print temps tracemask systime 1 tempsun return end "); 331 a[329] = new Array("./ToBeReviewed/TRIANGULATION/triangule.html", "triangule.pro", "", " todo seb FUNCTION triangule maskentree BASIC basic COINMONTE coinmonte COINDESCEND coindescend _extra ex compile_opt idl2 strictarrsubs common szmsk size maskentree IF szmsk 0 EQ 0 THEN BEGIN nx jpi ny jpj ENDIF ELSE BEGIN nx szmsk 1 ny szmsk 2 ENDELSE IF nx EQ 1 OR ny EQ 1 THEN return 1 IF arg_present coinmonte THEN coinmonte 1 IF arg_present coindescend THEN coindescend 1 if keyword_set basic then return triangule_c maskentree BASIC COINMONTE coinmonte COINDESCEND coindescend _extra ex if n_elements key_gridtype EQ 0 then key_gridtype c if n_elements maskentree EQ 0 then maskentree tmask 0 case key_gridtype of e :res triangule_e maskentree _extra ex c :res triangule_c maskentree COINMONTE coinmonte COINDESCEND coindescend _extra ex endcase return res end"); 332 a[330] = new Array("./ToBeReviewed/TRIANGULATION/triangule_c.html", "triangule_c.pro", "", " file_comments Construct the triangulation array The idea is: construct a list of triangle which link points between them This is automatically done by the function TRIANGULATE Here: we consider the fact that points are disposed on a grid regular or not but not unstructured that is to say that points are written following a rectangular matrix A easy way to do triangles between all points is then: for each point i j of the matrix exept those of the last line and of the last column we call rectangle i j the rectangle made of the four points i j i 1 j i j 1 i 1 j 1 To trace all triangle we just have to trace the 2 triangles contained in rectangles i j We notice that each rectangle i j have 2 diagonals it is true Make a drawing to make sure so there are two possible choice for each rectangle we want to cut in 2 triangles It is thanks to this choice that we will be able to trace coast with right angles At each angle of coast remarkable by the existence of an unique land point or of an unique ocean point on one of the four summit of a rectangle i j we have to cut the rectangle following the diagonal passing by this point categories graphic param MASKENTREE in optional It is a 2d array which will serve to mask the field we will trace after with CONTOUR TRIANGULATION triangule mask If this argument is not specified the function use tmask keyword BASIC Specify that the mask is on a basic grid use the triangulation for vertical cuts and hovmoellers keyword KEEP_CONT To keep the triangulation even on the continents keyword COINMONTE It is an array To obtain the array of ascending land corner to be treated with completecointerre pro in the variable array instead of make it pass by the global variable twin_corners_up keyword COINDESCEND It is an array See COINMONTE returns res: tableau 2d 3 nbre de triangles Each line of res represent indexes of points constituing summits of a triangle See how we trace triangles in definetri pro uses common pro different pro definetri pro restrictions Datas whose we want to do the contour must be disposed in a matrix On the other hand in the matrix the points s arrangement can not be irregular If it is use TRIANGULE history Sebastien Masson smasson lodyc jussieu fr 26 4 1999 version Id: triangule_c pro 150 2006 08 09 10:12:54Z navarro todo seb L 267 268 je ne pense pas que ce soit ce que tu voulais dire mais c est la traduction de ce qu il y avait crit Correction si besoin FUNCTION triangule_c maskentree COINMONTE coinmonte COINDESCEND coindescend BASIC basic KEEP_CONT keep_cont compile_opt idl2 strictarrsubs tempsun systime 1 For key_performance cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF Is the mask given or do we have to take tmask msk maskentree taille size msk nx taille 1 ny taille 2 IF n_elements keep_cont EQ 0 THEN keep_cont 1 key_irregular if keyword_set key_periodic nx EQ jpi AND NOT keyword_set basic then BEGIN msk msk msk 0 nx nx 1 ENDIF We will find the list of rectangles i j located by their left bottom corner we have to cut folowing a descendant diagonal We will call this list : pts_downward pts_downward 0 We construct the test which allow to find this triangle : shift msk 0 1 shift msk 1 1 msk shift msk 1 0 sum1 msk shift msk 1 0 shift msk 1 1 points which surround the left top point sum2 msk shift msk 0 1 shift msk 1 1 points which surround the right bottom point tempdeux systime 1 For key_performance 2 The left top land point surrounded by ocean points liste where 4 sum1 1 shift msk 0 1 EQ 1 if liste 0 NE 1 THEN pts_downward pts_downward liste The left top ocean point surrounded by land points liste where 1 sum1 shift msk 0 1 EQ 1 if liste 0 NE 1 THEN pts_downward pts_downward liste The right bottom land point surrounded by ocean points liste where 4 sum2 1 shift msk 1 0 EQ 1 if liste 0 NE 1 THEN pts_downward pts_downward liste The right bottom ocean point surrounded by land points liste where 1 sum2 shift msk 1 0 EQ 1 if liste 0 NE 1 THEN pts_downward pts_downward liste undefine liste IF testvar var key_performance EQ 2 THEN print temps triangule: trouver pts_downward systime 1 tempdeux if NOT keyword_set basic OR keyword_set coinmonte OR keyword_set coindescend then begin tempdeux systime 1 For key_performance 2 2 land points in ascendant diagonal with 2 ocean points in descendant diagonal coinmont where 1 msk 1 shift msk 1 1 shift msk 0 1 shift msk 1 0 EQ 1 if coinmont 0 NE 1 THEN pts_downward pts_downward coinmont IF testvar var key_performance EQ 2 THEN print temps triangule: trouver coinmont systime 1 tempdeux tempdeux systime 1 pour key_performance 2 coindesc where 1 shift msk 0 1 1 shift msk 1 0 msk shift msk 1 1 EQ 1 2 land points in descendant diagonal with 2 ocean points in ascendant diagonal IF testvar var key_performance EQ 2 THEN print temps triangule: trouver coindesc systime 1 tempdeux ENDIF if n_elements pts_downward EQ 1 then BEGIN tempdeux systime 1 For key_performance 2 triang definetri nx ny IF testvar var key_performance EQ 2 THEN print temps triangule: definetri systime 1 tempdeux coinmont 1 coindesc 1 ENDIF ELSE BEGIN tempdeux systime 1 For key_performance 2 pts_downward pts_downward 1:n_elements pts_downward 1 pts_downward pts_downward uniq pts_downward sort pts_downward None rectangle can have an element of the last column or of the last line as left bottom corner so we have to remove these points if they has been selected in pts_downward derniere_colonne lindgen ny 1 nx 1 derniere_ligne lindgen nx ny 1 nx pts_downward different pts_downward derniere_colonne pts_downward different pts_downward derniere_ligne if NOT keyword_set basic OR keyword_set coinmonte OR keyword_set coindescend then begin if coinmont 0 NE 1 then begin coinmont different coinmont derniere_colonne coinmont different coinmont derniere_ligne endif if coindesc 0 NE 1 then begin coindesc different coindesc derniere_colonne coindesc different coindesc derniere_ligne endif ENDIF ELSE BEGIN coinmont 1 coindesc 1 ENDELSE IF testvar var key_performance EQ 2 THEN print temps triangule: menage ds pts_downward coinmont et coindesc systime 1 tempdeux tempdeux systime 1 For key_performance 2 if pts_downward 0 EQ 1 then triang definetri nx ny ELSE triang definetri nx ny pts_downward IF testvar var key_performance EQ 2 THEN print temps triangule: definetri systime 1 tempdeux ENDELSE We delete land points which only contain land points if NOT keyword_set basic AND NOT keyword_set keep_cont then begin tempdeux systime 1 For key_performance 2 We delete rectangles which are entirely in the land recdsterre where 1 msk 1 shift msk 1 0 1 shift msk 0 1 1 shift msk 1 1 EQ 1 IF testvar var key_performance EQ 2 THEN print temps triangule: tous les recdsterre systime 1 tempdeux We do an other sort : We have to do not remove rectangles which only have one common summit t1 systime 1 indice intarr nx ny trimask intarr nx ny trimask 0:nx 2 0:ny 2 1 IF recdsterre 0 NE 1 then BEGIN tempdeux systime 1 For key_performance 2 indice recdsterre 1 if NOT keyword_set basic then begin vire1 0 vire2 0 while vire1 0 NE 1 OR vire2 0 NE 1 ne 0 do begin Delete rectangles we have to remove from recsterre in fact those we have to keep although they ar eentirely in the land vire1 where indice shift indice 1 1 1 shift indice 0 1 1 shift indice 1 0 trimask EQ 1 if vire1 0 NE 1 THEN BEGIN indice vire1 0 indice vire1 nx 1 0 endif vire2 where 1 indice 1 shift indice 1 1 shift indice 0 1 shift indice 1 0 trimask EQ 1 if vire2 0 NE 1 THEN BEGIN indice vire2 1 0 indice vire2 nx 0 endif endwhile IF testvar var key_performance EQ 2 THEN print temps triangule: trier les recdsterre systime 1 tempdeux endif indice ny 1 1 The last column and the last line indice nx 1 1 can not define any rectangle tempdeux systime 1 For key_performance 2 recgarde where indice EQ 0 We recuperate numbers of triangles we will keep trigarde 2 recgarde recgarde nx trigarde transpose temporary trigarde trigarde trigarde trigarde 1 triang triang temporary trigarde IF testvar var key_performance EQ 2 THEN print temps triangule: virer les triangle de la liste systime 1 tempdeux endif endif print temps tri triangles systime 1 t1 When key_periodic equal 1 triang is a list of indexes s array which have a surplus column We have to put it back to the initial matrix by putting indexes of the last column equal to these of the last column tempdeux systime 1 For key_performance 2 if keyword_set key_periodic nx 1 EQ jpi AND NOT keyword_set basic then BEGIN indicey triang nx indicex triang indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 then indicex liste 0 triang indicex nx indicey nx nx 1 if coinmont 0 NE 1 then begin indicey coinmont nx indicex coinmont indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 THEN indicex liste 0 coinmont indicex nx indicey nx nx 1 endif if coindesc 0 NE 1 then begin indicey coindesc nx indicex coindesc indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 THEN indicex liste 0 coindesc indicex nx indicey nx nx 1 endif endif IF testvar var key_performance EQ 2 THEN print temps triangule: finitions systime 1 tempdeux if keyword_set coinmonte THEN coinmonte coinmont ELSE twin_corners_up coinmont if keyword_set coindescend THEN coindescend coindesc ELSE twin_corners_dn coindesc IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF IF keyword_set key_performance THEN print temps triangule systime 1 tempsun return triang END "); 333 a[331] = new Array("./ToBeReviewed/TRIANGULATION/triangule_e.html", "triangule_e.pro", "", " file_comments Buid the triangulation for a E grid type categories graphic param MASKENTREE in optional It is a 2d array which will serve to mask the field we will trace after with CONTOUR TRIANGULATION triangule mask If this argument is not specified the function use tmask keyword BASIC Specify that the mask is on a basic grid use the triangulation for vertical cuts and hovmoellers keyword COINMONTE It is an array To obtain the array of ascending land corner to be treated with completecointerre pro in the variable array instead of make it pass by the global variable twin_corners_up keyword COINDESCEND It is an array See COINMONTE keyword SHIFTED uses common pro history Sebastien Masson smasson lodyc jussieu fr june 2001 version Id: triangule_e pro 150 2006 08 09 10:12:54Z navarro todo seb L 152 153 je ne pense pas que ce soit ce que tu voulais dire mais c est la traduction de ce qu il y avait crit Correction si besoin FUNCTION triangule_e maskentree COINMONTE coinmonte COINDESCEND coindescend SHIFTED shifted BASIC basic compile_opt idl2 strictarrsubs cm_4mesh IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF tempsun systime 1 For key_performance Is the mask given or do we have to take tmask msk maskentree sizem size msk nx sizem 1 ny sizem 2 if keyword_set key_periodic nx EQ jpi AND NOT keyword_set basic then BEGIN msk msk msk 0 nx nx 1 ENDIF we will find the diamond that must be cut in two triangle using the horizontal diagonal index lindgen nx ny index index 0:nx 2 1:ny 2 if n_elements shifted EQ 0 then shifted 1 oddeven index nx 1 shifted MOD 2 msk1 msk index msk2 msk index 1 sum msk index nx oddeven msk index nx oddeven sum1 msk2 sum sum2 msk1 sum horizontal singularpoint where msk1 EQ 0 AND sum1 EQ 3 OR msk1 EQ 1 AND sum1 EQ 0 OR msk2 EQ 0 AND sum2 EQ 3 OR msk2 EQ 1 AND sum2 EQ 0 OR sum EQ 0 AND msk1 msk2 EQ 2 if singularpoint 0 NE 1 then begin horizontal index singularpoint triang definetri_e nx ny horizontal SHIFTED shifted ENDIF ELSE triang definetri_e nx ny SHIFTED shifted coinmont index where sum EQ 2 AND msk1 msk2 EQ 0 coindesc index where sum EQ 0 AND msk1 msk2 EQ 2 we keep only the triangles which are outside the land but for some reasons we will in fact delete the land diamond allrecinland where sum1 msk1 EQ 0 indexallinland index allrecinland otherrec lindgen nx ny 0:nx 2 1:ny 2 otherrec different otherrec indexallinland index lindgen nx ny index index 0:nx 3 2:ny 3 out inter index indexallinland IF out 0 NE 1 THEN begin out inter out 1 indexallinland IF out 0 NE 1 THEN begin out out 1 oddeven out nx 1 shifted MOD 2 out inter out nx oddeven otherrec IF out 0 NE 1 THEN begin out inter out 2 nx otherrec IF out 0 NE 1 THEN begin out out nx out nx shifted MOD 2 endif endif endif ENDIF help out index lindgen nx ny index index 0:nx 3 2:ny 3 out inter index otherrec IF out 0 NE 1 THEN begin out inter out 1 otherrec IF out 0 NE 1 THEN begin out out 1 oddeven out nx 1 shifted MOD 2 out inter out nx oddeven indexallinland IF out 0 NE 1 THEN begin out inter out 2 nx indexallinland IF out 0 NE 1 THEN begin out out nx out nx shifted MOD 2 endif endif endif endif help out IF out 0 EQ 1 THEN out different indexallinland out ELSE out indexallinland triout numtri out nx ny triout triout triout 1 goodtri lindgen 2 nx 1 ny 1 goodtri different goodtri triout triang triang temporary goodtri When key_periodic equal 1 triang is a list of indexes s array which have a surplus column We have to put it back to the initial matrix by putting indexes of the last column equal to these of the last column tempdeux systime 1 For key_performance 2 if keyword_set key_periodic nx 1 EQ jpi AND NOT keyword_set basic then BEGIN indicey triang nx indicex triang indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 then indicex liste 0 triang indicex nx indicey nx nx 1 if coinmont 0 NE 1 then begin indicey coinmont nx indicex coinmont indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 THEN indicex liste 0 coinmont indicex nx indicey nx nx 1 endif if coindesc 0 NE 1 then begin indicey coindesc nx indicex coindesc indicey nx nx nx 1 liste where indicex EQ nx if liste 0 NE 1 THEN indicex liste 0 coindesc indicex nx indicey nx nx 1 endif endif IF testvar var key_performance EQ 2 THEN print temps triangule: finitions systime 1 tempdeux if arg_present coinmonte THEN coinmonte coinmont ELSE twin_corners_up coinmont if arg_present coindescend THEN coindescend coindesc ELSE twin_corners_dn coindesc IF NOT keyword_set key_forgetold THEN BEGIN updateold ENDIF IF keyword_set key_performance THEN print temps triangule systime 1 tempsun return triang END "); 334 a[332] = new Array("./ToBeReviewed/UTILITAIRE/get_extra.html", "get_extra.pro", "", " todo seb elle fait quoi elle permet : soit de creer une variable extra contenant les mots clefs que tu desires soit de completer une variable extra avec des mots clefs que tu rajoutes imagine : tu es dans une routine et tu veux passer un mot clef en extra car la routine que tu appelles ne le connait pas mais la routine suivante oui tu fais extra get_extra ok year 1999 age_capitaine 35 et tu obtiens la bonne variable extra fait un help extra struc ou alors tu completes un extra existant : extra get_extra _extra extra name Guillaume FUNCTION get_extra _extra extra compile_opt idl2 strictarrsubs return extra END "); 335 a[333] = new Array("./ToBeReviewed/UTILITAIRE/oups.html", "oups.pro", "", ""); 336 a[334] = new Array("./ToBeReviewed/UTILITAIRE/vzoom.html", "vzoom.pro", "", ""); 337 a[335] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd.html", "buildcmd.pro", "", " file_comments This function send back a string which contain the reading command and drawing s parameters param BASE in required keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword FORCETYPE history Sebastien Masson smasson lodyc jussieu fr version Id: buildcmd pro 152 2006 08 10 07:01:35Z smasson todo seb: documenter le param BASE et le keyword FORCETYPE FUNCTION buildcmd base BOXZOOM boxzoom FORCETYPE forcetype we get back the ids of the widget parts compile_opt idl2 strictarrsubs txtcmdid widget_info base find_by_uname txtcmd domainid widget_info base find_by_uname domain actionid widget_info base find_by_uname action optionid widget_info base find_by_uname option widget_control base get_uvalue top_uvalue smallin extractatt top_uvalue smallin numdessinin smallin 2 1 smallout extractatt top_uvalue smallout numdessinout smallout 2 1 options extractatt top_uvalue options optionsflag extractatt top_uvalue optionsflag portrait strtrim optionsflag where options EQ Portrait Landscape 0 1 0 We determinate which procedure we will call to do the drawing and the type IF keyword_set forcetype THEN type forcetype ELSE type widget_info actionid combobox_gettext case type of pltz diag up :procedure pltz pltz diag dn :procedure pltz pltt diag up :procedure pltt pltt diag dn :procedure pltt xy :procedure plt xz :procedure pltz yz :procedure pltz xt :procedure pltt yt :procedure pltt zt :procedure pltt x :procedure plt1d y :procedure plt1d z :procedure plt1d t :procedure pltt ELSE:procedure type endcase Search of options options extractatt top_uvalue options optionsflag extractatt top_uvalue optionsflag flags optionsflag numdessinin xindex flags where options EQ Longitude x index 0 yindex flags where options EQ Latitude y index 0 drawvecteur flags where options EQ Vecteur 0 procedure eq plt drawover flags where options EQ Overlay 0 alreadyread extractatt top_uvalue alreadyread alreadyvector extractatt top_uvalue alreadyvector alreadyover extractatt top_uvalue alreadyoer What must we read case 1 of alreadyover NE 1:BEGIN toread alreadyover 1 readswitch over END alreadyvector NE 1 AND alreadyvector NE pi:BEGIN toread alreadyvector 1 readswitch vector END alreadyread NE 1 AND alreadyread NE pi AND alreadyread NE 2 pi:BEGIN toread alreadyread 1 readswitch classic END else:BEGIN case 1 of alreadyvector eq pi:BEGIN toread alreadyover 1 readswitch over END alreadyread EQ pi:BEGIN toread alreadyvector 1 readswitch vector END alreadyread EQ 2 pi:BEGIN toread alreadyover 1 readswitch over END ELSE:BEGIN toread alreadyread 1 readswitch classic END endcase END ENDCASE widget_control txtcmdid get_value widcmd widcmd strtrim widcmd 2 IF widcmd 0 EQ THEN widcmd zzz cutcmd widcmd 0 toread numberofread prefix nameexp ending readcmd buildreadcmd base nameexp procedure type BOXZOOM boxzoom complete readswitch EQ classic AND alreadyread EQ 1 we look for the line containing funclec_name currentfile extractatt top_uvalue currentfile readparameters extractatt top_uvalue readparameters currentfile i 0 while strpos readcmd i readparameters funclec_name EQ 1 do i i 1 case readswitch of classic :BEGIN if alreadyread 1 EQ 0 then BEGIN we start the reading command readcmd beginning of reading the field to draw readcmd readcmd i 1 field prefix readcmd i 1 ENDIF ELSE BEGIN we complet the reading command oldrdcmd extractatt top_uvalue currentreadcmd nl n_elements oldrdcmd oldrdcmd nl 1 oldrdcmd nl 1 readcmd i prefix readcmd i readcmd temporary oldrdcmd temporary readcmd ENDELSE exit if we have to read other fields if alreadyread 1 NE numberofread 1 THEN BEGIN top_uvalue 1 findline top_uvalue currentreadcmd readcmd top_uvalue 1 findline top_uvalue alreadyread alreadyread 1 top_uvalue 1 findline top_uvalue noticebase xnotice Select the field number strtrim alreadyread 3 1 return ENDIF we finalize the reading command IF ending NE THEN BEGIN nl n_elements readcmd readcmd nl 1 readcmd nl 1 readcmd temporary readcmd ending ENDIF readcmd temporary readcmd field create_struct arr:temporary field grid:vargrid unit:varunit experiment:varexp name:varname end of reading the field to draw we get back _EXTRA: extra extractatt top_uvalue extra if xindex NE 0 then extra create_struct extra xindex xindex if yindex NE 0 then extra create_struct extra yindex yindex exextra cw_specifie_get_value base extra mixstru exextra extra sextra struct2string extra readcmd temporary readcmd extra sextra top_uvalue 1 findline top_uvalue currentreadcmd readcmd case 1 of drawvecteur:BEGIN we have to read the vectors top_uvalue 1 findline top_uvalue alreadyread pi top_uvalue 1 findline top_uvalue noticebase xnotice Select the zonal component of vector return END drawover:BEGIN we have to read the field to overlay top_uvalue 1 findline top_uvalue alreadyread 2 pi top_uvalue 1 findline top_uvalue noticebase xnotice Select the field to overlay return END finished we draw the plot ELSE: top_uvalue 1 findline top_uvalue alreadyread 1 endcase END vector :BEGIN for the vectors there is 2 components we read u when alreadyvector is a interger and v when alreadyvector is a interger 0 5 if floor alreadyvector 1 EQ 0 then begin if floor alreadyvector EQ alreadyvector then begin readcmd beginning of reading the zonal component of vector readcmd readcmd i 1 fieldu prefix readcmd i 1 ENDIF ELSE BEGIN readcmd beginning of reading the meridional component of vector readcmd readcmd i 1 fieldv prefix readcmd i 1 ENDELSE readcmd extractatt top_uvalue currentreadcmd temporary readcmd ENDIF ELSE BEGIN oldrdcmd extractatt top_uvalue currentreadcmd nl n_elements oldrdcmd oldrdcmd nl 1 oldrdcmd nl 1 readcmd i prefix readcmd i readcmd temporary oldrdcmd temporary readcmd ENDELSE case alreadyvector 1 of numberofread 1:BEGIN we finalize the reading command IF ending NE THEN BEGIN nl n_elements readcmd readcmd nl 1 readcmd nl 1 readcmd temporary readcmd ending ENDIF readcmd temporary readcmd fieldu create_struct arr:temporary fieldu grid:vargrid unit:varunit experiment:varexp name:varname end of reading the zonal component of vector top_uvalue 1 findline top_uvalue currentreadcmd readcmd we finished zonal component reading we know switch to meridional component top_uvalue 1 findline top_uvalue alreadyvector 5 top_uvalue 1 findline top_uvalue noticebase xnotice Select the meridional component of vector return END numberofread 0 5:BEGIN we finalize the reading command IF ending NE THEN BEGIN nl n_elements readcmd readcmd nl 1 readcmd nl 1 readcmd temporary readcmd ending ENDIF readcmd temporary readcmd fieldv create_struct arr:temporary fieldv grid:vargrid unit:varunit experiment:varexp name:varname end of reading the meridional component of vector we finished meridional component reading we get back _EXTRA of the vector and we complet extra already build extra extractatt top_uvalue extra exextra cw_specifie_get_value base extra mixstru exextra extra sextra struct2string extra readcmd readcmd vectorextra sextra extra mixstru extra vectorextra top_uvalue 1 findline top_uvalue currentreadcmd readcmd if drawover then BEGIN shall we do an overlay top_uvalue 1 findline top_uvalue alreadyvector pi top_uvalue 1 findline top_uvalue noticebase xnotice Select the field to overlay return ENDIF ELSE BEGIN it is done know top_uvalue 1 findline top_uvalue alreadyread 1 top_uvalue 1 findline top_uvalue alreadyvector 1 ENDELSE END ELSE:BEGIN we still need to read some vector components top_uvalue 1 findline top_uvalue currentreadcmd readcmd top_uvalue 1 findline top_uvalue alreadyvector alreadyvector 1 if floor alreadyvector EQ alreadyvector then text zonal ELSE text meridional top_uvalue 1 findline top_uvalue noticebase xnotice Select the strtrim floor alreadyread 3 1 text component of vector return END endcase END over :BEGIN if alreadyover 1 EQ 0 then begin we start the reading readcmd beginning of reading the field to overdraw readcmd readcmd i 1 fieldover prefix readcmd i 1 readcmd extractatt top_uvalue currentreadcmd temporary readcmd ENDIF ELSE BEGIN oldrdcmd extractatt top_uvalue currentreadcmd nl n_elements oldrdcmd oldrdcmd nl 1 oldrdcmd nl 1 readcmd i prefix readcmd i readcmd temporary oldrdcmd temporary readcmd ENDELSE if alreadyover 1 NE numberofread 1 THEN BEGIN we still need to read some files top_uvalue 1 findline top_uvalue currentreadcmd readcmd top_uvalue 1 findline top_uvalue alreadyover alreadyover 1 top_uvalue 1 findline top_uvalue noticebase xnotice Select the field number strtrim alreadyover 3 1 to overlay return ENDIF we finalize the reading command IF ending NE THEN BEGIN nl n_elements readcmd readcmd nl 1 readcmd nl 1 readcmd temporary readcmd ending ENDIF on finalise la commande de lecture readcmd readcmd fieldover create_struct arr:temporary fieldover grid:vargrid unit:varunit experiment:varexp name:varname end of reading the field to overdraw we get back _EXTRA of over and we complet extra already build extra extractatt top_uvalue extra exextra cw_specifie_get_value base extra mixstru exextra extra sextra struct2string extra readcmd readcmd overextra sextra extra mixstru extra overextra top_uvalue 1 findline top_uvalue currentreadcmd readcmd we reinitialize top_uvalue 1 findline top_uvalue alreadyread 1 top_uvalue 1 findline top_uvalue alreadyvector 1 top_uvalue 1 findline top_uvalue alreadyover 1 END endcase determination of the boxzoom s name if NOT keyword_set boxzoom then widget_control domainid get_value boxzoom Writting of this one as a string box strtrim boxzoom 0 1 for i 1 n_elements boxzoom 1 3 2 strpos type z EQ 1 do box box strtrim boxzoom i 1 For plots in z box must have by default 0 profmax if strpos type z NE 1 then BEGIN If more than 1 level is selected: widget_control widget_info base find_by_uname dthlv1 get_value niv1 niv1 niv1 combobox_index widget_control widget_info base find_by_uname dthlv2 get_value niv2 niv2 niv2 combobox_index if niv1 NE niv2 then begin box box strtrim boxzoom 4 1 strtrim boxzoom 5 1 ENDIF ELSE BEGIN if chkstru exextra profmax then pmax exextra profmax ELSE pmax 200 box box 0 strtrim pmax 1 ENDELSE endif box box IF strpos type diag up NE 1 THEN BEGIN sendpoints strtrim boxzoom 0 1 strtrim boxzoom 2 1 strtrim boxzoom 1 1 strtrim boxzoom 3 1 ENDIF IF strpos type diag dn NE 1 THEN BEGIN sendpoints strtrim boxzoom 0 1 strtrim boxzoom 3 1 strtrim boxzoom 1 1 strtrim boxzoom 2 1 ENDIF We determinate typein IF strpos type diag NE 1 THEN typein strmid type 0 4 ELSE typein type determination of small ssmall tostr smallout We will define the string which will contain the command to be executed by widgetdessine pro Cmd readCmd procedure field boxzoom box findalways typein typein small ssmall IF drawvecteur then Cmd Cmd vecteur u: fieldu v: fieldv IF drawover then Cmd Cmd contour fieldover IF n_elements sendpoints NE 0 then Cmd Cmd endpoints sendpoints Cmd Cmd _extra mixstru ex extra portrait portrait NOERASE noerase print for i 0 n_elements Cmd 1 do print Cmd i print We complete and or update the structure top_uvalue top_uvalue 1 findline top_uvalue nameprocedures numdessinout procedure top_uvalue 1 findline top_uvalue types numdessinout type top_uvalue 1 findline top_uvalue domaines numdessinout boxzoom top_uvalue 1 findline top_uvalue txtcmd numdessinout widcmd top_uvalue 1 findline top_uvalue optionsflag numdessinout flags top_uvalue 1 findline top_uvalue exextra numdessinout extra return Cmd end "); 338 a[336] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.html", "buildreadcmd.pro", "", " param BASE in required The id of the widget where apply the drawing param SNAMEEXP in required param PROCEDURE in required param TYPE in required keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword COMPLETE keyword NAMEFIELD uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: buildreadcmd pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter les param et les keyword qui ne le sont pas FUNCTION buildreadcmd base snameexp procedure type BOXZOOM boxzoom COMPLETE complete NAMEFIELD namefield compile_opt idl2 strictarrsubs cm_4cal for key_caltype get back widgets IDs vlstid widget_info base find_by_uname varlist date1id widget_info base find_by_uname calendar1 date2id widget_info base find_by_uname calendar2 domainid widget_info base find_by_uname domain optionid widget_info base find_by_uname option widget_control base get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 numdessinout extractatt top_uvalue smallout 2 1 name of the file currentfile extractatt top_uvalue currentfile filelist extractatt top_uvalue filelist filename filelist currentfile sfilename filename name of the variable if keyword_set namefield then namevar namefield ELSE namevar widget_info vlstid combobox_gettext snamevar namevar get the options options extractatt top_uvalue options flags extractatt top_uvalue optionsflag flags flags numdessinin xindex flags where options EQ Longitude x index 0 yindex flags where options EQ Latitude y index 0 extra extractatt top_uvalue extra if xindex NE 0 then extra create_struct extra xindex xindex if yindex NE 0 then extra create_struct extra yindex yindex exextra cw_specifie_get_value base exextra extractstru exextra min max inter lct if size exextra type EQ 8 then extra mixstru exextra extra sextra struct2string extra find date1 and date2 key_caltype extractatt top_uvalue fileparameters currentfile caltype widget_control date1id get_value date1 widget_control date2id get_value date2 if procedure EQ pltt AND date1 EQ date2 then BEGIN we redefine the dates to the begining and end of the calendar calendar extractatt top_uvalue fileparameters currentfile time_counter date1 jul2date calendar 0 date2 jul2date calendar n_elements calendar 1 widget_control date1id set_value date1 widget_control date2id set_value date2 endif fakecal extractatt top_uvalue fileparameters currentfile fakecal IF keyword_set fakecal THEN BEGIN date1 date2jul date1 fakecal date2 date2jul date2 fakecal ENDIF sdate1 strtrim date1 1 sdate2 strtrim date2 1 find boxzoom if NOT keyword_set boxzoom then widget_control domainid get_value boxzoom put boxzoom into a string box strtrim boxzoom 0 1 for i 1 n_elements boxzoom 1 3 2 strpos type z EQ 1 do box box strtrim boxzoom i 1 if strpos type z NE 1 then BEGIN common min min gdept gdepw max max box box strtrim floor min 1 strtrim ceil max 1 endif box box IF strpos type diag up NE 1 THEN BEGIN sendpoints strtrim boxzoom 0 1 strtrim boxzoom 2 1 strtrim boxzoom 1 1 strtrim boxzoom 3 1 ENDIF IF strpos type diag dn NE 1 THEN BEGIN sendpoints strtrim boxzoom 0 1 strtrim boxzoom 3 1 strtrim boxzoom 1 1 strtrim boxzoom 2 1 ENDIF find funclec_name readparameters meshparameters readparameters extractatt top_uvalue readparameters currentfile funclec_name readparameters funclec_name if keyword_set complete then begin sreadparameters struct2string readparameters meshparameters extractatt top_uvalue meshparameters currentfile smeshparameters struct2string meshparameters We will define the string which will contain the command to be executed for the reading Cmd Definition of extra structure: extra sextra Definition of readparameters structure: readparameters sreadparameters Do we change of reading : dummy changeread readparameters Definition of meshparameters structure: meshparameters smeshparameters Do we change the grid : dummy changegrid meshparameters Read the data if n_elements date1in ne 0 then date1 date1in else date1 sdate1 if n_elements date2in ne 0 then date2 date2in else date2 sdate2 funclec_name snamevar date1 date2 snameexp timestep strtrim keyword_set fakecal 1 parent strtrim base 2 boxzoom box findalways filename sfilename if n_elements sendpoints NE 0 then Cmd Cmd endpoints sendpoints type type Cmd Cmd _extra mixstru ex extra nostruct top_uvalue 1 findline top_uvalue varinfo numdessinout filename namevar top_uvalue 1 findline top_uvalue dates numdessinout date1 date2 ENDIF ELSE BEGIN Cmd funclec_name snamevar sdate1 sdate2 snameexp timestep strtrim keyword_set fakecal 1 parent strtrim base 1 boxzoom box findalways filename sfilename if n_elements sendpoints NE 0 then Cmd Cmd endpoints sendpoints type type Cmd Cmd _extra mixstru ex extra nostruct ENDELSE print :::::::::::::::::::::: for i 0 n_elements Cmd 1 do print Cmd i print :::::::::::::::::::::: return cmd end"); 339 a[337] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield.html", "changefield.pro", "", " file_comments categories param BASE in required The id of the widget where apply the drawing param NEWFIELDNAME keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef returns uses restrictions examples history version Id: changefield pro 150 2006 08 09 10:12:54Z navarro todo seb PRO changefield base newfieldname BOXZOOM boxzoom compile_opt idl2 strictarrsubs widget_control base get_uvalue top_uvalue Change exextra : exextra definedefaultextra newfieldname specifieid widget_info base find_by_uname specifie widget_control specifieid set_value exextra Change the variable Do we need to change the vertical axis according to the tye of points T or W dthlv1id widget_info base find_by_uname dthlv1 widget_control dthlv1id get_uvalue dthlv1_uval oldzgridt dthlv1_uval grid_t get the type of point currentfile extractatt top_uvalue currentfile listgrid extractatt top_uvalue fileparameters currentfile listgrid listvar extractatt top_uvalue fileparameters currentfile listvar for i 0 n_elements listvar 1 do print listvar i listgrid i indexvar where listvar EQ newfieldname indexvar 0 indexvar 0 zgridt strupcase listgrid indexvar NE W if we change the type of point if zgridt NE oldzgridt then BEGIN update dthlv1_uval grid_t dthlv1_uval grid_t zgridt widget_control dthlv1id set_uvalue dthlv1_uval update cw_domain if NOT keyword_set boxzoom THEN widget_control widget_info base find_by_uname domain get_value boxzoom widget_control widget_info base find_by_uname domain set_value boxzoom endif return end"); 340 a[338] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile.html", "changefile.pro", "", " file_comments categories param BASE in required The id of the widget where apply the drawing param NEWFILENAME keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword DATE1 keyword DATE2 keyword FIELDNAME returns uses restrictions examples history version Id: changefile pro 150 2006 08 09 10:12:54Z navarro todo seb PRO changefile base newfilename BOXZOOM boxzoom DATE1 date1 DATE2 date2 FIELDNAME fieldname compile_opt idl2 strictarrsubs widget_control base hourglass widget_control base get_uvalue top_uvalue filelist extractatt top_uvalue filelist IF size newfilename type EQ 7 THEN newfile where filelist EQ newfilename 0 ELSE newfile newfilename it is already the index of the new file if newfile EQ 1 then begin nothing report invalid filename return endif oldfile extractatt top_uvalue currentfile oldfilename filelist oldfile did we really change the file if oldfile EQ newfile AND NOT keyword_set BOXZOOM OR keyword_set DATE1 OR keyword_set DATE2 OR keyword_set FIELDNAME then return widget_control base update 0 we update currentfile element of the top_uvalue top_uvalue 1 findline top_uvalue currentfile newfile Calendar oldcalendar extractatt top_uvalue fileparameters oldfile time_counter newcalendar extractatt top_uvalue fileparameters newfile time_counter Did we change the calendar if array_equal oldcalendar newcalendar NE 1 then begin cm_4cal for key_caltype key_caltype extractatt top_uvalue fileparameters newfile caltype fake or real calendar fakecal extractatt top_uvalue fileparameters newfile fakecal Which dates were selected date1id widget_info base find_by_uname calendar1 if NOT keyword_set date1 then widget_control date1id get_value date1 jdate1 date2jul date1 if where newcalendar EQ jdate1 0 EQ 1 then jdate1 newcalendar 0 date2id widget_info base find_by_uname calendar2 if NOT keyword_set date2 then widget_control date2id get_value date2 jdate2 date2jul date2 if where newcalendar EQ jdate2 0 EQ 1 then jdate2 date1 if jdate2 LT jdate1 THEN jdate2 jdate1 widget_control date1id destroy widget_control date2id destroy basecal widget_info base find_by_uname basecal rien cw_calendar basecal newcalendar jdate1 uname calendar1 FAKECAL fakecal uvalue name: calendar1 frame rien cw_calendar basecal newcalendar jdate2 uname calendar2 FAKECAL fakecal uvalue name: calendar2 frame ENDIF ELSE BEGIN if keyword_set date1 then begin date1id widget_info base find_by_uname calendar1 widget_control date1id set_value date1 endif if keyword_set date2 then begin date2id widget_info base find_by_uname calendar2 widget_control date2id set_value date2 endif ENDELSE Grid parameters and domain newgrid extractatt top_uvalue meshparameters newfile change changegrid newgrid if change OR keyword_set boxzoom then BEGIN if NOT keyword_set boxzoom then boxzoom 1 domainid widget_info base find_by_uname domain widget_control domainid set_value boxzoom endif file name IF oldfile NE newfile THEN BEGIN flstid widget_info base find_by_uname filelist widget_control flstid set_combobox_select newfile ENDIF Variables name vlstid widget_info base find_by_uname varlist oldfieldname widget_info vlstid combobox_gettext did we really change the liste of variables oldlistvar extractatt top_uvalue fileparameters oldfile listvar newlistvar extractatt top_uvalue fileparameters newfile listvar if array_equal oldlistvar newlistvar NE 1 THEN widget_control vlstid set_value newlistvar set the liste of variables to the new variable name if keyword_set fieldname then newfieldname fieldname ELSE newfieldname oldfieldname indexvar where newlistvar EQ newfieldname indexvar 0 indexvar 0 widget_control vlstid set_combobox_select indexvar newfieldname newlistvar indexvar did we change the name of the variable if newfieldname NE oldfieldname then BEGIN changefield base newfieldname BOXZOOM boxzoom ENDIF widget_control base update 1 return end"); 341 a[339] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory.html", "createhistory.pro", "", " file_comments categories param BASE in required The id of the widget where apply the drawing param SMALL Vector composed of 3 or 4 elements applyed to make a drawing on a small portion of a page or screen It delimit the zone where the drawing will be done If there is 4 elements: then is constituated of coordinates expressed in cm located from the up and left corner of the page or the window in portrait like in lanscape of the bottom and left corner and of the up and right corner of the drawing zone If there is 3 elements: in this case we divide the page or the screen in small 0 columns and in small 1 lines the drawing made in the box numbered small 2 The numerotation starting up and left by the number 1 and then following the writing direction By default we make the largest drawing we can do conserving the aspect rapport exept when REMPLI is activated returns uses restrictions examples history version Id: createhistory pro 150 2006 08 09 10:12:54Z navarro todo seb: je ne suis pas sur pour les param documenter le reste PRO createhistory base small we save globalcommand in globaloldcommand compile_opt idl2 strictarrsubs widget_control base get_uvalue top_uvalue globalcommand extractatt top_uvalue globalcommand top_uvalue 1 findline top_uvalue globaloldcommand globalcommand portrait or landscape options extractatt top_uvalue options optionsflag extractatt top_uvalue optionsflag portrait optionsflag where options EQ Portrait Landscape 0 0 composition du text contennu ds history pro texte common if keyword_set postscript then begin noerase 1 openps infowidget infowidget portrait strtrim portrait 2 endif beginning of 1 end of 1 if small 0 small 1 GT 1 then begin for draw 1 small 0 small 1 1 do begin texte texte beginning of strtrim draw 1 2 noerase 1 end of strtrim draw 1 2 endfor ENDIF texte texte if keyword_set postscript then begin closeps infowidget infowidget printps endif the new globalcommand top_uvalue 1 findline top_uvalue globalcommand texte for i 0 n_elements texte 1 do print texte i return end"); 342 a[340] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.html", "cutcmd.pro", "", " file_comments categories param WIDCMD param TOREAD param NUMBEROFREAD param PREFIX param NAMEEXP param ENDING returns uses restrictions examples history version Id: cutcmd pro 150 2006 08 09 10:12:54Z navarro todo seb PRO cutcmd widcmd toread numberofread prefix nameexp ending compile_opt idl2 strictarrsubs dummy where byte widcmd EQ byte 0 nbdblquote CASE 1 OF nbdblquote MOD 2: stop odd numbers are impossibles nbdblquote GT 0: nbdblquote EQ 0:BEGIN widcmd is an expression of type: numb1 a numb2 b numb we will change into the form numb1 a numb2 b numb in order to suits the new method of cutcmd widcmd strtrim widcmd 2 we force to start with a or case 1 of strpos widcmd EQ 0: strpos widcmd EQ 0: ELSE:widcmd widcmd ENDCASE separator strsplit widcmd extract regex other strsplit widcmd extract IF n_elements separator NE n_elements other THEN stop widcmd FOR i 0 n_elements other 1 DO BEGIN IF isnumber other i LT 1 THEN other i other i widcmd widcmd separator i other i ENDFOR print widcmd END ENDCASE cutted strsplit widcmd extract IF strpos widcmd EQ 0 THEN start 0 ELSE start 1 nameexp cutted start: :2 numberofread n_elements nameexp IF toread GE numberofread then begin dummy report toread cannot be larger than numberofread stop ENDIF other cutted 1 start: :2 make sure that we have a prefix for each nameexp IF start EQ 0 THEN other other nameexp nameexp toread prefix other toread IF n_elements other EQ numberofread 1 THEN ending other numberofread ELSE ending help prefix nameexp ending return end"); 343 a[341] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/definedefaultextra.html", "definedefaultextra.pro", "", " file_comments categories param NOMVARIABLE returns uses restrictions examples history version Id: definedefaultextra pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION definedefaultextra nomvariable compile_opt idl2 strictarrsubs case strlowcase nomvariable of sn :BEGIN return get_extra min 31 max 37 inter 2 lct 33 nocontout END tn :BEGIN return get_extra min 20 max 31 inter 5 lct 39 END un :BEGIN return get_extra min 1 max 1 inter 1 lct 64 END vn :BEGIN return get_extra min 1 max 1 inter 1 lct 64 END ELSE: ENDCASE return get_extra min max inter lct 39 end"); 344 a[342] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/doubleclickaction.html", "doubleclickaction.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: doubleclickaction pro 150 2006 08 09 10:12:54Z navarro todo seb PRO doubleclickaction event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval widget_control event top get_uvalue top_uvalue We activate the right window widget_control event id get_value win wset win What is the selected drawing smallin extractatt top_uvalue smallin smallout extractatt top_uvalue smallout x convert_coord uval x 0 uval y 0 device to_normal 0 y convert_coord uval x 0 uval y 0 device to_normal 1 numcolonne n_elements where findgen smallin 0 smallin 0 lt x 1 numligne n_elements where findgen smallin 1 smallin 1 lt 1 y 1 numdessin numcolonne numligne smallin 0 1 Choice of the type of action case uval press of 1:BEGIN if top_uvalue smallin 2 NE numdessin then begin tracecadre smallin erase if total smallin EQ smallout EQ 3 then tracecadre smallout out smallin smallin 0:1 numdessin top_uvalue 1 findline top_uvalue smallin smallin tracecadre smallin p extractatt top_uvalue penvs numdessin 1 x extractatt top_uvalue xenvs numdessin 1 y extractatt top_uvalue yenvs numdessin 1 END 2:BEGIN if top_uvalue smallout 2 NE numdessin then begin tracecadre smallout erase if total smallin EQ smallout EQ 3 then tracecadre smallin smallout smallin 0:1 numdessin top_uvalue 1 findline top_uvalue smallout smallout tracecadre smallout out endif END 4:BEGIN tracecadre smallin 0:1 numdessin fill inserthistory event top beginning of strtrim numdessin 2 end of strtrim numdessin 2 Putting at 0 of attributes of the value concerning the drawing: numdessin numdessin 1 top_uvalue 1 findline top_uvalue varinfo numdessin top_uvalue 1 findline top_uvalue dates numdessin 0l 0l top_uvalue 1 findline top_uvalue nameprocedures numdessin top_uvalue 1 findline top_uvalue types numdessin top_uvalue 1 findline top_uvalue domaines numdessin fltarr 6 top_uvalue 1 findline top_uvalue txtcmd numdessin if numdessin EQ smallin 2 then tracecadre smallin if numdessin EQ smallout 2 then tracecadre smallout out END ELSE: endcase updatewidget event top return end"); 345 a[343] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt.html", "extractatt.pro", "", " file_comments categories param TOP_UVALUE param NAME returns uses restrictions examples history version Id: extractatt pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION extractatt top_uvalue name compile_opt idl2 strictarrsubs taille size top_uvalue j 1 repeat BEGIN j j 1 if j EQ size top_uvalue 2 then return 1 endrep until top_uvalue 0 j EQ name return top_uvalue 1 j end"); 346 a[344] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.html", "findline.pro", "", " file_comments categories param TOP_UVALUE param NAME returns uses restrictions examples history version Id: findline pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION findline top_uvalue name compile_opt idl2 strictarrsubs taille size top_uvalue j 1 repeat BEGIN j j 1 if j EQ size top_uvalue 2 then return 1 endrep until top_uvalue 0 j EQ name return j end"); 347 a[345] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/identifyclick.html", "identifyclick.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: identifyclick pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION identifyclick event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval no_copy thisEvent TAG_NAMES event Structure if thisEvent EQ WIDGET_TIMER then press 0 ELSE press event press d 0 1 t 1 0 d 2 0 long click d 1 0 t 2 0 normal click d 2 1 d 3 0 t 0 0 double click t 3 0 d 0 0 double click type inutile case 1 OF d 0 0 1er reascending thisEvent EQ WIDGET_DRAW AND uval click EQ 0 AND press EQ 0: d 0 1 1er click of the series thisEvent EQ WIDGET_DRAW AND uval click EQ 0 AND press ge 1:BEGIN uval x event x 0 uval y event y 0 uval press press uval click 1 widget_control event id timer 3 END d 1 0 1er reascending thisEvent EQ WIDGET_DRAW AND uval click EQ 1 AND press EQ 0:uval click 2 d 2 0 End of the long click thisEvent EQ WIDGET_DRAW AND uval click EQ 2 AND press EQ 0:BEGIN type long uval x uval x 0 event x uval x uval x sort uval x uval y uval y 0 event y uval y uval y sort uval y uval click 0 uval press event release END d 2 1 thisEvent EQ WIDGET_DRAW AND uval click EQ 2 AND press ge 1:BEGIN type double uval press press uval click 3 END d 3 0 reascending and end of the double click thisEvent EQ WIDGET_DRAW AND uval click EQ 3 AND press EQ 0:uval click 0 t 0 0 End of the double click thisEvent EQ WIDGET_TIMER AND uval click EQ 0 AND press EQ 0: t 1 0 long click thisEvent EQ WIDGET_TIMER AND uval click EQ 1 AND press EQ 0:uval click 2 t 2 0 normal click thisEvent EQ WIDGET_TIMER AND uval click EQ 2 AND press EQ 0:BEGIN type single press uval press uval click 0 END t 3 0 End of the double click thisEvent EQ WIDGET_TIMER AND uval click EQ 3 AND press EQ 0:uval click 0 Imposible case in theory: ELSE:BEGIN print thisEvent uval click press print Probleme cas normalement impossible END endcase widget_control event id set_uvalue uval no_copy return type:type end"); 348 a[346] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.html", "inserthistory.pro", "", " file_comments categories param BASE param TEXT param LINE1 param LINE2 returns uses restrictions examples history version Id: inserthistory pro 150 2006 08 09 10:12:54Z navarro todo seb PRO inserthistory base text line1 line2 compile_opt idl2 strictarrsubs widget_control base get_uvalue top_uvalue globalcommand extractatt top_uvalue globalcommand top_uvalue 1 findline top_uvalue globaloldcommand globalcommand for i 0 n_elements globalcommand 1 do print globalcommand i we insert text between line1 and line2 index1 where globalcommand EQ line1 index1 index1 0 1 if index1 EQ 1 then begin rien report line1 n est pas trouve ds globalcommand return endif index2 where globalcommand EQ line2 index2 index2 0 if index2 EQ 1 then begin rien report line2 n est pas trouve ds globalcommand return ENDIF the new text: globalcommand globalcommand 0:index1 text globalcommand index2:n_elements globalcommand 1 the new globalcommand top_uvalue 1 findline top_uvalue globalcommand globalcommand return end"); 349 a[347] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.html", "letsdraw.pro", "", " file_comments It si the procedure lauching the drawing If we do not give the command to it it call construitcommande to know what to trace categories param BASE in required The id of the widget where apply the drawing keyword COMMANDE A string of the style: read_data sst keyword _EXTRA Used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: letsdraw pro 150 2006 08 09 10:12:54Z navarro PRO letsdraw base COMMANDE commande _extra ex compile_opt idl2 strictarrsubs common we recuperate the uvalue of base widget_control base get_uvalue top_uvalue print help top_uvalue struct help top_uvalue exextra struct if NOT keyword_set commande then commande buildcmd base _extra ex if commande 0 EQ then return on recupere la uvalue de base widget_control base hourglass widget_control base get_uvalue top_uvalue print help top_uvalue struct print help top_uvalue exextra struct help top_uvalue extra struct print print commande help mixstru top_uvalue exextra top_uvalue extra struct we recuperate the id of the graphic associated to the widget of id base graphid extractatt top_uvalue graphid widget_control graphid get_value win We select it we will pass to it all commands concerning the window wset win erase 255 we clean the window We make sure that if we work with a screen coding colors on 24 bits the specified background color p background is the one applied if d n_colors gt 256 then begin device decomposed 1 p background ffffff x plot 0 0 device decomposed 0 ENDIF smallout long extractatt top_uvalue smallout numdessinout smallout 2 1 tracecadre smallout fill options extractatt top_uvalue options optionsflag extractatt top_uvalue optionsflag portrait strtrim optionsflag where options EQ Portrait Landscape 0 1 0 createpro common noerase 1 key_portrait portrait Commande filename myuniquetmpdir xxx_oneplot pro inserthistory base Commande beginning of strtrim smallout 2 1 end of strtrim smallout 2 1 top_uvalue 1 findline top_uvalue penvs numdessinout p top_uvalue 1 findline top_uvalue xenvs numdessinout x top_uvalue 1 findline top_uvalue yenvs numdessinout y return end"); 350 a[348] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.html", "loadgrid.pro", "", " file_comments categories param MESHFILEIN keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: loadgrid pro 150 2006 08 09 10:12:54Z navarro todo seb PRO loadgrid meshfilein _extra ex compile_opt idl2 strictarrsubs cm_4mesh ccmeshparameters filename meshfilein split the name according to delimiter meshfile strsplit meshfilein extract meshfile strtrim meshfile 2 try to find a pro file with this name filepro find meshfile 0 firstfound onlypro 0 if this is an idl batch file or a procedure if filepro NE NOT FOUND THEN BEGIN CASE protype filepro OF this is a procedure proc :listing file_basename filepro pro this is a function this case is not coded func :stop this is an IDL batch file batch :listing file_basename filepro pro ENDCASE ENDIF ELSE BEGIN filenc find meshfile 0 firstfound onlync 0 if filenc EQ NOT FOUND THEN stop listing initncdf filenc ENDELSE add the arguments and keywords if necessary IF n_elements meshfile GT 1 AND strmid listing 0 1 NE THEN BEGIN FOR i 1 filepro NE NOT FOUND n_elements meshfile 1 DO listing listing meshfile i ENDIF IF strmid listing 0 1 NE THEN listing listing strcalling meshfilein _extra ex createpro listing filename myuniquetmpdir for_createpro pro _extra ex return END "); 351 a[349] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/longclickaction.html", "longclickaction.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: longclickaction pro 152 2006 08 10 07:01:35Z smasson todo seb PRO longclickaction event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval widget_control event top get_uvalue top_uvalue What is the selected drawing smallout extractatt top_uvalue smallout smallin extractatt top_uvalue smallin small smallin x convert_coord uval x 0 uval y 0 device to_normal 0 y convert_coord uval x 0 uval y 0 device to_normal 1 numcolonne n_elements where findgen small 0 small 0 lt x 1 numligne n_elements where findgen small 1 small 1 lt 1 y 1 numdessin numcolonne numligne small 0 we put on numdessin as the leader plot tracecadre smallin erase if total smallin EQ smallout EQ 3 then tracecadre smallout out smallin smallin 0:1 numdessin 1 top_uvalue 1 findline top_uvalue smallin smallin tracecadre smallin p extractatt top_uvalue penvs numdessin x extractatt top_uvalue xenvs numdessin y extractatt top_uvalue yenvs numdessin actionid widget_info event top find_by_uname action type widget_info actionid combobox_gettext Change the domain box: coor convert_coord uval x uval y device to_data x coor 0 0 coor 0 1 y coor 1 0 coor 1 1 domainid widget_info event top find_by_uname domain IF type EQ pltv THEN BEGIN currentfile extractatt top_uvalue currentfile listgrid extractatt top_uvalue fileparameters currentfile listgrid listvar extractatt top_uvalue fileparameters currentfile listvar vlstid widget_info event top find_by_uname varlist namevar widget_info vlstid combobox_gettext indexvar where listvar EQ namevar vargrid strupcase listgrid indexvar grille 1 glam gphi boxzoom glam x 0 y 0 glam x 1 y 1 gphi x 0 y 0 gphi x 1 y 1 ENDIF ELSE boxzoom x y Do we have to pass the boxzoom in indexes currentplot extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag flags flags currentplot changex flags where options EQ Longitude x index 0 EQ 1 changey flags where options EQ Latitude y index 0 EQ 1 if changex OR changey then begin We want to find the type of grid which is used currentfile extractatt top_uvalue currentfile listgrid extractatt top_uvalue fileparameters currentfile listgrid listvar extractatt top_uvalue fileparameters currentfile listvar vlstid widget_info event top find_by_uname varlist namevar widget_info vlstid combobox_gettext indexvar where listvar EQ namevar vargrid strupcase listgrid indexvar domdef boxzoom gridtype vargrid grille 1 1 1 1 nx ny nz firstx firsty firstz lastx lasty lastz if changex then boxzoom 0:1 firstx lastx if changey then boxzoom 2:3 firsty lasty endif widget_control domainid set_value boxzoom case uval press of 1:BEGIN nodates type EQ xt OR type EQ yt OR type EQ zt OR type EQ t updatewidget event top noboxzoom nodates nodates notype type NE plt letsdraw event top END 2:BEGIN IF type EQ plt THEN BEGIN top_uvalue 1 findline top_uvalue types smallout 2 1 pltz forcetype pltz ENDIF updatewidget event top noboxzoom letsdraw event top END 4:BEGIN IF type EQ plt THEN BEGIN top_uvalue 1 findline top_uvalue types smallout 2 1 pltt forcetype pltt ENDIF updatewidget event top noboxzoom nodates letsdraw event top forcetype forcetype END endcase return end"); 352 a[350] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.html", "read_vermair.pro", "", " file_comments categories param NAME param DEBUT param FIN param NOMEXP keyword PARENT same as DIALOG_PARENT de dialog_message pro keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: read_vermair pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION read_vermair name debut fin nomexp PARENT parent BOXZOOM boxzoom _EXTRA ex compile_opt idl2 strictarrsubs common if name EQ un then name vozocrtx if name EQ vn then name vomecrty if debut EQ fin then begin res lec name debut nomexp BOXZOOM boxzoom _EXTRA ex ENDIF ELSE res lect name debut fin nomexp BOXZOOM boxzoom _EXTRA ex return tab:res grille:vargrid unite: experience:varexp nom:varname end"); 353 a[351] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/scanfile.html", "scanfile.pro", "", " file_comments categories param NAMEFILE keyword GRID keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: scanfile pro 150 2006 08 09 10:12:54Z navarro todo seb : I don t know what to do with that liste des presupposes: 1 le fichier a lire est un fichier netcdf 2 le nom de ce fichier finit par U nc V nc W nc T nc ou F nc la lettre avant le nc designant la grille a laquelle se rapporte la champ Si tel n est pas la cas le fichier est attribue a la grille T 3 ce fichier contient une dimension infinie qui doit etre celle qui se rapporte au temps et au mois 2 autres dimensions dont les noms sont x lon xi_ et y lat ou eta_ ou bien en majuscule 4 il doit exiter ds ce fichier une unique variable n ayant qu une dimension et etant la dimension temporelle cette variable sera prise comme axe des temps Rq: si plusieurs variables verifient ces criteres on considere la premiere variable 5 Cette variable axe des temps doit contenir l attribut units qui doit etre ecrit suivant la syntaxe: seconds since 0001 01 01 00:00:00 hours since 0001 01 01 00:00:00 days since 1979 01 01 00:59:59 months since 1979 01 01 00:59:59 years since 1979 01 01 00:59:59 je crois que c est tout GRID UTVWF to specify the type of grid Defaut is 1 based on the name of the file if the file ends by GRID _ TUVFW NC not case sensible or 2 T if case 1 is not found FUNCTION scanfile namefile GRID GRID _extra ex compile_opt idl2 strictarrsubs common res 1 filename fullname isafile filename namefile IODIRECTORY iodir _extra ex open file cdfid ncdf_open fullname What contains the file infile ncdf_inquire cdfid find vargrid IF keyword_set grid THEN vargrid strupcase grid ELSE BEGIN vargrid T default definition IF finite glamu 0 EQ 1 THEN BEGIN pattern GRID GRID_ GRID UPID_ 30ID_ gdtype T U V W F fnametest strupcase fullname FOR i 0 n_elements pattern 1 DO BEGIN FOR j 0 n_elements gdtype 1 DO BEGIN substr pattern i gdtype j pos strpos fnametest substr IF pos NE 1 THEN vargrid strmid fnametest pos strlen substr 1 1 ENDFOR ENDFOR ENDIF ENDELSE name of all dimensions namedim strarr infile ndims for dimiq 0 infile ndims 1 do begin ncdf_diminq cdfid dimiq tmpname value namedim dimiq strlowcase tmpname ENDFOR we are looking for a x dimension dimidx where namedim EQ x OR strmid namedim 0 3 EQ lon OR strmid namedim 0 3 EQ xi_ OR namedim EQ xt_i7_156 dimidx dimidx 0 if dimidx EQ 1 then begin print one of the dimensions must have the name: x or lon or xi_ or xt_i7_156 stop endif we are looking for a y dimension dimidy where namedim EQ y OR strmid namedim 0 3 EQ lat OR strmid namedim 4 EQ eta_ OR namedim EQ yt_j6_75 dimidy dimidy 0 if dimidy EQ 1 then begin print one of the dimensions must have the name: y or lat or eta_ or yt_j6_75 stop endif name of all variables we keep only the variables containing at least x y and time dimension if existing namevar strarr infile nvars for varid 0 infile nvars 1 do begin invar ncdf_varinq cdfid varid what contains the variable if where invar dim EQ dimidx 0 NE 1 AND where invar dim EQ dimidy 0 NE 1 AND where invar dim EQ infile recdim 0 NE 1 OR infile recdim EQ 1 THEN namevar varid invar name ENDFOR namevar namevar where namevar NE listgrid replicate vargrid n_elements namevar time axis date0fk date2jul 19000101 IF infile recdim EQ 1 THEN BEGIN jpt 1 time date0fk fakecal 1 ENDIF ELSE BEGIN ncdf_diminq cdfid infile recdim timedimname jpt we look for the variable containing the time axis we look for the first variable having for only dimension infile recdim varid 0 repeat BEGIN invar ncdf_varinq cdfid varid varid varid 1 endrep until n_elements invar dim EQ 1 AND invar dim 0 EQ infile recdim varid varid 1 CASE 1 OF varid EQ 1:BEGIN dummy report the file fullname has no time axis C we create a fake calendar fakecal 1 time date0fk lindgen jpt END invar natts EQ 0:BEGIN dummy report the variable invar name has no attribut C we create a fake calendar fakecal 1 time date0fk lindgen jpt END ELSE:BEGIN we want to know which attributes are attached to the time variable attnames strarr invar natts for attiq 0 invar natts 1 do attnames attiq ncdf_attname cdfid varid attiq if where attnames EQ units 0 EQ 1 then BEGIN dummy report Attribut units not found for the variable varid name C we create a fake calendar fakecal 1 time date0fk lindgen jpt ENDIF ELSE BEGIN we read the time axis ncdf_varget cdfid varid time time double time ncdf_attget cdfid varid units value time_counter:units seconds since 0001 01 01 00:00:00 time_counter:units hours since 0001 01 01 00:00:00 time_counter:units days since 1979 01 01 00:00:00 time_counter:units months since 1979 01 01 00:00:00 time_counter:units years since 1979 01 01 00:00:00 value strtrim strcompress string value 2 mots str_sep value unite mots 0 debut str_sep mots 2 now we try to find the attribut called calendar the the attribute calendar exists If no we suppose that the calendar is gregorian calendar if where attnames EQ calendar 0 NE 1 then BEGIN ncdf_attget cdfid varid calendar value value string value CASE value OF noleap :key_caltype noleap 360d :key_caltype 360d greg :IF n_elements key_caltype EQ 0 THEN key_caltype greg ELSE:BEGIN notused report Unknown calendar: value we use greg calendar key_caltype greg END ENDCASE ENDIF ELSE BEGIN notused report Unknown calendar we use key_caltype calendar IF n_elements key_caltype EQ 0 THEN key_caltype greg ENDELSE BEWARE we have to recuperate the calendar attribute and ajust TIME by consequence We pass TIME in IDL julian days unite strlowcase unite IF strpos unite s strlen unite 1 NE 1 THEN unite strmid unite 0 strlen unite 1 IF strpos unite julian_ NE 1 THEN unite strmid unite 7 case unite of second :time julday debut 1 debut 2 debut 0 time 86400 d hour :time julday debut 1 debut 2 debut 0 time 24 d day :time julday debut 1 debut 2 debut 0 time month :BEGIN if total fix time NE time NE 0 then we switch to days with 30d m time julday debut 1 debut 2 debut 0 round time 30 ELSE for t 0 n_elements time 1 DO time t julday debut 1 time t debut 2 debut 0 END year :BEGIN if total fix time NE time NE 0 then we switch to days with 365d y time julday debut 1 debut 2 debut 0 round time 365 ELSE for t 0 n_elements time 1 do time t julday debut 1 debut 2 debut 0 time t END ENDCASE high frequency calendar: more than one element per day IF max histogram long time time 0 GT 1 THEN fakecal 1 ELSE fakecal 0 date0fk date2jul 19000101 IF keyword_set fakecal THEN time date0fk lindgen jpt ELSE time long time ENDELSE END ENDCASE ENDELSE ncdf_close cdfid return filename:fullname time_counter:time listvar:namevar listgrid:strupcase listgrid caltype:key_caltype fakecal:date0fk fakecal end"); 354 a[352] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.html", "selectfile.pro", "", " PRO selectfile_event event compile_opt idl2 strictarrsubs common widget_control event id get_uvalue eventuvalue default definition of messenger when selectfile_event is called directly without calling xmanager widget_control event handler get_uvalue messenger messenger 1 IF chkstru eventuvalue name EQ 0 THEN return case eventuvalue name of cancel button Global Cancel :BEGIN widget_control event handler get_uvalue messenger messenger 1 widget_control event handler destroy END data file informations datafilename :BEGIN widget_control event id get_value filename filename isafile filename filename 0 onlync title data file name tryfind fully_qualify_path if size filename type NE 7 then BEGIN widget_control event id set_value return ENDIF widget_control event id set_value filename END browse datafilename :BEGIN filename isafile onlync title data file name tryfind fully_qualify_path if size filename type NE 7 then return widget_control widget_info event handler find_by_uname datafilename set_value filename END switch automatic by and mesh definition buttons gridload :BEGIN IF event select EQ 1 THEN BEGIN widget_control widget_info event handler find_by_uname argtxt set_value widget_control widget_info event handler find_by_uname kwdtxt set_value widget_control widget_info event handler find_by_uname kwd base sensitive 1 CASE event value OF via initnetcdf :BEGIN widget_control widget_info event handler find_by_uname meshload set_value initncdf editable 0 widget_control widget_info event handler find_by_uname arg base sensitive 0 widget_control widget_info event handler find_by_uname kwdlab set_value initncdf keywords: END via perso :BEGIN widget_control widget_info event handler find_by_uname meshload set_value editable 1 widget_control widget_info event handler find_by_uname arg base sensitive 1 widget_control widget_info event handler find_by_uname kwdlab set_value keywords of IDL procedure: END ENDCASE ENDIF END name of the procedure or batch file meshload :BEGIN widget_control event id get_value filename filename find filename 0 onlypro firstfound 0 if filename EQ NOT FOUND then begin widget_control event id set_value return endif CASE protype filename OF this is a procedure proc :BEGIN widget_control widget_info event handler find_by_uname arg base sensitive 1 widget_control widget_info event handler find_by_uname kwd base sensitive 1 widget_control widget_info event handler find_by_uname kwdlab set_value file_basename filename pro keywords: END this is a function this case is not accepted func :BEGIN widget_control event id set_value return END this is an IDL batch file batch :BEGIN widget_control widget_info event handler find_by_uname arg base sensitive 0 widget_control widget_info event handler find_by_uname kwd base sensitive 0 widget_control widget_info event handler find_by_uname kwdlab set_value no keywords: END ENDCASE widget_control widget_info event handler find_by_uname argtxt set_value widget_control widget_info event handler find_by_uname kwdtxt set_value widget_control event id set_value file_basename filename pro END browse meshload :BEGIN filename isafile iodir homedir onlypro title to load the grid file if size filename type NE 7 then return meshload_id widget_info event handler find_by_uname meshload widget_control meshload_id set_value filename selectfile_event ID:meshload_id TOP:event top HANDLER:event handler END Lets Go button Lets Go :BEGIN widget_control widget_info event handler find_by_uname datafilename get_value datafilename datafilename datafilename 0 IF datafilename EQ THEN return datafilename isafile filename datafilename tryfind onlync title data file name fully_qualify_path if size datafilename type NE 7 then BEGIN widget_control widget_info event handler find_by_uname datafilename set_value return ENDIF widget_control widget_info event handler find_by_uname gridload get_value gridload widget_control widget_info event handler find_by_uname argtxt get_value argtxt argtxt strtrim argtxt 0 2 IF strpos argtxt EQ 0 THEN argtxt strmid argtxt 1 widget_control widget_info event handler find_by_uname kwdtxt get_value kwdtxt kwdtxt strtrim kwdtxt 0 2 IF strpos kwdtxt EQ 0 THEN kwdtxt strmid kwdtxt 1 CASE gridload 0 OF via perso :BEGIN meshload_id widget_info event handler find_by_uname meshload widget_control meshload_id get_value meshload meshload meshload 0 IF meshload EQ THEN return meshload find meshload 0 onlypro firstfound 0 if meshload EQ NOT FOUND then begin widget_control meshload_id set_value return endif END via initnetcdf :meshload datafilename ENDCASE IF strlen argtxt NE 0 THEN meshload meshload argtxt IF strlen kwdtxt NE 0 THEN meshload meshload kwdtxt widget_control event handler get_uvalue messenger messenger create_struct datafilename datafilename meshload meshload widget_control event handler destroy END endcase return end file_comments categories param DATAFILENAME param IDLFILE param ARGSPRO keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: selectfile pro 152 2006 08 10 07:01:35Z smasson todo seb: documenter les params FUNCTION selectfile datafilename idlfile argspro _extra ex compile_opt idl2 strictarrsubs common We create a pointer in the uvalue to recuperate answers at setted questions atthe time of the use of this widget So when the widget is deleted in the procedure event pro the variable on which the pointer pointed contained in the uvalue of the widget is not deleted and we can recuperate the result messenger ptr_new allocate_heap base widget_base column title selectfile align_center uvalue messenger _EXTRA ex cancel button dummyid widget_button base value Cancel uvalue name: Global Cancel data file informations basea widget_base base row align_center dummyid widget_label basea value Data file name: database widget_text basea value uvalue name: datafilename uname datafilename xsize 45 EDITABLE dummyid widget_button basea value Browse uvalue name: browse datafilename switch automatic by and mesh definition buttons baseb widget_base base row align_center gdldid cw_bgroup baseb automatic grid construction with initncdf pro grid construction with other IDL batch or procedure exclusive set_value 0 uvalue name: gridload uname gridload button_uvalue via initnetcdf via perso name of the procedure or batch file basec widget_base base row align_center uname pro base dummyid widget_label basec value IDL batch file of procedure basemeshload widget_text basec value initncdf uvalue name: meshload uname meshload xsize 45 editable 0 dummyid widget_button basec value Browse uvalue name: browse meshload arguments informations based widget_base base row align_center uname arg base sensitive 0 dummyid widget_label based value procedure arguments agrbase widget_text based value uvalue name: argtxt uname argtxt xsize 45 EDITABLE keyword informations basee widget_base base row align_center uname kwd base dummyid widget_label basee uname kwdlab value keywords of initncdf: dummyid widget_text basee value uvalue name: kwdtxt uname kwdtxt xsize 45 EDITABLE Lets Go button basego widget_button base value Lets Go uvalue name: Lets Go IF n_elements datafilename NE 0 THEN BEGIN widget_control database set_value datafilename selectfile_event ID:database TOP:base HANDLER:base ENDIF IF n_elements idlfile NE 0 THEN BEGIN widget_control basemeshload set_value idlfile selectfile_event ID:basemeshload TOP:base HANDLER:base widget_control basemeshload get_value idlfile2 IF idlfile2 0 NE THEN widget_control gdldid set_value 1 ENDIF IF n_elements argspro NE 0 THEN widget_control argbase set_value argspro IF n_elements datafilename EQ 0 THEN BEGIN widget_control base realize xmanager selectfile base event_handler selectfile_event no_block 0 ENDIF ELSE selectfile_event ID:basego TOP:base HANDLER:base get back the information from selectfile_event res messenger ptr_free messenger if size res type NE 8 then return 1 loadgrid res meshload _extra ex ccreadparameters funclec_name: read_ncdf jpidta:jpidta jpjdta:jpjdta jpkdta:jpkdta ixmindta:ixmindta ixmaxdta:ixmaxdta iymindta:iymindta iymaxdta:iymaxdta izmindta:izmindta izmaxdta:izmaxdta res3 scanfile res datafilename _extra ex if size res3 type NE 8 then return 1 return fileparameters:res3 readparameters:ccreadparameters meshparameters:ccmeshparameters end"); 355 a[353] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/singleclickaction.html", "singleclickaction.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: singleclickaction pro 150 2006 08 09 10:12:54Z navarro todo seb PRO singleclickaction event compile_opt idl2 strictarrsubs cm_4mesh cm_4data return widget_control event id get_uvalue uval widget_control event top get_uvalue top_uvalue actionid widget_info event top find_by_uname action type widget_info actionid combobox_gettext IF type NE plt THEN return We activate the right window widget_control event id get_value win wset win choice of the type of action case uval press of 1:BEGIN coor convert_coord uval x 0 uval y 0 device to_data x coor 0 y coor 1 help x y oldgrid vargrid CASE strupcase vargrid OF T :vargrid F W :vargrid F U :vargrid V V :vargrid U F :vargrid T ENDCASE grille 1 glam gphi 1 nx ny nz firstx firsty firstz lastx lasty lastz vargrid oldgrid define the corner of the cells in the clockwise direction IF keyword_set key_periodic AND nx EQ jpi THEN BEGIN x1 glam 0:ny 2 y1 gphi 0:ny 2 x2 glam 1:ny 1 y2 gphi 1:ny 1 x3 shift glam 1:ny 1 1 0 y3 shift gphi 1:ny 1 1 0 x4 shift glam 0:ny 2 1 0 y4 shift gphi 0:ny 2 1 0 ENDIF ELSE BEGIN x1 glam 0:nx 2 0:ny 2 y1 gphi 0:nx 2 0:ny 2 x2 glam 0:nx 2 1:ny 1 y2 gphi 0:nx 2 1:ny 1 x3 glam 1:nx 1 1:ny 1 y3 gphi 1:nx 1 1:ny 1 x4 glam 1:nx 1 0:ny 2 y4 gphi 1:nx 1 0:ny 2 ENDELSE glam 1 free memory gphi 1 free memory What is the longitude WHILE x GT x range 1 DO x x 360 WHILE x LT x range 0 DO x x 360 IF x GT x range 1 THEN RETURN IF y GT y range 1 THEN RETURN IF y LT y range 0 THEN RETURN cell inquad x y x1 y1 x2 y2 x3 y3 x4 y4 onsphere key_onearth x1 1 free memory y1 1 free memory x2 1 free memory y2 1 free memory x3 1 free memory y3 1 free memory x4 1 free memory y4 1 free memory IF cell 0 EQ 1 OR n_elements cell GT 1 THEN RETURN yy cell 0 nx 1 key_periodic nx EQ jpi xx cell 0 MOD nx 1 key_periodic nx EQ jpi CASE strupcase vargrid OF T :BEGIN xx xx firstx 1 yy yy firsty 1 END W :BEGIN xx xx firstx 1 yy yy firsty 1 END U :BEGIN xx xx firstx yy yy firsty 1 END V :BEGIN xx xx firstx 1 yy yy firsty END F :BEGIN xx xx firstx yy yy firsty END ENDCASE bad where xx GE jpi IF bad 0 NE 1 THEN BEGIN xx bad xx bad jpi yy bad yy bad 1 ENDIF bad where yy GE jpj IF bad 0 NE 1 THEN stop print glamt xx yy gphit xx yy cmd buildcmd event top boxzoom boxzoom END ELSE: endcase RETURN end"); 356 a[354] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.html", "tracecadre.pro", "", " file_comments categories param SMALL keyword OUT keyword ERASE keyword FILL returns uses restrictions examples history version Id: tracecadre pro 150 2006 08 09 10:12:54Z navarro todo seb PRO tracecadre small out out erase erase fill fill determination of the column and of the line corresponding in input to small compile_opt idl2 strictarrsubs numdessin small 2 1 numligne numdessin small 0 numcolonne numdessin numligne small 0 determination of poscadre largeurcolonne 1 small 0 largeurligne 1 small 1 cadre numcolonne largeurcolonne 1 numligne 1 largeurligne numcolonne 1 largeurcolonne 1 numligne largeurligne decale 0 001 cadre cadre decale decale decale decale reinitplt p position 0 0 1 1 IF keyword_set fill then begin polyfill cadre 0 cadre 2 cadre 2 cadre 0 cadre 0 cadre 1 cadre 1 cadre 3 cadre 3 cadre 1 color 255 normal ENDIF ELSE BEGIN plot cadre 0 cadre 2 cadre 2 cadre 0 cadre 0 cadre 1 cadre 1 cadre 3 cadre 3 cadre 1 xrange 0 1 yrange 0 1 linestyle 2 keyword_set out noerase normal thick 2 color 0 255 keyword_set erase ENDELSE return end"); 357 a[355] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/updatewidget.html", "updatewidget.pro", "", " file_comments categories param BASE in required The id of the widget where apply the drawing keyword NOBOXZOOM keyword NODATES keyword NOTYPE returns uses restrictions examples history version Id: updatewidget pro 150 2006 08 09 10:12:54Z navarro todo seb PRO updatewidget base NOBOXZOOM noboxzoom NODATES nodates NOTYPE notype compile_opt idl2 strictarrsubs widget_control base get_uvalue top_uvalue smallin extractatt top_uvalue smallin numdessinin smallin 2 1 widget_control base update 0 date1 et date2 if keyword_set nodates then begin date1 0 date2 0 ENDIF ELSE BEGIN dates extractatt top_uvalue dates numdessinin date1 dates 0 date2 dates 1 ENDELSE domain boxzoom extractatt top_uvalue domaines numdessinin if total boxzoom EQ 0 then boxzoom 1 if keyword_set noboxzoom then boxzoom 0 varinfo: filename namevar varinfo extractatt top_uvalue varinfo numdessinin filename varinfo 0 nomvar varinfo 1 if filename NE OR nomvar NE THEN BEGIN changefile base filename fieldname nomvar BOXZOOM boxzoom DATE1 date1 DATE2 date2 ENDIF ELSE BEGIN if date1 NE 0 then begin date1id widget_info base find_by_uname calendar1 widget_control date1id set_value date1 endif if date2 NE 0 then begin date2id widget_info base find_by_uname calendar2 widget_control date2id set_value date2 endif if keyword_set boxzoom then BEGIN domainid widget_info base find_by_uname domain widget_control domainid set_value boxzoom endif ENDELSE exextra if n_elements extractatt top_uvalue exextra numdessinin NE 0 then begin exextra extractatt top_uvalue exextra numdessinin specifieid widget_info base find_by_uname specifie widget_control specifieid set_value exextra endif text command txtcmd extractatt top_uvalue txtcmd numdessinin if txtcmd NE then begin txtcmdid widget_info base find_by_uname txtcmd widget_control txtcmdid set_value txtcmd endif graphtype if NOT keyword_set notype then BEGIN graphtype extractatt top_uvalue types numdessinin if graphtype NE then begin actionid widget_info base find_by_uname action widget_control actionid get_value action_value widget_control actionid set_combobox_select where action_value EQ graphtype 0 endif endif widget_control base update 1 return end"); 358 a[356] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim.html", "xcreateanim.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: xcreateanim pro 150 2006 08 09 10:12:54Z navarro todo seb pro xcreateanim_event event compile_opt idl2 strictarrsubs common We recuperate arguments contained in the widget if tag_names event structure_name NE WIDGET_BUTTON then return widget_control event id get_uvalue uval if n_elements uval EQ 0 then return if uval EQ cancel then begin widget_control event top destroy return ENDIF We will write the animation widget_control event top get_uvalue local_uvalue widget_control local_uvalue parent get_uvalue top_uvalue calendar extractatt top_uvalue fileparameters local_uvalue indexfile time_counter key_caltype extractatt top_uvalue fileparameters local_uvalue indexfile caltype fakecal extractatt top_uvalue fileparameters local_uvalue indexfile fakecal widget_control widget_info event top find_by_uname Filename get_value nomfic nomfic nomfic 0 widget_control widget_info event top find_by_uname directorie get_value animdir animdir animdir 0 widget_control widget_info event top find_by_uname debut get_value vdate1 index1 where calendar eq date2jul vdate1 index1 index1 0 if index1 EQ 1 then return widget_control widget_info event handler find_by_uname fin get_value vdate2 index2 where calendar eq date2jul vdate2 index2 index2 0 if index2 EQ 1 OR index2 LE index1 then return We delete the widget before create the file ps widget_control event top destroy creation of the routine which will serve us to do the drawing We recuperate the list of instructions globalcommand extractatt top_uvalue globalcommand We complete by first and last lines of the program createpro globalcommand filename myuniquetmpdir xxx2ps pro KWDLIST NOERASE noerase POSTSCRIPT postscript DATE1IN date1in DATE2IN date2in creation of the file we recuperate the number of octets on which we code the palette device get_visual_depth depth Picture s size in number of pixels : xsize d x_size ysize d y_size We check that the file s name end by gif if strpos nomfic gif EQ 1 then nomfic nomfic gif current_window d window window free pixmap xsize xsize ysize ysize indication of the number of the picture we are creating base widget_base sliderid widget_slider base minimum 1 maximum index2 index1 1 value 1 title image number: widget_control base realize Beginning of the gif file Writting of an empty picture IF keyword_set fakecal THEN date index1 ELSE date jul2date calendar index1 xxx2ps noerase date1in date date2in date image tvrd true depth GT 8 If an 8 bit image was read reduce the number of colors if depth le 8 then begin tvlct red green blue get reduce_colors image index red red index green green index blue blue index endif if depth gt 8 then Convert 24 bit image to 8 bit image color_quan image 1 red green blue colors 256 get_translation translation map_all write_gif animdir nomfic image red green blue multiple wdelete d window Creation and writting loop in the file IF index2 GT index1 THEN BEGIN FOR ind index1 1 index2 do BEGIN widget_control sliderid set_value ind index1 1 We move the slider window free pixmap xsize xsize ysize ysize IF keyword_set fakecal THEN date ind ELSE date jul2date calendar ind xxx2ps noerase date1 date date2 date image tvrd true depth GT 8 if depth gt 8 then image color_quan image 1 aaa bbb ccc colors 256 translation translation write_gif animdir nomfic image red green blue multiple wdelete d window ENDFOR ENDIF We put a last white picture window free pixmap xsize xsize ysize ysize reinitplt plot 0 0 nodata image tvrd true depth GT 8 if depth gt 8 then image color_quan image 1 aaa bbb ccc colors 256 translation translation write_gif animdir nomfic image red green blue multiple wdelete d window File s closing write_gif animdir nomfic close widget_control base destroy Rerock in normal mode thisOS strupcase strmid version os_family 0 3 wset current_window If we are under x we try to lauch xanim if thisOS NE MAC AND thisOS NE WIN then begin spawn which xanim result if strpos result 0 xanim EQ strlen result 0 5 then spawn xanim animdir nomfic endif return end file_comments categories param PARENT returns uses restrictions examples history version Id: xcreateanim pro 150 2006 08 09 10:12:54Z navarro todo seb PRO xcreateanim parent compile_opt idl2 strictarrsubs common widget_control parent get_uvalue top_uvalue We will make sure that all procedure are not in pltt procedures extractatt top_uvalue nameprocedures if total procedures EQ pltt NE 0 then begin nothing report Certains des plots ont un axe se rapportant au temps C Animation impossible error return ENDIF We will make sure that all figure have the same calendar filelist extractatt top_uvalue filelist filenames extractatt top_uvalue varinfo 0 filenames reform filenames filenames filenames uniq filenames sort filenames if strtrim filenames 0 1 EQ then filenames filenames 1:n_elements filenames 1 indexfile where filelist EQ filenames 0 0 calendar extractatt top_uvalue fileparameters indexfile time_counter key_caltype extractatt top_uvalue fileparameters indexfile caltype fakecal extractatt top_uvalue fileparameters indexfile fakecal if n_elements filenames GT 1 then begin for i 1 n_elements filenames 1 do begin indexfilebis where filelist EQ filenames i 0 calendarbis extractatt top_uvalue fileparameters indexfilebis time_counter if n_elements calendarbis NE n_elements calendar then begin nothing report Les diffrents plots n utilisent pas le meme calendrier C Animation impossible error return ENDIF if total calendar NE calendarbis NE 0 then begin nothing report Les diffrents plots n utilisent pas le meme calendrier C Animation impossible error return endif endfor endif It is possible to do an animation base widget_base column title animation creation uvalue parent:parent indexfile:indexfile rien widget_label base value animation name rien widget_text base value anim_idl gif uname Filename editable rien widget_label base value animation directory if n_elements animdir EQ 0 then cd current animdir rien widget_text base value animdir uname directorie editable rien widget_label base value starting date rien cw_calendar base calendar calendar 0 FAKECAL fakecal uname debut uvalue name: calendar frame rien widget_label base value ending date rien cw_calendar base calendar calendar n_elements calendar 1 FAKECAL fakecal uname fin uvalue name: calendar frame rien widget_button base value OK uvalue ok rien widget_button base value Cancel uvalue cancel widget_control base realize xmanager xcreateanim base no_block return end"); 359 a[357] = new Array("./ToBeReviewed/WIDGET/AUTOUR_de_XXX/xxxmenubar_event.html", "xxxmenubar_event.pro", "", " file_comments categories param EVENT returns uses restrictions examples history version Id: xxxmenubar_event pro 150 2006 08 09 10:12:54Z navarro todo seb PRO xxxmenubar_event event compile_opt idl2 strictarrsubs common case event value of Open :begin oldmeshparams ccmeshparameters newfile selectfile if size newfile type NE 8 then return widget_control event top hourglass widget_control event top update 0 widget_control event top get_uvalue top_uvalue We take care of filelist filelist extractatt top_uvalue filelist filelist filelist newfile fileparameters filename currentfile n_elements filelist 1 We update the widget filelistid widget_info event top find_by_uname filelist widget_control filelistid combobox_additem file_basename newfile fileparameters filename widget_control filelistid set_combobox_select currentfile We update filelist and currentfile s elements of the top_value top_uvalue 1 findline top_uvalue filelist filelist oldfile top_uvalue 1 findline top_uvalue currentfile top_uvalue 1 findline top_uvalue currentfile currentfile We take care of the name of the variable vlstid widget_info event top find_by_uname varlist What is the selected field Do we reselect it fieldname widget_info vlstid combobox_gettext index where newfile fileparameters listvar EQ fieldname widget_control vlstid set_value newfile fileparameters listvar widget_control vlstid set_combobox_select 0 index 0 We take care of the calendar key_caltype newfile fileparameters caltype date1id widget_info event top find_by_uname calendar1 widget_control date1id get_value date1 widget_control date1id destroy jdate1 jul2date date1 if where newfile fileparameters time_counter EQ jdate1 0 EQ 1 then jdate1 newfile fileparameters time_counter 0 date2id widget_info event top find_by_uname calendar2 widget_control date2id get_value date2 widget_control date2id destroy jdate2 jul2date date2 if where newfile fileparameters time_counter EQ jdate2 0 EQ 1 then jdate2 jdate1 basecal widget_info event top find_by_uname basecal fakecal newfile fileparameters fakecal rien cw_calendar basecal newfile fileparameters time_counter jdate1 uname calendar1 FAKECAL fakecal uvalue name: calendar1 frame rien cw_calendar basecal newfile fileparameters time_counter jdate2 uname calendar2 FAKECAL fakecal uvalue name: calendar2 frame We update fileparameters readparameters et meshparameters elements of the top_value newfileparameters ptrarr currentfile 1 allocate_heap FOR i 0 currentfile 1 DO newfileparameters i extractatt top_uvalue fileparameters i newfileparameters currentfile newfile fileparameters ptr_free extractatt top_uvalue fileparameters top_uvalue 1 findline top_uvalue fileparameters newfileparameters newreadparameters ptrarr currentfile 1 allocate_heap FOR i 0 currentfile 1 DO newreadparameters i extractatt top_uvalue readparameters i newreadparameters currentfile newfile readparameters ptr_free extractatt top_uvalue readparameters top_uvalue 1 findline top_uvalue readparameters newreadparameters newmeshparameters ptrarr currentfile 1 allocate_heap FOR i 0 currentfile 1 DO newmeshparameters i extractatt top_uvalue meshparameters i newmeshparameters currentfile newfile meshparameters ptr_free extractatt top_uvalue meshparameters top_uvalue 1 findline top_uvalue meshparameters newmeshparameters We update the widget if cmpgrid oldmeshparams then BEGIN domainid widget_info event top find_by_uname domain widget_control domainid set_value 1 endif widget_control event top update 1 end New xxx :BEGIN widget_control event top get_uvalue top_uvalue extra extractatt top_uvalue extra xxx CALLERWIDID event top _extra extra end Quit :begin widget_control event top get_uvalue top_uvalue ptr_free extractatt top_uvalue exextra ptr_free extractatt top_uvalue fileparameters ptr_free extractatt top_uvalue readparameters ptr_free extractatt top_uvalue meshparameters ptr_free top_uvalue widget_control event top destroy We shut the widget end PostScript :BEGIN IF lmgr demo EQ 1 THEN BEGIN dummy report impossible to save as postscript in demo mode return ENDIF widget_control event top get_uvalue top_uvalue We recuperate the list of instructions globalcommand extractatt top_uvalue globalcommand for i 0 n_elements globalcommand 1 do print globalcommand i We complete by first and last lines of the program createpro globalcommand filename myuniquetmpdir xxx2ps pro KWDLIST NOERASE noerase POSTSCRIPT postscript PORTRAIT portrait LANDSCAPE landscape DATE1IN date1in DATE2IN date2in POSTSCRIPT END Animated gif :begin IF float strmid version release 0 3 GE 6 2 THEN xcreateanim event top end Gif :BEGIN IF lmgr demo EQ 1 THEN BEGIN dummy report impossible to save as an image in demo mode return ENDIF widget_control event top get_uvalue top_uvalue smallin extractatt top_uvalue smallin numdessinin smallin 2 1 smallout extractatt top_uvalue smallout numdessinout smallout 2 1 tracecadre smallin erase tracecadre smallout erase filename xquestion dans quelle fichier gif voulez vous sauver C l ecran de xxx xxx_image gif if rstrpos filename gif NE strlen filename 4 then filename filename gif filename isafile file filename io imagedir new saveimage filename quiet end IDL procedure :BEGIN IF lmgr demo EQ 1 THEN BEGIN dummy report impossible to save as a idl program file in demo mode return ENDIF We recuperate the name of the file filename xquestion dans quelle procedure IDL voulez vous sauver C la realisation de ce graph xxx_figure pro We complete it by a pro if rstrpos filename pro NE strlen filename 4 then filename filename pro filename isafile file filename io homedir new widget_control event top get_uvalue top_uvalue portrait or landscape options extractatt top_uvalue options optionsflag extractatt top_uvalue optionsflag portrait optionsflag where options EQ Portrait Landscape 0 0 We read commands to do a plot globalcommand extractatt top_uvalue globalcommand We complete by first and last lines of the program thisOS strupcase strmid version os_family 0 3 CASE thisOS of MAC :sep : WIN :sep ELSE:sep ENDCASE poslastsep rstrpos filename sep proname strmid filename poslastsep 1 strlen filename poslastsep 1 4 globalcommand pro proname NOERASE noerase POSTSCRIPT postscript PORTRAIT portrait LANDSCAPE landscape DATE1IN date1in DATE2IN date2in _extra ex globalcommand return end We write it in a program putfile filename globalcommand END RESTORE kwd of xxx :BEGIN IF lmgr demo EQ 1 THEN BEGIN dummy report impossible to save the widget in demo mode return ENDIF We recuperate the name of the file filename xquestion dans quel fichier bianire voulez vous sauver le widget xxx_widget dat We complete it by a dat if rstrpos filename dat NE strlen filename 4 then filename filename dat filename isafile file filename io homedir new widget_control event top get_uvalue uvalue widget_control extractatt uvalue graphid get_value win wshow win wset win image tvrd true save uvalue image filename filename END Print to prompt :BEGIN commande getfile myuniquetmpdir xxx_oneplot pro for i 0 n_elements commande 1 do print commande i end Portrait Landscape :begin widget_control event top get_uvalue top_uvalue options extractatt top_uvalue options index where options EQ Portrait Landscape index index 0 optionsflag extractatt top_uvalue optionsflag key_portrait 1 optionsflag index 0 top_uvalue 1 findline top_uvalue optionsflag index key_portrait Separated windows or windows stuck to the widget if widget_info event top find_by_uname graph EQ 0 then BEGIN We delete the window graphid extractatt top_uvalue graphid widget_control widget_info graphid parent destroy We recreate it basegraph widget_base title xxx window group_leader event top uvalue event top uname basegraph windsize givewindowsize graphid widget_draw basegraph uname graph uvalue name: graph press:0 click:0 x: 0 0 y: 0 0 button_events retain 2 xsize windsize 0 ysize windsize 1 widget_control basegraph realize xmanager xxx basegraph no_block We redraw what their were into it We recuperate the list of instructions globalcommand extractatt top_uvalue globalcommand We complete by first and last lines of the program createpro globalcommand filename myuniquetmpdir xxx2ps pro KWDLIST NOERASE noerase POSTSCRIPT postscript PORTRAIT portrait LANDSCAPE landscape KWDUSED noerase PORTRAIT portrait We reattribute the graphic element of the top_value top_uvalue 1 findline top_uvalue graphid graphid ENDIF ELSE BEGIN extra extractatt top_uvalue extra xxx CALLERWIDID event top redraw _extra extra widget_control event top destroy We shut the widget ENDELSE end Overlay :begin widget_control event top get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag index where options EQ Overlay We change the flag on Longitude x index flag 1 flags index numdessinin flag flag 0 We reattribute it top_uvalue 1 findline top_uvalue optionsflag index numdessinin flag end Vecteur :BEGIN widget_control event top get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag index where options EQ Vecteur We change the flag on Longitude x index flag 1 flags index numdessinin flag flag 0 We reattribute it top_uvalue 1 findline top_uvalue optionsflag index numdessinin flag end Longitude x index :BEGIN widget_control event top get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag index where options EQ Longitude x index We change the flag on Longitude x index flag 1 flags index numdessinin flag flag 0 We reattribute it top_uvalue 1 findline top_uvalue optionsflag index numdessinin flag Now we will change sliders defining the boxzoom domainid widget_info event top find_by_uname domain boxzoom extractatt top_uvalue domaines numdessinin We want to find the type of grid which is used currentfile extractatt top_uvalue currentfile listgrid extractatt top_uvalue fileparameters currentfile listgrid listvar extractatt top_uvalue fileparameters currentfile listvar vlstid widget_info event top find_by_uname varlist namevar widget_info vlstid combobox_gettext indexvar where listvar EQ namevar vargrid strupcase listgrid indexvar if flag EQ 0 then BEGIN longitudes We do a domdef to find the lon1 lon2 corresponding to the boxzoom defined on the widget domdef boxzoom gridtype vargrid xindex yindex flags where options EQ Latitude y index numdessinin 0 widget_control domainid set_value lon1 lon2 boxzoom 2:3 ENDIF ELSE BEGIN xindex now we want to find firstx lastx corresponding to the boxzoom defined on the widget domdef boxzoom gridtype vargrid yindex flags where options EQ Latitude y index numdessinin 0 grille 1 1 1 1 nx ny nz firstx firsty firstz lastx lasty lastz widget_control domainid set_value firstx lastx boxzoom 2:3 ENDELSE We update the top_uvalue widget_control domainid get_value boxzoom top_uvalue 1 findline top_uvalue domaines numdessinin boxzoom end Latitude y index :begin widget_control event top get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag index where options EQ Latitude y index We change the flag on Latitude y index flag 1 flags index numdessinin flag flag 0 We reattribute it top_uvalue 1 findline top_uvalue optionsflag index numdessinin flag Now we will change sliders defining the boxzoom domainid widget_info event top find_by_uname domain boxzoom extractatt top_uvalue domaines numdessinin We want to find the type of grid which is used currentfile extractatt top_uvalue currentfile listgrid extractatt top_uvalue fileparameters currentfile listgrid listvar extractatt top_uvalue fileparameters currentfile listvar vlstid widget_info event top find_by_uname varlist namevar widget_info vlstid combobox_gettext indexvar where listvar EQ namevar vargrid strupcase listgrid indexvar if flag EQ 0 then BEGIN latitudes We do a domdef to find the lat1 lat2 corresponding to the boxzoom defined on the widget domdef boxzoom gridtype vargrid yindex xindex flags where options EQ Longitude x index numdessinin 0 widget_control domainid set_value boxzoom 0:1 lat1 lat2 ENDIF ELSE BEGIN yindex now we want to find firsty lasty corresponding to the boxzoom defined on the widget domdef boxzoom gridtype vargrid xindex flags where options EQ Longitude x index numdessinin 0 grille 1 1 1 1 nx ny nz firstx firsty firstz lastx lasty lastz widget_control domainid set_value boxzoom 0:1 firsty lasty ENDELSE We update the top_uvalue widget_control domainid get_value boxzoom top_uvalue 1 findline top_uvalue domaines numdessinin boxzoom END endcase return end"); 360 a[358] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.html", "cw_bgroup.pro", "", "pro CW_BGROUP_SETV id value compile_opt hidden idl2 strictarrsubs ON_ERROR 2 return to caller stash WIDGET_INFO id CHILD WIDGET_CONTROL stash GET_UVALUE state NO_COPY case state type of 0: message unable to set plain button group value 1: begin WIDGET_CONTROL SET_BUTTON 0 state ids state excl_pos state excl_pos value WIDGET_CONTROL SET_BUTTON state ids value end 2: begin n n_elements value 1 for i 0 n do begin state nonexcl_curpos i value i WIDGET_CONTROL state ids i SET_BUTTON value i endfor end endcase WIDGET_CONTROL stash SET_UVALUE state NO_COPY end function CW_BGROUP_GETV id value compile_opt hidden idl2 strictarrsubs ON_ERROR 2 return to caller stash WIDGET_INFO id CHILD WIDGET_CONTROL stash GET_UVALUE state NO_COPY case state type of 0: message unable to get plain button group value 1: ret state excl_pos 1: ret state ret_arr state excl_pos 2: ret state nonexcl_curpos 2: BEGIN index where state nonexcl_curpos NE 0 if index 0 EQ 1 then begin if size state ret_arr type EQ 7 then ret ELSE ret 1 ENDIF ELSE ret state ret_arr index END endcase WIDGET_CONTROL stash SET_UVALUE state NO_COPY return ret end function CW_BGROUP_EVENT ev compile_opt hidden idl2 strictarrsubs WIDGET_CONTROL ev handler GET_UVALUE stash WIDGET_CONTROL stash GET_UVALUE state NO_COPY WIDGET_CONTROL ev id get_uvalue uvalue ret 1 Assume we return a struct case state type of 0: 1: if ev select eq 1 then begin state excl_pos uvalue ENDIF else begin if state no_release ne 0 then ret 0 ENDELSE 2: begin Keep track of the current state state nonexcl_curpos uvalue ev select if state no_release ne 0 and ev select eq 0 then ret 0 end endcase if ret then begin Return a struct ret ID:state base TOP:ev top HANDLER:0L SELECT:ev select VALUE:state ret_arr uvalue efun state efun WIDGET_CONTROL stash SET_UVALUE state NO_COPY if efun ne then return CALL_FUNCTION efun ret else return ret endif else begin Trash the event WIDGET_CONTROL stash SET_UVALUE state NO_COPY return 0 endelse end file_comments CW_BGROUP is a compound widget that simplifies creating a base of buttons It handles the details of creating the proper base standard exclusive or non exclusive and filling in the desired buttons Events for the individual buttons are handled transparently and a CW_BGROUP event returned This event can return any one of the following: The Index of the button within the base The widget ID of the button The name of the button An arbitrary value taken from an array of User values categories Compound widgets param PARENT in required The ID of the parent widget param NAMES A string array containing one string per button giving the name of each button keyword BUTTON_UVALUE An array of user values to be associated with each button and returned in the event structure keyword COLUMN Buttons will be arranged in the number of columns specified by this keyword keyword EVENT_FUNCT The name of an optional user supplied event function for buttons This function is called with the return value structure whenever a button is pressed and follows the conventions for user written event functions keyword EXCLUSIVE Buttons will be placed in an exclusive base with only one button allowed to be selected at a time keyword FONT The name of the font to be used for the button titles If this keyword is not specified the default font is used keyword FRAME Specifies the width of the frame to be drawn around the base keyword IDS A named variable into which the button IDs will be stored as a longword vector keyword LABEL_LEFT Creates a text label to the left of the buttons keyword LABEL_TOP Creates a text label above the buttons keyword MAP If set the base will be mapped when the widget is realized the default keyword NONEXCLUSIVE Buttons will be placed in an non exclusive base The buttons will be independent keyword NO_RELEASE If set button release events will not be returned keyword RETURN_ID If set the VALUE field of returned events will be the widget ID of the button keyword RETURN_INDEX If set the VALUE field of returned events will be the zero based index of the button within the base THIS IS THE DEFAULT keyword RETURN_NAME If set the VALUE field of returned events will be the name of the button within the base keyword ROW Buttons will be arranged in the number of rows specified by this keyword keyword SCROLL If set the base will include scroll bars to allow viewing a large base through a smaller viewport keyword SET_VALUE The initial value of the buttons This is equivalent to the later statement: WIDGET_CONTROL widget set_value value keyword SPACE The space in pixels to be left around the edges of a row or column major base This keyword is ignored if EXCLUSIVE or NONEXCLUSIVE are specified keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword XOFFSET The X offset of the widget relative to its parent keyword XPAD The horizontal space in pixels between children of a row or column major base Ignored if EXCLUSIVE or NONEXCLUSIVE are specified keyword XSIZE The width of the base keyword X_SCROLL_SIZE The width of the viewport if SCROLL is specified keyword YOFFSET The Y offset of the widget relative to its parent keyword YPAD The vertical space in pixels between children of a row or column major base Ignored if EXCLUSIVE or NONEXCLUSIVE are specified keyword YSIZE The height of the base keyword Y_SCROLL_SIZE The height of the viewport if SCROLL is specified returns The ID of the created widget is returned restrictions This widget generates event structures with the following definition: event ID:0L TOP:0L HANDLER:0L SELECT:0 VALUE:0 The SELECT field is passed through from the button event VALUE is either the INDEX ID NAME or BUTTON_UVALUE of the button depending on how the widget was created restrictions Only buttons with textual names are handled by this widget Bitmaps are not understood history 15 June 1992 AB 7 April 1993 AB Removed state caching 6 Oct 1994 KDB Font keyword is not applied to the label 10 FEB 1995 DJC fixed bad bug in event procedure getting id of stash widget 11 April 1995 AB Removed Motif special cases Copyright c 1992 2005 Research Systems Inc All rights reserved Unauthorized reproduction prohibited version Id: cw_bgroup pro 150 2006 08 09 10:12:54Z navarro function CW_BGROUP parent names BUTTON_UVALUE button_uvalue COLUMN column EVENT_FUNCT efun EXCLUSIVE excl FONT font FRAME frame IDS ids LABEL_TOP label_top LABEL_LEFT label_left MAP map NONEXCLUSIVE nonexcl NO_RELEASE no_release RETURN_ID return_id RETURN_INDEX return_index RETURN_NAME return_name ROW row SCROLL scroll SET_VALUE sval SPACE space TAB_MODE tab_mode UVALUE uvalue XOFFSET xoffset XPAD xpad XSIZE xsize X_SCROLL_SIZE x_scroll_size YOFFSET yoffset YPAD ypad YSIZE ysize Y_SCROLL_SIZE y_scroll_size UNAME uname IF N_PARAMS ne 2 THEN MESSAGE Incorrect number of arguments ON_ERROR 2 return to caller Set default values for the keywords version WIDGET_INFO version if version toolkit eq OLIT then def_space_pad 4 else def_space_pad 3 IF N_ELEMENTS column eq 0 then column 0 IF N_ELEMENTS excl eq 0 then excl 0 IF N_ELEMENTS frame eq 0 then frame 0 IF N_ELEMENTS map eq 0 then map 1 IF N_ELEMENTS nonexcl eq 0 then nonexcl 0 IF N_ELEMENTS no_release eq 0 then no_release 0 IF N_ELEMENTS row eq 0 then row 0 IF N_ELEMENTS scroll eq 0 then scroll 0 IF N_ELEMENTS space eq 0 then space def_space_pad IF N_ELEMENTS uname eq 0 then uname CW_BGROUP_UNAME IF N_ELEMENTS uvalue eq 0 then uvalue 0 IF N_ELEMENTS xoffset eq 0 then xoffset 0 IF N_ELEMENTS xpad eq 0 then xpad def_space_pad IF N_ELEMENTS xsize eq 0 then xsize 0 IF N_ELEMENTS x_scroll_size eq 0 then x_scroll_size 0 IF N_ELEMENTS yoffset eq 0 then yoffset 0 IF N_ELEMENTS ypad eq 0 then ypad def_space_pad IF N_ELEMENTS ysize eq 0 then ysize 0 IF N_ELEMENTS y_scroll_size eq 0 then y_scroll_size 0 top_base 0L if n_elements label_top ne 0 then begin next_base WIDGET_BASE parent XOFFSET xoffset YOFFSET yoffset COLUMN if keyword_set font then junk WIDGET_LABEL next_base value label_top font font else junk WIDGET_LABEL next_base value label_top top_base next_base endif else next_base parent if n_elements label_left ne 0 then begin next_base WIDGET_BASE next_base XOFFSET xoffset YOFFSET yoffset ROW if keyword_set font then junk WIDGET_LABEL next_base value label_left font font else junk WIDGET_LABEL next_base value label_left if top_base eq 0L then top_base next_base endif We need some kind of outer base to hold the users UVALUE if top_base eq 0L then begin top_base WIDGET_BASE parent XOFFSET xoffset YOFFSET yoffset next_base top_base endif If top_base EQ next_base THEN next_base WIDGET_BASE top_base Xpad 1 Ypad 1 Space 1 Set top level base attributes WIDGET_CONTROL top_base MAP map FUNC_GET_VALUE CW_BGROUP_GETV PRO_SET_VALUE CW_BGROUP_SETV SET_UVALUE uvalue SET_UNAME uname Tabbing if n_elements tab_mode ne 0 then begin WIDGET_CONTROL top_base TAB_MODE tab_mode WIDGET_CONTROL next_base TAB_MODE tab_mode end The actual button holding base base WIDGET_BASE next_base COLUMN column EXCLUSIVE excl FRAME frame NONEXCLUSIVE nonexcl ROW row SCROLL scroll SPACE space XPAD xpad XSIZE xsize X_SCROLL_SIZE x_scroll_size YPAD ypad YSIZE ysize Y_SCROLL_SIZE y_scroll_size EVENT_FUNC CW_BGROUP_EVENT UVALUE WIDGET_INFO top_base child n n_elements names ids lonarr n for i 0 n 1 do begin if n_elements font eq 0 then begin ids i WIDGET_BUTTON base value names i UVALUE i UNAME uname _BUTTON STRTRIM i 2 endif else begin ids i WIDGET_BUTTON base value names i FONT font UVALUE i UNAME uname _BUTTON STRTRIM i 2 endelse endfor Keep the state info in the real inner base UVALUE Pick an event value type: 0 Return ID 1 Return INDEX 2 Return NAME ret_type 1 if KEYWORD_SET RETURN_ID then ret_type 0 if KEYWORD_SET RETURN_NAME then ret_type 2 if KEYWORD_SET BUTTON_UVALUE then ret_type 3 case ret_type of 0: ret_arr ids 1: ret_arr indgen n 2: ret_arr names 3: ret_arr button_uvalue endcase type 0 if excl ne 0 then type 1 if nonexcl ne 0 then type 2 if n_elements efun le 0 then efun state type:type 0 Standard 1 Exclusive 2 Non exclusive base: top_base cw_bgroup base ret_arr:ret_arr Vector of event values efun : efun Name of event fcn nonexcl_curpos:intarr n If non exclus tracks state excl_pos:0 If exclusive current button ids:ids Ids of buttons no_release:no_release WIDGET_CONTROL WIDGET_INFO top_base CHILD SET_UVALUE state NO_COPY if n_elements sval ne 0 then CW_BGROUP_SETV top_base sval return top_base END"); 361 a[359] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.html", "cw_calendar.pro", "", " IDL testwid julday 1 1 1980 lindgen 100 5 PRO testwid_event event ComboboxId widget_info event top find_by_uname c est lui widget_control event id get_uvalue uval if n_elements uval EQ 0 then return case uval of done :widget_control event top destroy set :BEGIN widget_control event id get_value value widget_control ComboboxId set_value value END get :BEGIN widget_control ComboboxId get_value value help value struct END ELSE: endcase return end PRO testwid calendar date0 _extra ex base widget_base COLUMN print base base nothing widget_label base value beginning of the test nothing cw_calendar base calendar date0 _extra ex uname c est lui uvalue c est lui print cw_calendar ID nothing nothing widget_label base value end of the test nothing widget_text base value string calendar 0 uvalue set editable nothing widget_button base value get uvalue get nothing widget_button base value done uvalue done widget_control base REALIZE xmanager testwid base return END PRO cw_calendar_set_value id value compile_opt strictarr strictarrsubs cm_4cal get back the calendar and its related informations winfo_id widget_info id find_by_uname infocal widget_control winfo_id get_uvalue infowid key_caltype infowid caltype high freqeuncy calendar IF keyword_set infowid fakecal THEN BEGIN value2 date2jul long value infowid fakecal IF value2 LT n_elements infowid calendar AND value2 GE 0 THEN BEGIN stepid widget_info id find_by_uname step widget_control stepid set_value combobox_select:value2 infowid date jul2date value2 infowid fakecal widget_control winfo_id set_uvalue infowid ENDIF ENDIF ELSE BEGIN value long value 0 make sure the value correspond value jul2date date2jul value define year month day year value 10000l month value MOD 10000L 100L day value MOD 100L check that the date exists in the calendar if where infowid calendar EQ julday month day year 0 EQ 1 then return update the value of infocal infowid date value widget_control winfo_id set_uvalue infowid update the combobox if needed possiblecase day month year for name 2 0 1 do BEGIN call set_cal_combobox with out 2 to specify that the call is coming from cw_calendar_set_value if widget_info id find_by_uname possiblecase name NE 0 then set_cal_combobox handler:id out:2 possiblecase name value ENDFOR ENDELSE return end FUNCTION cw_calendar_get_value id compile_opt strictarr strictarrsubs winfo_id widget_info id find_by_uname infocal widget_control winfo_id get_uvalue infowid return infowid date END FUNCTION get_cal_value id winfoid compile_opt strictarr strictarrsubs winfo_id widget_info id find_by_uname infocal widget_control winfo_id get_uvalue infowid oldate infowid date day wid_id widget_info id find_by_uname day if wid_id NE 0 then BEGIN widget_control wid_id get_value wid_value date long wid_value combobox_gettext ENDIF ELSE date oldate MOD 100L month wid_id widget_info id find_by_uname month if wid_id NE 0 then BEGIN widget_control wid_id get_value wid_value allmonths string format C CMoA 31 indgen 12 month where allmonths EQ wid_value combobox_gettext 0 1 date date 100L long month ENDIF ELSE date date oldate MOD 10000L 100L 100L year wid_id widget_info id find_by_uname year widget_control wid_id get_value wid_value date date 10000L long wid_value combobox_gettext IF arg_present winfoid NE 0 THEN BEGIN winfoid winfo_id infowid date date return infowid ENDIF ELSE return date end redefine the value and index position of the combobox PRO set_cal_combobox event casename date0 compile_opt strictarr strictarrsubs casename: Which widget shall we move: day month or year wid_id widget_info event handler find_by_uname casename we get back the calendar winfo_id widget_info event handler find_by_uname infocal widget_control winfo_id get_uvalue infowid caldat infowid calendar monthcal daycal yearcal and the current date IF n_elements date0 EQ 0 then date0 get_cal_value event handler year0 date0 10000L month0 date0 MOD 10000L 100L day0 date0 MOD 100L index of days months years according to date0 case casename of day :BEGIN list of days corresponding to month0 and year0 index where monthcal EQ month0 AND yearcal EQ year0 current daycal index END month :BEGIN list of months corresponding to year0 index where yearcal EQ year0 current monthcal index keep only the uniq values indexbis uniq current index index indexbis current current indexbis END year :BEGIN keep only the uniq years index uniq yearcal current yearcal index END ENDCASE we update the uvalue of the widget widget_control wid_id set_uvalue name:casename for event out 0 we store the previous position of the combobox to use it as the default position IF event out EQ 0 THEN widget_control wid_id get_value oldselect we redefine the new list if casename EQ month then begin widget_control wid_id set_value string format C CMoA 31 current 1 ENDIF ELSE BEGIN widget_control wid_id set_value strtrim current 1 ENDELSE specify the index position within the new list of values widget_control wid_id get_value combobox CASE event out OF 1: we put to the biggest position 1:selected combobox combobox_number 1 0: same as the previous position is the best choice 0:selected oldselect combobox_index combobox combobox_number 1 1: we put to the smallest position 1:selected 0 2: a new date has been specified 2:BEGIN case casename of day :selected where current EQ day0 0 month :selected where current EQ month0 0 year :selected where current EQ year0 0 ENDCASE END ENDCASE widget_control wid_id set_value combobox_select:selected update the date infowid date get_cal_value event handler widget_control winfo_id set_uvalue infowid return end move cyclicly the calendar to the value 0 if event out 1 or combobox_number 1 if event out 1 PRO move event casename compile_opt strictarr strictarrsubs possiblecase day month year impossiblecase id widget_info event handler find_by_uname casename widget_control id get_value wvalue we try to move but we are already at the beginning end of the combobox wvalue combobox_index EQ wvalue combobox_number 1 and event out EQ 1 wvalue combobox_index EQ 0 and event out EQ 1 move is not called when out eq 0 whichcase where possiblecase EQ casename 0 if wvalue combobox_index EQ wvalue combobox_number 1 event out EQ 1 THEN BEGIN if widget_info event handler find_by_uname possiblecase whichcase 1 EQ 0 then begin it is impossible to move the next combobox widget_control id get_value widvalue we set to widvalue combobox_number 1 when event out EQ 1 and to 0 when event out EQ 1 selected widvalue combobox_number 1 event out EQ 1 widget_control id set_value combobox_select:selected we call move for the next combobox ENDIF ELSE move event possiblecase whichcase 1 it is possible to move from 1 ENDIF ELSE widget_control id set_value combobox_select:wvalue combobox_index event out set_cal_combobox event possiblecase whichcase 1 return end FUNCTION cw_calendar_event event cm_4cal compile_opt strictarr strictarrsubs winfo_id widget_info event handler find_by_uname infocal widget_control winfo_id get_uvalue infowid key_caltype infowid caltype widget_control event id get_uvalue uval high frequency calendar IF uval name EQ step THEN BEGIN infowid date jul2date event index infowid fakecal ENDIF ELSE BEGIN possiblecase day month year impossiblecase whichcase where possiblecase EQ uval name 0 if event out NE 0 then BEGIN we use the button and we want to go out of the combobox: to index 1 event out 1 or to index combobox_number event out 1 we try to move the combobox just right with name: possiblecase whichcase 1 if widget_info event handler find_by_uname possiblecase whichcase 1 EQ 0 then BEGIN this widget do not exist we set cyclicly the current widget to the value 0 if event out 1 or combobox_number 1 if event out 1 widget_control event id get_value widvalue selected widvalue combobox_number 1 event out EQ 1 widget_control event id set_value combobox_select:selected ENDIF ELSE move event possiblecase whichcase 1 ENDIF if we changed month year we need to update the day and month list if uval name NE day then begin event out 0 for name whichcase 1 0 1 do BEGIN if widget_info event handler find_by_uname possiblecase name NE 0 then set_cal_combobox event possiblecase name endfor ENDIF we update the date infowid get_cal_value event handler winfo_id ENDELSE widget_control winfo_id set_uvalue infowid return CW_CALENDAR ID:event handler TOP:event top HANDLER:0L VALUE:infowid date FAKECAL: infowid fakecal end file_comments categories param PARENT in required The widget ID of the parent widget param CALENDAR param JDATE0 keyword CALTYPE keyword FAKECAL keyword UVALUE keyword UNAME keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: cw_calendar pro 150 2006 08 09 10:12:54Z navarro todo seb FUNCTION cw_calendar parent calendar jdate0 CALTYPE CALTYPE FAKECAL fakecal UVALUE uvalue UNAME uname _extra ex cm_4cal compile_opt strictarr strictarrsubs if keyword_set caltype then key_caltype caltype months days years found in the calendar caldat calendar monthcal daycal yearcal hourcal mincal scdcal starting date if n_elements jdate0 EQ 0 then jdate0 calendar 0 if where calendar EQ jdate0 0 EQ 1 then jdate0 calendar 0 caldat jdate0 month0 day0 year0 test the type of calendar if n_elements calendar GT 1 then BEGIN each day have the same value if n_elements uniq daycal sort daycal EQ 1 then monthly 1 each month and each day have the same value if keyword_set monthly AND n_elements uniq monthcal sort monthcal EQ 1 then yearly 1 endif if NOT keyword_set uvalue then uvalue dummy: if NOT keyword_set uname then uname base0 widget_base parent ROW EVENT_FUNC cw_calendar_event FUNC_GET_VALUE cw_calendar_get_value PRO_SET_VALUE cw_calendar_set_value UVALUE uvalue UNAME uname space 0 _extra ex if n_elements fakecal eq 0 then fakecal 0 base widget_base base0 space 0 uname infocal uvalue calendar:calendar date:jul2date jdate0 fakecal:fakecal caltype: key_caltype IF keyword_set fakecal THEN BEGIN cmbbid cw_combobox_pm base UVALUE name: step UNAME step value strtrim indgen n_elements calendar 1 widget_control cmbbid set_value combobox_select: where calendar EQ jdate0 0 ENDIF ELSE BEGIN vallen widget_info base string_size m day if NOT keyword_set monthly then begin dayindex where monthcal EQ month0 AND yearcal EQ year0 currentday daycal dayindex currentday strtrim currentday 1 cmbbid cw_combobox_pm base UVALUE name: day UNAME day value currentday widget_control cmbbid set_value combobox_select: where long currentday EQ day0 0 endif month if NOT keyword_set yearly then BEGIN monthindex where yearcal EQ year0 currentmonth long monthcal monthindex we suppress the repeted months monthindexbis uniq currentmonth sort currentmonth monthindex monthindex monthindexbis currentmonth currentmonth monthindexbis xoff 34 2 vallen 0 1 keyword_set monthly cmbbid cw_combobox_pm base UVALUE name: month UNAME month value string format C CMoA 31 currentmonth 1 xoffset xoff widget_control cmbbid set_value combobox_select: where long currentmonth EQ month0 0 endif year yearindex uniq yearcal sort yearcal currentyear strtrim yearcal yearindex 1 xoff 34 2 vallen 0 1 keyword_set monthly 33 3 vallen 0 1 keyword_set yearly cmbbid cw_combobox_pm base UVALUE name: year UNAME year value currentyear xoffset xoff widget_control cmbbid set_value combobox_select: where long currentyear EQ year0 0 ENDELSE return base end"); 362 a[360] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.html", "cw_combobox_pm.pro", "", " testwid value strtrim indgen 10 2 PRO testwid_event event help event STRUCT ComboboxId widget_info event top find_by_uname c est lui widget_control event id get_uvalue uval if n_elements uval EQ 0 then return case uval of done :widget_control event top destroy dynamic_resize :BEGIN widget_control event id get_value value widget_control ComboboxId set_value dynamic_resize:value END combobox_select :BEGIN widget_control event id get_value value widget_control ComboboxId set_value combobox_select:value END value :BEGIN widget_control event id get_value value widget_control ComboboxId set_value value END get :BEGIN widget_control ComboboxId get_value value help value struct END ELSE: endcase return end PRO testwid _extra ex base widget_base COLUMN print base base nothing widget_label base value beginning of the test nothing cw_combobox_pm base _extra ex uname c est lui uvalue c est lui print cw_combobox_pm ID nothing nothing widget_label base value end of the test nothing widget_text base value 0 uvalue dynamic_resize editable nothing widget_text base value 10 uvalue combobox_select editable nothing widget_text base value 5 uvalue value editable nothing widget_button base value get uvalue get nothing widget_button base value done uvalue done widget_control base REALIZE xmanager testwid base return end PRO cw_combobox_pm_set_value id value compile_opt idl2 strictarrsubs ComboboxId widget_info id find_by_uname Combobox if size value type eq 8 then BEGIN this is a structure tagnames tag_names value for tag 0 n_tags value 1 do begin case strtrim strlowcase tagnames tag 2 of dynamic_resize :widget_control ComboboxId dynamic_resize value dynamic_resize for compatibility droplist_select :widget_control ComboboxId set_combobox_select value droplist_select combobox_select :widget_control ComboboxId set_combobox_select value combobox_select value :widget_control ComboboxId set_value value value ELSE:ras report wrong tag name in argument value of cw_combobox_pm_set_value endcase endfor ENDIF ELSE widget_control ComboboxId set_value value return end FUNCTION cw_combobox_pm_get_value id compile_opt idl2 strictarrsubs ComboboxId widget_info id find_by_uname Combobox widget_control ComboboxId get_value cmbbval cmbbtxt widget_info ComboboxId combobox_gettext cmbbnumb widget_info ComboboxId combobox_number index where cmbbval EQ cmbbtxt 0 return combobox_number:cmbbnumb combobox_gettext:cmbbtxt combobox_index:index combobox_value:cmbbval dynamic_resize:widget_info ComboboxId dynamic_resize end FUNCTION cw_combobox_pm_event event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval if uval EQ Combobox then return CW_COMBOBOX_PM ID:event handler TOP:event top HANDLER:0L INDEX:event index STR:event str OUT:0 ComboboxId widget_info event handler find_by_uname Combobox widget_control ComboboxId get_value cmbbval cmbbtxt widget_info ComboboxId combobox_gettext cmbbnumb widget_info ComboboxId combobox_number index where cmbbval EQ cmbbtxt 0 out 0 case uval OF plus :BEGIN if index LT cmbbnumb 1 then BEGIN index index 1 widget_control ComboboxId set_combobox_select index ENDIF ELSE out 1 END minus :BEGIN if index GT 0 then BEGIN index index 1 widget_control ComboboxId set_combobox_select index ENDIF ELSE out 1 END endcase return CW_COMBOBOX_PM ID:event handler TOP:event top HANDLER:0L INDEX:index STR:cmbbtxt OUT:out end file_comments Like WIDGET_COMBOBOX but here their are 2 buttons and to move the widget from 1 categories compound widget param PARENT in required The widget ID of the parent widget keyword COLUMN Buttons will be arranged in the number of columns specified by this keyword keyword ROW Buttons will be arranged in the number of rows specified by this keyword keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword VALUE keyword _EXTRA Used to pass your keywords returns The returned value of this function is the widget ID of the newly created animation widget restrictions Widget Events Returned by Combobox Widgets Pressing the mouse button while the mouse cursor is over an element of a combobox widget causes the widget to change the label on the combobox button and to generate an event The appearance of any previously selected element is restored to normal at the same time The event structure returned by the WIDGET_EVENT function is defined by the following statement: CW_COMBOBOX_PM ID:0L TOP:0L HANDLER:0L INDEX:0L OUT:0 The first three fields are the standard fields found in every widget event INDEX returns the index of the selected item This can be used to index the array of names originally used to set the widget s value OUT:It is an integer which can take 3 values: 1 : If we press when the index is already at the max Comment: In this case the index stay at the max 1: If we press when the index is already at the min Comment: In this case the index stay at the min 0 : In other cases Keywords to WIDGET_CONTROL A number of keywords to the WIDGET_CONTROL procedure affect the behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE 1 GET_VALUE widget_control wid_id get_value resultat Send back in the result variable a structure of 3 elements whose names are inspired by keywords we can pass at widget_control when we use WIDGET_COMBOBOX: COMBOBOX_NUMBER: the number of elements currently contained in the specified combobox widget COMBOBOX_SELECT: the zero based number of the currently selected element i e the currently displayed element in the specified combobox widget DYNAMIC_RESIZE: a True value 1 if the widget specified by Widget_ID is a button combobox or label widget that has had its DYNAMIC_RESIZE attribute set Otherwise False 0 is returned 2 SET_VALUE widget_control wid_id set_value impose Allows to modify the state of the combobox like we can do it for WIDGET_COMBOBOX May impose: a The contents of the list widget string or string array b A structure which can have for elements from 1 to 3 : DYNAMIC_RESIZE:Set this keyword to activate if set to 1 or deactivate if set to 0 dynamic resizing of the specified CW_COMBOBOX_PM widget see the documentation for the DYNAMIC_RESIZE keyword to WIDGET_COMBOBOX procedure for more information about dynamic widget resizing COMBOBOX_SELECT:Set this keyword to return the zero based number of the currently selected element i e the currently displayed element in the specified combobox widget VALUE: The contents of the list widget string or string array examples See the program provided above testwid and the associated procedure testwid_event history Sebastien Masson smasson lodyc jussieu fr 6 9 1999 version Id: cw_combobox_pm pro 150 2006 08 09 10:12:54Z navarro FUNCTION cw_combobox_pm parent VALUE value UVALUE uvalue UNAME uname ROW row COLUMN column _extra ex compile_opt idl2 strictarrsubs IF N_PARAMS NE 1 THEN MESSAGE Incorrect number of arguments ON_ERROR 2 return to caller cheking for row and column keywords row keyword_set row 1 keyword_set column column keyword_set column 1 keyword_set row keyword_set column EQ row if NOT keyword_set uvalue then uvalue if NOT keyword_set uname then uname base widget_base parent space 0 EVENT_FUNC cw_combobox_pm_event FUNC_GET_VALUE cw_combobox_pm_get_value PRO_SET_VALUE cw_combobox_pm_set_value UVALUE uvalue UNAME uname _extra ex vallen widget_info base string_size m vallen 35 vallen 0 1 max strlen value if keyword_set row THEN BEGIN nothing widget_button base value uvalue minus xoffset 0 yoffset 5 xsize 15 ysize 15 nothing widget_combobox base VALUE value UVALUE Combobox UNAME Combobox xoffset 13 yoffset 0 xsize vallen nothing widget_button base value uvalue plus xoffset vallen 11 yoffset 5 xsize 15 ysize 15 ENDIF ELSE BEGIN nothing widget_combobox base VALUE value UVALUE Combobox UNAME Combobox xoffset 0 yoffset 0 xsize vallen nothing widget_button base value uvalue minus xoffset vallen 2 15 yoffset 24 xsize 15 ysize 15 nothing widget_button base value uvalue plus xoffset vallen 2 yoffset 24 xsize 15 ysize 15 ENDELSE widget_control base realize return base end"); 363 a[361] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.html", "cw_domain.pro", "", " IDL testwid PRO testwid_event event help event struct Id widget_info event top find_by_uname c est lui widget_control event id get_uvalue uval if n_elements uval EQ 0 then return case uval of done :widget_control event top destroy set :BEGIN widget_control event id get_value value value value 0 nothing execute boxzoom value widget_control Id set_value boxzoom END get :BEGIN widget_control Id get_value value print value END ELSE: endcase return end PRO testwid _extra ex base widget_base COLUMN print base base nothing widget_label base value beginning of the test nothing cw_domain base _extra ex uname c est lui uvalue c est lui print cw_domain ID nothing nothing widget_label base value end of the test nothing widget_text base value 40 100 10 10 uvalue set editable nothing widget_button base value get uvalue get nothing widget_button base value done uvalue done widget_control base REALIZE xmanager testwid base return end pro cw_domain_set_value id value compile_opt idl2 strictarrsubs cm_4mesh topid findtopid id widget_control topid get_uvalue top_uvalue make sure that we have the good grid stored in the cm_4mesh common parameters currentfile extractatt top_uvalue currentfile currentgrid extractatt top_uvalue meshparameters currentfile change changegrid currentgrid What is the type of boxzoom currentplot extractatt top_uvalue smallin 2 1 options extractatt top_uvalue options flags extractatt top_uvalue optionsflag flags flags currentplot IF flags where options EQ Longitude x index 0 EQ 0 THEN xtype geographic ELSE xtype index IF flags where options EQ Latitude y index 0 EQ 0 THEN ytype geographic ELSE ytype index How to complete the boxzoom IF xtype EQ geographic then begin lonn1 lon1 lonn2 lon2 xtitle lon ENDIF ELSE BEGIN lonn1 firstxt lonn2 lastxt xtitle x ind ENDELSE IF ytype EQ geographic then begin latt1 lat1 latt2 lat2 ytitle lat ENDIF ELSE BEGIN latt1 firstyt latt2 lastyt ytitle y ind ENDELSE vertf1 floor min gdepw 0 gdept 0 vertf2 ceil max gdepw 0 gdept 0 Case N_Elements Value OF 0:boxzoom lonn1 lonn2 latt1 latt2 vertf1 vertf2 1:BEGIN if value EQ 1 then boxzoom lonn1 lonn2 latt1 latt2 vertf1 vertf2 ELSE boxzoom lonn1 lonn2 latt1 latt2 0 value 0 END 2:boxzoom lonn1 lonn2 latt1 latt2 value 0 value 1 4:boxzoom Value 5:boxzoom Value 0:3 0 Value 4 6:boxzoom Value Else:BEGIN rien report Wrong Definition of Boxzoom END ENDCASE boxzoom 0 floor boxzoom 0 boxzoom 1 ceil boxzoom 1 boxzoom 2 floor boxzoom 2 boxzoom 3 ceil boxzoom 3 if n_elements boxzoom GE 5 then begin boxzoom 4 floor boxzoom 4 boxzoom 5 ceil boxzoom 5 endif widget_control widget_info id find_by_uname lon1 get_uvalue uvalue strict uvalue strict Longitudes Possible min and max if xtype EQ geographic then BEGIN min floor min glamt glamf max max max ceil max ENDIF ELSE BEGIN min 0 max jpi 1 ENDELSE widgets s id lon1id widget_info id find_by_uname lon1 lon2id widget_info id find_by_uname lon2 Do we have to change the type of x axis: longitude index lonbase widget_info id find_by_uname lonbase widget_control lonbase get_uvalue lonbase_uvalue if lonbase_uvalue name NE xtype then BEGIN widget_control lonbase update 0 We break everything widget_control lon1id destroy widget_control lon2id destroy We reconstruct lon1id cw_slider_pm lonbase value min boxzoom 0 boxzoom 0 keyword_set strict boxzoom 1 boxzoom 0 keyword_set strict widget_control lonbase set_uvalue name:xtype widget_control lonbase update 1 ENDIF ELSE BEGIN The new value they will have cursorvalue1 min boxzoom 0 boxzoom 0 strict boxzoom 1 boxzoom 2 boxzoom 2 keyword_set strict boxzoom 3 boxzoom 2 keyword_set strict widget_control latbase set_uvalue name:ytype widget_control latbase update 1 ENDIF ELSE BEGIN cursorvalue1 min boxzoom 2 boxzoom 2 strict boxzoom 3 indice2 1 if indice1 EQ indice2 then BEGIN if where gdep1 GE boxzoom 4 AND gdep2 LE boxzoom 5 0 EQ 1 then begin indice1 0 indice1 dthlv1_uval grid_t EQ 1 indice2 indice1 endif boxzoom 4 gdep1 indice1 boxzoom 5 boxzoom 4 1 endif Now values and indexes are proprely defined So we can apply them widget_control dthlv1id set_value combobox_select:indice1 widget_control dthlv2id set_value combobox_select:indice2 control mins and maxs of sliders if indice1 EQ 0 then min1 0 ELSE min1 gdep2 indice1 1 max1 min1 1 gdep1 indice2 widget_control depth1id set_value slider_min:min1 slider_max:max1 value:boxzoom 4 min2 gdep2 indice1 if indice2 EQ jpk 1 then BEGIN max2 max gdept gdepw max2 strtrim string max2 format e8 0 1 max2 float 1 strmid max2 1 float max2 ENDIF ELSE max2 gdep1 indice2 1 widget_control depth2id set_value slider_min:min2 slider_max:max2 value:boxzoom 5 return end FUNCTION cw_domain_get_value id compile_opt idl2 strictarrsubs box lonarr 6 possiblecase lon1 lon2 lat1 lat2 depth1 depth2 for i 0 5 do begin widget_control widget_info id find_by_uname possiblecase i get_value value box i value value endfor return box end FUNCTION cw_domain_event event compile_opt idl2 strictarrsubs common help struct event if where tag_names event EQ OUT 0 NE 1 then if event out NE 0 then return 1 widget_control event id get_uvalue uval case uval name of lon1 :widget_control widget_info event handler find_by_uname lon2 set_value slider_min:event value uval strict lon2 :widget_control widget_info event handler find_by_uname lon1 set_value slider_max:event value uval strict lat1 :widget_control widget_info event handler find_by_uname lat2 set_value slider_min:event value uval strict lat2 :widget_control widget_info event handler find_by_uname lat1 set_value slider_max:event value uval strict unzoom :BEGIN id widget_info event handler find_by_uname lon1 widget_control id get_value value widget_control id set_value slider_min:value slider_min_max 0 widget_control id set_value value slider_min_max 0 id widget_info event handler find_by_uname lat1 widget_control id get_value value widget_control id set_value slider_min:value slider_min_max 0 widget_control id set_value value slider_min_max 0 id widget_info event handler find_by_uname lon2 widget_control id get_value value widget_control id set_value slider_max:value slider_min_max 1 widget_control id set_value value slider_min_max 1 id widget_info event handler find_by_uname lat2 widget_control id get_value value widget_control id set_value slider_max:value slider_min_max 1 widget_control id set_value value slider_min_max 1 END dthlv1 :BEGIN ids depth1id widget_info event handler find_by_uname depth1 depth2id widget_info event handler find_by_uname depth2 dthlv2id widget_info event handler find_by_uname dthlv2 Do we have to change dthlv2 widget_control event id get_value dthlv1_value gdep1 fix dthlv1_value combobox_value widget_control dthlv2id get_value dthlv2_value gdep2 fix dthlv2_value combobox_value if dthlv2_value combobox_index LT event index then BEGIN We redefine the dthlv2id s value widget_control dthlv2id set_value combobox_select:event index So we redefine the value and the max of the slider 2 if event index EQ jpk 1 then BEGIN max max gdept gdepw max strtrim string max format e8 0 1 max float 1 strmid max 1 float max ENDIF ELSE max gdep2 event index 1 1 widget_control depth2id set_value slider_max:max value:gdep2 event index So we redefine the max of the slider 1 widget_control depth1id set_value slider_max:gdep1 event index END We redefine the value and the min of the slider depth1 if event index EQ 0 then min 0 ELSE min gdep1 event index 1 1 widget_control depth1id set_value slider_min:min value:gdep1 event index S we change the value of the min of the slider depth 2 widget_control depth2id set_value slider_min:gdep1 event index 1 END dthlv2 :BEGIN ids depth1id widget_info event handler find_by_uname depth1 depth2id widget_info event handler find_by_uname depth2 dthlv1id widget_info event handler find_by_uname dthlv1 Do we have to change dthlv1 widget_control dthlv1id get_value dthlv1_value gdep1 fix dthlv1_value combobox_value widget_control event id get_value dthlv2_value gdep2 fix dthlv2_value combobox_value if dthlv1_value combobox_index GT event index then BEGIN We redfine the value of dthlv1id widget_control dthlv1id set_value combobox_select:event index So we redefine the value and the min of the slider 1 if event index EQ 0 then min 0 ELSE min gdep2 event index 1 widget_control depth1id set_value slider_min:min value:gdep1 event index Se we redefine the min of the slider 2 widget_control depth2id set_value slider_min:gdep2 event index END We redefine the value and the max of the slider depth 2 if event index EQ jpk 1 then BEGIN max max gdept gdepw max strtrim string max format e8 0 1 max float 1 strmid max 1 float max ENDIF ELSE max gdep2 event index 1 1 widget_control depth2id set_value slider_max:max value:gdep2 event index So we change the value of the max of the slider depth 1 widget_control depth1id set_value slider_max:gdep2 event index 1 END depth1 :BEGIN ids depth2id widget_info event handler find_by_uname depth2 dthlv1id widget_info event handler find_by_uname dthlv1 Do we have to change dthlv1 widget_control dthlv1id get_value dthlv1_value gdep1 fix dthlv1_value combobox_value rien where gdep1 LT event value indice indice indice indice 1 if indice NE dthlv2_value combobox_index then begin We change the min of depth1 widget_control depth1id set_value slider_max:gdep2 indice 1 We redefine the value of dthlv2id widget_control dthlv2id set_value combobox_select:indice So we redefine the min of the slider 2 if indice EQ jpk 1 then BEGIN max max gdept gdepw max strtrim string max format e8 0 1 max float 1 strmid max 1 float max ENDIF ELSE max gdep2 indice 1 1 widget_control event id set_value slider_max:max endif END ELSE: ENDCASE slidesliceid widget_info event top find_by_uname slide_slice if slidesliceid NE 0 then widget_control slidesliceid set_value 1 return ID:event handler TOP:event top HANDLER:0L BOX:cw_domain_get_value event handler end file_comments categories param PARENT in required The widget ID of the parent widget keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword STRICT keyword UNZOOM keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: cw_domain pro 150 2006 08 09 10:12:54Z navarro todo seb: Documenter FUNCTION cw_domain parent BOXZOOM boxzoom STRICT strict UVALUE uvalue UNAME uname UNZOOM unzoom _extra ex compile_opt idl2 strictarrsubs cm_4mesh cm_4data Definition of the boxzoom Case N_Elements Boxzoom OF 0:boxzoom lon1 lon2 lat1 lat2 min gdepw 0 gdept 0 max gdepw 0 gdept 0 1:boxzoom lon1 lon2 lat1 lat2 0 boxzoom 0 2:boxzoom lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4:boxzoom Boxzoom vert1 vert2 5:boxzoom Boxzoom 0:3 0 Boxzoom 4 6: Else: return report Mauvaise Definition de Boxzoom ENDCASE IF total Boxzoom EQ 0 THEN boxzoom lon1 lon2 lat1 lat2 min gdepw 0 gdept 0 max gdepw 0 gdept 0 boxzoom 0 floor boxzoom 0 boxzoom 1 ceil boxzoom 1 boxzoom 2 floor boxzoom 2 boxzoom 3 ceil boxzoom 3 boxzoom 4 floor boxzoom 4 boxzoom 5 ceil boxzoom 5 if NOT keyword_set uvalue then uvalue if NOT keyword_set uname then uname base widget_base parent row 2 space 0 EVENT_FUNC cw_domain_event FUNC_GET_VALUE cw_domain_get_value PRO_SET_VALUE cw_domain_set_value UVALUE uvalue UNAME uname _extra ex baseh widget_base base column 1 keyword_set unzoom space 0 baseh1 widget_base baseh row 2 space 0 longitude min floor min glamt glamf max max max ceil max IF max min GT 360 AND keyword_set key_periodic THEN max min 360 lonbase widget_base baseh1 column 2 space 0 uname lonbase uvalue name: geographic lon1id cw_slider_pm lonbase value min boxzoom 0 boxzoom 0 keyword_set strict boxzoom 1 boxzoom 0 keyword_set strict latitude min floor min gphit gphif max max max ceil max latbase widget_base baseh1 column 2 space 0 uname latbase uvalue name: geographic lat1id cw_slider_pm latbase value min boxzoom 2 boxzoom 2 keyword_set strict boxzoom 3 boxzoom 2 keyword_set strict unzoom if keyword_set unzoom then rien widget_button baseh value unzoom uvalue name: unzoom xsize 60 ysize 110 depth basez widget_base base column 3 space 0 base_align_center basezdrp widget_base basez row 2 space 0 if strupcase vargrid EQ W then gdep gdepw ELSE gdep gdept gdep1 floor gdep gdep2 ceil gdep same where gdep2 gdep1 EQ 0 if same 0 NE 1 then gdep2 same gdep2 same 1 sgdep1 strtrim gdep1 1 sgdep2 strtrim gdep2 1 dephtid cw_combobox_pm basezdrp value sgdep1 uvalue name: dthlv1 grid_t:strupcase vargrid NE W uname dthlv1 rien where gdep1 LT boxzoom 4 indice1 indice1 indice1 indice2 1 widget_control dephtid set_value combobox_select:indice2 basedepthslid widget_base base column 2 space 0 strminlen max strlen strtrim round gdept gdepw 1 if indice1 EQ 0 then min1 0 ELSE min1 gdep2 indice1 1 max1 min1 1 gdep1 indice2 rien cw_slider_pm basez value min1 boxzoom 4 boxzoom 4 boxzoom 5 max2 uvalue name: depth2 minimum min2 maximum max2 uname depth2 title z2 strminlen strminlen return base end"); 364 a[362] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.html", "cw_droplist_pm.pro", "", " PRO testwid_event event help event STRUCT DroplistId widget_info event top find_by_uname c est lui widget_control event id get_uvalue uval if n_elements uval EQ 0 then return case uval of done :widget_control event top destroy dynamic_resize :BEGIN widget_control event id get_value value widget_control DroplistId set_value dynamic_resize:value END droplist_select :BEGIN widget_control event id get_value value widget_control DroplistId set_value droplist_select:value END value :BEGIN widget_control event id get_value value widget_control DroplistId set_value value END get :BEGIN widget_control DroplistId get_value value help value struct END ELSE: endcase return end PRO testwid _extra ex base widget_base COLUMN print base base nothing widget_label base value beginning of the test nothing cw_droplist_pm base _extra ex uname c est lui uvalue c est lui print cw_droplist_pm ID nothing nothing widget_label base value end of the test nothing widget_text base value 0 uvalue dynamic_resize editable nothing widget_text base value 10 uvalue droplist_select editable nothing widget_text base value 5 uvalue value editable nothing widget_button base value get uvalue get nothing widget_button base value done uvalue done widget_control base REALIZE xmanager testwid base return end PRO cw_droplist_pm_set_value id value compile_opt idl2 strictarrsubs DroplistId widget_info id find_by_uname Droplist if size value type eq 8 then BEGIN this is a structure tagnames tag_names value for tag 0 n_tags value 1 do begin case strtrim strlowcase tagnames tag 2 of dynamic_resize :widget_control DroplistId dynamic_resize value dynamic_resize droplist_select :widget_control DroplistId set_droplist_select value droplist_select value :widget_control DroplistId set_value value value ELSE:ras report mauvais nom de l argument de la structure ds cw_droplist_pm_set_value endcase endfor ENDIF ELSE widget_control DroplistId set_value value return end FUNCTION cw_droplist_pm_get_value id compile_opt idl2 strictarrsubs DroplistId widget_info id find_by_uname Droplist return droplist_number:widget_info DroplistId droplist_number droplist_select:widget_info DroplistId droplist_select dynamic_resize:widget_info DroplistId dynamic_resize end FUNCTION cw_droplist_pm_event event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval if uval EQ Droplist then return CW_DROPLIST_PM ID:event handler TOP:event top HANDLER:0L INDEX:event index OUT:0 DroplistId widget_info event handler find_by_uname Droplist index widget_info DroplistId droplist_select case uval OF plus :BEGIN indexmax widget_info DroplistId droplist_number 1 if index NE indexmax then widget_control DroplistId set_droplist_select index 1 return CW_DROPLIST_PM ID:event handler TOP:event top HANDLER:0L INDEX: index 1 index 1 OUT: long index EQ 0 END endcase end file_comments Like WIDGET_DROPLIST but here their are 2 buttons and to move the widget from 1 categories compound widget param PARENT in required The widget ID of the parent widget keyword COLUMN Buttons will be arranged in the number of columns specified by this keyword keyword ROW Buttons will be arranged in the number of rows specified by this keyword keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword _EXTRA Used to pass your keywords returns The returned value of this function is the widget ID of the newly created animation widget restrictions Widget Events Returned by Droplist Widgets Pressing the mouse button while the mouse cursor is over an element of a droplist widget causes the widget to change the label on the droplist button and to generate an event The appearance of any previously selected element is restored to normal at the same time The event structure returned by the WIDGET_EVENT function is defined by the following statement: CW_DROPLIST_PM ID:0L TOP:0L HANDLER:0L INDEX:0L OUT:0 The first three fields are the standard fields found in every widget event INDEX returns the index of the selected item This can be used to index the array of names originally used to set the widget s value OUT:It is an integer which can take 3 values: 1 : If we press when the index is already at the max Comment: In this case the index stay at the max 1: If we press when the index is already at the min Comment: In this case the index stay at the min 0 : In other cases Keywords to WIDGET_CONTROL A number of keywords to the WIDGET_CONTROL procedure affect the behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE 1 GET_VALUE widget_control wid_id get_value resultat Send back in the result variable a structure of 3 elements whose names are inspired by keywords we can pass at widget_control when we use WIDGET_COMBOBOX: DROPLIST_NUMBER: the number of elements currently contained in the specified droplist widget DROPLIST_SELECT: the zero based number of the currently selected element i e the currently displayed element in the specified droplist widget DYNAMIC_RESIZE: a True value 1 if the widget specified by Widget_ID is a button droplist or label widget that has had its DYNAMIC_RESIZE attribute set Otherwise False 0 is returned 2 SET_VALUE widget_control wid_id set_value impose permet de modifier l etat de la droplist comme on peut le faire pour WIDGET_DROPLIST Impose peut etre: a The contents of the list widget string or string array b A structure which can have for elements from 1 to 3 : DYNAMIC_RESIZE:Set this keyword to activate if set to 1 or deactivate if set to 0 dynamic resizing of the specified CW_DROPLIST_PM widget see the documentation for the DYNAMIC_RESIZE keyword to WIDGET_DROPLIST procedure for more information about dynamic widget resizing DROPLIST_SELECT:Set this keyword to return the zero based number of the currently selected element i e the currently displayed element in the specified droplist widget VALUE: The contents of the list widget string or string array examples See the program provided above testwid and the associated procedure testwid_event history Sebastien Masson smasson lodyc jussieu fr 6 9 1999 version Id: cw_droplist_pm pro 150 2006 08 09 10:12:54Z navarro FUNCTION cw_droplist_pm parent UVALUE uvalue UNAME uname ROW row COLUMN column _extra ex compile_opt idl2 strictarrsubs IF N_PARAMS NE 1 THEN MESSAGE Incorrect number of arguments ON_ERROR 2 return to caller cheking for row and column keywords row keyword_set row 1 keyword_set column column keyword_set column 1 keyword_set row keyword_set column EQ row if NOT keyword_set uvalue then uvalue if NOT keyword_set uname then uname base widget_base parent space 1 xpad 1 ypad 1 ROW row COLUMN column EVENT_FUNC cw_droplist_pm_event FUNC_GET_VALUE cw_droplist_pm_get_value PRO_SET_VALUE cw_droplist_pm_set_value UVALUE uvalue UNAME uname _extra ex if keyword_set row THEN nothing widget_button base value uvalue minus nothing widget_droplist base UVALUE Droplist UNAME Droplist _extra ex if keyword_set column then begin base1 widget_base base row align_center space 1 xpad 1 ypad 1 nothing widget_button base1 value uvalue minus xsize 20 ysize 20 nothing widget_button base1 value uvalue plus xsize 20 ysize 20 ENDIF ELSE nothing widget_button base value uvalue plus widget_control base realize return base end"); 365 a[363] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.html", "cw_pagelayout.pro", "", " FUNCTION cw_pagelayout_event event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval widget_control event top get_uvalue top_uvalue smallin extractatt top_uvalue smallin numdessinin smallin 2 1 smallout extractatt top_uvalue smallout if uval name EQ undo then begin return ID:event handler TOP:event top HANDLER:0L ENDIF ELSE BEGIN common If we do not change the number of columns we send if uval name EQ column then if event index 1 EQ smallin 0 THEN return ID:event handler TOP:event top HANDLER:0L If we do not change the number of lines we send if uval name EQ row then if event index 1 EQ smallin 1 THEN return ID:event handler TOP:event top HANDLER:0L We erase the page graphid widget_info event top find_by_uname graph graphid extractatt top_uvalue graphid widget_control graphid get_value win wset win erase 255 case uval name of clear : column :BEGIN smallin event index 1 smallin 1 1 smallout event index 1 smallout 1 1 END row :BEGIN smallin smallin 0 event index 1 1 smallout smallout 0 event index 1 1 END endcase nbredessin smallin 0 smallin 1 We put all back to 0 for postscripts createhistory event top smallin options extractatt top_uvalue options flags extractatt top_uvalue optionsflag flag flags numdessinin update and reset all values of the top_uvalue top_uvalue 1 findline top_uvalue smallin smallin top_uvalue 1 findline top_uvalue smallout smallout top_uvalue 1 findline top_uvalue penvs replicate p nbredessin top_uvalue 1 findline top_uvalue xenvs replicate x nbredessin top_uvalue 1 findline top_uvalue yenvs replicate y nbredessin top_uvalue 1 findline top_uvalue nameprocedures strarr nbredessin top_uvalue 1 findline top_uvalue types strarr nbredessin top_uvalue 1 findline top_uvalue varinfo strarr 2 nbredessin top_uvalue 1 findline top_uvalue domaines fltarr 6 nbredessin top_uvalue 1 findline top_uvalue dates lonarr 2 nbredessin top_uvalue 1 findline top_uvalue txtcmd strarr nbredessin top_uvalue 1 findline top_uvalue optionsflag flag replicate 1 nbredessin ptr_free extractatt top_uvalue exextra top_uvalue 1 findline top_uvalue exextra ptrarr nbredessin allocate_heap top_uvalue 1 findline top_uvalue ENDELSE return ID:event handler TOP:event top HANDLER:0L end file_comments categories param PARENT in required The widget ID of the parent widget param SMALL keyword COLUMN Buttons will be arranged in the number of columns specified by this keyword keyword ROW Buttons will be arranged in the number of rows specified by this keyword keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: cw_pagelayout pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter FUNCTION cw_pagelayout parent small UVALUE uvalue UNAME uname UNZOOM unzoom COLUMN column ROW row _extra ex compile_opt idl2 strictarrsubs row keyword_set row 1 keyword_set column if NOT keyword_set uvalue then uvalue if NOT keyword_set uname then uname base widget_base parent EVENT_FUNC cw_pagelayout_event FUNC_GET_VALUE cw_pagelayout_get_value PRO_SET_VALUE cw_pagelayout_set_value UVALUE uvalue UNAME uname space 0 _extra ex IF n_elements small eq 0 then small 1 1 1 dummy widget_label base value cln yoffset 3 id widget_combobox base value strtrim indgen 9 1 1 uvalue name: column uname column xoffset 20 xsize 40 widget_control id set_combobox_select small 0 1 IF keyword_set row THEN BEGIN xoff 60 yoff 0 ENDIF ELSE BEGIN xoff 0 yoff 20 ENDELSE dummy widget_label base value row xoffset xoff yoffset yoff 3 id widget_combobox base value strtrim indgen 9 1 1 uvalue name: row uname row xoffset xoff 20 xsize 40 yoffset yoff widget_control id set_combobox_select small 1 1 return base end "); 366 a[364] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.html", "cw_slide_slice.pro", "", "pro cw_slide_slice_set_value id value compile_opt idl2 strictarrsubs common topid findtopid id domainid widget_info topid find_by_uname domain widget_control domainid get_value boxzoom if boxzoom 1 boxzoom 0 LT boxzoom 3 boxzoom 2 then type y ELSE type x thickid widget_info topid find_by_uname thickness widget_control thickid get_uvalue thicknessuval widget_control thickid get_value thickness thickness thicknessuval choix thickness droplist_select sliderid widget_info topid find_by_uname slider if type EQ y then BEGIN mini floor min glamt glamf max maxi maxi ceil maxi thickness widget_control sliderid set_value slider_min:mini slider_max:maxi value:boxzoom 0 maxi value mini boxzoom 0 maxi value mini boxzoom 2 maxi column uname slider uvalue name: slider ENDELSE index where thicknessval EQ thickness index index 0 if index EQ 1 then BEGIN index 20 thicknessval 20 strtrim thickness 1 widget_control droplistid set_value thicknessval widget_control droplistid set_uvalue name: thickness choix:thicknessval endif widget_control droplistid set_value droplist_select:index if type EQ xt then begin mini floor min glamt glamf max maxi maxi ceil maxi ENDIF ELSE BEGIN mini floor min gphit gphif max maxi maxi ceil maxi ENDELSE return base end"); 367 a[365] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.html", "cw_slider_pm.pro", "", " PRO testwid_event event help event STRUCT SliderBarId widget_info event top find_by_uname c est lui widget_control event id get_uvalue uval if n_elements uval EQ 0 then return case uval of done :widget_control event top destroy slider_min :BEGIN widget_control event id get_value value widget_control SliderBarId set_value slider_min:value END slider_max :BEGIN widget_control event id get_value value widget_control SliderBarId set_value slider_max:value END slider_value :BEGIN widget_control event id get_value value widget_control SliderBarId set_value value END get :BEGIN widget_control SliderBarId get_value value help value struct print value slider_min_max END ELSE: endcase return end PRO testwid _extra ex base widget_base COLUMN print base base nothing widget_label base value beginning of the test nothing cw_slider_pm base _extra ex uname c est lui uvalue c est lui print cw_slider_pm ID nothing nothing widget_label base value end of the test nothing widget_text base value 0 uvalue slider_min editable nothing widget_text base value 10 uvalue slider_max editable nothing widget_text base value 5 uvalue slider_value editable nothing widget_button base value get uvalue get nothing widget_button base value done uvalue done widget_control base REALIZE xmanager testwid base return end FUNCTION decvalue value compile_opt idl2 strictarrsubs a float value 0 return strtrim string floor a 0 1 indgen 10 format f15 1 2 end FUNCTION decind value compile_opt idl2 strictarrsubs a float value 0 return round 10 a floor a computation accuracy end PRO cw_slider_pm_set_value id value compile_opt idl2 strictarrsubs sbid widget_info id find_by_uname SliderBar dcid widget_info id find_by_uname decimal minmax widget_info sbid SLIDER_MIN_MAX if size value type eq 8 then BEGIN this is a structure tagnames tag_names value for tag 0 n_tags value 1 do begin case strtrim strlowcase tagnames tag 2 of slider_min :BEGIN IF float value slider_min 0 LT minmax 1 THEN BEGIN minmax 0 value slider_min 0 widget_control sbid set_slider_min floor float value slider_min 0 valuedc float widget_info dcid combobox_gettext IF valuedc LT value slider_min THEN BEGIN widget_control sbid set_value floor float value slider_min 0 widget_control dcid set_value decvalue value slider_min widget_control dcid set_combobox_select decind value slider_min ENDIF ENDIF end slider_max :BEGIN IF float value slider_max 0 GT minmax 0 THEN BEGIN minmax 1 value slider_max 0 widget_control sbid set_slider_max ceil float value slider_max 0 valuedc float widget_info dcid combobox_gettext IF valuedc GT value slider_max THEN BEGIN widget_control sbid set_value ceil float value slider_max 0 widget_control dcid set_value decvalue value slider_max widget_control dcid set_combobox_select decind value slider_max ENDIF ENDIF end value :IF float value value 0 GE minmax 0 AND float value value 0 LE minmax 1 THEN value2 float value value 0 ELSE:ras report wrong tag name in argument value of cw_slider_pm_set_value endcase endfor ENDIF ELSE BEGIN IF float value 0 GE minmax 0 AND float value 0 LE minmax 1 THEN value2 float value 0 ENDELSE IF n_elements value2 NE 0 THEN BEGIN widget_control sbid set_value fix value2 widget_control dcid set_value decvalue value2 widget_control dcid set_combobox_select decind value2 ENDIF return end FUNCTION cw_slider_pm_get_value id compile_opt idl2 strictarrsubs sbid widget_info id find_by_uname SliderBar dcid widget_info id find_by_uname decimal minmax widget_info sbid SLIDER_MIN_MAX value float widget_info dcid combobox_gettext return value:value slider_min_max:minmax end FUNCTION cw_slider_pm_event event compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval sbid widget_info event handler find_by_uname SliderBar dcid widget_info event handler find_by_uname decimal minmax widget_info sbid SLIDER_MIN_MAX IF uval EQ decimal THEN value float event str ELSE value float widget_info dcid combobox_gettext out 0 defaut case case uval OF plus : if value 1 LE minmax 1 then value2 value 1 ELSE out 1 minus :if value 1 GE minmax 0 then value2 value 1 ELSE out 1 SliderBar :if event value value floor value LE minmax 1 THEN value2 event value value floor value decimal :BEGIN CASE 1 OF value GT minmax 1 : value2 minmax 1 value LT minmax 0 : value2 minmax 0 ELSE: ENDCASE END ELSE: ENDCASE IF n_elements value2 NE 0 THEN BEGIN value value2 widget_control sbid set_value floor value widget_control dcid set_value decvalue value widget_control dcid set_combobox_select decind value ENDIF return CW_SLIDER_PM ID:event handler TOP:event top HANDLER:0L VALUE:value OUT:OUT end file_comments Like WIDGET_SLIDER but here their are 2 buttons and to move the widget from 1 categories compound widget param PARENT in required The widget ID of the parent widget keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword VALUE keyword MAXIMUM keyword MINIMUM keyword STRMINLEN keyword _EXTRA Used to pass your keywords returns The returned value of this function is the widget ID of the newly created animation widget restrictions Widget Events Returned by the CW_SLIDER_PM Widget Slider widgets generate events when the mouse is used to change their value The event structure returned by the WIDGET_EVENT function is defined by the following statement: CW_SLIDER_PM ID:0L TOP:0L HANDLER:0L VALUE:0L DRAG:0 OUT:0 ID is the widget ID of the button generating the event TOP is the widget ID of the top level widget containing ID HANDLER contains the widget ID of the widget associated with the handler routine VALUE returns the new value of the slider DRAG returns integer 1 if the slider event was generated as part of a drag operation or zero if the event was generated when the user had finished positioning the slider Note that the slider widget only generates events during the drag operation if the DRAG keyword is set and if the application is running under Motif When the DRAG keyword is set the DRAG field can be used to avoid computationally expensive operations until the user releases the slider OUT:It is an integer which can take 3 values: 1 : If we press when the index is already at the max Comment: In this case the index stay at the max 1: If we press when the index is already at the min Comment: In this case the index stay at the min 0 : In other cases Keywords to WIDGET_CONTROL A number of keywords to the WIDGET_CONTROL procedure affect the behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE 1 GET_VALUE widget_control wid_id get_value resultat retourne ds la variable resultat une structure de 2 elements dont les noms sont inspires des mots cles que l on peut passer a widget_control qd on utilise WIDGET_SLIDER: VALUE:the value setting of the widget SLIDER_MIN_MAX: a 2 elements array: The minimum and the maximum value of the range encompassed by the slider 2 SET_VALUE widget_control wid_id set_value impose Allows to modify the state of the combobox like we can do it for WIDGET_COMBOBOX May impose: a un entier: donne la nouvelle position of the slider b A structure which can have for elements from 1 to 3 : VALUE: an integer which give the new position of the slider SLIDER_MIN:Set to a new minimum value for the specified slider widget SLIDER_MAX:Set to a new minimum value for the specified slider widget examples See the program provided above testwid and the associated procedure testwid_event history Sebastien Masson smasson lodyc jussieu fr 5 9 1999 version Id: cw_slider_pm pro 150 2006 08 09 10:12:54Z navarro todo seb: documenter FUNCTION cw_slider_pm parent MAXIMUM maximum MINIMUM minimum STRMINLEN strminlen VALUE value UVALUE uvalue UNAME uname title title _extra ex compile_opt idl2 strictarrsubs IF N_PARAMS NE 1 THEN MESSAGE Incorrect number of arguments ON_ERROR 2 return to caller if n_elements minimum NE 0 then minimum floor minimum ELSE minimum 0 if n_elements maximum NE 0 then maximum ceil maximum ELSE maximum 100 if NOT keyword_set title then title cheking exclusive keywords column keyword_set column 1 keyword_set row keyword_set vertical xsize lenstr max strlen strtrim minimum maximum 1 if keyword_set strminlen then lenstr strminlen lenstr xsize 35 mlen lenstr 1 3 lenstr lt 4 xsize 35 mlen lenstr 2 dummyid widget_combobox base value decvalue minimum UVALUE decimal UNAME decimal xoffset xoff yoffset 2 xsize xsize dummyid widget_slider base MAXIMUM maximum MINIMUM minimum UVALUE SliderBar UNAME SliderBar suppress_value drag yoffset 30 xsize xoff xsize if keyword_set value then cw_slider_pm_set_value base value return base end"); 368 a[366] = new Array("./ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.html", "cw_specifie.pro", "", " PRO cw_specifie_set_value id value compile_opt idl2 strictarrsubs cm_general if size value type NE 8 then return widget_control widget_info id find_by_uname min set_value strtrim value min 2 widget_control widget_info id find_by_uname max set_value strtrim value max 2 widget_control widget_info id find_by_uname int set_value strtrim value inter 2 widget_control widget_info id find_by_uname palnum set_value strtrim value lct 2 autres extractstru value min max inter lct nothing xindex yindex if size autres type EQ 8 then BEGIN autresid widget_info id find_by_uname autres widget_control widget_info id find_by_uname autres get_value autresautres autresautres autresautres 0 if strtrim autresautres 2 NE then begin autresautres createfunc get_extra autresautres filename myuniquetmpdir for_createfunc pro autres mixstru autres autresautres endif autres strkeywd autres widget_control widget_info id find_by_uname autres set_value autres endif return end FUNCTION cw_specifie_get_value id compile_opt idl2 strictarrsubs cm_general widget_control widget_info id find_by_uname min get_value min min float min 0 widget_control widget_info id find_by_uname max get_value max max float max 0 widget_control widget_info id find_by_uname int get_value int int float int 0 widget_control widget_info id find_by_uname palnum get_value palnum palnum long palnum 0 widget_control widget_info id find_by_uname autres get_value autres autres autres 0 exextra min:min max:max inter:int lct:palnum if strtrim autres 2 NE then exextra createfunc get_extra autres _extra exextra kwdlist exextra exextra exextra exextra filename myuniquetmpdir for_createfunc pro return exextra end FUNCTION cw_specifie_event event on recuper les ID des differents widgets compile_opt idl2 strictarrsubs widget_control event id get_uvalue uval widget_control event top get_uvalue top_uvalue smallin extractatt top_uvalue smallin numdessinin smallin 2 1 smallout extractatt top_uvalue smallout numdessinout smallout 2 1 case uval of default :BEGIN We find the name of the variable: vlstid widget_info event top find_by_uname varlist fieldname widget_info vlstid combobox_gettext exextra definedefaultextra fieldname widget_control widget_info event handler find_by_uname min set_value strtrim exextra min 1 widget_control widget_info event handler find_by_uname max set_value strtrim exextra max 1 widget_control widget_info event handler find_by_uname int set_value strtrim exextra inter 1 widget_control widget_info event handler find_by_uname palnum set_value strtrim exextra lct 1 widget_control widget_info event handler find_by_uname autres set_value END palcol :BEGIN ind fix strmid event value 0 strpos event value widget_control widget_info event handler find_by_uname palnum set_value strtrim ind 1 END ELSE: endcase return ID:event handler TOP:event top HANDLER:0L OK:uval EQ ok end file_comments categories param PARENT in required The widget ID of the parent widget keyword COLUMN Buttons will be arranged in the number of columns specified by this keyword keyword ROW Buttons will be arranged in the number of rows specified by this keyword keyword UVALUE The user value to be associated with the widget keyword UNAME The user name to be associated with the widget keyword FRAME keyword FORXXX keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version ID todo seb: documenter FUNCTION cw_specifie parent ROW row COLUMN column UVALUE uvalue UNAME uname FRAME frame FORXXX forxxx _extra ex cheking exclusive keywords compile_opt idl2 strictarrsubs column keyword_set column 1 keyword_set row row keyword_set row 1 keyword_set column keyword_set row EQ column if NOT keyword_set uvalue then uvalue if NOT keyword_set uname then uname base widget_base parent space 0 frame EVENT_FUNC cw_specifie_event FUNC_GET_VALUE cw_specifie_get_value PRO_SET_VALUE cw_specifie_set_value UVALUE uvalue UNAME uname _extra ex base1 base1 widget_base base rien widget_label base1 value Min xoffset 85 yoffset 15 rien widget_label base1 value Max xoffset 145 yoffset 15 rien widget_label base1 value Int xoffset 210 yoffset 15 lct get_name nomcouleur nbrligne 30 nbrlist n_elements nomcouleur nbrligne nomcouleur strtrim sindgen n_elements nomcouleur 1 nomcouleur nomcouleur 0 nomcouleur nomcouleur 1 Color nomcouleur if nbrlist GT 1 then for i 1 nbrlist do nomcouleur nomcouleur 0:nbrligne i 1 i 1 nomcouleur nbrligne i i:n_elements nomcouleur 1 rien cw_pdmenu base1 nomcouleur RETURN_NAME uvalue palcol uname palcol xoffset 250 yoffset 0 base2 base2 widget_base base column 4 keyword_set forxxx yoffset 30 if keyword_set forxxx then rien widget_button base2 value Default uvalue default frame tooltip see find definedefaultextra 0 rien widget_text base2 value editable xsize 7 uname min uvalue min rien widget_text base2 value editable xsize 7 uname max uvalue max rien widget_text base2 value editable xsize 7 uname int uvalue int if keyword_set forxxx then colvalue ELSE colvalue 39 rien widget_text base2 value colvalue editable xsize 2 uname palnum uvalue palnum widget text containig other keywords pass into top_uvalue exextra Does it remain some If yes we have to put them as string rien widget_text base value editable uname autres uvalue autres xsize 54 ysize 3 yoffset 65 wrap no_newline if keyword_set forxxx then cw_specifie_set_value base definedefaultextra rien_du_tout return base end "); 369 a[367] = new Array("./ToBeReviewed/WIDGET/findtopid.html", "findtopid.pro", "", " file_comments Find from an Id of widget the Id of the widget which is the top level base i e it has no parent categories widget param WIDGET_ID This argument should be the widget ID of the widget for which information is desired returns The Id of the widget which is the top level base history Sebastien Masson smasson lodyc jussieu fr 22 9 1999 version Id: findtopid pro 150 2006 08 09 10:12:54Z navarro FUNCTION findtopid WIDGET_ID compile_opt idl2 strictarrsubs id long WIDGET_ID exist widget_info id managed if exist EQ 0 then return 1 topid id topid2 id while topid2 NE 0 do begin topid topid2 topid2 widget_info topid2 parent endwhile return long topid end"); 370 a[368] = new Array("./ToBeReviewed/WIDGET/slec.html", "slec.pro", "", " file_comments categories param NAME param DEBUT param FIN param NOMEXP keyword PARENT in required The widget ID of the parent widget keyword BOXZOOM Vector indicating the geographic zone on which we want to cut the map If BOXZOOM has : 1 element : The extraction is made on lon1 lon2 lat1 lat2 0 boxzoom 0 2 elements: The extraction is made on lon1 lon2 lat1 lat2 boxzoom 0 boxzoom 1 4 elements: The extraction is made on Boxzoom 0 max gdept gdepw 5 elements: The extraction is made on Boxzoom 0:3 0 Boxzoom 4 6 elements: The extraction is made on Boxzoom Where lon1 lon2 lat1 lat2 are global variables defined at the last domdef keyword _EXTRA Used to pass your keywords returns uses restrictions examples history version Id: slec pro 150 2006 08 09 10:12:54Z navarro todo Seb: documenter FUNCTION slec name debut fin nomexp PARENT parent BOXZOOM boxzoom _EXTRA ex include common compile_opt idl2 strictarrsubs cm_4data IF NOT keyword_set key_forgetold THEN BEGIN updatenew updatekwd ENDIF case n_params of 1:tab nlec name PARENT parent BOXZOOM boxzoom _EXTRA ex 2:tab nlec name debut PARENT parent BOXZOOM boxzoom _EXTRA ex 3:tab nlec name debut fin PARENT parent BOXZOOM boxzoom _EXTRA ex 4:tab nlec name debut fin nomexp PARENT parent BOXZOOM boxzoom _EXTRA ex endcase return tab:tab grille:vargrid unite:varunit experience:varexp nom:varname end"); 371 a[369] = new Array("./ToBeReviewed/WIDGET/xnotice.html", "xnotice.pro", "", " file_comments Create a widget with some text at the middle of the window categories Information param TEXT in required it is a string or a vector of string If it is a scalar we look for the line separator C to create a text with several lines keyword CHKWIDGET Force to verify that they are some active widget to create a widget otherwise print at the prompt returns The identity of the created widget restrictions It do not call xmanager It do not create any event We have to delete this widget manuelly: widget_control widgetid destroy examples IDL id xnotice ca marche C ou pas IDL widget_control id destroy history Sebastien Masson smasson lodyc jussieu fr 2000 3 17 version Id: xnotice pro 150 2006 08 09 10:12:54Z navarro FUNCTION xnotice text CHKWIDGET chkwidget We separate the text in different lines separated by C if it is not done yet n est pas deja fait compile_opt idl2 strictarrsubs if n_elements text EQ 1 then text str_sep text C trim if keyword_set chkwidget then makewid widget_info managed 0 ELSE makewid 1 if makewid EQ 0 then BEGIN for i 0 n_elements text 1 do print text i noticebase 0 endif noticebase widget_base column title information align_center screensize get_screen_size widget_control noticebase tlb_set_xoffset screensize 0 2 2 tlb_set_yoffset screensize 1 2 2 nothing widget_label noticebase value for i 0 n_elements text 1 do nothing widget_label noticebase value text i nothing widget_label noticebase value widget_control noticebase realize return noticebase end"); 372 a[370] = new Array("./ToBeReviewed/WIDGET/xquestion.html", "xquestion.pro", "", " pro xquestion_event event compile_opt idl2 strictarrsubs we get the answer widget_control widget_info event top find_by_uname text get_value answer answer answer 0 now we give the answer to xquestion pro by using the pointer uvalue widget_control event top get_uvalue ptranswer ptranswer answer we destroy the widget widget_control event top destroy return end file_comments A small widget who ask a question and give an answer WARNING: For a binary question with yes no answer use DIALOG_MESSAGE categories widget param QUESTION A scalar string or a array of string If this argument is set to : an array of strings: each array element is displayed as a separate line of text a scalar string: we are looking for the separate line character C param PROPOSEDANSWER A string proposing a answer keyword CHKWIDGET Active this keyword if you whant that xquestion check if managed widget are present If not xquestion do not open a widget but print the question in the IDL window keyword _EXTRA Used to pass your keywords returns answer: a string restrictions The function does not return to its caller until the user press Enter key in the widget examples IDL help xquestion Postscript name STRING toto ps history Sebastien Masson smasson lodyc jussieu fr 13 10 1999 version Id: xquestion pro 150 2006 08 09 10:12:54Z navarro FUNCTION xquestion question proposedanswer CHKWIDGET chkwidget _extra ex compile_opt idl2 strictarrsubs is separate line a scalar we must cut it into pieces if n_elements question EQ 1 then question str_sep question C trim is a widget necessary if keyword_set chkwidget then BEGIN if widget_info managed 0 EQ 0 then BEGIN if n_elements proposedanswer EQ 0 then BEGIN proposedanswer answer complete ENDIF ELSE BEGIN answer proposedanswer complete default answer is proposedanswer ENDELSE if n_elements question GT 1 THEN for i 0 n_elements question 2 do print question i read question n_elements question 1 complete answer if keyword_set answer EQ 0 then answer proposedanswer return answer endif endif definition of the widget BaseId widget_base column title Question _extra ex screensize get_screen_size widget_control BaseId tlb_set_xoffset screensize 0 2 2 tlb_set_yoffset screensize 1 2 2 for i 0 n_elements question 1 DO trash widget_label BaseId value question i align_left if n_elements proposedanswer EQ 0 then answer ELSE answer proposedanswer trash widget_text BaseId value answer editable _extra ex uname text trash widget_button BaseId value ok ptranswer ptr_new allocate_heap widget_control BaseId set_uvalue ptranswer we realize the widget and wait for an answer widget_control BaseId realize xmanager xquestion BaseId we get the answer answer ptranswer we freeing the pointer ptr_free ptranswer return answer end"); 373 a[371] = new Array("./ToBeReviewed/WIDGET/xx.html", "xx.pro", "", " file_comments categories keyword JOUR keyword MESHFILENAME keyword LISTVAR keyword LISTGRID keyword FUNCLEC_NAME keyword CALENDAR keyword _EXTRA Used to pass your keywords uses restrictions examples history version Id: xx pro 150 2006 08 09 10:12:54Z navarro todo seb documenter PRO xx JOUR jour MESHFILENAME meshfilename LISTVAR listvar LISTGRID listgrid FUNCLEC_NAME funclec_name CALENDAR calendar _extra ex compile_opt idl2 strictarrsubs common Name of the part to be changed Name of the reading function if NOT keyword_set funclec_name then funclec_name slec varexp INF list of variables if NOT keyword_set listvar then listvar tn sn un vn taux tauy hdep20 hdep28 hdep15 hturb hpycn htoth emp qn qs smltot11 smltot12 smltot13 smltot14 smltot15 smltot16 tmltot11 tmltot12 tmltot13 tmltot14 tmltot15 tmltot16 list of grids to which variables refer to if NOT keyword_set listgrid then BEGIN listgrid replicate T n_elements listvar listgrid 2 4 U listgrid 3 5 V ENDIF calendar to be used in IDL julian days if NOT keyword_set calendar then BEGIN if keyword_set jour then calendar calendriertotem julian_day ELSE calendar calendriertotem julian_day mensuel ENDIF Name of the file refering to the mask if NOT keyword_set meshfilename then meshfilename usr1 com smasson IDL INIT inittotem pro meshparameters whichgrid meshfilename parameters specifing how the field must be read readparameters funclec_name: funclec_name jpidta: jpidta jpjdta: jpjdta jpkdta: jpkdta ixmindta: ixmindta ixmaxdta: ixmaxdta iymindta: iymindta iymaxdta: iymaxdta izmindta: izmindta izmaxdta: izmaxdta End of the part to be change fileparameters filename: many time_counter: calendar listvar: listvar listgrid: strupcase listgrid multistructure fileparameters: temporary fileparameters readparameters: temporary readparameters meshparameters: temporary meshparameters xxx multistructure temporary multistructure _extra ex return end"); 374 a[372] = new Array("./ToBeReviewed/WIDGET/xxx.html", "xxx.pro", "", " PRO xxx_event event compile_opt idl2 strictarrsubs common widget_info event top find_by_uname What is the type of evenment if event id EQ 622 then help event struct widget_control event id get_uvalue uval if tag_names event structure_name 0 EQ WIDGET_TRACKING then uval name: ActiverFenetre if keyword_set uval EQ 0 then return help event struct help uval struct case on the type of evenment widget_control event top get_uvalue top_uvalue If we activate the keyword separate at the call of xxx if size top_uvalue type EQ 3 then begin event top top_uvalue widget_control event top get_uvalue top_uvalue endif we delete the small widget created by notice pro if it exists noticebase extractatt top_uvalue noticebase if noticebase NE 0 then BEGIN widget_control noticebase destroy top_uvalue 1 findline top_uvalue noticebase 0l endif options extractatt top_uvalue options case uval name OF menubar :xxxmenubar_event event ok :nouveaudessin 1 specifie : action : calendar1 :BEGIN date2id widget_info event top find_by_uname calendar2 widget_control date2id get_value date2 if event value GT date2 then widget_control date2id set_value event value END calendar2 :BEGIN date1id widget_info event top find_by_uname calendar1 widget_control date1id get_value date1 if event value LT date1 then widget_control date1id set_value event value END domain : varlist :BEGIN currentfile extractatt top_uvalue currentfile listvar extractatt top_uvalue fileparameters currentfile listvar name listvar event index changefield event top name END txtcmd : filelist :BEGIN changefile event top event index END ActiverFenetre :BEGIN if event enter EQ 1 AND d name NE PS then BEGIN graphid widget_info event top find_by_uname graph graphid extractatt top_uvalue graphid widget_control graphid get_value win wset win widget_control event top get_uvalue top_uvalue numdessinin extractatt top_uvalue smallin 2 1 p extractatt top_uvalue penvs numdessinin x extractatt top_uvalue xenvs numdessinin y extractatt top_uvalue yenvs numdessinin endif END graph :BEGIN quelclick identifyclick event case quelclick type of inutile :return long :longclickaction event single :singleclickaction event double :doubleclickaction event endcase END endcase if keyword_set nouveaudessin then letsdraw event top return end file_comments A maximum of possibilities with a minimum of clics categories widget param DATAFILENAME param IDLFILE param ARGSPRO keyword SEPARATE To separate the button part and the drawing part in 2 windows Useful for small screens but be careful to do not saturate the video memory of some antiquated Tx keyword RESTORE toto dat or toto dat is a file created at the time of a precedent use of xxx thanks to the command Widget of the menu save as keyword _EXTRA Used to pass your keywords uses common pro history Sebastien Masson smasson lodyc jussieu fr version Id: xxx pro 152 2006 08 10 07:01:35Z smasson todo seb: documenter le reste des keywords PRO xxx datafilename idlfile argspro CALLERWIDID CallerWidId REDRAW redraw SEPARATE separate UVALUE uvalue RESTORE restore _EXTRA ex compile_opt idl2 strictarrsubs all_cm reinitialize the p x y z variables reinitplt we get back the uvalue of the widget that called xxx to create a new widget if keyword_set restore then BEGIN restore isafile filename restore iodir homedir _extra ex if size restore type NE 7 then restore 0 ELSE BEGIN restore isafile file restore iodir homedir _extra ex newgrid extractatt uvalue meshparameters 0 change changegrid newgrid ENDELSE endif if n_elements CallerWidId NE 0 THEN widget_control CallerWidId get_uvalue uvalue ELSE CallerWidId 0 list of files we want to look at if keyword_set uvalue then BEGIN currentfile extractatt uvalue currentfile filelist extractatt uvalue filelist fileparameters extractatt uvalue fileparameters readparameters extractatt uvalue readparameters meshparameters extractatt uvalue meshparameters ENDIF ELSE BEGIN newfile selectfile datafilename idlfile argspro _extra ex if size newfile type NE 8 then return fileparameters ptrarr 1 allocate_heap fileparameters 0 newfile fileparameters readparameters ptrarr 1 allocate_heap readparameters 0 newfile readparameters meshparameters ptrarr 1 allocate_heap meshparameters 0 newfile meshparameters currentfile 0 filelist newfile fileparameters filename ENDELSE if keyword_set uvalue THEN BEGIN smallin extractatt uvalue smallin smallout extractatt uvalue smallout ENDIF ELSE BEGIN smallin 1 1 1 smallout 1 1 1 ENDELSE nbredessin smallin 0 smallin 1 numdessinin smallin 2 1 warning flg definition must be consistent with cw_pdmenu argument see also flag definition in cw_pagelayout if keyword_set uvalue then BEGIN flag extractatt uvalue optionsflag key_portrait flag 0 numdessinin ENDIF ELSE flag key_portrait 0 0 0 0 replicate 1 nbredessin We start the widget definition widget and screen size scrsize get_screen_size 0 95 windsize givewindowsize xxxsize windsize 0 1 keyword_set separate 350 windsize 1 The top base IF xxxsize 0 LE scrsize 0 AND xxxsize 1 LE scrsize 1 THEN BEGIN base widget_base title xxx GROUP_LEADER group tracking_events uname base space 0 ENDIF ELSE BEGIN base widget_base title xxx GROUP_LEADER group tracking_events uname base space 0 xsize xxxsize 0 ysize xxxsize 1 x_scroll_size xxxsize 0 selectact ENDIF ELSE selectfile 0 menu options xoff xoff 110 if keyword_set uvalue then begin options extractatt uvalue options ENDIF ELSE options Portrait Landscape Overlay Vecteur Longitude x index Latitude y index desc 1 File 0 Open 0 New xxx 2 Quit 1 Save as 0 PostScript 0 Animated gif 0 Gif 0 IDL procedure 0 RESTORE kwd of xxx 2 Print to prompt 1 Flag options descsuite options if n_elements descsuite GE 2 then descsuite 0:n_elements descsuite 2 0 descsuite 0:n_elements descsuite 2 descsuite n_elements descsuite 1 2 descsuite n_elements descsuite 1 desc desc descsuite menu cw_pdmenu base desc RETURN_NAME uname menubar uvalue name: menubar xoffset xoff yoffset yoff Ok button yoff yoff 37 xoff 5 boutton OK baseok widget_button base value OK uvalue name: ok uname ok button frame xoffset xoff yoffset yoff Page Layout page layout xoff xoff 65 dummyid cw_pagelayout base smallin row frame xoffset xoff yoffset yoff List of Variables xoff xoff 140 currentlistvar fileparameters currentfile listvar vlstid widget_combobox base value currentlistvar uvalue name: varlist uname varlist xoffset xoff yoffset yoff 1 if keyword_set uvalue then BEGIN selectvar extractatt uvalue varinfo 1 numdessinin selectvar where currentlistvar EQ selectvar 0 widget_control vlstid set_combobox_select 0 selectvar ENDIF ELSE selectvar 0 List of files yoff yoff 35 flstid widget_combobox base value file_basename filelist uname filelist xsize 345 yoffset yoff uvalue name: filelist if keyword_set uvalue then BEGIN selectfile extractatt uvalue varinfo 0 numdessinin selectfile where file_basename filelist EQ selectfile 0 widget_control flstid set_combobox_select 0 selectfile ENDIF ELSE selectfile 0 Text for computation yoff yoff 32 computation done on the files if keyword_set uvalue then txtvalue extractatt uvalue txtcmd numdessinin ELSE txtvalue varexp dummyid widget_text base value txtvalue uvalue name: txtcmd uname txtcmd editable yoffset yoff xsize 54 frame Calendar yoff yoff 40 currentcalendar fileparameters currentfile time_counter key_caltype fileparameters currentfile caltype fakecal fileparameters currentfile fakecal if keyword_set uvalue then begin dates extractatt uvalue dates numdessinin date1 date2jul dates 0 date2 date2jul dates 1 ENDIF basecalid widget_base base column 2 space 0 yoffset yoff uname basecal dummyid cw_calendar basecalid currentcalendar date1 FAKECAL fakecal uname calendar1 uvalue name: calendar1 frame dummyid cw_calendar basecalid currentcalendar date2 FAKECAL fakecal uname calendar2 uvalue name: calendar2 frame Domain yoff yoff 60 vargrid strupcase fileparameters currentfile listgrid selectvar IF vargrid EQ W then zgrid W ELSE zgrid T if keyword_set uvalue then boxzoom extractatt uvalue domaines numdessinin dummyid cw_domain base uname domain uvalue name: domain unzoom frame boxzoom boxzoom yoffset yoff xoffset 15 Plots specifications yoff yoff 230 speid cw_specifie base uname specifie uvalue name: specifie frame column forxxx yoffset yoff if keyword_set uvalue then BEGIN exextra extractatt uvalue exextra numdessinin IF n_elements exextra NE 0 THEN widget_control speid set_value exextra ENDIF drawing part if keyword_set separate then basegraph widget_base title xxx window group_leader base uvalue base ELSE basegraph base graphid widget_draw basegraph uname graph button_events retain 2 uvalue name: graph press:0 click:0 x: 0 0 y: 0 0 xoffset 350 1 keyword_set separate xsize windsize 0 ysize windsize 1 tooltip toto realize the widget widget_control base realize if keyword_set separate then begin widget_control basegraph realize xmanager xxx basegraph no_block endif if keyword_set uvalue then BEGIN We recopy the pointer uvalue in top_uvalue Beware we have to redefine completely top_value from variables pointed by uvalue Otherwise if we simply do top_value uvalue when we delete by uvalue and variables on which it point we also delete variables on which point top_value case 1 of keyword_set redraw :BEGIN top_uvalue uvalue widget_control base set_uvalue top_uvalue we find homedir homedir isadirectory io homedir title Bad definition of homedir We recuperae the list of instructions globalcommand extractatt top_uvalue globalcommand We complete by first and last lines of the program createpro globalcommand filename myuniquetmpdir xxx2ps pro KWDLIST NOERASE noerase POSTSCRIPT postscript PORTRAIT portrait LANDSCAPE landscape noerase END keyword_set restore :begin top_uvalue uvalue widget_control base set_uvalue top_uvalue widget_control graphid get_value win wshow win wset win tv image true widgets s state updatewidget base END ELSE:BEGIN top_uvalue ptrarr 2 29 allocate_heap FOR i 0 28 do top_uvalue 0 i uvalue 0 i FOR i 0 14 do top_uvalue 1 i uvalue 1 i FOR i 18 27 do top_uvalue 1 i uvalue 1 i numfile n_elements extractatt uvalue filelist top_uvalue 1 15 ptrarr numfile allocate_heap top_uvalue 1 16 ptrarr numfile allocate_heap top_uvalue 1 17 ptrarr numfile allocate_heap for i 0 numfile 1 do begin top_uvalue 1 15 i uvalue 1 15 i top_uvalue 1 16 i uvalue 1 16 i top_uvalue 1 17 i uvalue 1 17 i endfor top_uvalue 1 28 ptrarr nbredessin allocate_heap for i 0 nbredessin 1 do top_uvalue 1 28 i uvalue 1 28 i widget_control base set_uvalue top_uvalue Copy the screen of the widget of uvalue in top_value s one if keyword_set CallerWidId then begin widget_control extractatt uvalue graphid get_value win wshow win wset win image tvrd true widget_control graphid get_value win wshow win wset win tv image true ENDIF END endcase top_uvalue 1 findline top_uvalue graphid graphid ENDIF ELSE BEGIN Otherwise we will define all elements we will hook at the widget thanks to the top_value which is a pointer array with 2 columns: names and variables We initialize all these elements Variables concerning the widget in its generality if NOT keyword_set ex then ex nothing:0 variables se rapportant aux differents fichiers que l on peut lire variables specifiques a chaque dessin creation of the pointer we will hook at the widget top_uvalue ptrarr 2 29 allocate_heap variables refering to the widget top_uvalue 0 0 options top_uvalue 1 0 options top_uvalue 0 1 smallin top_uvalue 1 1 smallin top_uvalue 0 2 smallout top_uvalue 1 2 smallout top_uvalue 0 3 graphid top_uvalue 1 3 graphid top_uvalue 0 4 alreadyvector top_uvalue 1 4 1 top_uvalue 0 5 alreadyover top_uvalue 1 5 1 top_uvalue 0 6 alreadyread top_uvalue 1 6 1 top_uvalue 0 7 currentreadcmd top_uvalue 1 7 top_uvalue 0 8 globalcommand top_uvalue 1 8 top_uvalue 0 9 globaloldcommand top_uvalue 1 9 top_uvalue 0 10 no more used top_uvalue 1 10 9999 top_uvalue 0 11 noticebase top_uvalue 1 11 0l top_uvalue 0 12 extra top_uvalue 1 12 ex variables refering to different files we can read top_uvalue 0 13 currentfile top_uvalue 1 13 currentfile top_uvalue 0 14 filelist top_uvalue 1 14 filelist top_uvalue 0 15 fileparameters top_uvalue 1 15 fileparameters top_uvalue 0 16 readparameters top_uvalue 1 16 readparameters top_uvalue 0 17 meshparameters top_uvalue 1 17 meshparameters variables refering to different drawing we can do top_uvalue 0 18 penvs top_uvalue 1 18 replicate p nbredessin top_uvalue 0 19 xenvs top_uvalue 1 19 replicate x nbredessin top_uvalue 0 20 yenvs top_uvalue 1 20 replicate y nbredessin top_uvalue 0 21 nameprocedures top_uvalue 1 21 strarr nbredessin top_uvalue 0 22 types top_uvalue 1 22 strarr nbredessin top_uvalue 0 23 varinfo top_uvalue 1 23 strarr 2 nbredessin top_uvalue 0 24 domaines top_uvalue 1 24 fltarr 6 nbredessin top_uvalue 0 25 dates top_uvalue 1 25 lonarr 2 nbredessin top_uvalue 0 26 txtcmd top_uvalue 1 26 strarr nbredessin top_uvalue 0 27 optionsflag top_uvalue 1 27 flag top_uvalue 0 28 exextra top_uvalue 1 28 ptrarr nbredessin allocate_heap widget_control base set_uvalue top_uvalue createhistory base smallin ENDELSE xmanager xxx base no_block return end"); 375 a[373] = new Array("./Utilities/createfunc.html", "createfunc.pro", "", " file_comments write an IDL function compile it and execute it useful to avoid the use of execute param command in required a scalar string defining the result to be given back by the function see examples keyword FILENAMEIN in default for_createfunc pro name of the function to be created keyword KWDLIST in a vector string to specify a list of keywords that must be included in the function definition Warning: the string must start with a for example: KWDLIST TOTO toto keyword _EXTRA used to pass your keywords to the created function restrictions arguments can be given only through keywords ends the function name with pro if needed examples IDL print createfunc 3 2 filename test IDL print createfunc 3 two filename test IDL kwdlist two two two 2 history Sebastien Masson smasson lodyc jussieu fr May 2005 version Id: createfunc pro 136 2006 07 10 15:20:19Z pinsard FUNCTION createfunc command FILENAMEIN filenamein KWDLIST kwdlist _EXTRA ex compile_opt idl2 hidden strictarrsubs IF n_elements command NE 1 THEN stop define filename if needed if NOT keyword_set filenamein then filename for_createfunc pro ELSE filename filenamein get the name of the function not the name of the file containing the function shortfilename file_basename filename pro check if the directory exists dirname isadirectory file_dirname filename title Redefine shortfilename pro directory IF size dirname type NE 7 THEN return 1 filename dirname shortfilename pro create the file if NOT keyword_set kwdlist then kwdlist kwdlist kwdlist _EXTRA ex IF strmid kwdlist 0 1 NE THEN kwdlist kwdlist putfile filename function shortfilename kwdlist compile_opt idl2 hidden strictarrsubs res command return res end go in dirname directory cd dirname current old_dir compile it resolve_routine shortfilename is_function cd old_dir execute it res call_function shortfilename _EXTRA ex return res end"); 376 a[374] = new Array("./Utilities/createpro.html", "createpro.pro", "", " file_comments write an idl procedure compile it and execute it param command in required a string array defining the procedure to be created each element will be a line of the created procedure keyword FILENAMEIN in default for_createpro pro name of the procedure to be created keyword KWDLIST in a vector string to specify a list of keywords that must be included in the procedure definition Warning: the string must start with a for example: KWDLIST TOTO toto keyword KWDUSED obsolete please pass directly your keywords through _EXTRA keyword _EXTRA used to pass your keywords to the created procedure restrictions is not working with functions use createfunc instead arguments can be given only through keywords ends the procedure name with pro if needed examples IDL createpro print OK filename test IDL createpro if keyword_set ok then print OK else print No IDL filename test kwdlist ok ok IDL createpro if keyword_set ok then print OK else print No IDL filename test kwdlist ok ok ok history Sebastien Masson smasson lodyc jussieu fr cleaning new keywords: October 2005 Feb 2006: supress keyword kwdused and use call_procedure instead of execute version Id: createpro pro 136 2006 07 10 15:20:19Z pinsard PRO createpro command FILENAMEIN filenamein KWDLIST kwdlist KWDUSED kwdused _EXTRA ex compile_opt idl2 hidden strictarrsubs IF keyword_set kwdused THEN BEGIN dummy report keyword KWDUSED has been suppressed please pass directly your keywords through _extra see examples in createpro header return ENDIF define filename if needed if NOT keyword_set filenamein then filename for_createpro pro ELSE filename filenamein get the name of the procedure not the name of the file containing the procedure shortfilename file_basename filename pro check if the directory exists dirname isadirectory file_dirname filename title Redefine shortfilename pro directory IF size dirname type NE 7 THEN return filename dirname shortfilename pro create the file if NOT keyword_set kwdlist then kwdlist kwdlist kwdlist _extra ex kwdlist strtrim kwdlist 2 IF strmid kwdlist 0 1 NE THEN kwdlist kwdlist for i 0 n_elements command 1 do print command i putfile filename pro shortfilename kwdlist compile_opt idl2 hidden strictarrsubs command return end go in dirname directory cd dirname current old_dir compile it resolve_routine shortfilename cd old_dir execute it call_procedure shortfilename _extra ex return end"); 377 a[375] = new Array("./Utilities/def_myuniquetmpdir.html", "def_myuniquetmpdir.pro", "", " file_comments if needed define and create myuniquetmpdir common variable from cm_general and add it to path categories utilities examples IDL def_myuniquetmpdir uses cm_general history Sebastien Masson smasson lodyc jussieu fr June 2005 version Id: def_myuniquetmpdir pro 128 2006 07 06 14:32:02Z pinsard PRO def_myuniquetmpdir compile_opt idl2 strictarrsubs cm_general IF n_elements myuniquetmpdir EQ 0 THEN BEGIN define a new and unique directory in getenv IDL_TMPDIR by using systime 1 look for the login if we use unix system IF d name EQ X THEN spawn whoami login noshell ELSE login idl myuniquetmpdir file_search getenv IDL_TMPDIR mark_directory myuniquetmpdir myuniquetmpdir 0 login 0 strtrim long systime 1 1 create it file_mkdir myuniquetmpdir add it to path path path : expand_path myuniquetmpdir ENDIF return end"); 378 a[376] = new Array("./Utilities/demomode_compatibility.html", "demomode_compatibility.pro", "", " categories utilities uses cm_general version Id: demomode_compatibility pro 128 2006 07 06 14:32:02Z pinsard PRO demomode_compatibility compile_opt idl2 strictarrsubs cm_general 1 remove all cm_demomode_used pro found in path to_rm find cm_demomode_used IF to_rm 0 NE NOT FOUND THEN file_delete to_rm 2 copy oldcm_full _empty to myuniquetmpdir oldcm_used pro select which file should be copied to oldcm_used pro IF lmgr demo EQ 1 THEN BEGIN democm find cm_demomode file_copy democm myuniquetmpdir cm_demomode_used pro overwrite ENDIF ELSE BEGIN create an empty file close the journal if already open IF journal NE 0 THEN journal open a new one journal myuniquetmpdir cm_demomode_used pro close it it will be empty journal ENDELSE return END"); 379 a[377] = new Array("./Utilities/find.html", "find.pro", "", " file_comments based on file_search but it is possible to specify a set of possibles names and a different set of possibles directories names By default look for files included in path all file_search keywords can be used categories find a file param filein in required A scalar or array variable of string type containing file names to match Input names specifications may contain wildcard characters enabling them to match multiple files see file_search for more informations By default and if necessary find is looking for filename and also for filename completed with pro keyword FIRSTFOUND activate this keyword to stop looking for the file as soon as we found one keyword IODIRECTORY default path A scalar or array variable of string type containing directories names where we are looking for the file Different directories can be separated by path_sep search_path : on unix type machine as it is done to define path Note that if filename s dirname is different from this keyword is not taken into account keyword LOOKALLDIR activate to look for the file with a recursive search if needed in iodir homedir path the DATA:TestsData directory if it exists keyword NOPRO activate to avoid the automatic search of filename completed with pro keyword ONLYPRO force to look only at file ending with pro keyword ONLYNC force to look only at file ending with nc keyword RECURSIVE performs recursive searching of directory hierarchies In a recursive search find looks recursively for any and all subdirectories in the file hierarchy rooted at the IODIRECTORY argument keyword REPERTOIRE obsolete keep for compatibility use directory keyword keyword UNIQUE activate to make sure that each element of the output vector is unique keyword TRYFIND if the file was not found and this keyword is activated find will call itself with the keywords LOOKALLDIR and FIRSTFOUND to try to find the file we are looking for Note that if the file was found at the first try this keyword as no effect which is not the case with LOOKALLDIR keyword _EXTRA used to pass your keywords returns A scalar or array variable of string type containing the name with the full path of the matching files If no files exist with names matching the input arguments find returns the scalar string : NOT FOUND examples IDL print find loadct usr local rsi idl_6 0 lib utilities xloadct pro usr local rsi idl_6 0 lib loadct pro IDL print find loadct iodir dir recursive usr local rsi idl_6 0 lib loadct pro usr local rsi idl_6 0 lib utilities xloadct pro IDL print find loadct pro usr local rsi idl_6 0 lib utilities xloadct pro usr local rsi idl_6 0 lib loadct pro IDL print find loadct nopro NOT FOUND IDL print find loadct iodir usr local rsi idl_6 0 lib usr local rsi idl_6 0 lib loadct pro IDL print find loadct iodir usr local rsi idl_6 0 lib test_write NOT FOUND IDL print find loadct iodir usr local rsi idl_6 0 lib recursive usr local rsi idl_6 0 lib loadct pro usr local rsi idl_6 0 lib utilities xloadct pro IDL print find mesh iodirectory iodir path Users sebastie DATA ORCA2 meshmaskORCA2closea nc Users sebastie IDL meshmaskclosesea pro Users sebastie IDL meshmaskclosesea pro Users sebastie SAXO_RD Obsolete meshlec pro usr local rsi idl_6 0 lib mesh_obj pro history Sebastien Masson smasson lodyc jussieu fr 28 4 1999 6 7 1999: compatibility mac and windows June 2005: Sebastien Masson: cleaning use for file_ functions version Id: find pro 152 2006 08 10 07:01:35Z smasson FUNCTION find filein IODIRECTORY iodirectory RECURSIVE recursive REPERTOIRE repertoire NOPRO nopro ONLYPRO onlypro ONLYNC onlync UNIQUE unique FIRSTFOUND firstfound LOOKALLDIR LOOKALLDIR TRYFIND tryfind _extra ex define where we look for the file compile_opt idl2 strictarrsubs CASE 1 OF keyword_set lookalldir :BEGIN cm_general dirnames iodir homedir path tstdtadir file_dirname find find onlypro mark_directory tstdtadir file_search tstdtadir DATA TestsData 0 IF tstdtadir NE THEN dirnames tstdtadir dirnames END keyword_set iodirectory : dirnames iodirectory keyword_set repertoire : dirnames repertoire ELSE: dirnames path ENDCASE tmp dirnames dirnames dummy FOR i 0 n_elements tmp 1 DO dirnames dirnames strsplit tmp i path_sep search_path extract dirnames dirnames 1: fileout dummy FOR i 0 n_elements filein 1 DO BEGIN dir file_dirname filein i base file_basename filein i try to complete the file name with pro or nc if needed CASE 1 OF keyword_set onlypro :BEGIN promiss strpos base pro reverse_search promiss promiss strlen base 4 bad where promiss NE 0 OR strlen base LE 4 cnt IF cnt NE 0 THEN base bad base bad pro end keyword_set onlync :BEGIN ncmiss strpos base nc reverse_search ncmiss ncmiss strlen base 3 bad where ncmiss NE 0 OR strlen base LE 3 cnt IF cnt NE 0 THEN base bad base bad nc END ELSE:if strmid base 0 1 reverse_offset NE AND NOT keyword_set nopro THEN base base pro ENDCASE use dirnames only if dir eq IF dir EQ THEN BEGIN if keyword_set recursive THEN found file_search dirnames base _extra ex ELSE found file_search dirnames base _extra ex ENDIF ELSE found file_search dir base _extra ex IF found 0 NE THEN BEGIN IF keyword_set firstfound THEN BEGIN IF keyword_set unique THEN return found uniq found sort found ELSE return found ENDIF fileout fileout found ENDIF ENDFOR IF n_elements fileout EQ 1 THEN fileout NOT FOUND ELSE fileout fileout 1: IF n_elements fileout GT 1 THEN BEGIN IF keyword_set unique THEN fileout fileout uniq fileout sort fileout ENDIF ELSE fileout fileout 0 IF keyword_set lookalldir AND fileout 0 EQ NOT FOUND AND NOT keyword_set recursive THEN filout find file_basename filein 0 lookalldir recursive _extra ex IF keyword_set tryfind AND fileout 0 EQ NOT FOUND THEN BEGIN fileout find file_basename filein 0 lookalldir firstfound _extra ex fileout fileout 0 ENDIF RETURN fileout END"); 380 a[378] = new Array("./Utilities/fitintobox.html", "fitintobox.pro", "", " file_comments Check that the input array has size and dimensions compatible with the domain that was defined with the previous call of domdef categories domain compatibility param sz in required param nx in required param ny in required param nz in required param jpi in required param jpj in required param jpk in required param jpt in required returns 1 history Sebastien Masson smasson lodyc jussieu fr 10 juin 2000 June 2005: S Masson rewrite all version Id: fitintobox pro 136 2006 07 10 15:20:19Z pinsard hidden FUNCTION err_mess sz jpi nx jpj ny jpk nz jpt compile_opt idl2 strictarrsubs IF n_elements sz EQ 1 THEN RETURN report Error: the vector size tostr sz is incompatible with the the domain dimensions jpi nx jpj ny jpk nz jpt strtrim jpi 1 strtrim nx 1 strtrim jpj 1 strtrim ny 1 strtrim jpk 1 strtrim nz 1 strtrim jpt 1 simple RETURN report Error: the array dimensions tostr sz are incompatible with the the domain dimensions jpi nx jpj ny jpk nz jpt strtrim jpi 1 strtrim nx 1 strtrim jpj 1 strtrim ny 1 strtrim jpk 1 strtrim nz 1 strtrim jpt 1 simple END categories domain compatibility param field in required an array or a structure that can be read by the function litchamp pro param nx in optional default define by grille pro param ny in optional default define by grille pro param nz in optional default define by grille pro param firstx in optional default define by grille pro param firsty in optional default define by grille pro param firstz in optional default define by grille pro param lastx in optional default define by grille pro param lasty in optional default define by grille pro param lastz in optional default define by grille pro keyword WDEPTH To specify that we are at W level returns an array with dimensions matching the domain or 1 if there is an error uses cm_4mesh uses cm_4cal examples IDL help fitintobox findgen jpi jpj FLOAT Array 41 3 IDL help fitintobox findgen jpi jpj 78 Error: the array dimensions 180 148 78 are incompatible with the the domain dimensions jpi nx jpj ny jpk nz jpt 180 41 148 3 31 31 1 INT 1 history Sebastien Masson smasson lodyc jussieu fr 10 juin 2000 June 2005: S Masson rewrite all version Id: fitintobox pro 136 2006 07 10 15:20:19Z pinsard FUNCTION fitintobox field nx ny nz firstx firsty firstz lastx lasty lastz WDEPTH wdepth include commons compile_opt idl2 strictarrsubs cm_4mesh cm_4cal IF NOT keyword_set key_forgetold THEN BEGIN updatenew ENDIF arr litchamp field IF n_params EQ 1 THEN grille 1 1 1 1 nx ny nz firstx firsty firstz lastx lasty lastz WDEPTH wdepth case according the number of dimensions of the array sz size arr case sz 0 of 0:BEGIN scalar return report Error: scalar value strtrim arr 1 simple END 1:BEGIN 1D arrays CASE 1 OF x arrays sz 1 EQ jpi :arr temporary arr firstx:lastx sz 1 EQ nx : y arrays sz 1 EQ jpj :arr temporary arr firsty:lasty sz 1 EQ ny : z arrays sz 1 EQ jpk :arr temporary arr firstz:lastz sz 1 EQ nz : t arrays sz 1 EQ jpt : ELSE:return err_mess sz 1 jpi nx jpj ny jpk nz jpt ENDCASE END 2:BEGIN 2D arrays CASE 1 OF xy arrays sz 1 EQ jpi AND sz 2 EQ jpj :arr temporary arr firstx:lastx firsty:lasty sz 1 EQ jpi AND sz 2 EQ ny :arr temporary arr firstx:lastx sz 1 EQ nx AND sz 2 EQ jpj :arr temporary arr firsty:lasty sz 1 EQ nx AND sz 2 EQ ny :arr temporary arr x y z arrays sz 1 EQ jpi AND ny EQ 1 AND sz 2 EQ jpk :arr temporary arr firstx:lastx firstz:lastz sz 1 EQ jpi AND ny EQ 1 AND sz 2 EQ nz :arr temporary arr firstx:lastx sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ jpk :arr temporary arr firstz:lastz sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz : x yz arrays nx EQ 1 AND sz 1 EQ jpj AND sz 2 EQ jpk :arr temporary arr firsty:lasty firstz:lastz nx EQ 1 AND sz 1 EQ jpj AND sz 2 EQ nz :arr temporary arr firsty:lasty nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ jpk :arr temporary arr firstz:lastz nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz : xt arrays sz 1 EQ jpi AND sz 2 EQ jpt:arr temporary arr firstx:lastx sz 1 EQ nx AND sz 2 EQ jpt: yt arrays sz 1 EQ jpj AND sz 2 EQ jpt:arr temporary arr firsty:lasty sz 1 EQ ny AND sz 2 EQ jpt: zt arrays sz 1 EQ jpk AND sz 2 EQ jpt:arr temporary arr firstz:lastz sz 1 EQ nz AND sz 2 EQ jpt: ELSE:return err_mess sz 1:2 jpi nx jpj ny jpk nz jpt ENDCASE END 3:BEGIN 3D arrays CASE 1 OF xyz arrays sz 1 EQ jpi AND sz 2 EQ jpj AND sz 3 EQ jpk :arr temporary arr firstx:lastx firsty:lasty firstz:lastz sz 1 EQ jpi AND sz 2 EQ ny AND sz 3 EQ jpk :arr temporary arr firstx:lastx firstz:lastz sz 1 EQ nx AND sz 2 EQ jpj AND sz 3 EQ jpk :arr temporary arr firsty:lasty firstz:lastz sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpk :arr temporary arr firstz:lastz sz 1 EQ jpi AND sz 2 EQ jpj AND sz 3 EQ nz :arr temporary arr firstx:lastx firsty:lasty sz 1 EQ jpi AND sz 2 EQ ny AND sz 3 EQ nz :arr temporary arr firstx:lastx sz 1 EQ nx AND sz 2 EQ jpj AND sz 3 EQ nz :arr temporary arr firsty:lasty sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz : xyt arrays sz 1 EQ jpi AND sz 2 EQ jpj AND sz 3 EQ jpt:arr temporary arr firstx:lastx firsty:lasty sz 1 EQ jpi AND sz 2 EQ ny AND sz 3 EQ jpt:arr temporary arr firstx:lastx sz 1 EQ nx AND sz 2 EQ jpj AND sz 3 EQ jpt:arr temporary arr firsty:lasty sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpt: x yzt arrays nx EQ 1 AND sz 1 EQ jpj AND sz 2 EQ jpk AND sz 3 EQ jpt:arr temporary arr firsty:lasty firstz:lastz nx EQ 1 AND sz 1 EQ jpj AND sz 2 EQ nz AND sz 3 EQ jpt:arr temporary arr firsty:lasty nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ jpk AND sz 3 EQ jpt:arr temporary arr firstz:lastz nx EQ 1 AND sz 1 EQ ny AND sz 2 EQ nz AND sz 3 EQ jpt: x y zt arrays sz 1 EQ jpi AND ny EQ 1 AND sz 2 EQ jpk AND sz 3 EQ jpt:arr temporary arr firstx:lastx firstz:lastz sz 1 EQ jpi AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt:arr temporary arr firstx:lastx sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ jpk AND sz 3 EQ jpt:arr temporary arr firstz:lastz sz 1 EQ nx AND ny EQ 1 AND sz 2 EQ nz AND sz 3 EQ jpt: ELSE:return err_mess sz 1:3 jpi nx jpj ny jpk nz jpt ENDCASE END 4:BEGIN 4D arrays CASE 1 OF xyzt arrays sz 1 EQ jpi AND sz 2 EQ jpj AND sz 3 EQ jpk AND sz 4 EQ jpt:arr temporary arr firstx:lastx firsty:lasty firstz:lastz sz 1 EQ jpi AND sz 2 EQ ny AND sz 3 EQ jpk AND sz 4 EQ jpt:arr temporary arr firstx:lastx firstz:lastz sz 1 EQ nx AND sz 2 EQ jpj AND sz 3 EQ jpk AND sz 4 EQ jpt:arr temporary arr firsty:lasty firstz:lastz sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ jpk AND sz 4 EQ jpt:arr temporary arr firstz:lastz sz 1 EQ jpi AND sz 2 EQ jpj AND sz 3 EQ nz AND sz 4 EQ jpt:arr temporary arr firstx:lastx firsty:lasty sz 1 EQ jpi AND sz 2 EQ ny AND sz 3 EQ nz AND sz 4 EQ jpt:arr temporary arr firstx:lastx sz 1 EQ nx AND sz 2 EQ jpj AND sz 3 EQ nz AND sz 4 EQ jpt:arr temporary arr firsty:lasty sz 1 EQ nx AND sz 2 EQ ny AND sz 3 EQ nz AND sz 4 EQ jpt: ELSE:return err_mess sz 1:4 jpi nx jpj ny jpk nz jpt ENDCASE END ELSE:return report Error: fitintobox is managing arrays with a maximum of 4 dimensions simple ENDCASE return arr end"); 381 a[379] = new Array("./Utilities/isadirectory.html", "isadirectory.pro", "", " file_comments check if a directory exists and make sure that it ends with the directory separator mark categories io param directoryin in optional a proposed directory If neither dirname input parameter of IODIRECTORY keyword are defined the ask the user to choose a directory keyword IODIRECTORY a proposed directory keyword TITLE the title of the window keyword _EXTRA used to pass your keywords file_comments all dialog_pickfile keywords like filter can be used returns the directory name examples IDL print dir usr local rsi idl_6 0 IDL print isadirectory dir usr local rsi idl_6 0 IDL print isadirectory dir notgood history Sebastien Masson smasson lodyc jussieu fr June 28 2000 June 2005: Sebastien Masson: cleaning use for file_ functions version Id: isadirectory pro 136 2006 07 10 15:20:19Z pinsard FUNCTION isadirectory directoryin TITLE title IODIRECTORY iodirectory _extra ex compile_opt idl2 strictarrsubs CASE 1 OF size directoryin type 0 EQ 7:directory directoryin keyword_set iodirectory :directory iodirectory ELSE:directory directory that is not existing ENDCASE testfile file_test directory directory if directory doesn t exist we ask the user to provide a directory name IF total testfile NE n_elements directory THEN BEGIN IF NOT keyword_set title THEN title choose a directory FOR i 0 n_elements directory 1 DO BEGIN IF testfile i EQ 0 THEN BEGIN directory i dialog_pickfile directory title title must_exist _extra ex if directory i EQ THEN RETURN report check find directory canceled ENDIF ENDFOR ENDIF directory file_search directory mark_directory IF n_elements directory EQ 1 THEN RETURN directory 0 ELSE RETURN directory END"); 382 a[380] = new Array("./Utilities/isafile.html", "isafile.pro", "", " file_comments same as find pro except that as long as the file is NOT FOUND isafile calls dialog_pickfile to ask the user to select a file categories io param filein in optional a proposed name If neither filein input parameter of filename keyword are defined the ask the user to choose a file keyword FILENAME a proposed filename keyword IODIRECTORY a directory where we look for the file this keyword is taken into account only if the dirname of filein or filename is keyword NEW to specify that filename is a new file and that we should check only its path keyword ONLYPRO force to look only at file ending with pro keyword ONLYNC force to look only at file ending with nc keyword RECURSIVE performs recursive searching of directory hierarchies In a recursive search find looks recursively for any and all subdirectories in the file hierarchy rooted at the IODIRECTORY argument keyword _EXTRA used to pass your keywords file_comments all find file_search and dialog_pickfile keywords like title can be used returns the filename with its path examples IDL print isafile Users sebastie SAXO_RD Commons cm_4mesh pro Users sebastie SAXO_RD Commons cm_4mesh pro IDL print isafile cm_4mesh pro iodir Users sebastie SAXO_RD Commons Users sebastie SAXO_RD Commons cm_4mesh pro IDL print isafile cm_4mesh pro iodir path Users sebastie SAXO_RD Commons cm_4mesh pro IDL print isafile cm_4mesh pro iodir Users sebastie SAXO_RD recursive Users sebastie SAXO_RD Commons cm_4mesh pro IDL print isafile cm_4mesh pro iodir getenv HOME recursive Users sebastie SAXO_RD Commons cm_4mesh pro IDL print isafile fake_file pro history Sebastien Masson smasson lodyc jussieu fr 11 2 2000 June 2005: Sebastien Masson: cleaning use for file_ functions version Id: isafile pro 136 2006 07 10 15:20:19Z pinsard FUNCTION isafile filein FILENAME filename IODIRECTORY iodirectory NEW new RECURSIVE RECURSIVE ONLYPRO onlypro ONLYNC onlync _extra ex compile_opt idl2 strictarrsubs CASE 1 OF size filein type 0 EQ 7:fileout filein keyword_set filename :fileout filename 0 ELSE:fileout file that is not existing ENDCASE if size fileout type NE 7 THEN return 1 CASE 1 OF keyword_set onlypro : filter pro keyword_set onlync : filter nc else: filter ENDCASE basename file_basename fileout dirname file_dirname fileout should we redefine dirname if keyword_set iodirectory AND dirname EQ then dirname iodirectory if keyword_set new then return dirname path_sep basename fileout find basename iodirectory dirname recursive recursive unique firstfound ONLYPRO onlypro ONLYNC onlync _extra ex WHILE fileout 0 EQ NOT FOUND DO BEGIN fileout dialog_pickfile path dirname 0 filter filter _extra ex if fileout EQ THEN RETURN report check find file canceled check again everything basename file_basename fileout dirname file_dirname fileout check if the name of the dirname is ok dirname isadirectory dirname title choose a directory for the file basename if we cancel the check IF size dirname type NE 7 THEN return report check find file canceled fileout find basename iodirectory dirname recursive recursive unique firstfound ONLYPRO onlypro ONLYNC onlync _extra ex ENDWHILE RETURN fileout END"); 383 a[381] = new Array("./Utilities/linearequation.html", "linearequation.pro", "", " file_comments Calculate a linear equation of the type ax by c 0 thanks to coordinates of 2 points comment: we can have a table with pairs of points categories utilities param point1 in required This is the first point of the straight line s whose we want to calculate equation s param point2 in required This is the second point of the straight line s whose we want to calculate equation s There is 2 possibilities: 1 point is a complex or a table of complex where each element is the coordinates of the point 2 point is a table of real of dimension 2 number_of_straight_line For each row of the table we have coordinates of the point returns abc is a table of dimension 3 number_of_straight_line where for each line of the table we obtain the 3 parameters a b and c of the linear equation ax by c 0 examples IDL abc linearequation complex 1 2 3 4 IDL print abc 0 1 abc 1 2 abc 2 0 00000 history Sebastien Masson smasson lodyc jussieu fr 10 juin 2000 version Id: linearequation pro 136 2006 07 10 15:20:19Z pinsard FUNCTION linearequation point1 point2 compile_opt idl2 strictarrsubs if size point1 type EQ 6 OR size point1 type EQ 9 then begin x1 float point1 y1 imaginary point1 ENDIF ELSE BEGIN x1 float reform point1 0 y1 float reform point1 1 ENDELSE if size point2 type EQ 6 OR size point2 type EQ 9 then begin x2 float point2 y2 imaginary point2 ENDIF ELSE BEGIN x2 float reform point2 0 y2 float reform point2 1 ENDELSE vertical where x1 EQ x2 novertical where x1 NE x2 abc fltarr 3 n_elements x1 IF novertical 0 NE 1 then BEGIN y mx p nele n_elements novertical m y2 novertical y1 novertical x2 novertical x1 novertical p x2 novertical y1 novertical y2 novertical x1 novertical x2 novertical x1 novertical abc novertical reform m 1 nele replicate 1 1 nele reform p 1 nele ENDIF IF vertical 0 NE 1 then BEGIN x ny p nele n_elements vertical n x2 vertical x1 vertical y2 vertical y1 vertical p y2 vertical x1 vertical x2 vertical y1 vertical y2 vertical y1 vertical abc vertical replicate 1 1 nele reform n 1 nele reform p 1 nele ENDIF return abc end"); 384 a[382] = new Array("./Utilities/lineintersection.html", "lineintersection.pro", "", " file_comments Calculate coordinates of the intersection between 2 straight lines or of a succession of 2 straight lines categories utilities param abc1 in required is the first table of dimension 3 number_of_pairs_of_straight_lines whose each line contain the 3 parameters a b and c of the first linear equation of the type ax by c 0 param abc2 in required is second table of dimension 3 number_of_pairs_of_straight_lines whose each line contain the 3 parameters a b and c of the second linear equation of the type ax by c 0 keyword FLOAT To return the output as a table of real numbers instead of vectors of complex by default returns 2 possibilities: 1 by default: it is a vector of complex whose each element is the coordinates of the intersection point of a pair of straight lines 2 if FLOAT is activated it is a table of reals of dimension 2 number_of_pairs_of_straight_lines whose each row is the coordinates of the intersection point of a pair of straight line restrictions If the 2 straight line are parallel we return coordinates values f_nan values f_nan restrictions Beware of the precision of the machine which make that calculated coordinates may not exactly verify equations of the pair of straight lines examples IDL abc1 linearequation complex 1 2 3 4 IDL abc2 linearequation complex 1 2 8 15 IDL print lineintersection abc1 abc2 1 00000 2 00000 IDL print lineintersection abc1 abc2 float 1 00000 2 00000 history Sebastien Masson smasson lodyc jussieu fr 10 juin 2000 version Id: lineintersection pro 136 2006 07 10 15:20:19Z pinsard FUNCTION lineintersection abc1 abc2 FLOAT float compile_opt idl2 strictarrsubs a1 float reform abc1 0 b1 float reform abc1 1 c1 float reform abc1 2 a2 float reform abc2 0 b2 float reform abc2 1 c2 float reform abc2 2 determinant a1 b2 a2 b1 nan where determinant EQ 0 if nan 0 NE 1 THEN determinant values f_nan x b1 c2 c1 b2 determinant y c1 a2 a1 c2 determinant if keyword_set float then begin npts n_elements x res reform x 1 npts over reform y 1 npts over ENDIF ELSE res complex x y return res end"); 385 a[383] = new Array("./Utilities/protype.html", "protype.pro", "", " file_comments test is a pro file corresponds to an IDL procedure function or batch file categories utilities param file in A scalar of string type the name of the pro file to be tested if necessary the input name is completed with pro and its path found in path returns A scalar of string type: proc func or batch examples IDL print protype protype func IDL print protype protype pro func IDL print protype init batch IDL print protype plt proc history Sebastien Masson smasson lodyc jussieu fr Feb 2006 version Id: protype pro 136 2006 07 10 15:20:19Z pinsard FUNCTION protype file compile_opt idl2 strictarrsubs filepro find file 0 onlypro firstfound 0 if filepro EQ NOT FOUND then return 1 name file_basename filepro pro allines getfile filepro CASE 1 OF this is a procedure max stregex allines pro name fold_case boolean :RETURN proc this is a function max stregex allines function name fold_case boolean :RETURN func this is an IDL batch file ELSE:RETURN batch ENDCASE RETURN 1 END"); 386 a[384] = new Array("./Utilities/pwd.html", "pwd.pro", "", " file_comments print the current directory categories like unix function history Sebastien Masson smasson lodyc jussieu fr version Id: pwd pro 136 2006 07 10 15:20:19Z pinsard PRO pwd compile_opt idl2 strictarrsubs cd current pwd print pwd return end"); 387 a[385] = new Array("./Utilities/report.html", "report.pro", "", " file_comments Like dialog_message pro if there is already some widget active or like message pro if there is not any widget active To ask a question whose answer is not yes no use xquestion param text in required one string or one vector of string Si le string ne comporte qu un element on cherche les eventuels characteres de retour a la ligne: C If text is set to an array of strings each array element is displayed as a separate line of text keyword SIMPLE activate to print only the message without the name and the line of the routine defined by calling routine_name keyword _extra used to pass keywords from dialog_message pro and message pro keyword PARENT same as DIALOG_PARENT de dialog_message pro keyword QUESTION default Warning Set this keyword to create a Question dialog keyword DEFAULT_NO default Yes Set this keyword to make the No button the default selection for Question dialog keyword SIMPLE Activate to print the error message without printing the routine name with its full path returns 1 if the keyword QUESTION is not activated If the keyword is activated return 1 for yes and 0 for no examples If there is not any widget activated: IDL help report toto tata MAIN : toto tata INT 1 IDL help report does it works question does it works y n default answer is y BYTE 1 IDL help report question1: C does it works question question1: does it works y n default answer is y BYTE 1 If widgets are already activated it is the same thing but with widgets history Sebastien Masson smasson lodyc jussieu fr 21 10 1999 version Id: report pro 136 2006 07 10 15:20:19Z pinsard FUNCTION report text DEFAULT_NO default_no PARENT parent QUESTION question SIMPLE simple _extra ex compile_opt idl2 strictarrsubs res 1 we separate the text in different lines separated by C if it is not already done if n_elements text EQ 1 then text str_sep text C trim there is some widgets activated it is easy we call dialog_massage if widget_info managed 0 NE 0 then BEGIN res dialog_message text dialog_parent parent QUESTION question title routine_name 1 DEFAULT_NO default_no _extra ex if keyword_set question THEN res res EQ Yes ELSE res 1 ENDIF ELSE BEGIN there is not any widget activated do we ask a question if keyword_set question then BEGIN what i sthe answer by default if keyword_set default_no then answer n ELSE answer y default_answer answer if n_elements text GT 1 THEN for i 0 n_elements text 2 do print text i read text n_elements text 1 y n default answer is default_answer answer answer strlowcase answer if the answer is not appropriated while answer NE and answer NE y and answer NE n do begin read text n_elements text 1 y n default answer is default_answer answer answer strlowcase answer ENDWHILE we adjust res in function of th answer case answer of :res default_answer EQ y y :res 1 n :res 0 endcase endif ELSE BEGIN If we do not ask any question we just make a print IF keyword_set simple THEN prefix ELSE prefix routine_name 1 : if n_elements text GT 1 THEN for i 0 n_elements text 2 do print prefix text i print prefix text n_elements text 1 ENDELSE ENDELSE return res end"); 388 a[386] = new Array("./Utilities/routine_name.html", "routine_name.pro", "", " file_comments Give us the name of the routine procedure or function where we are categories utilities param pilingnum in optional A whole number which give us how many level we have to reascend in the piling up of routines and subroutines to find the looked for routine returns a string giving either the full name of the routine with the path or MAIN restrictions This function use the keyword OUTPUT in help pro and it is specified in the online help that the return syntax of this word can change in function of the version of the code This version works with IDL 5 2 examples IDL print routine_name usr1 com smasson IDL_RD UTILITAIRE report pro IDL print routine_name 1 usr1 com smasson IDL_RD PLOTS DIVERS determineminmax pro IDL print routine_name 2 usr1 com smasson IDL_RD PLOTS DESSINE plt pro IDL print routine_name 3 MAIN IDL print routine_name 4 MAIN history Sebastien Masson smasson lodyc jussieu fr 21 10 1999 version Id: routine_name pro 136 2006 07 10 15:20:19Z pinsard FUNCTION routine_name pilingnum compile_opt idl2 strictarrsubs help traceback output name name strtrim name 1 we remove blanks at the beginning of lines and we put elements of the vector stuck ones with each others to make an unique string allnames for i 0 n_elements name 1 do allnames allnames name i name str_sep allnames we cut it out again name strtrim name 2 we remouve blanks in front of and behind name strcompress name we compress blanks we do not hold back the two first elements who are a blanck and the line concerning routine_name name name 2: n_elements name 1 we choose the line which concern us if NOT keyword_set pilingnum then pilingnum 0 if pilingnum GE n_elements name then return MAIN name name pilingnum if strpos name MAIN NE 1 then return MAIN name str_sep name if n_elements name LT 3 then name name 0 ELSE name L name 1 name 2 return name end"); 389 a[387] = new Array("./Utilities/testvar.html", "testvar.pro", "", " file_comments A kind of keyword_set but when the value exist it send it back categories utlities keyword var any kind of returns 0 if the variable does not exist examples IDL print testvar var toto 0 IDL print testvar var toto toto history Sebastien Masson smasson lodyc jussieu fr 14 12 1999 version Id: testvar pro 136 2006 07 10 15:20:19Z pinsard FUNCTION testvar var var compile_opt idl2 strictarrsubs if keyword_set var then return var ELSE return 0 end"); 390 a[388] = new Array("./Utilities/text_box.html", "text_box.pro", "", " file_comments This procedure writes a short text message within a box shaped area in a graphics window The message may be split at word boundaries into several lines and the character size and orientation may be adjusted for the text to fit within the box param TEXT in required ASCII text string containing the message keyword pos 4 element vector specifying the box position and size pos 0 pos 1 specify the lower left corner coordinate pos 2 pos 3 specify the upper right corner coordinate data window normalized coordinates are use keyword fg_color color of box and legend titles default 0 keyword bg_color background color Setting BG_COLOR erases the area covered by the text box filling it with color BG_COLOR prior to writing the text If both BG_COLOR and p color are zero then the background color is reset to 255 to gaurantee a readability keyword right if set right justify text keyword center if set center the text keyword vert_space default 1 5 vertical spacing of lines in units of character height keyword _EXTRA used to pass your keyword keyword box activate to show the box on graphics window history Paul Ricchiazzi 7Jul93 Institute for Computational Earth System Science University of California Santa Barbara version Id: text_box pro 136 2006 07 10 15:20:19Z pinsard PRO text_box text pos pos fg_color fg_color bg_color bg_color center center right right box box vert_space vert_space _EXTRA ex compile_opt idl2 strictarrsubs ON_ERROR 2 Check the number of parameters justify 1 if keyword_set right ne 0 then justify 1 if keyword_set center ne 0 then justify 0 if keyword_set vert_space eq 0 then vert_space 1 5 IF n_elements text eq 0 then message must specify text nnx x window d x_vsize nny y window d y_vsize nnx 0 1 d x_vsize nny 0 1 d y_vsize if n_elements pos eq 0 then begin box_cursor xx1 yy1 nx ny xx2 xx1 nx yy2 yy1 ny pos xx1 nnx 0 nnx 1 nnx 0 yy1 nny 0 nny 1 nny 0 xx2 nnx 0 nnx 1 nnx 0 yy2 nny 0 nny 1 nny 0 posstring string form a 4 f5 2 a pos pos 0 pos 1 pos 2 pos 3 print strcompress posstring remove_all endif else begin xx1 nnx 0 pos 0 nnx 1 nnx 0 xx2 nnx 0 pos 2 nnx 1 nnx 0 yy1 nny 0 pos 1 nny 1 nnx 0 yy2 nny 0 pos 3 nny 1 nnx 0 endelse calculate the height and width of the box in characters width xx2 xx1 d x_ch_size height yy2 yy1 d y_ch_size decompose the message into words words str_sep text print f 20a words nwords n_elements words wordlen lenstr words d x_vsize blanklen lenstr d x_vsize maxcharsize xx2 xx1 4 blanklen max wordlen charsize 1 lpnt intarr nwords nomore 0 ntries 0 repeat begin ntries ntries 1 if ntries gt 20 then message Can not fit message into box ychsiz vert_space d y_ch_size charsize wlen wordlen charsize blen blanklen charsize n_lines fix yy2 yy1 ychsiz 1 sum 0 ilines 0 print f 8a8 charsz i ilines n_lines lpnt wlen sum xwdth for i 0 nwords 1 do begin sum sum wlen i blen if sum 3 blen gt xx2 xx1 then begin ilines ilines 1 sum wlen i blen endif lpnt i ilines print f f8 2 4i8 3f8 2 charsize i ilines n_lines lpnt i wlen i blen sum 3 blen xx2 xx1 endfor case 1 of ilines 1 lt n_lines: if charsize 1 1 gt maxcharsize then vert_space yy2 yy1 n_lines 1 d y_ch_size charsize else charsize charsize 1 1 ilines 1 eq n_lines: nomore 1 ilines 1 gt n_lines: charsize charsize 9 endcase endrep until nomore lines strarr n_lines maxlen 0 for i 0 n_lines 1 do begin ii where lpnt eq i nc maxlen total wlen ii nc blen maxlen lines i string f 200a words ii print i words ii print i lines i endfor align 5 1 justify case justify of 1:xx xx1 5 xx2 xx1 maxlen 0:xx 0 5 xx1 xx2 1:xx xx2 5 xx2 xx1 maxlen endcase dy d y_ch_size charsize vert_space yy yy2 0 5 dy xbox xx1 xx2 xx2 xx1 xx1 ybox yy1 yy1 yy2 yy2 yy1 if n_elements bg_color ne 0 then begin if p color eq 0 and bg_color eq 0 then bgc 255 else bgc bg_color polyfill xbox ybox color bgc device endif if n_elements fg_color eq 0 then color 0 else color fg_color for i_line 0 n_lines 1 do begin yy yy dy print xx yy lines i_line charsize xyouts xx yy lines i_line device charsize charsize alignment align color color font 1 _extra ex endfor if keyword_set box then plots xbox ybox color color device return end "); 391 a[389] = new Array("./Utilities/undefine.html", "undefine.pro", "", " file_comments erase a variable same thing that delvar but usable in a program and usable for one variable simultaneously categories utilities param varname in required The name of the variable we want erase examples IDL a 1 IDL undefine a Compiled module: UNDEFINE IDL help a A UNDEFINED history trouve sur la page web de D Fanning http: www dfanning com : QUESTION: How do I make an IDL variable have a type undefined ANSWER: At the main IDL level you can use the IDL procedure DELVAR to delete an IDL variable and make it undefined Inside of procedures and functions I use this little program named UNDEFINE that I got from Andrew Cool at the DSTO High Frequency Radar Division in Adelaide Australia version Id: undefine pro 136 2006 07 10 15:20:19Z pinsard PRO UNDEFINE varname compile_opt idl2 strictarrsubs tempvar SIZE TEMPORARY varname END "); 392 a[390] = new Array("./Utilities/xfile.html", "xfile.pro", "", " file_comments display in a widget an ASCII file It is the same thing that xdisplayfile but here we use it to display the content of a procedure or of a function even if it is not in the current directory thanks to the path categories utilities param filename in required It is the name of the procedure or of the function we want to display with or without pro at the end keyword _extra used to pass your keywords examples xfile plt history Sebastien Masson smasson lodyc jussieu fr 7 1 99 6 7 1999: compatibility mac and windows version Id: xfile pro 136 2006 07 10 15:20:19Z pinsard PRO xfile filename _extra ex compile_opt idl2 strictarrsubs pfile strlowcase filename we have to find the full name if strpos pfile pro lt 0 then pfile pfile pro thisOS strupcase strmid version os_family 0 3 CASE thisOS of MAC :BEGIN sep : pathsep end WIN :BEGIN sep pathsep end ELSE: BEGIN sep pathsep : end ENDCASE cd current current if strpos pfile sep lt 0 then BEGIN if rstrpos current sep NE strlen current 1 then current current sep multipath str_sep path pathsep if rstrpos multipath 0 sep NE strlen multipath 0 1 then multipath multipath sep pfile current multipath pfile ENDIF i 0 repeat begin res findfile pfile i i i 1 endrep until res 0 NE OR i EQ n_elements pfile if res 0 NE then BEGIN we open the file in a widget xdisplayfile pfile i 1 _extra ex ENDIF ELSE ras report le fichier demande n existe pas return end"); 393 a[391] = new Array("./Utilities/xhelp.html", "xhelp.pro", "", " file_comments Display an IDL procedure header using widgets and the widget manager categories Widgets param Filename in required A scalar string that contains the filename of the file to display If FILENAME does not include a complete path specification xhelp will search for the file in the current working directory and then each of the directories listed in PATH environment variable The pro file suffix will be appended if it is not supplied keyword _extra used to pass your keywords restrictions Triggers the XMANAGER if it is not already in use examples Open a file and create a widget to display its contents history Written By Steve Richards December 1990 Graceful error recovery DMS Feb 1992 Modified to extract pro documentation headers PJR ESRG mar94 Paul Ricchiazzi jun93 Institute for Computational Earth System Science University of California Santa Barbara 7 1 99 : legeres mofification par Sebastien Masson : utilisation de xdisplayfile de findfile et de _extra 6 7 1999: compatibility mac and windows version Id: xhelp pro 141 2006 07 21 09:17:25Z theetten PRO xhelp filename _extra ex compile_opt idl2 strictarrsubs Are we sure filename is a string cquoidonc size filename type if cquoidonc NE 7 then begin ras report Input parameter must be a string and not a size filename tname return endif We have to find the full name pfile FILENAME if strpos pfile pro lt 0 then pfile pfile pro thisOS strupcase strmid version os_family 0 3 CASE thisOS of MAC :BEGIN sep : pathsep end WIN :BEGIN sep pathsep end ELSE: BEGIN sep pathsep : end ENDCASE cd current current if strpos pfile sep lt 0 then BEGIN if rstrpos current sep NE strlen current 1 then current current sep multipath str_sep path pathsep if rstrpos multipath 0 sep NE strlen multipath 0 1 then multipath multipath sep pfile current multipath pfile ENDIF We test each possible name to find where the file is nfile n_elements pfile n 0 repeat begin res findfile pfile n n n 1 endrep until res 0 NE OR n EQ n_elements pfile if res 0 NE then BEGIN openr unit pfile n 1 get_lun opening of the file we select the heading piece a strarr 1000 Maximum of lines xsize 0 i 0 c readon 0 while not eof unit do begin readf unit c if strpos c eq 0 then readon 0 if readon then BEGIN dum where byte c eq 9b ntab count tab characters xsize xsize strlen c 8 ntab a i strmid c 1 200 i i 1 endif if strpos c eq 0 then readon 1 endwhile if i EQ 0 then ras report le programme a etait mal ecrit il n y a pas d en tete utiliser xfile pro ELSE BEGIN a a 0:i 1 we wrote the a s content in a widget xdisplayfile toto text a title pfile n 1 _extra ex ENDELSE FREE_LUN unit free the file unit ENDIF ELSE ras report le fichier demande n existe pas return end "); 394 a[392] = new Array("./buildinit.html", "buildinit.pro", "", " NAME: PURPOSE: CATEGORY: CALLING SEQUENCE: INPUTS: OPTIONAL INPUTS: KEYWORD PARAMETERS: OUTPUTS: OPTIONAL OUTPUTS: COMMON BLOCKS: SIDE EFFECTS: RESTRICTIONS: PROCEDURE: EXAMPLE: MODIFICATION HISTORY: slightly mofified version of cw_field FUNCTION CW_FIELD2 Parent COLUMN Column ROW Row EVENT_FUNC efun FLOATING Float INTEGER Int LONG Long STRING String FONT LabelFont FRAME Frame TITLE Title UVALUE UValue VALUE TextValueIn RETURN_EVENTS ReturnEvents ALL_EVENTS AllUpdates FIELDFONT FieldFont NOEDIT NoEdit TEXT_FRAME Text_Frame XSIZE XSize YSIZE YSize UNAME uname FLOOR vmin CEILING vmax compile_opt idl2 strictarrsubs resolve_routine cw_field compile_full_file is_function Examine our keyword list and set default values for keywords that are not explicitly set Column KEYWORD_SET Column Row 1 Column AllEvents 1 KEYWORD_SET NoEdit Enum Update None All CRonly Update 0 IF KEYWORD_SET AllUpdates THEN Update 1 IF KEYWORD_SET ReturnEvents THEN Update 2 IF N_ELEMENTS efun LE 0 THEN efun IF N_ELEMENTS Title EQ 0 THEN Title Input Field: TextValue N_ELEMENTS TextValueIn gt 0 TextValueIn : Convert non string values to strings if SIZE TextValue TNAME ne STRING then TextValue STRTRIM TextValue 2 IF N_ELEMENTS YSize EQ 0 THEN YSize 1 IF N_ELEMENTS uname EQ 0 THEN uname CW_FIELD_UNAME Type 0 string is default IF KEYWORD_SET Float THEN Type 1 IF KEYWORD_SET Int THEN Type 2 IF KEYWORD_SET Long THEN Type 3 Don t allow multiline non string widgets if Type ne 0 then YSize 1 YSize YSize 1 Build Widget Base WIDGET_BASE Parent ROW Row COLUMN Column UVALUE UValue EVENT_FUNC CW_FIELD_EVENT PRO_SET_VALUE CW_FIELD_SET FUNC_GET_VALUE CW_FIELD_GET FRAME Frame UNAME uname FOR i 0 n_elements title 1 DO Label WIDGET_LABEL Base VALUE Title i FONT LabelFont UNAME uname _LABEL align_left Text WIDGET_TEXT Base VALUE TextValue XSIZE XSize YSIZE YSize FONT FieldFont ALL_EVENTS AllEvents EDITABLE AllEvents AND TYPE EQ 0 FRAME Text_Frame UNAME uname _TEXT NO_ECHO AllEvents AND TYPE NE 0 Save our internal state in the first child widget State efun: efun TextId:Text Title:Title Update:Update Type:Type WIDGET_CONTROL WIDGET_INFO Base CHILD SET_UVALUE State NO_COPY RETURN Base END PRO printerdef_event event get back the ids of the cw_field widgets compile_opt idl2 strictarrsubs widget_control event id get_uvalue cwids IF size cwids n_dimensions EQ 1 THEN cwids reform cwids 3 1 help cwids dims size cwids dimensions help dims print dims results strarr dims FOR i 0 dims 1 1 DO BEGIN widget_control cwids 0 i get_value res results 0 i res widget_control cwids 1 i get_value res results 1 i res widget_control cwids 2 i get_value res results 2 i res ENDFOR nothing where results EQ count IF count NE 0 THEN BEGIN nothing dialog_message Some of the text box are still empty dialog_parent event top information return ENDIF now we give the result to buildinit pro by using the pointer uvalue widget_control event top get_uvalue ptresult ptresult temporary results we destroy the widget widget_control event top destroy RETURN END PRO papsize_event event get back the ids of the cw_field widgets compile_opt idl2 strictarrsubs widget_control event id get_uvalue uvalue IF uvalue 0 NE ok THEN return idist widget_info event top find_by_uname list id widget_info idist list_select widget_control idist get_uvalue selected selected selected id selected strsplit selected extract now we give the result to buildinit pro by using the pointer uvalue widget_control event top get_uvalue ptresult ptresult float selected 3 float selected 4 we destroy the widget widget_control event top destroy RETURN END PRO xask_event event now we give the answer to buildinit pro by using the pointer uvalue compile_opt idl2 strictarrsubs widget_control event top get_uvalue ptranswer ptranswer event value we destroy the widget widget_control event top destroy RETURN END FUNCTION xask _extra ex compile_opt idl2 strictarrsubs base widget_base field cw_field2 base frame return_events column _extra ex ptranswer ptr_new allocate_heap we realize the widget and wait for an answer widget_control base realize set_uvalue ptranswer xmanager xask base we get the answer answer ptranswer we freeing the pointer ptr_free ptranswer RETURN answer END FUNCTION getdir title title nomark nomark nowrite nowrite compile_opt idl2 strictarrsubs REPEAT BEGIN dir dialog_pickfile directory must_exist title title make sure dir is ok check read write access and directory separator mark dir file_search dir test_directory test_read test_write 1 keyword_set nowrite mark_directory 1 keyword_set nomark dir dir 0 ENDREP UNTIL dir NE RETURN dir END PRO buildinit compile_opt idl2 strictarrsubs IF fix strmid version release 0 1 LT 6 THEN BEGIN print print ERROR print print This version of SAXO needs at least IDL version 6 0 print print ERROR print return ENDIF IF lmgr demo EQ 1 THEN BEGIN print impossible to use buildinit in demo mode return ENDIF init This is the initialisation file it defines the path and the defaut values of some of the common variables this is supposed to speed up IDL a fltarr 1000 1000 100 a 0 path definition define myIDL directory myIDL getdir title Select the home directory my IDL nomark define SAXO directory saxodir getdir title Select SAXO directory nomark nowrite define the path init init path expand_path myIDL : expand_path saxodir : expand_path dir should we keep the compatibility with the old version yes dialog_message shall we keep the compatibility with the old version question default_no yes strlowcase yes init init compatibility with the old version keep_compatibility strtrim fix yes EQ yes 2 define all the commons init init define all the commons all_cm define default directories init init define default directories homedir isadirectory myIDL title Select the default HOME directory iodir getdir title Select the default IO directory init init iodir isadirectory iodir title Select the default IO directory psdir getdir title Select the default postscripts directory init init psdir isadirectory psdir title Select the default postscripts directory imagedir getdir title Select the default images directory init init imagedir isadirectory imagedir title Select the default images directory animdir getdir title Select the default animations directory init init animdir isadirectory animdir title Select the default animations directory number of printer ptnumb xask title Number of accessible printers value 0 long define all the printer parameters init init define printer parameters IF ptnumb NE 0 THEN BEGIN base widget_base column frame cwids lonarr 3 ptnumb FOR i 0 ptnumb 1 DO BEGIN subbase widget_base base row cwids 0 i cw_field subbase string Title printer_human_names strtrim i 2 cwids 1 i cw_field subbase string Title printer_machine_names strtrim i 2 cwids 2 i cw_field subbase string value lpr P Title print_command strtrim i 2 ENDFOR trash widget_button base value ok uvalue cwids ptresult ptr_new allocate_heap we realize the widget and wait for an answer widget_control base realize set_uvalue ptresult xmanager printerdef base init init printer_human_names strarr strtrim ptnumb 2 printer_machine_names strarr strtrim ptnumb 2 print_command strarr strtrim ptnumb 2 FOR i 0 ptnumb 1 DO BEGIN init init printer_human_names strtrim i 2 ptresult 0 i printer_machine_names strtrim i 2 ptresult 1 i print_command strtrim i 2 ptresult 2 i ENDFOR we freeing the pointer ptr_free ptresult ENDIF ELSE BEGIN init init printer_human_names printer_machine_names print_command ENDELSE Colors init init colors device decomposed 0 device retain 2 default color tables loadct get_names names ntables 40 title Choose the default color table the following lines come from loadct procedure nlines ntables 2 3 of lines to print nend nlines nlines 3 ntables for i 0 nend 1 do Print each line title title string format i2 a17 3x i2 a17 3x i2 a17 i names i i nlines names i nlines i 2 nlines xask title title value 39 long xask title title value 0 long 2 init init archive_ps strtrim archive_ps 2 end of the part that should be modified by the users if needed keep compatibility with the old version updateold filename xask title name of the init file written in homedir: myIDL value init pro string journal myIDL filename FOR i 0 n_elements init 1 DO journal init i journal RETURN END"); 394 395 395 396 -
trunk/SRC/Matrix/.idlwave_catalog
r138 r153 11 11 ("cmset_op_uniq" fun nil (lib "cmset_op.pro" nil "saxo") "Result = %s(a)" (nil)) 12 12 ("cmset_op" fun nil (lib "cmset_op.pro" nil "saxo") "Result = %s(a, op0, b)" (nil ("count") ("empty1") ("empty2") ("index") ("maxarray") ("not1") ("not2"))) 13 ("congridseb" fun nil (lib "congridseb.pro" nil "saxo") "Result = %s(tableau, x, y)" (nil))14 13 ("different" fun nil (lib "different.pro" nil "saxo") "Result = %s(a, b)" (nil)) 15 14 ("extrac2" fun nil (lib "extrac2.pro" nil "saxo") "Result = %s(array, index1, index2, index3, index4)" (nil)) -
trunk/SRC/Obsolete/.idlwave_catalog
r138 r153 6 6 (setq idlwave-library-catalog-libname "saxo") 7 7 (setq idlwave-library-catalog-routines 8 '(("cp" pro nil (lib "cp.pro" nil "saxo") "%s, filenamein, filenameout" (nil ("_extra"))) 8 '(("congridseb" fun nil (lib "congridseb.pro" nil "saxo") "Result = %s(tableau, x, y)" (nil)) 9 ("cp" pro nil (lib "cp.pro" nil "saxo") "%s, filenamein, filenameout" (nil ("_extra"))) 9 10 ("extrait" fun nil (lib "extrait.pro" nil "saxo") "Result = %s(tab, indicex, indicey, indicez, indicet)" (nil)) 10 11 ("ficdate" fun nil (lib "ficdate.pro" nil "saxo") "Result = %s(vdate, dim, nomexp)" (nil)) -
trunk/SRC/ToBeReviewed/PLOTS/DESSINE/.idlwave_catalog
r151 r153 12 12 ("pltsc" pro nil (lib "pltsc.pro" nil "saxo") "%s, tab1, tab2, min1, max1, min2, max2, varname2" (nil ("_extra") ("BOXZOOM") ("COL1D") ("OV1D") ("STY1D"))) 13 13 ("pltt" pro nil (lib "pltt.pro" nil "saxo") "%s, tab, giventype, givenmin, givenmax, datmin, datmax" (nil ("_extra") ("BOXZOOM") ("COL1D") ("CONTINTERVALLE") ("CONTLABEL") ("CONTMAX") ("CONTMIN") ("CONTNLEVEL") ("CONTOUR") ("ENDPOINTS") ("EXCHANGE_XY") ("FILTER") ("INTERVALLE") ("INV") ("LABEL") ("MAXIN") ("MININ") ("NLEVEL") ("OV1D") ("OVERPLOT") ("REPEAT_C") ("STRICTFILL") ("STY1D") ("STYLE") ("TREND_TYPE") ("TT") ("TYPEIN") ("XT") ("YT") ("ZT"))) 14 ("pltv" pro nil (lib "pltv.pro" nil "saxo") "%s, data, min, max" (nil ("_EXTRA") ("BOTTOM") ("BOXZOOM") ("C_MASK") ("C_NAN") ("MASKVAL") ("MAXIN") ("MININ") ("NCOLORS") ("NOINTERP"))) 14 15 ("pltz" pro nil (lib "pltz.pro" nil "saxo") "%s, tab, giventype, givenmin, givenmax" (nil ("_EXTRA") ("BOXZOOM") ("CONTINTERVALLE") ("CONTLABEL") ("CONTMAX") ("CONTMIN") ("CONTNLEVEL") ("CONTOUR") ("ENDPOINTS") ("FILLXDIR") ("INTERVALLE") ("INV") ("LABEL") ("MASKFILL") ("MAXIN") ("MININ") ("NLEVEL") ("NOTRI") ("OVERPLOT") ("REALSECTION") ("SIN") ("STRICTFILL") ("STYLE") ("TYPEIN") ("USETRI") ("WDEPTH") ("XZ") ("YZ") ("ZOOM") ("ZRATIO"))) 15 16 ("sbar_plot" pro nil (lib "sbar_plot.pro" nil "saxo") "%s, Values" (nil ("_extra") ("COLORS") ("NOREINITPLT"))) -
trunk/SRC/ToBeReviewed/PLOTS/DIVERS/.idlwave_catalog
r76 r153 9 9 ("autoscale" pro nil (lib "autoscale.pro" nil "saxo") "%s, min, max, ci" (nil)) 10 10 ("axis4pltz" pro nil (lib "axis4pltz.pro" nil "saxo") "%s, type, mask, glam, gphi, z" (nil ("_extra") ("PROFMAX") ("PROFMIN") ("SIN") ("XXAXIS") ("ZOOM") ("ZRATIO") ("ZZAXIS"))) 11 ("barrecouleur" pro nil (lib "barrecouleur.pro" nil "saxo") "%s, colnumb, clbinf, clbsup, clbdiv" (nil ("_extra") ("CB_SUBTITLE") ("CB_TITLE") ("COLOR_c") ("divisions") (" max") ("min") ("NOCOLORBAR") ("NOFILL") ("POST")))11 ("barrecouleur" pro nil (lib "barrecouleur.pro" nil "saxo") "%s, colnumb, clbinf, clbsup, clbdiv" (nil ("_extra") ("CB_SUBTITLE") ("CB_TITLE") ("COLOR_c") ("divisions") ("MAX") ("MIN") ("NOCOLORBAR") ("NOFILL") ("POST"))) 12 12 ("err_1d" fun nil (lib "checkfield.pro" nil "saxo") "Result = %s(type, n1, name, n2)" (nil)) 13 13 ("err_2d" fun nil (lib "checkfield.pro" nil "saxo") "Result = %s(type, sz, nx, ny, nz)" (nil)) -
trunk/SRC/Utilities/.idlwave_catalog
r138 r153 10 10 ("def_myuniquetmpdir" pro nil (lib "def_myuniquetmpdir.pro" nil "saxo") "%s" (nil)) 11 11 ("demomode_compatibility" pro nil (lib "demomode_compatibility.pro" nil "saxo") "%s" (nil)) 12 ("find" fun nil (lib "find.pro" nil "saxo") "Result = %s(filein)" (nil ("_extra") ("FIRSTFOUND") ("IODIRECTORY") ("LOOKALLDIR") ("NOPRO") ("ONLYNC") ("ONLYPRO") ("RECURSIVE") ("REPERTOIRE") (" UNIQUE")))12 ("find" fun nil (lib "find.pro" nil "saxo") "Result = %s(filein)" (nil ("_extra") ("FIRSTFOUND") ("IODIRECTORY") ("LOOKALLDIR") ("NOPRO") ("ONLYNC") ("ONLYPRO") ("RECURSIVE") ("REPERTOIRE") ("TRYFIND") ("UNIQUE"))) 13 13 ("err_mess" fun nil (lib "fitintobox.pro" nil "saxo") "Result = %s(sz, jpi, nx, jpj, ny, jpk, nz, jpt)" (nil)) 14 14 ("fitintobox" fun nil (lib "fitintobox.pro" nil "saxo") "Result = %s(field, nx, ny, nz, firstx, firsty, firstz, lastx, lasty, lastz)" (nil ("WDEPTH")))
Note: See TracChangeset
for help on using the changeset viewer.