diff options
author | Miguel de Icaza <miguel@gnome.org> | 2001-07-06 05:11:07 +0400 |
---|---|---|
committer | Miguel de Icaza <miguel@gnome.org> | 2001-07-06 05:11:07 +0400 |
commit | 0d8c27127739eb30f9f72d4fbf25ee996e4d9254 (patch) | |
tree | 760b2631aaa7c7d6d4b9870e951e951becfeaf97 | |
parent | 3d6ecf40664c0e72e250e1628289279c2859b98a (diff) |
Work on the web site
svn path=/trunk/mono/; revision=55
-rw-r--r-- | doc/c-sharp | 17 | ||||
-rw-r--r-- | doc/documentation | 4 | ||||
-rw-r--r-- | doc/rationale | 8 | ||||
-rw-r--r-- | doc/runtime | 3 | ||||
-rw-r--r-- | doc/status | 7 | ||||
-rw-r--r-- | doc/web/.cvsignore | 2 | ||||
-rw-r--r-- | doc/web/commands | 14 | ||||
-rw-r--r-- | doc/web/htmlify | 18 | ||||
-rw-r--r-- | doc/web/images/bgsquares.png | bin | 0 -> 4658 bytes | |||
-rw-r--r-- | doc/web/images/bgsquares.xcf.gz | bin | 0 -> 2775 bytes | |||
-rw-r--r-- | doc/web/images/mono.png | bin | 0 -> 4336 bytes | |||
-rw-r--r-- | doc/web/images/pixel.png | bin | 0 -> 157 bytes | |||
-rwxr-xr-x | doc/web/process.pl | 68 | ||||
-rw-r--r-- | doc/web/template.html.in | 67 | ||||
-rw-r--r-- | web/c-sharp | 17 | ||||
-rw-r--r-- | web/documentation | 4 | ||||
-rw-r--r-- | web/rationale | 8 | ||||
-rw-r--r-- | web/runtime | 3 | ||||
-rw-r--r-- | web/status | 7 | ||||
-rw-r--r-- | web/web/.cvsignore | 2 | ||||
-rw-r--r-- | web/web/commands | 14 | ||||
-rw-r--r-- | web/web/htmlify | 18 | ||||
-rw-r--r-- | web/web/images/bgsquares.png | bin | 0 -> 4658 bytes | |||
-rw-r--r-- | web/web/images/bgsquares.xcf.gz | bin | 0 -> 2775 bytes | |||
-rw-r--r-- | web/web/images/mono.png | bin | 0 -> 4336 bytes | |||
-rw-r--r-- | web/web/images/pixel.png | bin | 0 -> 157 bytes | |||
-rwxr-xr-x | web/web/process.pl | 68 | ||||
-rw-r--r-- | web/web/template.html.in | 67 |
28 files changed, 390 insertions, 26 deletions
diff --git a/doc/c-sharp b/doc/c-sharp index 03e58f154d0..f043a185e1a 100644 --- a/doc/c-sharp +++ b/doc/c-sharp @@ -9,12 +9,13 @@ compiler. Recently I started using the System.Reflection API to load system type definitions and avoid self-population of types in the compiler and dropped my internal Type - representation in favor of using .NET's System.Type. + representation in favor of using the CLI's System.Type. ** Phases of the compiler The compiler has a number of phases: + <ul> * Lexical analyzer: hand-coded lexical analyzer that provides tokens to the parser. @@ -44,6 +45,8 @@ * Code generation: nothing done so far, but I do not expect this to be hard, as I will just use System.Reflection.Emit to generate the code. + + </ul> ** Current pending tasks @@ -82,16 +85,8 @@ A: I wanted to learn about C#, and this was an exercise in this Q: If your C# compiler is written in C#, how do you plan on getting this working on a non-Microsoft environment. - The compiler will have two output mechanisms: IL code or C code. - A compiled version of the compiler could be run on Unix - using the JIT runtime. - - The C output generation bit is just intended to be a temporary - measure to allow Unix hackers to contribute to the effort without - requiring Windows and Microsoft's .NET implementation to work on - the compiler. So the MCS C# compiler will compile itself to C, - this code then compiled to an executable on Unix and voila! We - have a native compiler for GNU/Linux. + We will do this through an implementation of the CLI Virtual + Execution System for Unix (our JIT engine). Q: Do you use Bison? diff --git a/doc/documentation b/doc/documentation index f67fce7d9e4..f2286c5b5b6 100644 --- a/doc/documentation +++ b/doc/documentation @@ -11,6 +11,8 @@ We need documentation to be written on a number of topics: + <ul> + * The development tools (compilers, assembler tools, language reference, design time features). @@ -27,6 +29,8 @@ * Differences between the Microsoft.NET Framework SDK development mode and the Mono version. + </ul> + ** Class Library documentation When contributing to the Class Library effort, please use the diff --git a/doc/rationale b/doc/rationale index 8d81ae0625e..8c418a17e31 100644 --- a/doc/rationale +++ b/doc/rationale @@ -39,6 +39,7 @@ The Mono Project answer on what .NET is, as .NET is a branding formative that has been applied to: + <ul> * The .NET development platform, a new platform for writing software. @@ -51,6 +52,8 @@ The Mono Project * Hailstorm, the Passport centralized single-signon system that is being integrated into Windows XP. + </ul> + From all the above, the one I am interested in is the new .NET development platform. @@ -59,6 +62,8 @@ The Mono Project Microsoft has created a new development platform. The highlights of this new development platform are: + + <ul> * A runtime environment that provides garbage collection, threading and a virtual machine specification (The Virtual Execution System, VES) @@ -73,6 +78,7 @@ The Mono Project follow if they want to generate classes and code that can interoperate with other programming languages (The Common Language Specification: CLS) + </ul> The Common Language Infrastructure platform is similar to the goals we had in GNOME of giving language independence to @@ -130,6 +136,7 @@ The Mono Project There are various pieces that will make up Mono: + <ul> * A C# compiler. * The Virtual Execution System: that will have the @@ -146,6 +153,7 @@ The Mono Project * Visual development tools. * A CIL GCC frontend. + </ul> * Why use GNOME components? diff --git a/doc/runtime b/doc/runtime index 5ea5e23b198..a5ed3c45728 100644 --- a/doc/runtime +++ b/doc/runtime @@ -21,6 +21,8 @@ Our roadmap looks like this: + <ul> + * Milestone 1: Fully read and parse all CIL byte-codes and metadata tokens (ie, a disassembler). @@ -37,6 +39,7 @@ * Milestone 6: non-Intel port of the Optimizing JIT engine. + </ul> A setup similar to the Kaffe JIT engine can be used to layout the code to support non-IA32 architectures. Our work diff --git a/doc/status b/doc/status index c12fb88d80f..07bdfe040c8 100644 --- a/doc/status +++ b/doc/status @@ -3,6 +3,7 @@ Pieces of Mono that have been implemented: + <ul> * C# compiler: The C# parser is pretty much complete, it generates a parse tree and now semantic analysis and a few compiler lever optimizations need to be implemented as well as @@ -24,17 +25,19 @@ * Class Libraries: Only a few classes have been implemented. + </ul> Tasks on the critical path that we are actively working on: - * Assembly mapper: Not implemented yet. + <ul> + * Method and Field resolution. * Bytecode interpreter: Not implemented yet. * Simple JIT: Not implemented yet. * Garbage collection engine. - + </ul> diff --git a/doc/web/.cvsignore b/doc/web/.cvsignore new file mode 100644 index 00000000000..a023a6f9c7c --- /dev/null +++ b/doc/web/.cvsignore @@ -0,0 +1,2 @@ +*.src +*.html diff --git a/doc/web/commands b/doc/web/commands new file mode 100644 index 00000000000..e6f1868e789 --- /dev/null +++ b/doc/web/commands @@ -0,0 +1,14 @@ +0,Home,index.html,index.src +1,FAQ,faq.html,faq.src +0,Mono,mono.html,mono.src +1,Runtime,runtime.html,runtime.src +1,Class Library,class-library.html,class-library.src +1,C# Compiler,c-sharp.html,c-sharp.src +1,Roadmap,roadmap.html,roadmap.src +1,Project Status,status.html,status.src +0,Contributing,contributing.html,contributing.src +1,Documentation,documentation.html,documentation.src +1,Test Suite,testing.html,testing.src +1,Tools,tools.html,tools.src +0,Download,download.html,download.src +0,Resources,resources.html,resources.src
\ No newline at end of file diff --git a/doc/web/htmlify b/doc/web/htmlify new file mode 100644 index 00000000000..fbfd69836d3 --- /dev/null +++ b/doc/web/htmlify @@ -0,0 +1,18 @@ +#!/usr/bin/perl + +while (<>){ + chop; + if (/^\* (.*)$/){ + print "<h1>$1</h1>\n"; + } elsif (/^\*\* (.*)$/) { + print "<h2>$1</h2>\n"; + } elsif (/^\*\*\* (.*)$/) { + print "<h3>$1</h3>\n"; + } elsif (/^$/) { + print "<p>\n"; + } elsif (/^\t\t\* (.*)$/) { + print "<li>$1\n"; + } else { + print "$_\n"; + } +}
\ No newline at end of file diff --git a/doc/web/images/bgsquares.png b/doc/web/images/bgsquares.png Binary files differnew file mode 100644 index 00000000000..bb6fa3d900d --- /dev/null +++ b/doc/web/images/bgsquares.png diff --git a/doc/web/images/bgsquares.xcf.gz b/doc/web/images/bgsquares.xcf.gz Binary files differnew file mode 100644 index 00000000000..200b5805615 --- /dev/null +++ b/doc/web/images/bgsquares.xcf.gz diff --git a/doc/web/images/mono.png b/doc/web/images/mono.png Binary files differnew file mode 100644 index 00000000000..043d05d8fb9 --- /dev/null +++ b/doc/web/images/mono.png diff --git a/doc/web/images/pixel.png b/doc/web/images/pixel.png Binary files differnew file mode 100644 index 00000000000..d8f33a2a3e4 --- /dev/null +++ b/doc/web/images/pixel.png diff --git a/doc/web/process.pl b/doc/web/process.pl new file mode 100755 index 00000000000..949fa35d316 --- /dev/null +++ b/doc/web/process.pl @@ -0,0 +1,68 @@ +#!/usr/bin/perl +# +# Author: +# Sean MacIsaac +# + +use strict; + +my $full_expand = 1; +my @template; +my $n; + +if ($#ARGV != 2) { + print "process.pl command_file template_file directory_prefix\n"; + exit (); +} + +my $menu = ""; + +open COMMANDS, $ARGV[0] || die "Can not open $ARGV[0]"; +while (<COMMANDS>) { + chop; + my @command = split /,/; + if ($command[0] != -1) { + $menu .= "\t\t"; + if ($command[0] == 0){ + $menu .= "<tr><td class=\"navi\"><a class=\"navi\""; + } else { + $menu .= " <tr><td class=\"subnavi\"><a class=\"navi\""; + } + $menu .= "HREF=\"$command[2]\">$command[1]</A></td></tr>\n\n"; + } +} +close COMMANDS; + +open TEMPLATE, $ARGV[1] || die "Can not open $ARGV[1]"; +while (<TEMPLATE>) { + push @template, $_; +} +close TEMPLATE; + +open COMMANDS, $ARGV[0] || die "Can not open $ARGV[0]"; +while (<COMMANDS>) { + chop; + my @command = split /,/; + + $n = $ARGV[2] . "/" . $command[2]; + open OUTPUT, ">" . $n || die "Can not create $n"; + + my $content = ""; + open INPUT, $command[3] || die "Can not open $command[3]"; + while (<INPUT>) { + $content .= $_; + } + close INPUT; + + my $line; + my $temp; + + foreach $line (@template) { + $temp = $line; + $temp =~ s/#CONTENT#/$content/; + $temp =~ s/#MENU#/$menu/; + print OUTPUT $temp; + } + + close OUTPUT; +} diff --git a/doc/web/template.html.in b/doc/web/template.html.in new file mode 100644 index 00000000000..67101598448 --- /dev/null +++ b/doc/web/template.html.in @@ -0,0 +1,67 @@ +<html> +<head> +<title>[ m o n o ] main page</title> +<style type="text/css"> +<!-- + body { font-family: "trebuchet ms", lucida, verdana, helvetica; background-image: url("images/bgsquares.png"); background-attachment: fixed; } + body, td, table { font-family: "trebuchet ms", lucida, verdana, helvetica; font-size: 12px; } + a:link { color: #000000; text-decoration: none; font-weight: bold; border-bottom: none 1px; } + a:visited { color: #cccccc; } +// a:active { color: #222222; } + a:hover { color: #ee9900; border-bottom: #ffffff dashed 1px; } + .subnavi { font-size: small; text-indent: 16pt; } + +// --> +</style> +</head> +<body bgcolor="#555555" text="#000000"> + +<table align="center" width="100%" height="100%"><tr><td valign="center" align="center"> + +<table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td><img src="images/pixel.png"></td> + <td colspan="3"><img src="images/mono.png"></td> + <td><img src="images/pixel.png"></td> + </tr> + <tr> + <td> + <img src="images/pixel.png"></td><td colspan="3" bgcolor="black"> + <img src="images/pixel.png" height="2"> + </td> + <td bgcolor="black"><img src="images/pixel.png" width="2"></td> + <td><img src="images/pixel.png"></td> + </tr> + <tr> + <td width="100"><img src="images/pixel.png"></td> + <td valign="top" align="right"> + <table class="navi" cellpadding="3"> + #MENU# + </table> + </td> + <td bgcolor="black"><img src="images/pixel.png" width="2"></td> + <td bgcolor="white"> + <table cellpadding="16"> + <tr><td> + #CONTENT# + </td></tr> + </table> + </td> + <td bgcolor="black"><img src="images/pixel.png" width="2"></td> + <td width="100"><img src="images/pixel.png"></td> + </tr> + <tr> + <td colspan="2"> + <img src="images/pixel.png"></td><td colspan="2" bgcolor="black"> + <img src="images/pixel.png" height="2"> + </td> + <td bgcolor="black"><img src="images/pixel.png" width="2"></td> + <td><img src="images/pixel.png"></td> + </tr> +</tr> +</table> + +</td></tr></table> + +</body> +</html> diff --git a/web/c-sharp b/web/c-sharp index 03e58f154d0..f043a185e1a 100644 --- a/web/c-sharp +++ b/web/c-sharp @@ -9,12 +9,13 @@ compiler. Recently I started using the System.Reflection API to load system type definitions and avoid self-population of types in the compiler and dropped my internal Type - representation in favor of using .NET's System.Type. + representation in favor of using the CLI's System.Type. ** Phases of the compiler The compiler has a number of phases: + <ul> * Lexical analyzer: hand-coded lexical analyzer that provides tokens to the parser. @@ -44,6 +45,8 @@ * Code generation: nothing done so far, but I do not expect this to be hard, as I will just use System.Reflection.Emit to generate the code. + + </ul> ** Current pending tasks @@ -82,16 +85,8 @@ A: I wanted to learn about C#, and this was an exercise in this Q: If your C# compiler is written in C#, how do you plan on getting this working on a non-Microsoft environment. - The compiler will have two output mechanisms: IL code or C code. - A compiled version of the compiler could be run on Unix - using the JIT runtime. - - The C output generation bit is just intended to be a temporary - measure to allow Unix hackers to contribute to the effort without - requiring Windows and Microsoft's .NET implementation to work on - the compiler. So the MCS C# compiler will compile itself to C, - this code then compiled to an executable on Unix and voila! We - have a native compiler for GNU/Linux. + We will do this through an implementation of the CLI Virtual + Execution System for Unix (our JIT engine). Q: Do you use Bison? diff --git a/web/documentation b/web/documentation index f67fce7d9e4..f2286c5b5b6 100644 --- a/web/documentation +++ b/web/documentation @@ -11,6 +11,8 @@ We need documentation to be written on a number of topics: + <ul> + * The development tools (compilers, assembler tools, language reference, design time features). @@ -27,6 +29,8 @@ * Differences between the Microsoft.NET Framework SDK development mode and the Mono version. + </ul> + ** Class Library documentation When contributing to the Class Library effort, please use the diff --git a/web/rationale b/web/rationale index 8d81ae0625e..8c418a17e31 100644 --- a/web/rationale +++ b/web/rationale @@ -39,6 +39,7 @@ The Mono Project answer on what .NET is, as .NET is a branding formative that has been applied to: + <ul> * The .NET development platform, a new platform for writing software. @@ -51,6 +52,8 @@ The Mono Project * Hailstorm, the Passport centralized single-signon system that is being integrated into Windows XP. + </ul> + From all the above, the one I am interested in is the new .NET development platform. @@ -59,6 +62,8 @@ The Mono Project Microsoft has created a new development platform. The highlights of this new development platform are: + + <ul> * A runtime environment that provides garbage collection, threading and a virtual machine specification (The Virtual Execution System, VES) @@ -73,6 +78,7 @@ The Mono Project follow if they want to generate classes and code that can interoperate with other programming languages (The Common Language Specification: CLS) + </ul> The Common Language Infrastructure platform is similar to the goals we had in GNOME of giving language independence to @@ -130,6 +136,7 @@ The Mono Project There are various pieces that will make up Mono: + <ul> * A C# compiler. * The Virtual Execution System: that will have the @@ -146,6 +153,7 @@ The Mono Project * Visual development tools. * A CIL GCC frontend. + </ul> * Why use GNOME components? diff --git a/web/runtime b/web/runtime index 5ea5e23b198..a5ed3c45728 100644 --- a/web/runtime +++ b/web/runtime @@ -21,6 +21,8 @@ Our roadmap looks like this: + <ul> + * Milestone 1: Fully read and parse all CIL byte-codes and metadata tokens (ie, a disassembler). @@ -37,6 +39,7 @@ * Milestone 6: non-Intel port of the Optimizing JIT engine. + </ul> A setup similar to the Kaffe JIT engine can be used to layout the code to support non-IA32 architectures. Our work diff --git a/web/status b/web/status index c12fb88d80f..07bdfe040c8 100644 --- a/web/status +++ b/web/status @@ -3,6 +3,7 @@ Pieces of Mono that have been implemented: + <ul> * C# compiler: The C# parser is pretty much complete, it generates a parse tree and now semantic analysis and a few compiler lever optimizations need to be implemented as well as @@ -24,17 +25,19 @@ * Class Libraries: Only a few classes have been implemented. + </ul> Tasks on the critical path that we are actively working on: - * Assembly mapper: Not implemented yet. + <ul> + * Method and Field resolution. * Bytecode interpreter: Not implemented yet. * Simple JIT: Not implemented yet. * Garbage collection engine. - + </ul> diff --git a/web/web/.cvsignore b/web/web/.cvsignore new file mode 100644 index 00000000000..a023a6f9c7c --- /dev/null +++ b/web/web/.cvsignore @@ -0,0 +1,2 @@ +*.src +*.html diff --git a/web/web/commands b/web/web/commands new file mode 100644 index 00000000000..e6f1868e789 --- /dev/null +++ b/web/web/commands @@ -0,0 +1,14 @@ +0,Home,index.html,index.src +1,FAQ,faq.html,faq.src +0,Mono,mono.html,mono.src +1,Runtime,runtime.html,runtime.src +1,Class Library,class-library.html,class-library.src +1,C# Compiler,c-sharp.html,c-sharp.src +1,Roadmap,roadmap.html,roadmap.src +1,Project Status,status.html,status.src +0,Contributing,contributing.html,contributing.src +1,Documentation,documentation.html,documentation.src +1,Test Suite,testing.html,testing.src +1,Tools,tools.html,tools.src +0,Download,download.html,download.src +0,Resources,resources.html,resources.src
\ No newline at end of file diff --git a/web/web/htmlify b/web/web/htmlify new file mode 100644 index 00000000000..fbfd69836d3 --- /dev/null +++ b/web/web/htmlify @@ -0,0 +1,18 @@ +#!/usr/bin/perl + +while (<>){ + chop; + if (/^\* (.*)$/){ + print "<h1>$1</h1>\n"; + } elsif (/^\*\* (.*)$/) { + print "<h2>$1</h2>\n"; + } elsif (/^\*\*\* (.*)$/) { + print "<h3>$1</h3>\n"; + } elsif (/^$/) { + print "<p>\n"; + } elsif (/^\t\t\* (.*)$/) { + print "<li>$1\n"; + } else { + print "$_\n"; + } +}
\ No newline at end of file diff --git a/web/web/images/bgsquares.png b/web/web/images/bgsquares.png Binary files differnew file mode 100644 index 00000000000..bb6fa3d900d --- /dev/null +++ b/web/web/images/bgsquares.png diff --git a/web/web/images/bgsquares.xcf.gz b/web/web/images/bgsquares.xcf.gz Binary files differnew file mode 100644 index 00000000000..200b5805615 --- /dev/null +++ b/web/web/images/bgsquares.xcf.gz diff --git a/web/web/images/mono.png b/web/web/images/mono.png Binary files differnew file mode 100644 index 00000000000..043d05d8fb9 --- /dev/null +++ b/web/web/images/mono.png diff --git a/web/web/images/pixel.png b/web/web/images/pixel.png Binary files differnew file mode 100644 index 00000000000..d8f33a2a3e4 --- /dev/null +++ b/web/web/images/pixel.png diff --git a/web/web/process.pl b/web/web/process.pl new file mode 100755 index 00000000000..949fa35d316 --- /dev/null +++ b/web/web/process.pl @@ -0,0 +1,68 @@ +#!/usr/bin/perl +# +# Author: +# Sean MacIsaac +# + +use strict; + +my $full_expand = 1; +my @template; +my $n; + +if ($#ARGV != 2) { + print "process.pl command_file template_file directory_prefix\n"; + exit (); +} + +my $menu = ""; + +open COMMANDS, $ARGV[0] || die "Can not open $ARGV[0]"; +while (<COMMANDS>) { + chop; + my @command = split /,/; + if ($command[0] != -1) { + $menu .= "\t\t"; + if ($command[0] == 0){ + $menu .= "<tr><td class=\"navi\"><a class=\"navi\""; + } else { + $menu .= " <tr><td class=\"subnavi\"><a class=\"navi\""; + } + $menu .= "HREF=\"$command[2]\">$command[1]</A></td></tr>\n\n"; + } +} +close COMMANDS; + +open TEMPLATE, $ARGV[1] || die "Can not open $ARGV[1]"; +while (<TEMPLATE>) { + push @template, $_; +} +close TEMPLATE; + +open COMMANDS, $ARGV[0] || die "Can not open $ARGV[0]"; +while (<COMMANDS>) { + chop; + my @command = split /,/; + + $n = $ARGV[2] . "/" . $command[2]; + open OUTPUT, ">" . $n || die "Can not create $n"; + + my $content = ""; + open INPUT, $command[3] || die "Can not open $command[3]"; + while (<INPUT>) { + $content .= $_; + } + close INPUT; + + my $line; + my $temp; + + foreach $line (@template) { + $temp = $line; + $temp =~ s/#CONTENT#/$content/; + $temp =~ s/#MENU#/$menu/; + print OUTPUT $temp; + } + + close OUTPUT; +} diff --git a/web/web/template.html.in b/web/web/template.html.in new file mode 100644 index 00000000000..67101598448 --- /dev/null +++ b/web/web/template.html.in @@ -0,0 +1,67 @@ +<html> +<head> +<title>[ m o n o ] main page</title> +<style type="text/css"> +<!-- + body { font-family: "trebuchet ms", lucida, verdana, helvetica; background-image: url("images/bgsquares.png"); background-attachment: fixed; } + body, td, table { font-family: "trebuchet ms", lucida, verdana, helvetica; font-size: 12px; } + a:link { color: #000000; text-decoration: none; font-weight: bold; border-bottom: none 1px; } + a:visited { color: #cccccc; } +// a:active { color: #222222; } + a:hover { color: #ee9900; border-bottom: #ffffff dashed 1px; } + .subnavi { font-size: small; text-indent: 16pt; } + +// --> +</style> +</head> +<body bgcolor="#555555" text="#000000"> + +<table align="center" width="100%" height="100%"><tr><td valign="center" align="center"> + +<table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td><img src="images/pixel.png"></td> + <td colspan="3"><img src="images/mono.png"></td> + <td><img src="images/pixel.png"></td> + </tr> + <tr> + <td> + <img src="images/pixel.png"></td><td colspan="3" bgcolor="black"> + <img src="images/pixel.png" height="2"> + </td> + <td bgcolor="black"><img src="images/pixel.png" width="2"></td> + <td><img src="images/pixel.png"></td> + </tr> + <tr> + <td width="100"><img src="images/pixel.png"></td> + <td valign="top" align="right"> + <table class="navi" cellpadding="3"> + #MENU# + </table> + </td> + <td bgcolor="black"><img src="images/pixel.png" width="2"></td> + <td bgcolor="white"> + <table cellpadding="16"> + <tr><td> + #CONTENT# + </td></tr> + </table> + </td> + <td bgcolor="black"><img src="images/pixel.png" width="2"></td> + <td width="100"><img src="images/pixel.png"></td> + </tr> + <tr> + <td colspan="2"> + <img src="images/pixel.png"></td><td colspan="2" bgcolor="black"> + <img src="images/pixel.png" height="2"> + </td> + <td bgcolor="black"><img src="images/pixel.png" width="2"></td> + <td><img src="images/pixel.png"></td> + </tr> +</tr> +</table> + +</td></tr></table> + +</body> +</html> |