102f4aeb0Sopenharmony_ci# This script is obsolete. It would need to change to generate TOC.html 202f4aeb0Sopenharmony_ci# in the new format and link to .html instead of .xml files. 302f4aeb0Sopenharmony_ci 402f4aeb0Sopenharmony_ci#!/usr/bin/perl 502f4aeb0Sopenharmony_ci 602f4aeb0Sopenharmony_cisub Usage { 702f4aeb0Sopenharmony_ciprint 802f4aeb0Sopenharmony_ci"Usage: maketoc xhtmldir xmldir 902f4aeb0Sopenharmony_ci where xhtmldir contains a directory full of OpenGL .xml XHTML man pages -AND- 1002f4aeb0Sopenharmony_ci where xmldir contains a directory full of OpenGL .xml source XML man pages 1102f4aeb0Sopenharmony_ci 1202f4aeb0Sopenharmony_ci probably want to redirect output into a file like 1302f4aeb0Sopenharmony_ci ./maketoc.pl . .. > ./toc.html 1402f4aeb0Sopenharmony_ci" 1502f4aeb0Sopenharmony_ci} 1602f4aeb0Sopenharmony_ci 1702f4aeb0Sopenharmony_cisub PrintHeader { 1802f4aeb0Sopenharmony_ciprint '<html> 1902f4aeb0Sopenharmony_ci<head> 2002f4aeb0Sopenharmony_ci<title>EGL Reference Pages</title> 2102f4aeb0Sopenharmony_ci<style type="text/css"> 2202f4aeb0Sopenharmony_ci 2302f4aeb0Sopenharmony_cihtml, body, table 2402f4aeb0Sopenharmony_ci{ color: #000; 2502f4aeb0Sopenharmony_ci padding: 4px 4px; 2602f4aeb0Sopenharmony_ci margin: 0px 0 0 0; 2702f4aeb0Sopenharmony_ci text-align: center; 2802f4aeb0Sopenharmony_ci font-family: Arial, Lucida, sans-serif; 2902f4aeb0Sopenharmony_ci font-size: 10pt; 3002f4aeb0Sopenharmony_ci 3102f4aeb0Sopenharmony_ci} 3202f4aeb0Sopenharmony_ci 3302f4aeb0Sopenharmony_ci#container { 3402f4aeb0Sopenharmony_ci margin: 10px; 3502f4aeb0Sopenharmony_ci font-size: 14pt; 3602f4aeb0Sopenharmony_ci text-decoration:none; 3702f4aeb0Sopenharmony_ci} 3802f4aeb0Sopenharmony_ci 3902f4aeb0Sopenharmony_citable.sample { 4002f4aeb0Sopenharmony_ci border-width: 1px; 4102f4aeb0Sopenharmony_ci border-spacing: 5px; 4202f4aeb0Sopenharmony_ci border-style: dotted; 4302f4aeb0Sopenharmony_ci border-color: black; 4402f4aeb0Sopenharmony_ci border-collapse: separate; 4502f4aeb0Sopenharmony_ci background-color: #F0F0F0; 4602f4aeb0Sopenharmony_ci} 4702f4aeb0Sopenharmony_citable.sample th { 4802f4aeb0Sopenharmony_ci border-width: 1px; 4902f4aeb0Sopenharmony_ci padding: 5px; 5002f4aeb0Sopenharmony_ci border-style: none; 5102f4aeb0Sopenharmony_ci} 5202f4aeb0Sopenharmony_citable.sample td { 5302f4aeb0Sopenharmony_ci border-width: 1px; 5402f4aeb0Sopenharmony_ci padding: 1px; 5502f4aeb0Sopenharmony_ci border-style: none; 5602f4aeb0Sopenharmony_ci} 5702f4aeb0Sopenharmony_ci</style> 5802f4aeb0Sopenharmony_ci 5902f4aeb0Sopenharmony_ci</head> 6002f4aeb0Sopenharmony_ci<body> 6102f4aeb0Sopenharmony_ci<a name="top"></a> 6202f4aeb0Sopenharmony_ci<h1>EGL Reference Pages</h1> 6302f4aeb0Sopenharmony_ci<br/><br/> 6402f4aeb0Sopenharmony_ci 6502f4aeb0Sopenharmony_ci'; 6602f4aeb0Sopenharmony_ci} 6702f4aeb0Sopenharmony_ci 6802f4aeb0Sopenharmony_cisub PrintFooter { 6902f4aeb0Sopenharmony_ciprint ' 7002f4aeb0Sopenharmony_ci</body> 7102f4aeb0Sopenharmony_ci</html> 7202f4aeb0Sopenharmony_ci'; 7302f4aeb0Sopenharmony_ci} 7402f4aeb0Sopenharmony_ci 7502f4aeb0Sopenharmony_cisub TableElementForFilename { 7602f4aeb0Sopenharmony_ci my $name = shift; 7702f4aeb0Sopenharmony_ci 7802f4aeb0Sopenharmony_ci my $strippedname = $name; 7902f4aeb0Sopenharmony_ci $strippedname =~ s/\.xml//; 8002f4aeb0Sopenharmony_ci print "\t"; 8102f4aeb0Sopenharmony_ci print '<tr><td><a target="pagedisp" href="' , $name , '">'; 8202f4aeb0Sopenharmony_ci print "$strippedname"; 8302f4aeb0Sopenharmony_ci print "</a></td></tr>\n"; 8402f4aeb0Sopenharmony_ci} 8502f4aeb0Sopenharmony_ci 8602f4aeb0Sopenharmony_cisub BeginTable { 8702f4aeb0Sopenharmony_ci my $letter = shift; 8802f4aeb0Sopenharmony_ci print "<a name=\"$letter\"></a><br/><br/>\n"; 8902f4aeb0Sopenharmony_ci print '<table width="220" align="center" class="sample">'; 9002f4aeb0Sopenharmony_ci print "\t<th>"; 9102f4aeb0Sopenharmony_ci print "$letter</th>\n"; 9202f4aeb0Sopenharmony_ci} 9302f4aeb0Sopenharmony_ci 9402f4aeb0Sopenharmony_cisub EndTable { 9502f4aeb0Sopenharmony_ci print "\t"; 9602f4aeb0Sopenharmony_ci print '<tr><td><center><a href="#top">Top</a></center></td></tr>'; 9702f4aeb0Sopenharmony_ci print "\n</table>\n\n"; 9802f4aeb0Sopenharmony_ci} 9902f4aeb0Sopenharmony_ci 10002f4aeb0Sopenharmony_ci 10102f4aeb0Sopenharmony_ci 10202f4aeb0Sopenharmony_ci############## 10302f4aeb0Sopenharmony_ci# main 10402f4aeb0Sopenharmony_ci############## 10502f4aeb0Sopenharmony_ci 10602f4aeb0Sopenharmony_ciif (@ARGV != 2) 10702f4aeb0Sopenharmony_ci{ 10802f4aeb0Sopenharmony_ci Usage(); 10902f4aeb0Sopenharmony_ci die; 11002f4aeb0Sopenharmony_ci} 11102f4aeb0Sopenharmony_ci 11202f4aeb0Sopenharmony_ci# grab list of generated XHTML files 11302f4aeb0Sopenharmony_ciopendir(DIR,$ARGV[0]) or die "couldn't open directory"; 11402f4aeb0Sopenharmony_ci 11502f4aeb0Sopenharmony_ci@files = readdir(DIR); 11602f4aeb0Sopenharmony_ciclose(DIR); 11702f4aeb0Sopenharmony_ci@files = sort @files; 11802f4aeb0Sopenharmony_ci 11902f4aeb0Sopenharmony_ciPrintHeader(); 12002f4aeb0Sopenharmony_ci 12102f4aeb0Sopenharmony_cimy @glX; 12202f4aeb0Sopenharmony_cimy @glut; 12302f4aeb0Sopenharmony_cimy @glu; 12402f4aeb0Sopenharmony_cimy @egl; 12502f4aeb0Sopenharmony_cimy @gl; 12602f4aeb0Sopenharmony_ci 12702f4aeb0Sopenharmony_cimy @realEntrypoints; 12802f4aeb0Sopenharmony_cimy @pageNames; 12902f4aeb0Sopenharmony_ci 13002f4aeb0Sopenharmony_ci#pre-create list of all true entrypoint names 13102f4aeb0Sopenharmony_ci 13202f4aeb0Sopenharmony_ciforeach (@files) 13302f4aeb0Sopenharmony_ci{ 13402f4aeb0Sopenharmony_ci if (/xml/) 13502f4aeb0Sopenharmony_ci { 13602f4aeb0Sopenharmony_ci $parentName = $ARGV[1] . '/' . $_; 13702f4aeb0Sopenharmony_ci if (open(PARENT, $parentName)) 13802f4aeb0Sopenharmony_ci { 13902f4aeb0Sopenharmony_ci @funcs = <PARENT>; 14002f4aeb0Sopenharmony_ci @funcs = grep(/<funcdef>/, @funcs); 14102f4aeb0Sopenharmony_ci foreach (@funcs) 14202f4aeb0Sopenharmony_ci { 14302f4aeb0Sopenharmony_ci $func = $_; 14402f4aeb0Sopenharmony_ci $func =~ s/.*<function>//; 14502f4aeb0Sopenharmony_ci $func =~ s/<\/function>.*\n//; 14602f4aeb0Sopenharmony_ci 14702f4aeb0Sopenharmony_ci push (@realEntrypoints, $func); 14802f4aeb0Sopenharmony_ci } 14902f4aeb0Sopenharmony_ci close(PARENT); 15002f4aeb0Sopenharmony_ci } 15102f4aeb0Sopenharmony_ci } 15202f4aeb0Sopenharmony_ci} 15302f4aeb0Sopenharmony_ci 15402f4aeb0Sopenharmony_ci#pre-create list of page names 15502f4aeb0Sopenharmony_ci 15602f4aeb0Sopenharmony_ciforeach (@files) 15702f4aeb0Sopenharmony_ci{ 15802f4aeb0Sopenharmony_ci if (/xml/) 15902f4aeb0Sopenharmony_ci { 16002f4aeb0Sopenharmony_ci $parentName = $ARGV[1] . '/' . $_; 16102f4aeb0Sopenharmony_ci if (open(PARENT, $parentName)) 16202f4aeb0Sopenharmony_ci { 16302f4aeb0Sopenharmony_ci my $entrypoint = $_; 16402f4aeb0Sopenharmony_ci $entrypoint =~ s/\.xml//; 16502f4aeb0Sopenharmony_ci 16602f4aeb0Sopenharmony_ci push (@pageNames, $entrypoint); 16702f4aeb0Sopenharmony_ci 16802f4aeb0Sopenharmony_ci close(PARENT); 16902f4aeb0Sopenharmony_ci } 17002f4aeb0Sopenharmony_ci } 17102f4aeb0Sopenharmony_ci} 17202f4aeb0Sopenharmony_ci 17302f4aeb0Sopenharmony_ci#sort the files into gl, glut, glu, EGL, and glX 17402f4aeb0Sopenharmony_ci 17502f4aeb0Sopenharmony_ciforeach (@files) 17602f4aeb0Sopenharmony_ci{ 17702f4aeb0Sopenharmony_ci if (/xml/) 17802f4aeb0Sopenharmony_ci { 17902f4aeb0Sopenharmony_ci # filter out entrypoint variations that don't have their own man pages 18002f4aeb0Sopenharmony_ci my $needIndexEntry = 0; 18102f4aeb0Sopenharmony_ci 18202f4aeb0Sopenharmony_ci # continue only if parent page exists (e.g. glColor) OR 18302f4aeb0Sopenharmony_ci # different parent page exists with matching entrypoint (e.g. glEnd) 18402f4aeb0Sopenharmony_ci my $entrypoint = $_; 18502f4aeb0Sopenharmony_ci $entrypoint =~ s/\.xml//; 18602f4aeb0Sopenharmony_ci 18702f4aeb0Sopenharmony_ci foreach (@pageNames) 18802f4aeb0Sopenharmony_ci { 18902f4aeb0Sopenharmony_ci if ($_ eq $entrypoint) 19002f4aeb0Sopenharmony_ci { 19102f4aeb0Sopenharmony_ci # it has its own man page 19202f4aeb0Sopenharmony_ci $needIndexEntry = 1; 19302f4aeb0Sopenharmony_ci } 19402f4aeb0Sopenharmony_ci } 19502f4aeb0Sopenharmony_ci 19602f4aeb0Sopenharmony_ci if ($needIndexEntry == 0) 19702f4aeb0Sopenharmony_ci { 19802f4aeb0Sopenharmony_ci foreach (@realEntrypoints) 19902f4aeb0Sopenharmony_ci { 20002f4aeb0Sopenharmony_ci if ($_ eq $entrypoint) 20102f4aeb0Sopenharmony_ci { 20202f4aeb0Sopenharmony_ci # it's a real entrypoint, but make sure not a variation 20302f4aeb0Sopenharmony_ci $needIndexEntry = 1; 20402f4aeb0Sopenharmony_ci 20502f4aeb0Sopenharmony_ci foreach (@pageNames) 20602f4aeb0Sopenharmony_ci { 20702f4aeb0Sopenharmony_ci my $alteredEntrypoint = $entrypoint; 20802f4aeb0Sopenharmony_ci $alteredEntrypoint =~ s/$_//; 20902f4aeb0Sopenharmony_ci 21002f4aeb0Sopenharmony_ci if (!($alteredEntrypoint eq $entrypoint)) 21102f4aeb0Sopenharmony_ci { 21202f4aeb0Sopenharmony_ci $needIndexEntry = 0; 21302f4aeb0Sopenharmony_ci } 21402f4aeb0Sopenharmony_ci } 21502f4aeb0Sopenharmony_ci } 21602f4aeb0Sopenharmony_ci } 21702f4aeb0Sopenharmony_ci } 21802f4aeb0Sopenharmony_ci 21902f4aeb0Sopenharmony_ci if ($needIndexEntry) 22002f4aeb0Sopenharmony_ci { 22102f4aeb0Sopenharmony_ci if (/^glX/) 22202f4aeb0Sopenharmony_ci { 22302f4aeb0Sopenharmony_ci push (@glX, $_); 22402f4aeb0Sopenharmony_ci } 22502f4aeb0Sopenharmony_ci elsif (/^glut/) 22602f4aeb0Sopenharmony_ci { 22702f4aeb0Sopenharmony_ci push (@glut, $_); 22802f4aeb0Sopenharmony_ci } 22902f4aeb0Sopenharmony_ci elsif (/^glu/) 23002f4aeb0Sopenharmony_ci { 23102f4aeb0Sopenharmony_ci push (@glu, $_); 23202f4aeb0Sopenharmony_ci } 23302f4aeb0Sopenharmony_ci elsif (/^egl/) 23402f4aeb0Sopenharmony_ci { 23502f4aeb0Sopenharmony_ci push (@egl, $_); 23602f4aeb0Sopenharmony_ci } 23702f4aeb0Sopenharmony_ci elsif (/^gl/) 23802f4aeb0Sopenharmony_ci { 23902f4aeb0Sopenharmony_ci push (@gl, $_); 24002f4aeb0Sopenharmony_ci } 24102f4aeb0Sopenharmony_ci } 24202f4aeb0Sopenharmony_ci } 24302f4aeb0Sopenharmony_ci} 24402f4aeb0Sopenharmony_ci 24502f4aeb0Sopenharmony_ci 24602f4aeb0Sopenharmony_ci#output the table of contents 24702f4aeb0Sopenharmony_ci 24802f4aeb0Sopenharmony_cimy @toc; 24902f4aeb0Sopenharmony_ci 25002f4aeb0Sopenharmony_ciif ($#gl > 0) 25102f4aeb0Sopenharmony_ci{ 25202f4aeb0Sopenharmony_ci $currentletter = ""; 25302f4aeb0Sopenharmony_ci $opentable = 0; 25402f4aeb0Sopenharmony_ci 25502f4aeb0Sopenharmony_ci foreach (@gl) 25602f4aeb0Sopenharmony_ci { 25702f4aeb0Sopenharmony_ci $name = $_; 25802f4aeb0Sopenharmony_ci $name =~ s/^gl//; 25902f4aeb0Sopenharmony_ci $firstletter = substr($name, 0, 1); 26002f4aeb0Sopenharmony_ci if ($firstletter ne $currentletter) 26102f4aeb0Sopenharmony_ci { 26202f4aeb0Sopenharmony_ci push (@toc, $firstletter); 26302f4aeb0Sopenharmony_ci $currentletter = $firstletter; 26402f4aeb0Sopenharmony_ci } 26502f4aeb0Sopenharmony_ci } 26602f4aeb0Sopenharmony_ci if ($#egl > 0) { push (@toc, "egl"); } 26702f4aeb0Sopenharmony_ci if ($#glu > 0) { push (@toc, "glu"); } 26802f4aeb0Sopenharmony_ci if ($#glut > 0) { push (@toc, "glut"); } 26902f4aeb0Sopenharmony_ci if ($#glX > 0) { push (@toc, "glX"); } 27002f4aeb0Sopenharmony_ci} 27102f4aeb0Sopenharmony_ci 27202f4aeb0Sopenharmony_ci 27302f4aeb0Sopenharmony_ciprint '<div id="container">'; 27402f4aeb0Sopenharmony_ciforeach (@toc) 27502f4aeb0Sopenharmony_ci{ 27602f4aeb0Sopenharmony_ci print '<b><a href="#'; 27702f4aeb0Sopenharmony_ci print $_; 27802f4aeb0Sopenharmony_ci print '" style="text-decoration:none"> '; 27902f4aeb0Sopenharmony_ci print $_; 28002f4aeb0Sopenharmony_ci print " </a></b> "; 28102f4aeb0Sopenharmony_ci} 28202f4aeb0Sopenharmony_ciprint "</div>\n\n\n"; 28302f4aeb0Sopenharmony_ci 28402f4aeb0Sopenharmony_ci# output the tables 28502f4aeb0Sopenharmony_ci 28602f4aeb0Sopenharmony_ciif ($#gl > 0) 28702f4aeb0Sopenharmony_ci{ 28802f4aeb0Sopenharmony_ci $currentletter = ""; 28902f4aeb0Sopenharmony_ci $opentable = 0; 29002f4aeb0Sopenharmony_ci 29102f4aeb0Sopenharmony_ci foreach (@gl) 29202f4aeb0Sopenharmony_ci { 29302f4aeb0Sopenharmony_ci $name = $_; 29402f4aeb0Sopenharmony_ci $name =~ s/^gl//; 29502f4aeb0Sopenharmony_ci $firstletter = substr($name, 0, 1); 29602f4aeb0Sopenharmony_ci if ($firstletter ne $currentletter) 29702f4aeb0Sopenharmony_ci { 29802f4aeb0Sopenharmony_ci if ($opentable == 1) 29902f4aeb0Sopenharmony_ci { 30002f4aeb0Sopenharmony_ci EndTable(); 30102f4aeb0Sopenharmony_ci } 30202f4aeb0Sopenharmony_ci BeginTable($firstletter); 30302f4aeb0Sopenharmony_ci $opentable =1; 30402f4aeb0Sopenharmony_ci $currentletter = $firstletter; 30502f4aeb0Sopenharmony_ci } 30602f4aeb0Sopenharmony_ci TableElementForFilename($_); 30702f4aeb0Sopenharmony_ci } 30802f4aeb0Sopenharmony_ci if ($opentable) 30902f4aeb0Sopenharmony_ci { 31002f4aeb0Sopenharmony_ci EndTable(); 31102f4aeb0Sopenharmony_ci } 31202f4aeb0Sopenharmony_ci} 31302f4aeb0Sopenharmony_ci 31402f4aeb0Sopenharmony_ciif ($#egl > 0) 31502f4aeb0Sopenharmony_ci{ 31602f4aeb0Sopenharmony_ci BeginTable("egl"); 31702f4aeb0Sopenharmony_ci foreach (@egl) 31802f4aeb0Sopenharmony_ci { 31902f4aeb0Sopenharmony_ci TableElementForFilename($_); 32002f4aeb0Sopenharmony_ci } 32102f4aeb0Sopenharmony_ci EndTable(); 32202f4aeb0Sopenharmony_ci} 32302f4aeb0Sopenharmony_ci 32402f4aeb0Sopenharmony_ciif ($#glu > 0) 32502f4aeb0Sopenharmony_ci{ 32602f4aeb0Sopenharmony_ci BeginTable("glu"); 32702f4aeb0Sopenharmony_ci foreach (@glu) 32802f4aeb0Sopenharmony_ci { 32902f4aeb0Sopenharmony_ci TableElementForFilename($_); 33002f4aeb0Sopenharmony_ci } 33102f4aeb0Sopenharmony_ci EndTable(); 33202f4aeb0Sopenharmony_ci} 33302f4aeb0Sopenharmony_ci 33402f4aeb0Sopenharmony_ciif ($#glut > 0) 33502f4aeb0Sopenharmony_ci{ 33602f4aeb0Sopenharmony_ci BeginTable("glut"); 33702f4aeb0Sopenharmony_ci foreach (@glut) 33802f4aeb0Sopenharmony_ci { 33902f4aeb0Sopenharmony_ci TableElementForFilename($_); 34002f4aeb0Sopenharmony_ci } 34102f4aeb0Sopenharmony_ci EndTable(); 34202f4aeb0Sopenharmony_ci} 34302f4aeb0Sopenharmony_ci 34402f4aeb0Sopenharmony_ciif ($#glX > 0) 34502f4aeb0Sopenharmony_ci{ 34602f4aeb0Sopenharmony_ci BeginTable("glX"); 34702f4aeb0Sopenharmony_ci foreach (@glX) 34802f4aeb0Sopenharmony_ci { 34902f4aeb0Sopenharmony_ci TableElementForFilename($_); 35002f4aeb0Sopenharmony_ci } 35102f4aeb0Sopenharmony_ci EndTable(); 35202f4aeb0Sopenharmony_ci} 35302f4aeb0Sopenharmony_ci 35402f4aeb0Sopenharmony_ciPrintFooter(); 355