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> &nbsp; ";
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