opengl 0.7.0.pre1-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. data/.gemtest +0 -0
  2. data/.gitignore +8 -0
  3. data/History.txt +36 -0
  4. data/MIT-LICENSE +18 -0
  5. data/Manifest.txt +140 -0
  6. data/README.rdoc +51 -0
  7. data/Rakefile +129 -0
  8. data/Rakefile.cross +104 -0
  9. data/doc/build_install.txt +119 -0
  10. data/doc/extensions.txt.in +348 -0
  11. data/doc/history.txt +66 -0
  12. data/doc/requirements_and_design.txt +117 -0
  13. data/doc/roadmap.txt +28 -0
  14. data/doc/scientific_use.txt +35 -0
  15. data/doc/supplies/page_template.html +71 -0
  16. data/doc/thanks.txt +29 -0
  17. data/doc/tutorial.txt +469 -0
  18. data/examples/NeHe/nehe_lesson02.rb +117 -0
  19. data/examples/NeHe/nehe_lesson03.rb +122 -0
  20. data/examples/NeHe/nehe_lesson04.rb +133 -0
  21. data/examples/NeHe/nehe_lesson05.rb +186 -0
  22. data/examples/NeHe/nehe_lesson36.rb +303 -0
  23. data/examples/OrangeBook/3Dlabs-License.txt +33 -0
  24. data/examples/OrangeBook/brick.frag +36 -0
  25. data/examples/OrangeBook/brick.rb +376 -0
  26. data/examples/OrangeBook/brick.vert +41 -0
  27. data/examples/OrangeBook/particle.frag +17 -0
  28. data/examples/OrangeBook/particle.rb +406 -0
  29. data/examples/OrangeBook/particle.vert +38 -0
  30. data/examples/README +16 -0
  31. data/examples/RedBook/aapoly.rb +142 -0
  32. data/examples/RedBook/aargb.rb +119 -0
  33. data/examples/RedBook/accanti.rb +162 -0
  34. data/examples/RedBook/accpersp.rb +215 -0
  35. data/examples/RedBook/alpha.rb +123 -0
  36. data/examples/RedBook/alpha3D.rb +158 -0
  37. data/examples/RedBook/bezcurve.rb +105 -0
  38. data/examples/RedBook/bezmesh.rb +137 -0
  39. data/examples/RedBook/checker.rb +124 -0
  40. data/examples/RedBook/clip.rb +95 -0
  41. data/examples/RedBook/colormat.rb +135 -0
  42. data/examples/RedBook/cube.rb +69 -0
  43. data/examples/RedBook/depthcue.rb +99 -0
  44. data/examples/RedBook/dof.rb +205 -0
  45. data/examples/RedBook/double.rb +105 -0
  46. data/examples/RedBook/drawf.rb +91 -0
  47. data/examples/RedBook/feedback.rb +145 -0
  48. data/examples/RedBook/fog.rb +167 -0
  49. data/examples/RedBook/font.rb +151 -0
  50. data/examples/RedBook/hello.rb +79 -0
  51. data/examples/RedBook/image.rb +137 -0
  52. data/examples/RedBook/jitter.rb +207 -0
  53. data/examples/RedBook/lines.rb +128 -0
  54. data/examples/RedBook/list.rb +111 -0
  55. data/examples/RedBook/material.rb +275 -0
  56. data/examples/RedBook/mipmap.rb +156 -0
  57. data/examples/RedBook/model.rb +113 -0
  58. data/examples/RedBook/movelight.rb +132 -0
  59. data/examples/RedBook/pickdepth.rb +179 -0
  60. data/examples/RedBook/planet.rb +108 -0
  61. data/examples/RedBook/quadric.rb +158 -0
  62. data/examples/RedBook/robot.rb +115 -0
  63. data/examples/RedBook/select.rb +196 -0
  64. data/examples/RedBook/smooth.rb +95 -0
  65. data/examples/RedBook/stencil.rb +163 -0
  66. data/examples/RedBook/stroke.rb +167 -0
  67. data/examples/RedBook/surface.rb +166 -0
  68. data/examples/RedBook/teaambient.rb +132 -0
  69. data/examples/RedBook/teapots.rb +182 -0
  70. data/examples/RedBook/tess.rb +183 -0
  71. data/examples/RedBook/texbind.rb +147 -0
  72. data/examples/RedBook/texgen.rb +169 -0
  73. data/examples/RedBook/texturesurf.rb +128 -0
  74. data/examples/RedBook/varray.rb +159 -0
  75. data/examples/RedBook/wrap.rb +148 -0
  76. data/examples/misc/OGLBench.rb +337 -0
  77. data/examples/misc/anisotropic.rb +194 -0
  78. data/examples/misc/fbo_test.rb +356 -0
  79. data/examples/misc/font-glut.rb +46 -0
  80. data/examples/misc/glfwtest.rb +30 -0
  81. data/examples/misc/plane.rb +161 -0
  82. data/examples/misc/readpixel.rb +65 -0
  83. data/examples/misc/sdltest.rb +34 -0
  84. data/examples/misc/trislam.rb +828 -0
  85. data/ext/common/common.h +448 -0
  86. data/ext/common/conv.h +234 -0
  87. data/ext/common/funcdef.h +280 -0
  88. data/ext/common/gl-enums.h +10031 -0
  89. data/ext/common/gl-error.h +23 -0
  90. data/ext/common/gl-types.h +67 -0
  91. data/ext/common/glu-enums.h +463 -0
  92. data/ext/gl/extconf.rb +43 -0
  93. data/ext/gl/gl-1.0-1.1.c +2811 -0
  94. data/ext/gl/gl-1.2.c +814 -0
  95. data/ext/gl/gl-1.3.c +443 -0
  96. data/ext/gl/gl-1.4.c +348 -0
  97. data/ext/gl/gl-1.5.c +225 -0
  98. data/ext/gl/gl-2.0.c +657 -0
  99. data/ext/gl/gl-2.1.c +57 -0
  100. data/ext/gl/gl-enums.c +3354 -0
  101. data/ext/gl/gl-error.c +104 -0
  102. data/ext/gl/gl-ext-3dfx.c +27 -0
  103. data/ext/gl/gl-ext-arb.c +866 -0
  104. data/ext/gl/gl-ext-ati.c +41 -0
  105. data/ext/gl/gl-ext-ext.c +889 -0
  106. data/ext/gl/gl-ext-gremedy.c +41 -0
  107. data/ext/gl/gl-ext-nv.c +679 -0
  108. data/ext/gl/gl.c +216 -0
  109. data/ext/glu/extconf.rb +51 -0
  110. data/ext/glu/glu-enums.c +164 -0
  111. data/ext/glu/glu.c +1530 -0
  112. data/ext/glut/extconf.rb +67 -0
  113. data/ext/glut/glut.c +1624 -0
  114. data/lib/opengl.rb +89 -0
  115. data/test/README +10 -0
  116. data/test/tc_common.rb +98 -0
  117. data/test/tc_ext_arb.rb +467 -0
  118. data/test/tc_ext_ati.rb +33 -0
  119. data/test/tc_ext_ext.rb +551 -0
  120. data/test/tc_ext_gremedy.rb +36 -0
  121. data/test/tc_ext_nv.rb +357 -0
  122. data/test/tc_func_10_11.rb +1281 -0
  123. data/test/tc_func_12.rb +186 -0
  124. data/test/tc_func_13.rb +229 -0
  125. data/test/tc_func_14.rb +197 -0
  126. data/test/tc_func_15.rb +270 -0
  127. data/test/tc_func_20.rb +346 -0
  128. data/test/tc_func_21.rb +541 -0
  129. data/test/tc_glu.rb +310 -0
  130. data/test/tc_include_gl.rb +35 -0
  131. data/test/tc_misc.rb +54 -0
  132. data/test/tc_require_gl.rb +34 -0
  133. data/utils/README +11 -0
  134. data/utils/enumgen.rb +112 -0
  135. data/utils/extlistgen.rb +90 -0
  136. data/utils/mkdn2html.rb +59 -0
  137. data/utils/post-mkdn2html.rb +91 -0
  138. data/website/images/ogl.jpg +0 -0
  139. data/website/images/tab_bottom.gif +0 -0
  140. data/website/style.css +198 -0
  141. metadata +274 -0
data/utils/enumgen.rb ADDED
@@ -0,0 +1,112 @@
1
+ #
2
+ # Copyright (C) 2007 Jan Dvorak <jan.dvorak@kraxnet.cz>
3
+ #
4
+ # This program is distributed under the terms of the MIT license.
5
+ # See the included MIT-LICENSE file for the terms of this license.
6
+ #
7
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
8
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
9
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
10
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
11
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
12
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
13
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
14
+ #
15
+ # enumgen.rb - generates GL/GLU enumerators code based on enum/enumext/gluenum .spec files
16
+
17
+ require 'open-uri'
18
+
19
+ def parse_enum_spec(infilename)
20
+ puts "Reading #{infilename} ..."
21
+ enum_list = {}
22
+ f = open(infilename,"r")
23
+ f.each do |line|
24
+ case line
25
+ when /^#|:|^$/ # skip comment, directive or empty line
26
+ next
27
+ when /^\tuse/ # enum alias for organization purpose, we don't need that
28
+ next
29
+ when /^\t|^ / # enum
30
+ # remove trailing comment (if any) and split
31
+ name,equals,value,*rest = line.split("#")[0].split(" ")
32
+ # true/false are special constants
33
+ unless (name=="TRUE" or name=="FALSE")
34
+ enum_list[name] = value
35
+ end
36
+ else
37
+ puts "Unexpected line: #{line}"
38
+ end
39
+ end
40
+ f.close
41
+ enum_list
42
+ end
43
+
44
+ def write_enums(enum_list, task)
45
+ # .h
46
+ puts "Writing #{task[:h]}"
47
+ File.open(task[:h], "w") do |f|
48
+ f << "/* This file was genereated on #{Time.now}" << "\n"
49
+ task[:sources].each do |source| f << " source: #{source}" << "\n" end
50
+ f << "*/" << "\n\n"
51
+ enum_list.each do |name,value|
52
+ gl_name = task[:prefix] + name
53
+ f << "#ifndef #{gl_name}" << "\n"
54
+ f << "#define #{gl_name} #{value}" << "\n"
55
+ f << "#endif" << "\n"
56
+ end
57
+ end
58
+
59
+ # .c
60
+ puts "Writing #{task[:c]}"
61
+ File.open(task[:c], "w") do |f|
62
+ f << "/* This file was genereated on #{Time.now}" << "\n"
63
+ task[:sources].each do |source| f << " source: #{source}" << "\n" end
64
+ f << "*/" << "\n\n"
65
+ f << '#include "../common/common.h"' << "\n"
66
+ f << "void #{task[:prefix].downcase}init_enums(VALUE module)" << "\n"
67
+ f << "{" << "\n"
68
+
69
+ # true/false are special constants
70
+ f << "\trb_define_const(module, \"#{task[:prefix]}TRUE\", Qtrue);" << "\n"
71
+ f << "\trb_define_const(module, \"#{task[:prefix]}FALSE\", Qfalse);" << "\n"
72
+ f << "\n"
73
+
74
+ enum_list.each do |name,value|
75
+ gl_name = task[:prefix] + name
76
+ f << "\trb_define_const(module, \"#{gl_name}\", INT2NUM(#{gl_name}));" << "\n"
77
+ end
78
+
79
+ f << "}" << "\n"
80
+ end
81
+ end
82
+
83
+
84
+ # main
85
+ begin
86
+ gl_enums = {:c => "../ext/gl/gl-enums.c",:h => "../ext/common/gl-enums.h",
87
+ :sources => ["http://www.opengl.org/registry/api/enum.spec",
88
+ "http://www.opengl.org/registry/api/enumext.spec"],
89
+ :prefix => "GL_"
90
+ }
91
+
92
+ glu_enums = {:c => "../ext/glu/glu-enums.c",:h => "../ext/common/glu-enums.h",
93
+ :sources => "http://oss.sgi.com/cgi-bin/cvsweb.cgi/~checkout~/projects/ogl-sample/main/doc/registry/specs/enumglu.spec",
94
+ :prefix => "GLU_"
95
+ }
96
+
97
+ task_list = [gl_enums, glu_enums]
98
+
99
+ # main loop
100
+ task_list.each do |task|
101
+ enum_list = {}
102
+ # gather enums from each source file/url
103
+ task[:sources].each do |fname|
104
+ enum_list.update(parse_enum_spec(fname))
105
+ end
106
+ # write to files
107
+ write_enums(enum_list.sort,task)
108
+ end
109
+ puts "All OK"
110
+ rescue
111
+ puts $!
112
+ end
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Copyright (C) 2007 Jan Dvorak <jan.dvorak@kraxnet.cz>
4
+ #
5
+ # This program is distributed under the terms of the MIT license.
6
+ # See the included MIT-LICENSE file for the terms of this license.
7
+ #
8
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
11
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
12
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
13
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
14
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
15
+ #
16
+ # extlistgen.rb - generates HTML table of extension support from .in file
17
+
18
+ # main
19
+ require 'csv'
20
+
21
+ opengl_extdoc_url = "http://opengl.org/registry/specs/"
22
+
23
+ # the extension / doc url naming is sometimes inconsistent
24
+ link_exceptions = {
25
+ "GL_SGIX_texture_add_env" => "SGIX/texture_env_add.txt",
26
+ "GL_SUN_multi_draw_arrays" => "EXT/multi_draw_arrays.txt",
27
+ "GL_SGIX_pixel_texture" => "SGIX/sgix_pixel_texture.txt",
28
+ "GL_SGIS_fog_function" => "SGIS/fog_func.txt",
29
+ "GL_SGIX_vertex_preclip_hint" => "SGIX/vertex_preclip.txt"
30
+ }
31
+
32
+ begin
33
+ if ARGV.size < 3
34
+ puts "Parameters: infile outfile version [version ...]"
35
+ raise
36
+ end
37
+
38
+ infile,outfile,*versions = ARGV
39
+
40
+ # read the list
41
+ extensions = []
42
+ CSV.open(infile, 'r') do |row|
43
+ next if row[0][0] == ?# # discard comment line
44
+ extensions << row
45
+ end
46
+ extensions.sort!
47
+
48
+ # create output
49
+ File.open(outfile, 'w') do |f|
50
+ f << "<table class='extlist'>\n"
51
+ f << "<tr>\n"
52
+
53
+ # header
54
+ f << "<th>Extension</th>\n"
55
+ versions.each do |ver|
56
+ f << "<th>#{ver}</th>\n"
57
+ end
58
+ f << "</tr>\n"
59
+
60
+ # content
61
+ extensions.each do |ext|
62
+ next if ext[1]=="NonGL" # skip non-GL (WGL,GLX) extensions
63
+
64
+ if (link_exceptions[ext[0]])
65
+ link = opengl_extdoc_url + link_exceptions[ext[0]]
66
+ else
67
+ tmp, subdir, *fname = ext[0].split("_")
68
+ link = opengl_extdoc_url + subdir + "/" + fname.join("_") + ".txt"
69
+ end
70
+
71
+ f << "<tr>\n"
72
+ f << "<td><a href='#{link}'>#{ext[0]}</a></td>"
73
+
74
+ versions.each do |ver|
75
+ if (ext[1]=="Supported" && (ver>=ext[2]))
76
+ f << "<td class='supported'>YES</td>"
77
+ elsif (ext[1]=="Other")
78
+ f << "<td class='other'>NO</td>"
79
+ else # unsupported
80
+ f << "<td class='unsupported'>NO</td>"
81
+ end
82
+ end
83
+ f << "</tr>\n"
84
+ end
85
+
86
+ f << "</table>"
87
+ end
88
+ rescue
89
+ puts $!
90
+ end
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Copyright (C) 2006 John M. Gabriele <jmg3000@gmail.com>
4
+ #
5
+ # This program is distributed under the terms of the MIT license.
6
+ # See the included MIT-LICENSE file for the terms of this license.
7
+ #
8
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
11
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
12
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
13
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
14
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
15
+
16
+ # Don't use -w for now -- too many warning re. the BlueCloth module.
17
+
18
+ # Converts the named text file (containing plain text marked up with Markdown
19
+ # markup) into a corresponding html file. The user must specify both filenames.
20
+ # If the outfile already exists, it will be written over.
21
+
22
+ require 'rubygems'
23
+ require 'bluecloth'
24
+
25
+ if ARGV.size != 2
26
+ puts "Error: please pass exactly two args: the name of the file"
27
+ puts "you want converted to html, and the name of the file:"
28
+ puts "mkdn2html.rb infile.txt outfile.html"
29
+ exit 1
30
+ end
31
+
32
+ infile_name = ARGV[0]
33
+ outfile_name = ARGV[1]
34
+
35
+ # Strip the last filename extension so we can use the basename in the
36
+ # title of the page.
37
+ base_filename = File.basename( infile_name, ".*" )
38
+ puts "base_filename = #{base_filename}"
39
+ if base_filename == 'README'
40
+ base_filename = 'Home'
41
+ end
42
+ puts "base_filename = #{base_filename}"
43
+
44
+ raw_markdown_text = IO.read( infile_name )
45
+ bc = BlueCloth.new( raw_markdown_text )
46
+ html_content = bc.to_html
47
+
48
+ puts "outfile is #{File.expand_path( outfile_name )}"
49
+
50
+ template_content = IO.read( './doc/supplies/page_template.html' )
51
+ template_content.sub!( /\{\{content\}\}/, html_content )
52
+ template_content.sub!( /\{\{title\}\}/, base_filename )
53
+
54
+
55
+ File.open( outfile_name, 'w' ) do |file|
56
+ file.write template_content
57
+ end
58
+
59
+ puts "Done creating plain #{base_filename} html file."
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Copyright (C) 2006 John M. Gabriele <jmg3000@gmail.com>
4
+ #
5
+ # This program is distributed under the terms of the MIT license.
6
+ # See the included MIT-LICENSE file for the terms of this license.
7
+ #
8
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
9
+ # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
10
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
11
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
12
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
13
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
14
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
15
+
16
+
17
+ # This script will modify the contents of the first html file you
18
+ # pass it, and save the modifications in the 2nd file.
19
+ #
20
+ # What it does:
21
+ #
22
+ # It looks in the first file for patterns like this:
23
+ #
24
+ # <pre><code>{{name}}\nstuff</code></pre>
25
+ #
26
+ # and replaces "stuff" with "stuff" processed to include color syntax
27
+ # highlighting, assuming it is code written in language "name".
28
+ #
29
+ # Prerequisites:
30
+ # * This script expects that you have GNU source-highlight installed.
31
+
32
+ require 'cgi'
33
+
34
+ if ARGV.size != 2
35
+ puts "Please don't trifle with me."
36
+ exit 1
37
+ end
38
+
39
+ infile_name = ARGV[0]
40
+ outfile_name = ARGV[1]
41
+
42
+ # Open the file, slurp the whole thing into one long string.
43
+ infile_content = IO.read( infile_name )
44
+ outfile_content = infile_content.clone
45
+ temp_content = infile_content.clone
46
+
47
+ # Make sure we find all of them -- there could be more than 1 in
48
+ # the given file. XXX (Just finding the first one here.)
49
+
50
+ snippet_num = 0
51
+
52
+ while true
53
+ # If we get a match, process that snippet.
54
+ if outfile_content =~ %r{<pre><code>\{\{(\w+)\}\}\n(.+?)</code></pre>}m
55
+ pre_stuff = $`
56
+ language = $1
57
+ code_to_convert = $2
58
+ post_stuff = $'
59
+
60
+ # BlueCloth already escapes html tags, so this is to avoid
61
+ # double escaping by source-highlight
62
+ # - Jan
63
+ code_to_convert = CGI::unescapeHTML(code_to_convert)
64
+
65
+ # Quick usage note on source-highlight:
66
+ #
67
+ # source-highlight -s ruby -i $filename -o $filename
68
+ #
69
+ # where, if you omit -o filename, output goes to stdout.
70
+
71
+ base_name = File.basename( outfile_name, '.*' )
72
+ File.open( "doc/#{base_name}_#{snippet_num}.snip", 'w' ) do |file|
73
+ file.write code_to_convert
74
+ end
75
+
76
+ highlighted_code =
77
+ `source-highlight -s #{language} -i doc/#{base_name}_#{snippet_num}.snip -f html`
78
+
79
+ temp_content = pre_stuff + highlighted_code + post_stuff
80
+ snippet_num += 1
81
+ outfile_content = temp_content.clone
82
+ else
83
+ break
84
+ end
85
+ end
86
+
87
+ File.open( outfile_name, 'w' ) do |file|
88
+ file.write outfile_content
89
+ end
90
+
91
+ puts "Done syntax highlighting #{snippet_num} snippets for #{infile_name}. Wrote #{outfile_name}."
Binary file
Binary file
data/website/style.css ADDED
@@ -0,0 +1,198 @@
1
+ /* CSS Document
2
+ Template Title: Uncomplicated
3
+ Author: J David Macor
4
+ URL: http://www.jdavidmacor.com
5
+
6
+ Note, John M. Gabriele darkened it a bit.
7
+ */
8
+
9
+ /* Main Body */
10
+ body {
11
+ font-family: verdana, sans-serif;
12
+ font-size: 11px;
13
+ background: #d3e3d3;
14
+ }
15
+
16
+ #container {
17
+ width: 760px;
18
+ padding: 30px;
19
+ padding-bottom: 5px;
20
+ border: 1px solid #ccc;
21
+ background: #e8e8e8;
22
+ margin: 0 auto;
23
+ }
24
+
25
+ /* Header */
26
+ #header {
27
+ width: 500px;
28
+ border-left: 4px solid #ccc;
29
+ border-right: 4px solid #ccc;
30
+ margin: 0 auto;
31
+ margin-bottom: 20px;
32
+ font-family: Geneva, Arial, Helvetica, sans-serif;
33
+ font-size: 36px;
34
+ letter-spacing: 0.4em;
35
+ text-align: center;
36
+ }
37
+
38
+ /* Navigation */
39
+ #tabnav {
40
+ height: 20px;
41
+ margin: 0;
42
+ padding-left: 10px;
43
+ background: url(images/tab_bottom.gif) repeat-x bottom;
44
+ }
45
+
46
+ #tabnav li {
47
+ margin: 0;
48
+ padding: 0;
49
+ display: inline;
50
+ list-style-type: none;
51
+ }
52
+
53
+ #tabnav a:link, #tabnav a:visited {
54
+ float: left;
55
+ background: #f3f3f3;
56
+ font-size: 10px;
57
+ line-height: 14px;
58
+ font-weight: bold;
59
+ padding: 2px 10px 2px 10px;
60
+ margin-right: 4px;
61
+ border: 1px solid #ccc;
62
+ text-decoration: none;
63
+ color: #666;
64
+ }
65
+
66
+ #tabnav a:link.active, #tabnav a:visited.active {
67
+ border-bottom: 1px solid #fff;
68
+ background: #fff;
69
+ color: #000;
70
+ }
71
+
72
+ #tabnav a:hover {
73
+ background: #fff;
74
+ }
75
+
76
+ /* Main Content */
77
+ #content {
78
+ width: 550px;
79
+ margin-top: 15px;
80
+ }
81
+
82
+ #content h2 {
83
+ font-size: 20px;
84
+ }
85
+
86
+ #content p {
87
+ font-size: 12px;
88
+ }
89
+
90
+ #content a, a:visited {
91
+ color: #666666;
92
+ text-decoration: underline;
93
+ }
94
+
95
+ #content a:hover {
96
+ color: #000000;
97
+ }
98
+
99
+ /* Sidebar */
100
+ #sidebar {
101
+ width: 190px;
102
+ float: right;
103
+ clear: none;
104
+ margin-top: 15px;
105
+ }
106
+
107
+ #sidebar h3 {
108
+ border-bottom: 1px solid #ccc;
109
+ font-size: 14px;
110
+ }
111
+
112
+ #sidebar ul {
113
+ font-size: 12px;
114
+ }
115
+
116
+ #sidebar a, a:visited {
117
+ color: #666666;
118
+ text-decoration: underline;
119
+ }
120
+
121
+ #sidebar a:hover {
122
+ color: #000000;
123
+ }
124
+
125
+ /* footer */
126
+ #footer {
127
+ color: #666;
128
+ text-align: center;
129
+ border-top: 1px solid #ccc;
130
+ size: 11px;
131
+ margin-top: 30px;
132
+ margin-bottom: 0;
133
+ }
134
+
135
+ #footer a, a:visited {
136
+ color: #666666;
137
+ text-decoration: underline;
138
+ }
139
+
140
+ #footer a:hover {
141
+ color: #000000;
142
+ }
143
+
144
+ pre{
145
+ width: 100%;
146
+ overflow: auto;
147
+ border: 1px solid #CCC;
148
+ background: #EEE;
149
+ }
150
+
151
+ .extlist{
152
+ text-align: left;
153
+ font-weight: normal;
154
+ color: #404040;
155
+ background-color: #fafafa;
156
+ border: 1px #666666 solid;
157
+ border-collapse: collapse;
158
+ border-spacing: 1px;
159
+ }
160
+
161
+ .extlist th{
162
+ text-align: center;
163
+ border-bottom: 1px solid #666666;
164
+ border-left: 1px solid #666666;
165
+ background-color: #dddddd;
166
+ font-weight: bold;
167
+ color: #404040;
168
+ }
169
+
170
+ .extlist td,.extlist td.supported,.extlist td.unsupported,.extlist td.other{
171
+ border: 1px solid #666666;
172
+ text-align: center;
173
+ text-indent: 1px;
174
+ color: #404040;
175
+ }
176
+
177
+ .extlist td {
178
+ text-align: left;
179
+ }
180
+
181
+ .extlist td.supported {
182
+ background-color: #33ff33;
183
+ }
184
+
185
+ .extlist td.unsupported {
186
+ /* background-color: #ff3333; */
187
+ background-color: #cccccc;
188
+ }
189
+
190
+ .extlist td.other {
191
+ background-color: #cccccc;
192
+ }
193
+
194
+ /* f << "<td class='supported'>YES</td>"
195
+ elsif (ext[1]=="Other")
196
+ f << "<td class='other'>NO</td>"
197
+ else # unsupported
198
+ f << "<td class='unsupported'>NO</td>" */