OMalleyW wrote:
Then write something better. I explained why I posted this the way I did.
Given that I do feel quite strongly about the difference, I've knocked up an ASP.NET user control as an approximate example of how I might go about it (the alternative is to write it with a GIF/PNG renderer). It's also a quickly hacked up job, but it outputs the essentially the same HTML as yours does so should be suitably illustrative.
The way you call it from an ASP.NET page is like this:
<uc1:Code39 id="Code391" runat="server" Code="12345"></uc1:Code39>
The Code attribute can be databound, which makes for easy use from data retrieved from SQL.
The User Control implementation is as follows
<br />
public class Code39 : System.Web.UI.UserControl<br />
{<br />
private static Hashtable CodeLookup;<br />
static Code39()<br />
{<br />
CodeLookup = new Hashtable();<br />
CodeLookup.Add('0', new bool[]{true, false,true, false,false,true, true, false,true, true, false,true});<br />
CodeLookup.Add('1', new bool[]{true, true, false,true, false,false,true, false,true, false,true, true});<br />
CodeLookup.Add('2', new bool[]{true, false,true, true, false,false,true, false,true, false,true, true});<br />
CodeLookup.Add('3', new bool[]{true, true, false,true, true, false,false,true, false,true, false,true});<br />
CodeLookup.Add('4', new bool[]{true, false,true, false,false,true, true, false,true, false,true, true});<br />
CodeLookup.Add('5', new bool[]{true, true, false,true, false,false,true, true, false,true, false,true});<br />
CodeLookup.Add('6', new bool[]{true, false,true, true, false,false,true, true, false,true, false,true});<br />
CodeLookup.Add('7', new bool[]{true, false,true, false,false,true, false,true, true, false,true, true});<br />
CodeLookup.Add('8', new bool[]{true, true, false,true, false,false,true, false,true, true, false,true});<br />
CodeLookup.Add('9', new bool[]{true, false,true, true, false,false,true, false,true, true, false,true});<br />
CodeLookup.Add('A', new bool[]{true, true, false,true, false,true, false,false,true, false,true, true});<br />
CodeLookup.Add('B', new bool[]{true, false,true, true, false,true, false,false,true, false,true, true});<br />
CodeLookup.Add('C', new bool[]{true, true, false,true, true, false,true, false,false,true, false,true});<br />
CodeLookup.Add('D', new bool[]{true, false,true, false,true, true, false,false,true, false,true, true});<br />
CodeLookup.Add('E', new bool[]{true, true, false,true, false,true, true, false,false,true, false,true});<br />
CodeLookup.Add('F', new bool[]{true, false,true, true, false,true, true, false,false,true, false,true});<br />
CodeLookup.Add('G', new bool[]{true, false,true, false,true, false,false,true, true, false,true, true});<br />
CodeLookup.Add('H', new bool[]{true, true, false,true, false,true, false,false,true, true, false,true});<br />
CodeLookup.Add('I', new bool[]{true, false,true, true, false,true, false,false,true, true, false,true});<br />
CodeLookup.Add('J', new bool[]{true, false,true, false,true, true, false,false,true, true, false,true});<br />
CodeLookup.Add('K', new bool[]{true, true, false,true, false,true, false,true, false,false,true, true});<br />
CodeLookup.Add('L', new bool[]{true, false,true, true, false,true, false,true, false,false,true, true});<br />
CodeLookup.Add('M', new bool[]{true, true, false,true, true, false,true, false,true, false,false,true});<br />
CodeLookup.Add('N', new bool[]{true, false,true, false,true, true, false,true, false,false,true, true});<br />
CodeLookup.Add('O', new bool[]{true, true, false,true, false,true, true, false,true, false,false,true});<br />
CodeLookup.Add('P', new bool[]{true, false,true, true, false,true, true, false,true, false,false,true});<br />
CodeLookup.Add('Q', new bool[]{true, false,true, false,true, false,true, true, false,false,true, true});<br />
CodeLookup.Add('R', new bool[]{true, true, false,true, false,true, false,true, true, false,false,true});<br />
CodeLookup.Add('S', new bool[]{true, false,true, true, false,true, false,true, true, false,false,true});<br />
CodeLookup.Add('T', new bool[]{true, false,true, false,true, true, false,true, true, false,false,true});<br />
CodeLookup.Add('U', new bool[]{true, true, false,false,true, false,true, false,true, false,true, true});<br />
CodeLookup.Add('V', new bool[]{true, false,false,true, true, false,true, false,true, false,true, true});<br />
CodeLookup.Add('W', new bool[]{true, true, false,false,true, true, false,true, false,true, false,true});<br />
CodeLookup.Add('X', new bool[]{true, false,false,true, false,true, true, false,true, false,true, true});<br />
CodeLookup.Add('Y', new bool[]{true, true, false,false,true, false,true, true, false,true, false,true});<br />
CodeLookup.Add('Z', new bool[]{true, false,false,true, true, false,true, true, false,true, false,true});<br />
CodeLookup.Add(' ', new bool[]{true, false,false,true, true, false,true, false,true, true, false,true});<br />
CodeLookup.Add('*', new bool[]{true, false,false,true, false,true, true, false,true, true, false,true});<br />
CodeLookup.Add('%', new bool[]{true, false,true, false,false,true, false,false,true, false,false,true});<br />
CodeLookup.Add('-', new bool[]{true, false,false,true, false,true, false,true, true, false,true, true});<br />
}<br />
<br />
<br />
private ArrayList AsCode39(string code)<br />
{<br />
ArrayList BarSequence = new ArrayList();<br />
<br />
foreach(char codeCharacter in code)<br />
{<br />
object bars = CodeLookup[codeCharacter];<br />
if(bars != null)<br />
{<br />
BarSequence.Add((bool[])bars);<br />
}<br />
else<br />
{<br />
}<br />
}<br />
<br />
return BarSequence;<br />
}<br />
<br />
protected override void Render(System.Web.UI.HtmlTextWriter writer)<br />
{<br />
writer.Write("<table cellpadding=0 cellspacing=0><tr>");<br />
foreach(bool [] Character in AsCode39(Code))<br />
{<br />
foreach(bool Black in Character)<br />
{<br />
if(Black)<br />
{<br />
writer.Write("<td style='background-color:Black;height:7mm;width:0.3mm;'></td>");<br />
}<br />
else<br />
{<br />
writer.Write("<td style='background-color:White;height:7mm;width:0.3mm;'></td>");<br />
}<br />
}<br />
writer.Write("<td style='background-color:White;height:7mm;width:0.4mm;'></td>");<br />
}<br />
writer.Write("</tr></table>");<br />
base.Render(writer);<br />
}<br />
<br />
private string _Code;<br />
public string Code<br />
{<br />
get<br />
{<br />
return _Code;<br />
}<br />
set<br />
{<br />
_Code = value;<br />
}<br />
}<br />
Ian Darling
The world is a thing of utter inordinate complexity ... that such complexity can arise ... out of such simplicity ... is the most fabulous extraordinary idea ... once you get some kind of inkling of how that might have happened - it's just wonderful ... the opportunity to spend 70 or 80 years of your life in such a universe is time well spent as far as I am concerned - Douglas Adams
|