LEDSign/COPYRIGHT010064400004260000017000000016440612443707100146520ustar00dbrownstudent00002200000001 LED Sign is Freeware and Copyright (c) 1995 Darrick Brown (dbrown@cs.hope.edu) All rights reserved. REDISTRIBUTION AND USE IN SOURCE AND BINARY FORMS FOR NON PROFIT USE ARE PERMITTED PROVIDED THAT: (1) SOURCE CODE DISTRIBUTIONS REMAIN UNMODIFIED, RETAINING THE ABOVE COPYRIGHT NOTICE AND THIS PARAGRAPH IN ITS ENTIRETY, AND ARE ACCOMPANIED BY ALL THE DOCUMENTATION PROVIDED WITH THIS DISTRIBUTION (2) DISTRIBUTIONS INCLUDING BINARY CODE MUST INCLUDE THE ABOVE COPYRIGHT NOTICE AND THIS PARAGRAPH IN ITS ENTIRETY IN THE DOCUMENTATION OR OTHER MATERIALS PROVIDED WITH THE DISTRIBUTION. THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Comments, suggestions, bug reports, and/or requests for modification of this program, please contact: Darrick Brown dbrown@cs.hope.edu LEDSign/INSTALL010064400004260000017000000014630612443707100144070ustar00dbrownstudent00002200000001LED Sign Installation instructions Since you are reading this document, you have successfully completed the first step, unarchiving the "tar.gz" file. The first thing you should do now is bring up netscape and view the page http:////LEDSign/WWW/LED.html. If you have any problems with the applet not starting, it is probably some type of security problem. In that case, check the java console (under the "option" menu in netscape) to see what errors you are getting and look them up in the FAQ (Frequently Asked Questions) page provided with this distribution. Once you have the applet running on the LEDSign/WWW/LED.html page, it is successfully installed. ------ If you have any other questions, please refer to the FAQ, which can be accessed via netscape off of LED.html LEDSign/LED/004075500004260000017000000000000612443707100137615ustar00dbrownstudent00002200000001LEDSign/LED/Index.java010064400004260000017000000025130612443707600156760ustar00dbrownstudent00002200000001///////////////////////////////////////////////////////////////////// // Index.java -- LED Sign V2.5 // // This is just a small class used for a struct // // Revisions: // V2.7: See "Revisions" doc for more info // // V2.5: Fixed all known bugs in previous versions! Added // the new feature of ledsize, which allows the user // to specify in pixels how big the LED's (1-4). // Thanks to Robert B. Denny (rdenny@dc3.com) for // code and input! // Modified Dec 20-26, 1995 // // V2.0beta: Modified V1.0 to comply with Pre-Beta java. // A problem with delay causes a jerky display. // Modified Oct 20 - 29, 1995 // // V1.0: Written July 13 - 14, 1995 // // By Darrick Brown // dbrown@cs.hope.edu // http://www.cs.hope.edu/~dbrown/ // // Copyright 1995 ///////////////////////////////////////////////////////////////////// import java.awt.*; import java.io.*; import java.net.*; ////////////////////////////////////////////////////////////////// // The Index Class (struct) ////////////////////////////////////////////////////////////////// public class Index { public byte ch; public int width; public boolean letter[][]; Index(byte b, int w, int h) { letter = new boolean[w][h]; width = w; ch = b; } } LEDSign/LED/LED.class010064400004260000017000000316030612443707600154210ustar00dbrownstudent00002200000001-/m3CMDG9H{z( %'WlcefF|&XtEL#<i01aORd ? A 7 1 2 7 ; 6 1 . 7 < > ; ; = 1 6 4 7 4 7 7 1 7 ? 7 4 7 7 7 0 6 4 B 6 @ B 7 2 7 < 7 1 7 7 7 C A ? 7 / 7 = 7 7 = 7 4 7 7 7 7 < 7 7 2 ? ? 7 7 6 : ? > @ : > 7 @ 7 @ < 7 > 9 3 > 7 7 7 1 3 7 4 6 A 4 7 A 7 7 2 @ 7 I  ! 6 _} I G +  )*    I N $ n8 )  ~   T w    h   y  - I k U    r s x .} I  Z H AQ  u \  ,   S   : q B  ]V n@   4   P o Ix ;   j 52 pT  [x   7 =  A   I > "    yK Y `T(Width of space in columns, default = 3 ) highlightfont(II)Z lightGrayscript[Ljava/lang/String;tmpimg(II)VwhiteLineNumberTableWIDTHrunstartLScript; createImage border out (IIIIII)Vtrim pixmapimg beginningLEDdrawLine@LED Sign Warning: parameter "wth" (width in LED's) not specifiedjava/lang/Mathht)LED Sign Error - Bad script path in HTML:nextFunc ()LFuncInfo;currurlsleepLjava/io/PrintStream;url(LED Sign Error: Bad script path in HTML.Pixelizejava/lang/StringBuffer&(Ljava/lang/String;)Ljava/lang/String; ht scrpt getParametergetinfo(IIZILjava/awt/Graphics;)V(I)Ljava/lang/String; font ()Ljava/net/URL;offset java/net/URL()Ljava/applet/AppletContext;fi Exceptions(II)Ljava/lang/String; showDocumenttext*LED Sign Error: No font specified in HTML. LED Sign V2.7Script URL ledsizeborder mouseExit(I)Ljava/lang/StringBuffer;java/applet/AppletContext ledsize darkGrayjava/awt/Graphics getGraphics(Ljava/net/URL;)Vjava/lang/IntegerdoneLjava/awt/Graphics;bhilite(I)Z int,int,intjava/lang/Systemdelay(I)Iprintln (LFuncInfo;)VinRange ConstantValuecurrURLpixmapjava/lang/Stringpaint File not found: java/io/PrintStream'LED Sign Error - Bad font path in HTML:'LED Sign Error - Bad font path in HTML. SourceFiletargetjava/awt/ComponentLjava/lang/Thread;initLED script to use (Required) wth  substring LLetters;offmapbshadow parseLinecolorsjava/awt/ImagefntLocalVariablescom(Ljava/lang/String;)Vappend'LED Sign V2.7 by Darrick Brown. 3-22-96Font to use (Required)(Height of live display (rows, default=9)Ljava/net/URL;(Ljava/lang/String;)I(LFuncInfo;)LFuncInfo;msg()[[Ljava/lang/String;indexOf(II)Ljava/awt/Image;java/lang/ThreadLjava/awt/Color;timesgetLEDupdate[Ljava/awt/Color;stop spacewidth(III)VsetColor,LED Sign Error: No script specified in HTML.heightinappletHEIGHTjava/lang/InterruptedExceptionjava/applet/Appletoffimg bordercolortoString(J)V(Width of display border (pix, default=0)@LED Sign Warning: parameter "ht" (height in LED's) not specified(Ljava/lang/Runnable;)V showStatuswthsetmsg script place mouseEnterendspace [LPixelize;copyAreagetAttrsjava/lang/RunnableCode(IIII)V(Ljava/awt/Graphics;)VLED.java2LED Sign Warning: parameter "ht" should be set to ,(Ljava/lang/String;)Ljava/lang/StringBuffer;intValue getAppletInfo LLEDMessage;drawLED()Ljava/lang/String;ok(Ljava/awt/Event;II)Z()Vtmpmapyxwbcolor()IgetDocumentBaseletrandom()Djava/awt/ColorgetParameterInfoh)Color of border (n,n,n default=lightGray)$(Ljava/net/URL;Ljava/lang/String;I)V#(Ljava/net/URL;Ljava/lang/String;)VledLjava/lang/String;resize(Width of live display (cols, default=60) drawImageZ spacewidth blackIgetColorLjava/awt/Image;fillRectlengthgetAppletContext mouseDownswidth)Diameter of LEDs pixels (1-4), default=3)(IILLetters;)V.Letters,3(Ljava/awt/Image;IILjava/awt/image/ImageObserver;)Z draw3DRectpix(Ljava/awt/Graphics;IIIIIZ)V int "func()Ljava/awt/Graphics;  File not found: "repaint LFuncInfo;FuncInfo(Ljava/awt/Color;)V LEDMessage765%w>oGsUqj4uB+_}hH;"kS!`TpTT*U*?Y*Ulws*?Y*,U*?Y*,Ubw s*?Y *#U!*BY?Y*#UifF*F*UH*BY?Y*UifY*Y *Y*Y*Y*YY`Y*Y*$U3**YBY?Y*$Uifh***YlNws**Y h* N*!UO**YBY?Y*!Uifh**Ylp*Y*Y`***YlZw"s*<*Yh*<Z*U!*BY?Y*Uifj*j*U?Y*UL+]LBY++Duif=++D`LBY++Duif>++D`LBY+if6*>Y(` (`(` (`(` (`Pn*>YP\*>Y(d (d(d (d(d (dPI*n*\*I>b dbh%i2j4m=oNmQsYtfuhxqzx} (39Bbq~(5BkN*>YdddP* >*>YPPPPS*>YPS*>YPS*>YPS*>YPS*>YPS*>YPS*>YPS*>YPS****jha**J-?Sg{6D*;*=Y*g*b*Fy`*`|@w(swC?*W*AY*tW*WE#%&!8*W*W*W.01,u*i*^b**rVW*pH**r8wsw@B@ D!J(L,P3R;SWTdUhWm<t78Y?YSY*SY&SSY?YSY*SYSSY?YSYSY SSY?Y SYSYSSY?Y SYSY+SSY?YSYSYSSY?YSY%SYSSY?Y SYSYSSL+J_`_a0_3bF_Ic\__dr_ue_f_g_io`4*.*x***x**xz|"z%2/*{**d J- *{*d ) **kr***rr**rL*r_ HPX`px@PX`hs*q;*q3*q+**dq*q**Ndq*q**Z*Nh;<L=<**Nh`;YQS**Nh`2R**Nh`2J*N„*Z<9M**Ylk*Nk6*2N**2S*-S**Yl*NhK**rhq;*q3*q+*q#**Zq**Ndq *q*re***re**re**rXx"*?Y **?Yx*{ **d9 %ty|!8?LTily|  7*2h*2h*Yp*6WI=````````*Y!*h````N@IL!U"X%g&v'y*+,/12 6+*nh +*Ih+``d`+```d+*Ih +*nh+d`dd+`dddq><> ?>AC3DHFMGUFXI`KwL<8bC*W*j*+**ah`d**ah`d*j+*\h+*j*j**jh`**jh`*+*jh*jh**jh`d**jh`d*j* ****}**}c*h***=*>***Y`>**Y`=*+*}*a*a*W********v**c**vcz*h***=*>***Y`>**Y`=**+**a*a*W WY[4\<]^^chijkmnpnmsw!x1z<{G}Q~bglxcQ  *p*W * * *z *r_ EX,,s @*r~+*}*a*a*WZ=;>+**Yh*Yh*G*[**Nӄ*Z+**a*a*W*p*p**Y**Yd**Yt=8***Yd**q*YlG**q[**Y`=*+**a*a*W*Yq`q**qT*p***Yd**Y=0***q*YlG**q[**Y`=*+**a*a*W*Yqdq*q*p**Y***Yd*Yt=a**YlT6***Yd**Yl*qG**Yl[****Yd**Y`=*+**a*a*W*Yq`q*q*NK*p****Yd*Y=Q**YlT.***Yl*qG**Yl[****Y`=*+**a*a*W*Yqdq*q*p*q*r`=***q2RTb***q2R*Yh**q2J*Yh***q2R**q2JG***q2R[*/***q2R*Yh**q2J*Yh**Yq`q*q**Yl*Nh *q;+**a*a*W*q*Z*Nh*p*qp+*}*a*a*W+**a*a*W*Yqdq*qe*p**qTD=4**q*Yh*Yh**qG**q[**Nʧ,=**q*Yh*Yh**N+**a*a*W*Yq`q*q*Z*p*Z*qh**l*l*Yd**Y=g**Z*qdT;**l*Yh**Z*qdG**Z*qd[***l*Yh**N*q*Zl**Y*l*Yd**Yt=b**qT6**l*Yd*Yh**qG**q[***l*Yd*Yh**N+**a*a*W*Yq`q*q*ZlW*qh*ZJ*p*Z*q*Zl`=**Zl*q``TR**l*q*Yh`*Y`*Yh**Zl*q``G**Zl*q``[*(**l*q*Yh`*Y`*Yh**Nm*q*Zl=**Zl*qdTI**l*q*Yhd*Yh**Zl*qdG**Zl*qd[*#**l*q*Yhd*Yh**N}+**a*a*W*Yq`q*Z*Zl*q`*q*Zl*p**qTD=4**q*Yh*Yh**qG**q[**Nʧ,=**q*Yh*Yh**N+**a*a*W*Yqdq*q#*p=X*T1**Yh*q*Yh**qG*[***Yh*q*Yh**Z+**a*a*W*Yqdq*q*p=X*T1**Yh*q*Yh**qG*[***Yh*q*Yh**Z+**a*a*W*Yq`q*q*N *p$pzDSeo} %5eh|.@JQVWdg}  /AQVW`ru #$%$#'( '*(,2.=/B1C5P7r8w9:9<8?ABC$DTCWFrB}IKMNPTVWX3W6Z[Vf]s_x`a`c_fhj9k>m?pMqRrqptutwy{|~   7 B T ^ e j k p {         Il4*K*** *?Yx***p& 47 8IK$Q)R.T34gLEDSign/LED/FuncInfo.java010064400004260000017000000033010612443707600163320ustar00dbrownstudent00002200000001/////////////////////////////////////////////////////////////////// // FuncInfo.java -- LED Sign V2.5 // // Contains the following classes: // FuncInfo -- a class (struct) to hold all the // information for any function. // // Revisions: // V2.7: See "Revisions" doc for more info // // V2.5: Fixed all known bugs in previous versions! Added // the new feature of ledsize, which allows the user // to specify in pixels how big the LED's (1-4). // Thanks to Robert B. Denny (rdenny@dc3.com) for // code and input! // Modified Dec 20-26, 1995 // // V2.0beta: Modified V1.0 to comply with Pre-Beta java. // A problem with delay causes a jerky display. // Modified Oct 20 - 29, 1995 // // V1.0: Written July 17 - August 6, 1995 // // by Darrick Brown // dbrown@cs.hope.edu // http://www.cs.hope.edu/~dbrown/ // // Copyright 1995 /////////////////////////////////////////////////////////////////// import java.awt.*; import java.io.*; import java.util.*; import java.net.*; /////////////////////////////////////////////////////////////////// // The "struct" that contains all the information // than any function/transition would need. public class FuncInfo { public int func; public int delay; public int startspace, endspace; public int times, remaining; public boolean centered; public String color; public String text; public String store; // store the original text line public String target; // Target frame public URL url; // The url associated with this message public linkList ret; // pointer to the return place in the script (for loops); } LEDSign/LED/LED.java010064400004260000017000000674440612443707600152510ustar00dbrownstudent00002200000001///////////////////////////////////////////////////////////////////// // LED.java -- LED Sign V2.7 // // The main for the LED Sign applet. This applet mimics // an LED sign that you typically see displaying messages // at airport terminals and the such. // // Revisions: // V2.7: "Supped" up V2.5. See the "Revisions" doc for more // info. // // V2.5: Fixed all known bugs in previous versions! Added // the new feature of ledsize, which allows the user // to specify in pixels how big the LED's (1-4). // Thanks to Robert B. Denny (rdenny@dc3.com) for // code and input! // Modified Dec 20-26, 1995 // // V2.0beta: Modified V1.0 to comply with Pre-Beta java. // A problem with delay causes a jerky display. // Modified Oct 20 - 29, 1995 // // V1.0: Written July 10 - August 6, 1995 // // By Darrick Brown // dbrown@cs.hope.edu // http://www.cs.hope.edu/~dbrown/ // // Copyright 1995 ///////////////////////////////////////////////////////////////////// import java.awt.*; import java.io.*; import java.net.*; import FuncInfo; import Script; import Letters; import LEDMessage; // Just a small struct // used in randomizing the pixels in the "Pixel" function class Pixelize { int x; int y; } ///////////////////////////////////////////////////////////////////// // The java.applet.Applet!! ///////////////////////////////////////////////////////////////////// public class LED extends java.applet.Applet implements Runnable { // my #defines int WIDTH = 400; int HEIGHT = 30; Color highlight; Script com; // The class that takes care of the script FuncInfo fi; // All the info for any funtion/transition Letters let; // The class that contains all the letters int ledsize; // The size of the LED's! Color colors[]; // The array of possible colors LEDMessage msg; // The class that takes care of the message to be displayed Color bhilite; // The highlight color of the border Color bcolor; // The color of the border Color bshadow; // The shadow of the border Thread led = null; String scrpt,endspace,fnt; // "command line" arguments String text; // the current message String currurl = "LED Sign V2.7"; // The current url that are set in the script URL currURL = null; String target = new String(""); // Target for frames int place; // The place where we are in each transition. How we know when we are done. int border; // The border width int offset; // The offset for the sign from the upper left int w,h; // Width & Height in LEDs int swidth; // The width of the space character. Settable in the HTML command line. boolean beginning = false; // make sure we init certain stuff only once boolean init = false; // used to make sure "getinfo" is called only once. boolean inapplet; // Is the mouse cursor in the applet? (used to display status messages) boolean done = false; // Is the transition done? Image pixmapimg,offimg,tmpimg; // The pixmaps!! -- These are what make this program possible Graphics pixmap,offmap,tmpmap; // Graphics for the pixmaps Pixelize pix[]; // Array of "pixels" used during the Pixel transition ////////////////////////////////////////////////////////////////// // get the "command line" arguments from the HTML private int getAttrs() { String s; int r,g,b; Graphics gr; if(getParameter("script") != null) { scrpt = new String(getParameter("script")); } else { System.out.println("LED Sign Error: No script specified in HTML."); currurl = new String("LED Sign Error: No script specified in HTML."); return -1; // Script error; } if(getParameter("font") != null) { fnt = new String(getParameter("font")); } else { System.out.println("LED Sign Error: No font specified in HTML."); currurl = new String("LED Sign Error: No font specified in HTML."); return -1; // font error } if(getParameter("spacewidth") != null) { swidth = (new Integer(new String(getParameter("spacewidth")))).intValue(); } else swidth = 3; if(getParameter("ledsize") != null) { ledsize = new Integer(new String(getParameter("ledsize"))).intValue(); // A little error trapping if(ledsize < 1) ledsize = 1; else if(ledsize > 4) ledsize = 4; ledsize++; // The user enters 1-4, the applet needs 2-5 } else ledsize = 4; if(getParameter("ht") != null) { HEIGHT = ledsize*(new Integer(new String(getParameter("ht")))).intValue(); h = HEIGHT/ledsize; } else { System.out.println("LED Sign Warning: parameter \"ht\" (height in LED's) not specified"); HEIGHT = ledsize*9; h = 9; } if(getParameter("wth") != null) { WIDTH = ledsize*(new Integer(new String(getParameter("wth")))).intValue(); if(WIDTH/ledsize%2 == 1) WIDTH += ledsize; // It must be even!!! w = WIDTH/ledsize; } else { System.out.println("LED Sign Warning: parameter \"wth\" (width in LED's) not specified"); WIDTH = 60*ledsize; w = 60; } if(getParameter("border") != null) { border = new Integer(new String(getParameter("border"))).intValue(); } else border = 0; if(getParameter("bordercolor") != null) { // User specified border color!! s = new String(getParameter("bordercolor")); s = s.trim(); r = new Integer(s.substring(0,s.indexOf(","))).intValue(); s = s.substring(s.indexOf(",")+1); g = new Integer(s.substring(0,s.indexOf(","))).intValue(); s = s.substring(s.indexOf(",")+1); b = new Integer(s).intValue(); // Forgive the "if" syntax, I didn't want to bother typing the // "normal" ifs for this small part. :) bhilite = new Color(r+40<256?r+40:255, g+40<256?g+40:255, b+40<256?b+40:255); bcolor = new Color(r,g,b); bshadow = new Color(r-40>=0?r-40:0, g-40>=0?g-40:0, b-40>=0?b-40:0); } else { // The default gray bhilite = Color.white; bcolor = Color.lightGray; bshadow = Color.darkGray; } return 1; // Everthing so far is ok. } // end getAttrs() ////////////////////////////////////////////////////////////////// // Initialize the Applet public void init() { // Set up the different colors for the sign highlight = new Color(100,100,100); colors = new Color[9]; colors[0] = new Color(80,80,80); // off color colors[1] = new Color(255,0,0); // Default red colors[2] = new Color(130,255,0); // green colors[3] = new Color(0,130,255); // blue colors[4] = new Color(255,255,0); // yellow colors[5] = new Color(255,160,0); // orange colors[6] = new Color(255,0,255); // purple colors[7] = new Color(255,255,255); // white colors[8] = new Color(0,255,255); // cyan // If the script and/or font are not specified, then stop! if(getAttrs() == -1) stop(); else { offset = 3*border; beginning = true; init = true; } } // End Init ////////////////////////////////////////////////////////////////// // This is called from the run procedure. This is to allow the // init procedure to finish as fast as possible, thus allowing // it to draw the blank sign to the screen sooner. public void getinfo() { pix = new Pixelize[1]; // load this class now! let = new Letters(getDocumentBase(),fnt,swidth); if(let.w == -1) { // Do some error output for a bad font System.out.println("LED Sign Error - Bad font path in HTML:"); System.out.println(" File not found: "+ "\"" + fnt + "\""); currurl = new String("LED Sign Error - Bad font path in HTML."); stop(); } else { if(HEIGHT != let.height()*ledsize) { System.out.println("LED Sign Warning: parameter \"ht\" should be set to " + let.height()*ledsize + "."); } // now that we have the dimensions of the applet, draw it now! // This will make the applet *seem* to load faster. // paint(getGraphics()); msg = new LEDMessage(h,w,let); // Set up the script com = new Script(getDocumentBase(),scrpt); if(com.ok == -1) // Check for bad script path... { System.out.println("LED Sign Error - Bad script path in HTML:"); System.out.println(" File not found: "+ "\""+scrpt+"\""); currurl = new String("LED Sign Error: Bad script path in HTML."); stop(); } else { fi = new FuncInfo(); nextFunc(); resize(WIDTH+2*(offset),HEIGHT+2*(offset)); // Set the applet size } } init = false; } // End getinfo() ////////////////////////////////////////////////////////////////// // Start the applet running and thread the process public void start() { if(led == null) { led = new Thread(this); // Start the applet running led.start(); } } ////////////////////////////////////////////////////////////////// // Stop the thread public void stop() { if(led != null) { led.stop(); led = null; } } ////////////////////////////////////////////////////////////////// // The run loop public void run() { if(init) getinfo(); while(led != null) { repaint(); try { led.sleep(fi.delay); } catch (InterruptedException e) { } // If we are done with the current transition, then get the // next transition (function). if(done) { nextFunc(); // if fi is null then a reload caused a nonexistant // script to be loaded. if(fi == null) { System.out.println("LED Sign Error - Bad script path in HTML:"); System.out.println(" File not found: "+ scrpt); currurl = new String("LED Sign Error: Bad script path in HTML."); stop(); } done = false; } } } ////////////////////////////////////////////////////////////////// // The HTML tag parameter information public String[][] getParameterInfo() { String[][] info = { {"script ","URL ", "LED script to use (Required)"}, {"font ","URL ", "Font to use (Required)"}, {"spacewidth ","int ", "Width of space in columns, default = 3 )"}, {"wth ","int ", "Width of live display (cols, default=60)"}, {"ht ","int ", "Height of live display (rows, default=9)"}, {"border ","int ", "Width of display border (pix, default=0)"}, {"bordercolor","int,int,int", "Color of border (n,n,n default=lightGray)"}, {"ledsize ","int ", "Diameter of LEDs pixels (1-4), default=3)"} }; return info; } ////////////////////////////////////////////////////////////////// // The "about" stuff. public String getAppletInfo() { return "LED Sign V2.7 by Darrick Brown. 3-22-96"; } ////////////////////////////////////////////////////////////////// // Trap for a mouse click on the applet to check to see if they // want to go to another page. public boolean mouseDown(java.awt.Event evt, int x, int y) { if (currURL != null) { if(target.length() > 0) // They have specified a target { getAppletContext().showDocument(currURL,target); } else { getAppletContext().showDocument(currURL); } } return true; } ////////////////////////////////////////////////////////////////// // If the mouse cursor enters the applet, then display something // in the status bar of the browser. public boolean mouseEnter(java.awt.Event evt, int x, int y) { inapplet = true; showStatus(currurl); return true; } ////////////////////////////////////////////////////////////////// // If the mouse cursor exits the applet, then clear the status // bar. public boolean mouseExit(java.awt.Event evt, int x, int y) { inapplet = false; showStatus(" "); return true; } ////////////////////////////////////////////////////////////////// // set the next function // This function is only called when the previous // function/transition has finished. void nextFunc() { int i,j; Pixelize temp; int rand; // get the next function fi = com.nextFunc(); // Parse the text line to expand any time/date tags fi = com.parseLine(fi); // Create the message in LED format (boolean) msg.setmsg(fi); // Set up some initial stuff for each of the transitions switch(fi.func) { case 0: place = 0; break; case 1: place = 0; break; case 2: place = 0; break; case 3: place = msg.length()-1; break; case 4: place = 0; break; case 5: place = h-1; break; case 6: place = 0; // This randomizes the "LEDs" for the // Pixel function. pix = new Pixelize[w*h]; for(i=0;i 0) { draw3DRect(gr,0,0,WIDTH+2*offset-1,HEIGHT+2*offset-1,border,true); gr.setColor(bcolor); gr.fillRect(border,border,WIDTH+4*border,HEIGHT+4*border); draw3DRect(gr,2*border,2*border,WIDTH+4*border-1,HEIGHT+4*border-1,border,false); } // If the applet has just start, set up the pixmaps // and draw all the LEDs off if(beginning) { // OK, lets quickly set up the "offimage" (has all LED's turned // off) so that we can draw it to the screen quicker when the // applet first starts. offimg = createImage(WIDTH, HEIGHT); offmap = offimg.getGraphics(); offmap.setColor(Color.black); offmap.fillRect(0,0,WIDTH,HEIGHT); for(i=0;i= h) done = true; break; case 5: // ScrollDown pixmap.copyArea(0,0,WIDTH,HEIGHT-ledsize,0,ledsize); for(i=0;i= w*h) done = true; break; case 7: // Blink if(place%2 == 0) gr.drawImage(offimg,offset,offset, this); else gr.drawImage(pixmapimg,offset,offset, this); place--; if(place == 0) done = true; break; case 8: // OverRight if(msg.inRange(place)) for(i=0;i= w) done = true; break; case 9: // ScrollCenter // The right side if(w >= place*2) { pixmap.copyArea(WIDTH/2,0,WIDTH/2-ledsize,HEIGHT,ledsize,0); for(i=0;i= w/2 && place*2 > w) done = true; break; case 10: // OverCenter // The right side if(w >= place+w/2) { for(i=0;i= w/2) done = true; break; case 11: // OverLeft if(msg.inRange(place)) for(i=0;i= h) done = true; break; } // End switch() statement } // End if(led != null) return; } // End update() } // End LED class pixmaps // and draw all the LEDs off if(beginning) { // OK, lets quickly set up the "offimage" (has all LED's turned // off) so that we can draw it to the screen quickeLEDSign/LED/Pixelize.class010064400004260000017000000004140612443707600166020ustar00dbrownstudent00002200000001-  LED.java ConstantValue ExceptionsLineNumberTableI SourceFileLocalVariablesCodePixelizejava/lang/ObjectyxLED()V   * + LEDSign/LED/Script.class010064400004260000017000000201660612443707600162630ustar00dbrownstudent00002200000001-[.ab jHSz]#d% *kh+9nDpP,O6?_W\^q~c(&f35o;8muyw"G'-Y e:$= i h _ h ^ _ ` ^ f ` ^ ^ _ _ i ^ i _ i ^ _ ^ ^ a j i j i ` _ ^ d f e ^ k g i i ^ \ b i c _ ] b f a a i i b b i _ b f ] _ _ b _ i _ b _  7    N   4} v s  E   K  J XT T  Z @ R{ l <  A2 g U   i | X/   J    B U  Q  C S  x [  )I 0Q o       R! ` . SaturdaygetParam Bad URL:  pmSatLineNumberTableNovemberThursdayTuesDecstartcloseouttrimMay startsWithAugustFriMar"Backslash (\) error in text line: SunconcatPixel documentURLnextFuncWednext ()LFuncInfo;Ljava/io/PrintStream;Janurljava/lang/StringBuffer&(Ljava/lang/String;)Ljava/lang/String; ScrollLeftscrptThurOverDownJune(I)Ljava/lang/String;(C)Ljava/lang/String;February java/net/URLfi Exceptions(II)Ljava/lang/String;centertextJulyReloadJunJulMarchScriptjava/lang/Object(I)Ljava/lang/StringBuffer; Wednesdaydnjava/lang/Integerddpixelsjava/io/IOExceptionyygetFuncAppearAug$Repeat error in line : Repeat times=java/lang/Systemdelay(I)Iprintln ConstantValue(I)CURL openStreamScrollUpMMreadLine Mismatched Do/Repeats? OverRightjava/lang/StringRepeatprintStackTracejava/io/PrintStream SourceFileSundaytargetcharAt(C)Z(C)V!!ptrgetVarjava/net/MalformedURLExceptionMon(Ljava/lang/String;)LFuncInfo; substringgetMonth parseLineLocalVariables(Ljava/lang/String;)ZOverLeft ScrollRight(Ljava/lang/String;)Vappend startspace(Ljava/lang/String;)ILjava/net/URL;(LFuncInfo;)LFuncInfo;trueindexOfjava/util/DatestoretimesttAprSeptMonday initScriptOctoberTuesdayBlinkOctjava/lang/ThrowablecleartoStringOverUpgetDay amFebgetHoursDecemberAprilendspace ScrollCenter Error in ''(Ljava/lang/String;I)Ljava/lang/String; remainingCodeDoret' parameter in (Ljava/io/InputStream;)VJanuaryNov,(Ljava/lang/String;)Ljava/lang/StringBuffer;intValue()Ljava/io/InputStream; ScrollDown()Ljava/lang/String; Script.javaDDokcolor()V8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;SleepYY()INo text specified compareTo#(Ljava/net/URL;Ljava/lang/String;)VFridayLjava/lang/String;\Zjava/io/InputStream OverCenterImnjava/io/DataInputStreammmjava/io/FilterInputStream getMinutesvalueOflength=: September0getYearcenteredfunc  LlinkList;list LFuncInfo;linkListisColorFuncInfogetDatejava/lang/Character^dE U tV"**,v*+* *p*p"JL MNPNT!Jt+,l>+Ol6 +:l>'fY;t,tSt+t,O:%:ll:|WR_`bde!h(i0j5lWmYq\resmrpvxwxz{)Itoo_Y:}(x qniY iYE+|L*+N-jY-x*+DN-#-7iY q*+N--7 A*+N-jY-q*+IN-jY-n*+ON- -*+N-jY-*+CN-jY-*+FN-n-,z#--,z`y--,zNiY yaY-,WfY't-t +l= +N+N- }Y- }G- }5-) }#-H }-? }-1,}x x-A}-# }-&  }-N  }r-.  }_-!  }L-  }9-Q a}&-K b}-: c}Zy $*06DRX^cko!%5?GK[emq{  '-09?BKQT ] c f ov  "$"&(&*,*.0.2426"8)6,:5<<:?>H@O>RB[DbGlIt*wL**wuw+}~ac!i*L`+4+Yd+++*L8*+w*L(*+w*L*L *L+^RSU0X5Y8^?aIbPdXe]b`ihjm^poxp}rvxv|~BtT4r-g'b!yopw c02FrtX,+{+`N--}zN +N- !*LVtk iYSY SYSYSYSYPSYTSY"SY9SY SY SY -S: iYRSYGSYSYS:iY3SY4SY SYUSYSY/SYVS:bY: +M+ +}+}\+}aSr66 @, \ , {=, `:, d}z`M}z: ',  `:, d, `M *{68  6 6  ) 6    N-  dN 6   N  N-N 6   - N-YN- N  -,N -N, -, M -`6 6++]Y- Wq 2:  2:6++]Y, , M `6 .Z :6++]Y, , M `6  2q 2:  2:6++]Y, , M `6 K\ `:6++]Y, , M `6 B +x+ l`: dp:6++]Y, , M `6 _X, , `M <fY0t+t ++]Y ,+,+>&(,.248:>@DFIoquw{}),7A\knq} !(/9<CMSZ]dy     #- 0:DJan !#%&%(+,+./#13)6/7F6S9i:s1v<>?>ADEDGH<K MNK"S>AYDZ[daic`tV naY**vN-LhY+oM :*`Yr**s**w66W|:%~F>*w**w}a*w`Yru**wuw,mY:**sw`:66*w}a`YrS*wSV*w}bG*w2-fY*t*wL**wuwq**sw+,W![*fi[1suwxs!z#|(}**5=EHKNUgjw9ALV^bfijl>LEDSign/LED/Script.java010064400004260000017000000504260612443707600161010ustar00dbrownstudent00002200000001/////////////////////////////////////////////////////////////////// // Script.java -- LED Sign V2.5 // // Contains the following classes: // Script -- The class that manages the script // including parsing, storage, and // retrieval. // // Revisions: // V2.7: See "Revisions" doc for more info // // V2.5: Fixed all known bugs in previous versions! Added // the new feature of ledsize, which allows the user // to specify in pixels how big the LED's (1-4). // Thanks to Robert B. Denny (rdenny@dc3.com) for // code and input! // Modified Dec 20-26, 1995 // // V2.0beta: Modified V1.0 to comply with Pre-Beta java. // A problem with delay causes a jerky display. // Modified Oct 20 - 29, 1995 // // V1.0: Written July 17 - August 6, 1995 // // by Darrick Brown // dbrown@cs.hope.edu // http://www.cs.hope.edu/~dbrown/ // // Copyright 1995 /////////////////////////////////////////////////////////////////// import java.awt.*; import java.io.*; import java.util.*; import java.net.*; import FuncInfo; import linkList; /////////////////////////////////////////////////////////////////// // Function Code // -------- ---- // Appear 0 // Sleep 1 // ScrollLeft 2 // ScrollRight 3 // ScrollUp 4 // ScrollDown 5 // Pixel 6 // Blink 7 // OverRight 8 // ScrollCenter 9 // OverCenter 10 // OverLeft 11 // OverUp 12 // OverDown 13 // Do 97 // Repeat 98 // Reload 99 /////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// // The class that parses the script and keeps it in memory public class Script { linkList list; // the linked list for the script linkList ptr,start; // the current line and start of the list int ok; String scrpt; URL documentURL; /////////////////////////////////////////////////////////////////// // The constructor public Script(URL url, String s) { scrpt = s; documentURL = url; if(initScript() == -1) { ok = -1; } else { ok = 1; } } /////////////////////////////////////////////////////////////////// // get the parameters from the functions in the script String getParam(String s, String sub) { int i,j; String tmp; i = s.indexOf(sub); j = s.indexOf("text"); if(j == -1 || i <= j) // if the first occurance of "sub" is before { // the "text=" (ie not in the message) if(i == -1) return null; else { tmp = s.substring(i); // forget everything before the sub i = tmp.indexOf("="); if(i == -1) { System.out.println("Error in '"+sub+"' parameter in "+s); return null; } else { i++; // one spot after the "=" if(sub.compareTo("text") == 0) tmp = tmp.substring(i); else { tmp = tmp.substring(i); if(tmp.indexOf(" ") != -1) tmp = tmp.substring(0,tmp.indexOf(" ")); } tmp.trim(); return tmp; } } } else return null; } // End getParam() /////////////////////////////////////////////////////////////////// // get the function info FuncInfo getFunc(String s) { int i; String tmp; FuncInfo fi = new FuncInfo(); // Assign the defaults fi.func = -1; fi.delay = 40; fi.startspace = 10; fi.endspace = 20; fi.times = -1; fi.remaining = 0; fi.centered = false; fi.color = new String(""); fi.text = new String("No text specified"); fi.url = null; fi.ret = null; //get rid of any starting (and ending) white space, just to be sure. s = s.trim(); //////////////////////////////////////////////////// // Any parameters that might exist. This will // read in any command line parameters for each // function. For example: Sleep text=blah blah // is accepted, but the text will never be used tmp = getParam(s,"delay"); if(tmp != null) fi.delay = (new Integer(tmp)).intValue(); tmp = getParam(s,"clear"); if(tmp != null && tmp.compareTo("true") == 0) { fi.centered = true; fi.text = new String(""); } else { tmp = getParam(s,"center"); if(tmp != null && tmp.compareTo("true") == 0) fi.centered = true; else { fi.centered = false; tmp = getParam(s,"startspace"); if(tmp != null) fi.startspace = (new Integer(tmp)).intValue(); tmp = getParam(s,"endspace"); if(tmp != null) fi.endspace = (new Integer(tmp)).intValue(); } tmp = getParam(s,"text"); if(tmp != null) fi.text = tmp; } tmp = getParam(s,"times"); if(tmp != null) { fi.times = (new Integer(tmp)).intValue(); fi.remaining = fi.times; } tmp = getParam(s,"pixels"); if(tmp != null) { fi.times = (new Integer(tmp)).intValue(); fi.remaining = fi.times; } tmp = getParam(s,"URL"); if(tmp != null) { if(tmp.indexOf(',') != -1) { // They specified a frame target. // Separate out the target and URL. fi.target = tmp.substring(tmp.indexOf(',') + 1); tmp = tmp.substring(0,tmp.indexOf(',')); } else fi.target = new String(""); try { fi.url = new URL(tmp); } catch(MalformedURLException e) { System.out.println("Bad URL: "+tmp); fi.url = null; } } else { fi.url = null; } //////////////////////////////////////////////////// // set the function number (and some minor // tweeks/precautions) i = s.indexOf(" "); if(i != -1) tmp = s.substring(0,i); else tmp = s; if(tmp.compareTo("Appear") == 0) { fi.func = 0; } else if(tmp.compareTo("Sleep") == 0) { fi.func = 1; } else if(tmp.compareTo("ScrollLeft") == 0) { fi.func = 2; } else if(tmp.compareTo("ScrollRight") == 0) { fi.func = 3; } else if(tmp.compareTo("ScrollUp") == 0) { fi.func = 4; } else if(tmp.compareTo("ScrollDown") == 0) { fi.func = 5; } else if(tmp.compareTo("Pixel") == 0) { fi.func = 6; // Just for precautions dealing with a delay problem. // This shouldn't be noticable. if(fi.delay < 1) fi.delay = 1; // Can't allow "times" to be 0 or less, it will cause // the sign to freeze (not procede). if(fi.times < 1) fi.times = 15; } else if(tmp.compareTo("Blink") == 0) { fi.func = 7; if(fi.times < 1) fi.times = 2; } else if(tmp.compareTo("OverRight") == 0) { fi.func = 8; } else if(tmp.compareTo("ScrollCenter") == 0) { fi.func = 9; } else if(tmp.compareTo("OverCenter") == 0) { fi.func = 10; } else if(tmp.compareTo("OverLeft") == 0) { fi.func = 11; } else if(tmp.compareTo("OverUp") == 0) { fi.func = 12; } else if(tmp.compareTo("OverDown") == 0) { fi.func = 13; } else if(tmp.compareTo("Do") == 0) { fi.func = 97; // This marks a place for the "repeats" to go back to. } else if(tmp.compareTo("Repeat") == 0) { fi.func = 98; } else if(tmp.compareTo("Reload") == 0) { fi.func = 99; } fi.store = fi.text; return fi; } // End getFunc() ////////////////////////////////////////////////////////////////// // get the next function FuncInfo nextFunc() { FuncInfo fi; fi = ptr.fi; ptr = ptr.next; switch(fi.func) { case 97: // Do fi = nextFunc(); // skip the "Do function; its just a marker break; case 98: // a Repeat // If it doesn't repeat infinitely... if(fi.times >= 0) { // One less time fi.remaining--; if(fi.remaining <= 0) { fi.remaining = fi.times; // reset the loop fi = nextFunc(); } else { ptr = fi.ret; // Jump back to the last "Do" fi = nextFunc(); } } else { ptr = fi.ret; // Jump back to the last "Do" fi = nextFunc(); } break; case 99: // Reload // Reload the script from the URL if(initScript() == -1) // If the script path is bad... { fi = null; } else { fi = nextFunc(); // and get the first function. } break; } return fi; } // End nextFunc() ////////////////////////////////////////////////////////////////// // just a simple function to see if it is a color code boolean isColor(char t) { if(t == 'r' || t == 'g' || t == 'b' || t == 'y' || t == 'o' || t == 'p' || t == 'w' || t == 'c') return true; else return false; } ////////////////////////////////////////////////////////////////// // Get the varible defined String getVar(String s, int i) { String t; if(s.charAt(i) == '{') { t = s.substring(i+1); t = t.substring(0,t.indexOf('}')); } else t = String.valueOf(s.charAt(i)); return t; } ////////////////////////////////////////////////////////////////// // create the final text line from parsing the store line // Add any codes (ie \t, \r, \g, \b, etc.) here to parse // out of the text line. FuncInfo parseLine(FuncInfo fi) { String tmp; String time; String month[] = {"Jan","Feb","Mar","Apr","May","Jun", "Jul","Aug","Sept","Oct","Nov","Dec"}; String Month[] = {"January","February","March","April","May","June", "July","August","September","October","November","December"}; String day[] = {"Sun","Mon","Tues","Wed","Thur","Fri","Sat"}; String Day[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; String ddmmyy; int min; int pm; Date date = new Date(); int a,b; int i; char c; String t; // The tag (eg. text=Hello \ythere, t=y) tmp = fi.store; fi.color = ""; if(fi.func == 0 || (fi.func >= 2 && fi.func <= 97)) { c = 'r'; // the default color b = 0; while(b < tmp.length()) { if(tmp.charAt(b) == '\\') // if there is a '\' does the following { // letter indicate a color. b++; // Get the tag! if(tmp.charAt(b) == '{') { t = tmp.substring(b+1); // cut out the \{XX} tmp = tmp.substring(0,b-1).concat(t.substring(t.indexOf('}')+1)); t = t.substring(0,t.indexOf('}')); b -= 1; } else { t = tmp.substring(b,b+1); tmp = (tmp.substring(0,b-1)).concat(tmp.substring(b+1)); // take the "\r" out b -= 1; } // set the if(t.length() == 1 && isColor(t.charAt(0))) { c = t.charAt(0); } else if(t.compareTo("tt") == 0) { // it is the "time" variable!! if(date.getHours() >= 12) pm = 1; else pm = 0; if(pm == 1) { a = date.getHours(); if(a == 12) time = String.valueOf(12); else time = String.valueOf(date.getHours()-12); } else { a = date.getHours(); if(a == 0) time = String.valueOf(12); else time = String.valueOf(a); } time = time.concat(":"); min = date.getMinutes(); if(min >= 10) time = time.concat(String.valueOf(min)); else { time = time.concat("0"); time = time.concat(String.valueOf(min)); } if(pm == 1) time = time.concat(" pm"); else time = time.concat(" am"); tmp = ((tmp.substring(0,b)).concat(time)).concat(tmp.substring(b)); b += time.length(); for(i = 0; i < time.length(); i++) fi.color = (fi.color).concat((new Character(c)).toString()); } // End time else if(t.compareTo("dd") == 0 || t.compareTo("DD") == 0) // Set the current date { if(t.compareTo("dd") == 0) ddmmyy = day[date.getDay()]; else ddmmyy = Day[date.getDay()]; // Set up the color for(i = 0; i < ddmmyy.length(); i++) fi.color = (fi.color).concat((new Character(c)).toString()); tmp = ((tmp.substring(0,b)).concat(ddmmyy)).concat(tmp.substring(b)); b += ddmmyy.length(); } else if(t.compareTo("dn") == 0) { ddmmyy = String.valueOf(date.getDate()); // Set up the color for(i = 0; i < ddmmyy.length(); i++) fi.color = (fi.color).concat((new Character(c)).toString()); tmp = ((tmp.substring(0,b)).concat(ddmmyy)).concat(tmp.substring(b)); b += ddmmyy.length(); } else if(t.compareTo("mm") == 0 || t.compareTo("MM") == 0) { if(t.compareTo("mm") == 0) ddmmyy = month[date.getMonth()]; else ddmmyy = Month[date.getMonth()]; // Set up the color for(i = 0; i < ddmmyy.length(); i++) fi.color = (fi.color).concat((new Character(c)).toString()); tmp = ((tmp.substring(0,b)).concat(ddmmyy)).concat(tmp.substring(b)); b += ddmmyy.length(); } else if(t.compareTo("mn") == 0) { ddmmyy = String.valueOf(date.getMonth()+1); // Set up the color for(i = 0; i < ddmmyy.length(); i++) fi.color = (fi.color).concat((new Character(c)).toString()); tmp = ((tmp.substring(0,b)).concat(ddmmyy)).concat(tmp.substring(b)); b += ddmmyy.length(); } else if(t.compareTo("yy") == 0 || t.compareTo("YY") == 0) { if(t.compareTo("YY") == 0) ddmmyy = String.valueOf(date.getYear()+1900); else ddmmyy = String.valueOf(date.getYear()%100); // Set up the color for(i = 0; i < ddmmyy.length(); i++) fi.color = (fi.color).concat((new Character(c)).toString()); tmp = ((tmp.substring(0,b)).concat(ddmmyy)).concat(tmp.substring(b)); b += ddmmyy.length(); } // End short date else if(t.compareTo("\\") == 0) // Are they trying to delimit the backslash? { tmp = (tmp.substring(0,b)).concat(tmp.substring(b+1)); // delimit the '\' b--; } else { // A little error output System.out.println("Backslash (\\) error in text line: "+ fi.store); } } // END - if(tmp.charAt(b) == '\\') else { b++; fi.color = fi.color.concat((new Character(c)).toString()); } } // END - for(...) } // END - if(fi.func == ...) fi.text = tmp; return fi; } ////////////////////////////////////////////////////////////////// // Read in the script into a linked list of FuncInfo's int initScript() { InputStream file; DataInputStream dis; URL url; String line; int listlen; int dos; int a; try { url = new URL(documentURL,scrpt); file = url.openStream(); dis = new DataInputStream(file); } catch(IOException e) { e.printStackTrace(); return -1; } try { list = new linkList(); // The linked list start = list; // The head of the list ptr = list; // The current element listlen = 0; dos = 0; // Used to know how many Do's there are while((line = dis.readLine()) != null) { line = line.trim(); // cut off white space at the beginning and end if(!(line.startsWith("!!")) && (line.length() != 0)) // Not a comment or blank line { listlen++; ptr.fi = getFunc(line); // Get the function number if(ptr.fi.func == 97) dos++; // Chalk up another "Do" ptr.next = new linkList(); ptr = ptr.next; // advance to the next command } } // Ok now lets set the return pointers for the loops ptr = start; linkList stack[] = new linkList[dos]; // Allocate the array dos = 0; for(a=0;a 0) { dos--; ptr.fi.ret = stack[dos]; } else { // OMYGOSH!! Script error output!!!! System.out.println("Repeat error in line : Repeat times="+ptr.fi.times); System.out.println(" Mismatched Do/Repeats?"); } } ptr = ptr.next; } ptr = start; file.close(); dis.close(); } catch (IOException e) { // Error! return -1; // We could not read from the script. This is a bad script path. } return 1; } // End initScript() } // End Class Script ing s, int i) { String t; if(s.charAt(i) == '{') { t = s.substring(i+1); t = t.substring(0,t.indexOf('}')); } else t = String.valueOf(s.charAt(i)); return t; LEDSign/LED/FuncInfo.class010064400004260000017000000010010612443707600165110ustar00dbrownstudent00002200000001-"  !Ljava/net/URL;Z FuncInfo.java ConstantValuetextLjava/lang/String; ExceptionsLineNumberTablestorecolorI SourceFileurlLocalVariablesCodefuncdelay remainingjava/lang/Object startspace LlinkList;centeredtimesretendspaceFuncInfotarget()V     !* (LEDSign/LED/Letters.class010064400004260000017000000050310612443707600164330ustar00dbrownstudent00002200000001-}|UxzX^`_V\v B @ - * 6 1 0 > C 8 ? = 2 7 / 4 + , 5 : . ; 3 A 9 < 5 On sK an ic dp W Hn b R lb yn ]  b rJ T gD Z ] ek h fn Yn L ~ j](I)C Letters.javaLineNumberTable ConstantValuewidthplace(Ljava/lang/String;)ZLjava/lang/String;(Ljava/lang/String;)V (C)LIndex;heightswidth ExceptionsTOTAL()Ljava/io/InputStream; SourceFileLjava/io/DataInputStream;java/lang/Integerjava/io/InputStream[[Zjava/io/IOExceptionnum#(Ljava/net/URL;Ljava/lang/String;)V$(Ljava/net/URL;Ljava/lang/String;I)Vjava/io/DataInputStream()Vjava/lang/Throwablejava/lang/String java/net/URLw()I[LIndex;chfilehcharAt(Ljava/io/InputStream;)VindexprintStackTraceLjava/io/InputStream;intValueLjava/net/URL;IurlBlet startsWithpathlenCodejava/io/FilterInputStreamLocalVariablesLettersHEIGHTIndex getLetter!! (BII)V()Ljava/lang/String;letterclose initLettersreadLinedisjava/lang/Object openStreamlengthspace ynQnqKsKomekTanfnYnIntnnOnic[uC*(* Y+,$* Y*'*,*** ::;F2 57:;#<(=->5?:7;A=CB5Nbu*FJbuY* **d61*':*Y&%**66)*':*Y&% 66)*':*Y&%6**`=< 66!*':"<66'*':Y&%66*Y*S>6:+*':6 :66O*22T0"#*22T*22T*2*a***Y **S*)*'!W  F.KZ[ \^abdf)h9iAjDbIoLpOrXsburvupz{}|~|/47;>GOY\_cfkq{ ^  {Muf2 *= =*2# **2F" +SELEDSign/LED/LEDMessage.class010064400004260000017000000045300612443707600167250ustar00dbrownstudent00002200000001-ytKgiJV@Ns:L # 9 , + ) . * ( % 4 $ / 7 0 3 ' 6 8 2 5 - & 1 _E [C bA ov HB P\ uY nL ?\ xQ h\ ;\ a\ T= jD qM S\ Xf U` G\ RL mB e\java/io/PrintStreamendspaceLineNumberTable(I)C ConstantValuewidth#java/lang/IndexOutOfBoundsException[ILjava/lang/String;(Ljava/lang/String;)V (C)LIndex; LLetters; ExceptionsTOTALcolor SourceFilejava/lang/SystemFuncInfo[[Z()Vjava/lang/StringgetColorw()ImsghcharAtout LEDMessage(IILLetters;)VindexZinRangeprintlnIsetmsg (LFuncInfo;)VletLjava/io/PrintStream; startspaceletcolCodeLocalVariablesWIDTHLIndex;LettersHEIGHTIndex getLetterLEDMessage.java(II)Ztextletterfi(I)ZgetLEDjava/lang/Object"Out of bounds in LEDMessage.setmsgcentered LFuncInfo;(I)Ilength bARLovS\P\e\h\G\_EXfqWcX(*****h **h *- <68 9:;"<'6]^c T*+!66#* *!"``6*!*!A*8*=d=l=*!*!h**!Y`**!`*!`*** 6#6*2T**** 6*O**!6r6 66** *!"*! *!6 W*6=>*`2*23TW r*`O g*`O{ b*`Og y*`OS o*`O? p*`O* w*`O c*`O*>0*``6*!5CFe{~<FILMO+M=SPVUWZX^YfZn[x\`cfghgfkmnmpq sv(x5y5{CyF}GOyR[`ee{~  *3AsSArlcC# ** *23<!Owc5* *.< xQc*<Zpc0 *< IkLEDSign/LED/Index.class010064400004260000017000000005600612443707600160620ustar00dbrownstudent00002200000001-        letterwidth ConstantValueIndex ExceptionsLineNumberTableI SourceFile[[ZLocalVariablesCodeBjava/lang/Object Index.javach(BII)V()V  A****+-./+LEDSign/LED/linkList.class010064400004260000017000000004420612443707600166030ustar00dbrownstudent00002200000001-    ConstantValue ExceptionsnextLineNumberTable SourceFileLocalVariablesCodejava/lang/Object LlinkList;fi linkList.java()V LFuncInfo;linkList  *$ LEDSign/LED/LEDMessage.java010064400004260000017000000123630612443707600165440ustar00dbrownstudent00002200000001////////////////////////////////////////////////////////////////// // LEDMessage.java -- LED Sign V2.5 // // The class that takes care of parsing the message, // storage and retrieval of the message data structure. // // Revisions: // V2.7: See "Revisions" doc for more info // // V2.5: Fixed all known bugs in previous versions! Added // the new feature of ledsize, which allows the user // to specify in pixels how big the LED's (1-4). // Thanks to Robert B. Denny (rdenny@dc3.com) for // code and input! // Modified Dec 20-26, 1995 // // V2.0beta: Modified V1.0 to comply with Pre-Beta java. // A problem with delay causes a jerky display. // Modified Oct 20 - 29, 1995 // // V1.0: Written July 31 - August 4, 1995 // // by Darrick Brown // dbrown@cs.hope.edu // http://www.cs.hope.edu/~dbrown/ // // Copyright 1995 ////////////////////////////////////////////////////////////////// import java.io.*; import java.util.*; import FuncInfo; import Letters; import Index; ////////////////////////////////////////////////////////////////// // Had to call it LEDMessage instead of Message. Seems as // though class Message is already used :( ////////////////////////////////////////////////////////////////// class LEDMessage { int letcol[]; boolean msg[][]; FuncInfo fi; int h,w; int WIDTH,HEIGHT,TOTAL; Letters let; Index index; ////////////////////////////////////////////////////////////////// // The constructor // set up some variables that we need public LEDMessage(int height, int width, Letters l) { h = height; w = width; HEIGHT = 5*h; WIDTH = 5*w; let = l; } ////////////////////////////////////////////////////////////////// // Set the messege for the current text void setmsg(FuncInfo f) { int a,b; int i,j,k; int p; int len; char c; fi = f; // Find the length of the text in "LED's" len = 0; for(i=0;i 0) try { c = fi.color.charAt(i); } catch(IndexOutOfBoundsException e) { System.out.println("Out of bounds in LEDMessage.setmsg"); } k = index.width; for(a=0;a= 0 && x < TOTAL && y >= 0 && y < h) return msg[x][y]; else return false; } ////////////////////////////////////////////////////////////////// // return the color of the LED int getColor(int x) { if(x >= 0 && x < TOTAL) return letcol[x]; else return 1; // default red } ////////////////////////////////////////////////////////////////// // get the length of the messege in LEDs int length() { return TOTAL; } ////////////////////////////////////////////////////////////////// // Check and see if we're still in the message boolean inRange(int x) { if(x >= 0 && x < TOTAL) return true; else return false; } } LEDSign/LED/Letters.java010064400004260000017000000145720612443707600162610ustar00dbrownstudent00002200000001///////////////////////////////////////////////////////////////////// // Letters.java -- LED Sign V2.5 // // This class parses the font file and stores // each letter in an array of boolean (on/off). // It takes care of all the storage and // retrieval of letters data structure. // // Revisions: // V2.7: See "Revisions" doc for more info // // V2.5: Fixed all known bugs in previous versions! Added // the new feature of ledsize, which allows the user // to specify in pixels how big the LED's (1-4). // Thanks to Robert B. Denny (rdenny@dc3.com) for // code and input! // Modified Dec 20-26, 1995 // // V2.0beta: Modified V1.0 to comply with Pre-Beta java. // A problem with delay causes a jerky display. // Modified Oct 20 - 29, 1995 // // V1.0: Written July 13 - 14, 1995 // // By Darrick Brown // dbrown@cs.hope.edu // http://www.cs.hope.edu/~dbrown/ // // Copyright 1995 ///////////////////////////////////////////////////////////////////// import java.awt.*; import java.io.*; import java.net.*; ////////////////////////////////////////////////////////////////// // The Letters Class ////////////////////////////////////////////////////////////////// public class Letters { int HEIGHT,TOTAL; String let; String path; URL url; InputStream file; DataInputStream dis; int w,h,num,place,len,space,swidth; Index index[]; ////////////////////////////////////////////////////////////////// // The class constructor public Letters(URL url, String URLfile, int width) { try { // Set some initial variables file = (new URL(url,URLfile)).openStream(); dis = new DataInputStream(file); path = URLfile; // used for error printouts. swidth = width; if(initLetters() == -1) w = -1; // A width of -1 signifies no file (ie incorrect path) } catch (IOException e) { e.printStackTrace(); } } ////////////////////////////////////////////////////////////////// public int height() { return HEIGHT; } ////////////////////////////////////////////////////////////////// // Read in the letters int initLetters() { int a,b,c; byte ch; // the character of the letter int i,j,k; String s; // A line in the font file boolean done; int width; // Just to make the compiler shut up about // these "may not be initialized". w = 5; h = 5; num = 100; try { // find the height done = false; while(!done) { s = dis.readLine(); if(!s.startsWith("!!")) // If is not a comment line { h = (new Integer(s)).intValue(); HEIGHT = h; done = true; } } // find the width done = false; while(!done) { s = dis.readLine(); if(!s.startsWith("!!")) // If is not a comment line { w = (new Integer(s)).intValue(); done = true; } } // Find the number of characters done = false; while(!done) { s = dis.readLine(); if(!s.startsWith("!!")) // If is not a comment line { num = (new Integer(s)).intValue(); done = true; } } // The "num+1" allocates the extra array position for " " (space) index = new Index[num+1]; // Ok we gots the data, lets read in the characters! for(i=0;i 0) { if(!s.startsWith("!!")) // If is not a comment line { done = true; } } else { s = " "; done = true; } } for(k=0;k=s.length()) { index[i].letter[k][j] = false; } else { if(s.charAt(k) == '#') index[i].letter[k][j] = true; else index[i].letter[k][j] = false; } } } } // end reading in the letters index[num] = new Index((byte)32,swidth,h); // close the datastreams file.close(); dis.close(); } catch (IOException e) { // Error! return -1; // We had an IOException which indicates a bad font path. } return 1; } // end of InitLetters() ////////////////////////////////////////////////////////////////// // find the LED letter and return it public Index getLetter(char c) { int j; if(c == (char)(32)) { j = num; // I know where this one is! } else { // look for it j = 0; while(c != index[j].ch && j < num) j++; } return index[j]; } // End getLetter() } // End Letters Class LEDSign/LED/linkList.java010064400004260000017000000021740612443707600164230ustar00dbrownstudent00002200000001/////////////////////////////////////////////////////////////////// // linkList.java -- LED Sign V2.5 // // Contains the following classes: // linkList -- a linked list class to store the script // // Revisions: // V2.7: See "Revisions" doc for more info // // V2.5: Fixed all known bugs in previous versions! Added // the new feature of ledsize, which allows the user // to specify in pixels how big the LED's (1-4). // Thanks to Robert B. Denny (rdenny@dc3.com) for // code and input! // Modified Dec 20-26, 1995 // // V2.0beta: Modified V1.0 to comply with Pre-Beta java. // A problem with delay causes a jerky display. // Modified Oct 20 - 29, 1995 // // V1.0: Written July 17 - August 6, 1995 // // by Darrick Brown // dbrown@cs.hope.edu // http://www.cs.hope.edu/~dbrown/ // // Copyright 1995 /////////////////////////////////////////////////////////////////// import java.awt.*; import java.io.*; import java.util.*; import java.net.*; // A hacked linked list public class linkList { FuncInfo fi; linkList next; } LEDSign/README010064400004260000017000000025400612443707100142330ustar00dbrownstudent00002200000001LED Sign V2.7 March 22, 1996 Copyright 1995 Darrick Brown (dbrown@cs.hope.edu) The main LEDSign directory contains the following directories: LED - contains all the .java source code and compiled .classes WWW - contains all the LED Sign HTMLs fonts - contains any font data files scripts - contains any scripts for LED Sign LED Sign V2.7 comes pre-compiled, you do NOT need to compile the source code to use it. You may want to make modifications to the source code. If you do, you will need to recompile the applet (instructions below). If you modify the source code, please do not redistribute the source code to others as I am trying to prevent multiple versions from being available. To compile LED Sign: cd LEDSign/LED (the source directory) javac -classpath .: LED.java Example: javac -classpath .:/src/java/classes LED.java Note: The "-classpath" option tells the compiler where to look for the ".class" files. All paths are separated my a ':'. Therefore, if you are compiling in MS-DOS, you will not be able to do "-classpath .:c:\java\classes" because it will try to look in the current directory, c, and \java\classes. You will need to make sure that you have the Java Development Kit installed correctly to compile LEDSign/Revisions010064400004260000017000000025630612443707100152640ustar00dbrownstudent00002200000001LED Sign V2.7 - Basically a "performance enhanced" version of 2.5. Loads quicker. Sleep delay "quirk" killed for good. Added frame targets and a more complete error/warning feature. Thanks again to Robert B. Denny (rdenny@dc3.com) for code ideas and input. Modified Mar 14-22, 1996 LED Sign V2.5 - Fixed all known bugs in previous versions! Added the new feature of ledsize, which allows the user to specify in pixels how big the LED's (1-4). Also added cyan and white to the available colors. Thanks to Robert B. Denny (rdenny@dc3.com) for code and input! Modified Dec 20-27, 1995 LED Sign V2.1b - Fixed a few display bugs and recompiled it with the BETA (not pre-beta) javac compiler. The recompilation should fix the "Applet not initialized" error that some people were getting from Netscape 2.0. Nov. 20, 1995 LED Sign V2.0b - Added the feature to display the current time/date and URL links. Both ideas were suggested by Neil R. N. Enns (ennsnr@austin.BrandonU.CA). Initial port to pre-beta java. Oct. 25, 1995 LED Sign V1.01 - Fixed bug found by Charles Stephens (cfs@cssun.mathcs.emory.edu) dealing with improper color parsing. Sept. 20, 1995 LED Sign V1.0 - Written: July 17 - Aug 8, 1995 Initial release. LEDSign/WWW/004075500004260000017000000000000612443707100140415ustar00dbrownstudent00002200000001LEDSign/WWW/LED.html010064400004260000017000000134330612443706000153320ustar00dbrownstudent00002200000001 LED Sign Info

Compatible with java 1.0 and Netscape 2.0b3 or newer


If you were using a Java-enabled browser, you would see an animated scrolling text sign that looks like this:

About LED Sign V2.7

This is the newest version of LED Sign. This will probably the last release of LED Sign for a while. Version 2.7 is basically a "performanced enhanced" version of 2.5. V2.7 will draw the sign to the screen quicker, thus producing a "quicker" content feed. However, it will only be a blank sign until the font and script have completed downloading. Also in V2.7 is a more complete error/warning notification. If the sign does not load, most likely an error and discription of what is causing the error will be printed to the java console. Also check the java console for any runtime warnings.

Also, by popular demand, LED Sign V2.7 supports frame targets. To specify a frame target just append the target name to the end of the url, separating the url and target by a comma (','). ie:
ScrollLeft URL=http://www.javasoft.com,_parent text=Goto Java!

Released: March 21, 1996

* Support Notice *

As of the release of LED Sign V2.7, I will no longer provide technical support for LED Sign due to time contraints and the amount of mail that I receive asking for technical support. So please do not write me asking how to set it up, how to write a script, or about a problem you are having. I feel that I have provided a fairly complete set of documentation, much more than you will find with other java applets. If you do write to me asking for help, you will have only wasted your time and mine, as I will delete the mail. I really wish I could provide support for LED Sign, but I do not have the time with my college graduation soon approaching, among other things. I appreciate your understanding.

If you have questions about how to set up an applet, check the java site at http://www.javasoft.com/. If you have other problems, I would suggest checking the usenet newsgroup comp.lang.java.

I will continue to improve LED Sign so if you have any bug reports or suggestions, please let me know.

Features

  • Script controlled
  • Different colored text (red, orange, yellow, green, cyan, blue, purple, and white)
  • Different fonts
  • Different transistions
  • Displays the current time/date
  • Variable LED size
  • URL links - takes you to another page if you click on the sign while a certain message is being displayed.
  • Frame targets! Now you can use LED Sign with your frames!

Usability

This applet was designed to be "user friendly". Everything you see the sign displaying is run entirely by a script. LED Sign will provide errors and warnings in the Java console of netscape to help make the setup easier and quicker.
More on the Script Feature.
Here is the Demo script that the sign above is running.

Flexibility

The LED applet also has a large amount of flexibility. The size, size of border, color of border, size of the LED's, and even the font that the sign uses are all configurable. The size and border parameters can be easily set in the applet "command line" in the HTML. The font is specified by a data file that contains the shape for each letter. The font data file can have as many or few characters as needed. If a character is used in the message but is not in the font data file, then it will be substituted by a space.

More on fonts .
More on configurability .

Examples of LED Sign

Here are some sites that use LED Sign on their pages.

Download LED Sign V2.7

The UNIX tar/gzip file LEDSignV27.tar.gz

Note: If you are upgrading from LED Sign V2.5 or earlier, you will notice that there is a new parameter, "ht". This is to specify the height of the sign in LED's and must be the same as the height of the font you are using. If the "ht" parameter is not specified or incorrect, you will get an error or warning in the java console. See the configurability page for more info.

If you are running Win95/NT you might need WinZip95 6.0a to unzip and untar the archive. WinZip will retain the long filenames which are needed for the applet to work.

The LED Sign V2.7 distribution comes with all source code, pre-compiled binaries, example scripts, fonts, and all the HTML documentation you see here.

Questions???

Check the LEDSign FAQ.

Known bugs

  • None!

The LED Sign Java applet is written and Copyright 1995 by Darrick Brown
LEDSign/WWW/script.html010064400004260000017000000216120612443706000162300ustar00dbrownstudent00002200000001 Simple Script

The LED Script

Syntax

The script syntax for LED Sign V2.7 is 100% backward compatible with previous version of LED Sign. If your script ran on V2.5 it will run on V2.7. However, a V2.7 script may not run on V2.5.

The syntax for the LED script is extremely simple. Each command must be on one line; they cannot be split onto multiple lines. Only one command can be on a line. A line that starts with a "!!" is a comment. Here is an example of a script:
!! Just a simple script
Do
   !! Move "Hello" up onto the sign
   ScrollUp delay=30 center=true text=Hello
   Sleep delay=1000

   !! Scroll "This is a test" left onto the sign
   ScrollLeft delay=30 startspace=20 endspace=80 text=This is a test
   Sleep delay=300

!! Repeat infinitely
Repeat times=-1

You can write a script with the same text editor that you use to write your HTML. Programs like Windows Notepad or Macintosh teachtext will work fine.

The Options

The different options for each function/transition are as follows:
  • clear=true
  • delay=<non-neg int>
  • startspace=<non-neg int>
  • endspace=<non-neg int>
  • center=true
  • times=<-1 | non-neg int> (-1 specifies infinity)
  • pixels=<pos int>
  • URL=<URL string>
  • text=<string>

The Functions/Transitions

The different functions/transitions available in LED Sign are as follows:
  • Appear - Cause text to appear on the sign
  • Sleep - A delay
  • ScrollUp - Scroll whatever is on the sign and the new message on going from bottom to top.
  • ScrollDown - Scroll whatever is on the sign and the new message on going from top to bottom.
  • ScrollLeft - Scroll whatever is on the sign and the new message on going from right to left.
  • ScrollRight - Scroll whatever is on the sign and the new message on going from left to right.
  • ScrollCenter - Scroll whatever is on the sign and the new message originating from the center.
  • OverUp - same as ScrollUp except it overwrites whatever is on the sign.
  • OverDown - same as ScrollDown except it overwrites whatever is on the sign.
  • OverLeft - same as ScrollLeft except it overwrites whatever is on the sign.
  • OverRight - same as ScrollRight except it overwrites whatever is on the sign.
  • OverCenter - same as ScrollCenter except it overwrites whatever is on the sign.
  • Pixel - Pixel in a new message
  • Blink - Cause what ever is on the sign to blink
  • Do - begin a "Repeat" block
  • Repeat - end a "Repeat" block
  • Reload - reload the script. Probably the most powerful feature of LED Sign. Whenever LED Sign gets the Reload command, it will reload the script over the URL. Useful if information is updated frequently (like stock quotes). An example use of reload:
          Do
                [Display some messages/information]
          
          !! display those messages 5 times
          Repeat times=5
          !! Now reload the script to get any possible changes
          Reload
    

Usage

  • Appear [clear=true] [spacing] [URL=<URL string>] [text=<String>]
  • Sleep [URL=<URL string>] [delay=<non-neg int>] (defaults to 1000)
  • ScrollUp [clear=true] [URL=<URL string>] [delay=<non-neg int>] [spacing] [text=<String>]
  • ScrollDown [clear=true] [URL=<URL string>] [delay=<non-neg int>] [spacing] [text=<String>]
  • ScrollLeft [clear=true] [URL=<URL string>] [delay=<non-neg int>] [spacing] [text=<String>]
  • ScrollRight [clear=true] [URL=<URL string>] [delay=<non-neg int>] [spacing] [text=<String>]
  • ScrollCenter [clear=true] [URL=<URL string>] [delay=<non-neg int>] [spacing] [text=<String>]
  • OverUp [clear=true] [URL=<URL string>] [delay=<non-neg int>] [spacing] [text=<String>]
  • OverDown [clear=true] [URL=<URL string>] [delay=<non-neg int>] [spacing] [text=<String>]
  • OverLeft [clear=true] [URL=<URL string>] [delay=<non-neg int>] [spacing] [text=<String>]
  • OverRight [clear=true] [URL=<URL string>] [delay=<non-neg int>] [spacing] [text=<String>]
  • OverCenter [clear=true] [URL=<URL string>] [delay=<non-neg int>] [spacing] [text=<String>]
  • Pixel [clear=true] [URL=<URL string>] [delay=<non-neg int>] [pixels=<pos int>] [spacing] [text=<String>]
  • Blink [delay=<non-neg int>] [URL=<URL string>] [times=<pos int>]
  • Do (no parameters)
  • Repeat times=<-1 | non-neg int> (the "times" parameter is required)
  • Reload (no parameters)
[spacing] = [center=true] | [startspace=<non-neg int>] [endspace=<non-neg int>]

Text Color

In LED Sign you can make the "on" LEDs eight different colors:

  • Red (default)
  • Orange
  • Yellow
  • Green
  • Cyan
  • Blue
  • Purple
  • White
The way you specify a color is with a '\' followed by 'r', 'o', 'y', 'g', 'c', 'b', 'p', or 'w'. Everything after a color specification will be that color until another color is specified or the end of the line is reached. Each line starts out with the default of red. The text specified as:
  text=This \ois \ya \gtest
will appear on the sign as "This is a test" but with "Test" being red, "is" being orange, "a" being yellow and "test" being green.

Variable tags!!!

LED Sign also has the capability of displaying the current time/date. The tags are specified in the text just like the colors. Here are the time/date tags:

  • tt - time
  • dd - day abbreviated (eg Fri)
  • DD - day (eg Friday)
  • dn - day number 1-31
  • mm - month abbreviated (eg Aug)
  • MM - month (eg August)
  • mn - month number 1-12
  • yy - last two digits of the year (eg 95)
  • YY - the year (eg 1995)
The way the time/date tags are used is by preceding them by a backslash ('\') and enclosing them in brackets ({}). Here is an exaple:
     ScrollLeft text=The current time is \{tt}.  Today is \{dd} \{mm} \{dn}, \{YY}.
The line above in a script would print somthing like "The current time is 6:19 pm. Today is Sun Oct 29, 1995." on the sign.

URL connections!

You can specify a URL to go to if the user clicks on LED Sign while it is displaying a certain message. To do this all you need to do is specify the URL on the function line in the script. Here's an example:
     ScrollLeft URL=http://java.sun.com text=Java is cool!
     ScrollLeft URL=http://java.sun.com endspace=40 text=Click on this sign now to go to Sun!
The URL tag is also valid for the "Sleep" function. So you can be displaying a message and sleeping, and they can still click on the sign and have it take them to the URL. Example:
     Appear center=true URL=http://www.sun.com text=Sun MicroSystems
     Sleep URL=http://www.sun.com delay=4000
     !! Wait a long time to give them a chance to click!

Notes

The "text" parameter must be the last parameter, because the string after the "text=" is your message. This makes it easy to parse (ie no nested quote problem) and easy for the user. What you see is what you get!!!

If the "clear=true" parameter is given to one of the transitions, it will cause the sign to clear (turn off LEDs) in the manner of the transition. i.e. "ScrollDown clear=true" would clear the sign by scrolling whatever is on the sign down off the sign.

If the "center=true" option is set, then the message will be centered on the sign if it fits on the sign. It doesn't make sense to center a message if it is longer than the sign. So, if your message isn't centering, then it is probably too long. The "startspace" and "endspace" parameters are ignored when the "center=true" parameter is given.

The script is much like HTML in how it handles function tags and parameters. It will ignore anything it does not recognize. However, there are some ways to stop the applet. For example, "delay=fifty" is incorrect because "delay" requires an integer and would thus cause the applet to stop. There is some script error output. If you are having trouble with LED Sign running your script, check your java console (under options menu in netscape); any error output is printed there.


The LED Sign Java applet is written and Copyright 1995 by Darrick Brown
LEDSign/WWW/font.html010064400004260000017000000015220612443706000156700ustar00dbrownstudent00002200000001 LED Sign Fonts

LED Sign Fonts

The Font Datafile

If you would like to change the font, all you need to do is change the letters in the font file . In the font file, '#' represents "on" LEDs and ' ' (space) represents "off" LEDs. Making new fonts can be a bit tedious, but it is possible to create them by hand. I hope to have a windows program available soon that will create LED fonts from Windows true type fonts.

NOTE:

The height of the font determines the height of the sign. If the font is 12 pixels high, then the sign will be 12 LEDs high.

The LED Sign Java applet is written and Copyright 1995 by Darrick Brown
LEDSign/WWW/options.html010064400004260000017000000047620612443706000164260ustar00dbrownstudent00002200000001 LED Sign V2.7 Configuration

LED Sign V2.7 Configuration for Java

Required Parameters

  • <param name="script" value="[URL | file]">
    Specifies the script for the sign to use
  • <param name="font" value="[URL | file]">
    Specifies the font for the sign to use

Optional Parameters

  • <param name="border" value="[non-neg int]">
    The Border width
  • <param name="bordercolor" value="[0-255],[0-255],[0-255]">
    Color of the border
  • <param name="spacewidth" value="[non-neg int]">
    How wide is the space character?
  • <param name="wth" value="[pos int]">
    Width of the sign in LEDs
  • <param name="ht" value="[pos int]">
    Height of the sign in LEDs
  • <param name="ledsize" value="[1-4]">
    Size of the LED's. Sizes can be 1,2,3, or 4.

Example LED tag in HTML


<applet codebase="classes" code="LED.class" width=540 height=70>
   <param name="script" value="../scripts/Demo.led">
   <param name="font" value="../fonts/default.font">
   <param name="border" value="3">
   <param name="bordercolor" value="100,130,130">
   <param name="spacewidth" value="3">
   <param name="wth" value="100">
   <param name="ht" value="9">
   <param name="ledsize" value="3">

   <blockquote>
   <hr>
   If you were using a Java-enabled browser,
   you would see a scrolling text sign instead of this paragraph.
   <hr>
   </blockquote>
</applet>


The "codebase" value is the directory where the ".class" files for LED Sign are kept. The "code" parameter is the name of the "main" class. The "script" parameter is the file that contains the script that the LED Sign will run. The "font" parameter is the file that contains the specification of the font for the sign to use. All four of these must be correct, otherwise the applet will not start and will give a "Applet can't start: applet not initialized" error. If you get this error, make sure that "codebase", "code", "script", and "font" are correct.

The "width" and "height" specify the the applet space available to the applet.

The LED Sign Java applet is written and Copyright 1995,1996 by Darrick Brown

ExLEDSign/WWW/FAQ.html010064400004260000017000000244470612443706000153440ustar00dbrownstudent00002200000001LED Sign Fequently Asked Questions

LED Sign Fequently Asked Questions

These are the most frequently asked questions that I get about LED Sign. I will continue to add new questions/answers as they arise to the FAQ at the LED Sign home page. So, if you don't find the answer to your question here, check the FAQ at the link above.

Note

Due to the amount of mail received and time contraints, I can no longer provide technical support for LED Sign. So please do not write me asking how to set it up or how to write a script. I feel that I have provided a fairly complete set of documentation, much more than you will find with other applets. If you do write me asking for help, you will have only wasted your time and mine, as I will delete the mail. I wish I could provide support for LED Sign, but I do not have the time. I appreciate your understanding.

-----------------------------

security violation:security.protocol:file

Q: I've installed LED Sign on my machine as the instructions have
   specified, but when I load the page I get an "Applet LED can't
   start: security violation:security.protocol:file" error.  What
   is wrong?
   
A: Usually this is caused by loading the file locally with
   "file://..." or selecting "open file" from the file menu on
   Netscape.  You *cannot* run LED Sign locally (ie - on a
   standalone NT machine from c:\LEDSign\WWW\LED.html)  Yes,
   netscape 2.0b4 or newer do allow you to run applets locally,
   IF the applets do not access any local files.  If the applet
   tries to load any local files, netscape will throw a security
   exception.  LED Sign needs to load two files; the font and the
   script.   Netscape does not allow applets to load local files
   period!!!!  However, if you have JDK (Java Developers Kit),
   you can use the "appletviewer" program to run LED Sign
   locally.  You can find out how to use appletviewer to run
   LEDSign locally from the Sun MircoSystems security FAQ.  The
   URL is:
       http://java.sun.com/sfaq/
   You will probably want to read parts #2 "Can applets read or
   write files?" and #3 "How do I let an applet read a file?".
   These sections give directions on how to set it up.
   
-----------------------------

Commercial use of LED Sign

Q: I read in the COPYRIGHT that LED Sign is for non-profit use
   only.  Can I use it on my company homepage?

A: Yes.  You may use LEDSign on a commercial homepage.  What the
   "non-profit" part means is that you cannot sell LED Sign in
   any way.  LED Sign is freeware, and I retain all rights to it.
   It is NOT public domain.  This means you cannot sell it in an
   internet software "bundle", sell it in any type of commercial
   distribution, or sell it to clients.  If you are a web page
   designer and do consulting, you may charge your clients for
   the time it took you to set up LED Sign, but you may not
   charge for LED Sign itself.
   
-----------------------------

error: NullPointerException

Q: When I load my page with LED Sign on it, I get a
   "NullPointerException" error with some output in
   the java console that looks like:

   applet exception: exception: java.lang.NullPointerException
   java.lang.NullPointerException
         at Script.nextFunc(Script.java:323)
         at LED.nextFunc(LED.java:326)
         at LED.init(LED.java:206)
         at netscape.applet.EmbeddedAppletFrame.run(EmbeddedAppletFrame.java:281)
         at java.lang.Thread.run(Thread.java:289)

A: This is caused by the "script" or "font" path being incorrect
   in your html <APPLET> tag.  Make sure these paths are
   correct.  If LED Sign cannot find a script and/or font, it
   will throw the NullPointerException and stop with a "Applet
   Can't start" in the status bar in netscape.

   In LED Sign V2.7, check the java console (under "options"
   menu).  Any errors or warnings will be printed there.
   

-----------------------------

error: java.lang.ClassFormatError

Q: When I load my page with LED Sign on it, I get a "error:
   java.lang.ClassFormatError".  What is wrong?

A: Contact your web server administrator.  The error is caused by
   the web server not knowing what a ".class" file is serving to
   the browser incorrectly.  Some web servers have problems with
   this, others do not.

-----------------------------

Applet can't start: applet not initialized

Q: I downloaded the LEDSign.tar.gz and have it installed on my
   machine.  When I try to load the page in Netscape 2.0 I get a
   "Applet can't start: applet not initialized" error and the applet
   does not run.  How do I fix this?

A: This problem can be caused by two situations:
   1. You need to load the page over a URL with "http://...".  If you
      are loading it localy with "file://..." you will get the
      initialization and security errors.

   2. You need to make sure that all the file names and paths are
      correct in the <applet> tag in the html page.  If the applet
      can't find the files that it needs it won't be able to run and
      it will give the "init" error. 

      <applet codebase="../LED" code="LED.class" width=519 height=64>
         <param name="script" value="../scripts/Demo.led">
         <param name="font" value="../fonts/default.font">
         <param name="border" value="3">
         <param name="bordercolor" value="100,130,130">
         <param name="spacewidth" value="3">
         <param name="wth" value="100">
         <param name="ht" value="9">
         <param name="ledsize" value="3">

         <blockquote>
         <hr>
         If you were using a Java-enabled browser,
         you would see a scrolling text sign instead of this paragraph.
         <hr>
         </blockquote>
      </applet>

      This is the example tag that is found in LED.html in the
      distribution.  The tags that are critical are codebase, code,
      script, and font.  These paths and files must be correct
      including capitialization.  Codebase is the path to where the
      ".class" files can be found.  Code is the main bytecode
      "executable" file.  Code should always be "LED.class".
      Script is the LED script that the sign will run.  And font
      is the font file that the sign will use to display the
      characters.
      
      If you are working on a Win95/NT system and your version of tar
      changes file name size (truncates to the MS-DOS 8.3) or
      changes capitalization, then change the file/paths names so they
      match the following structure.  This is what the LEDSign
      hierarchy should look like: (the slashes will be backslashes if
      you are on MS-Windows95/NT).
         ./LEDSign
         ./LEDSign/LED
         ./LEDSign/LED/Index.java
         ./LEDSign/LED/LED.class
         ./LEDSign/LED/FuncInfo.java
         ./LEDSign/LED/LED.java
         ./LEDSign/LED/Pixelize.class
         ./LEDSign/LED/Script.class
         ./LEDSign/LED/Script.java
         ./LEDSign/LED/LEDMessage.class
         ./LEDSign/LED/Letters.class
         ./LEDSign/LED/Index.class
         ./LEDSign/LED/linkList.class
         ./LEDSign/LED/FuncInfo.class
         ./LEDSign/LED/LEDMessage.java
         ./LEDSign/LED/Letters.java
         ./LEDSign/LED/linkList.java
         ./LEDSign/README
         ./LEDSign/Revisions
         ./LEDSign/WWW
         ./LEDSign/WWW/LED.html
         ./LEDSign/WWW/script.html
         ./LEDSign/WWW/font.html
         ./LEDSign/WWW/options.html
         ./LEDSign/fonts
         ./LEDSign/fonts/default.font
         ./LEDSign/fonts/charter.font
         ./LEDSign/index.html
         ./LEDSign/scripts
         ./LEDSign/scripts/Demo.led
         ./LEDSign/scripts/example.led
         ./LEDSign/COPYRIGHT

       Once all the paths and filenames are correct.  The applet will
       run.

-----------------------------

Q: When I try to load the applet I get a list of errors that looks like:

   [no properties loaded, using defaults]
   Thread-1 find class LED
   Opening stream to: file:/C:/java/demo/ledsign/led/LED.class to get LED
   Thread-1 find class Pixelize
   Opening stream to: file:/C:/java/demo/ledsign/led/Pixelize.class to get Pixelize
   *** Security Exception: file.read:\C:\java\demo\ledsign\led\Pixelize.class ***
   sun.applet.AppletSecurityException: security.file.read: \C:\java\demo\ledsign\le
   d\Pixelize.class
         at sun.applet.AppletSecurity.checkRead(AppletSecurity.java:226)
         at java.io.FileInputStream.(FileInputStream.java:49)
   .
   .
   .

   What is going on?  How can I fix this?

A: This is a security exception.  There are two things that could be
   happening.

   1. The permissions on the .class, script, and/or font files are set
      incorrectly.  Make sure that these files are readable by everyone.

   2. You are loading the page with "file://..." or "open file"
      fromt the file menu.  See the first Q&A in this FAQ for
      more information.

   In the example above, netscape is throwing an error because it has
   "illeagally" accessed "Pixelize.class", which is cause by
   improper file permissions.

   

Note

File permissions are only on UNIX and Windows NT machines. If you are running windows 95 or macintosh, you do not need to worry about the file permissions as they to not exist. ----------------------------- Applet LED can't start: error: LED != LED.LED Q: When I try to run LED Sign on my web page I get a "Applet LED can't start: error: LED != LED.LED" message. How do I fix this? A: This is caused by setting the "code" parameter to something other than "LED.class". ie: <applet codebase="../LED" code="../LED/LED.class" width=519 height=64> The code parameter must be "LED.class", no more, no less. If it is anything else, you will get the "LED != LED.LED" error. To specify a different path, use the "codebase" parameter. ----------------------------- error: ClassNotFound Exception Q: When I try to load the applet, I get a "ClassNotFound" error in the status bar of Netscape. What is causing this? A: The codebase path in the <applet> tag is incorrect. Just correct the path to point to the directory where all the .class files for LED Sign are located and it should run fine. -----------------------------
scape does not allow applets to load local files period!!!! However, if you have JDK (Java Developers Kit), you can use the "appletviewer" program to run LED Sign locally. You can find out how to use appletLEDSign/WWW/LEDSign.gif010064400004260000017000000045720612443706000157600ustar00dbrownstudent00002200000001GIF87a@pwDwGB_g/~7OzaW x&*X`UHUY!8qO2$b&HR!T8ք2z%[jH3#E>АDiH&L6PF)TViXf\v饑A?8ɑOfn&kjbĢ/ 'jިgm)(T\%-h֖٣NhQJ٥)]Fڛ.਻}**CF(B W끴jYwjk {P6 w*VKF\ (~+nVt Zn(xJ%%zX:},l'\$c>պRZa<#$P#0BC*B-O'4[3 #*<ϯ&4iЛЮ m4_2S\uWӥr[u_[OM4IۖZ6κtR[q3QzSc]t_'5؋7-sCܓӺvĘ,q)'矫yV(^)̸˰\o6ޱ×+/kN_#|ShstWn2G1>F3'*&pmv_6SKE?o=h Nciʀ ȐiM~g{a>Er *A鍃)zF)`}Z|aB';Nl56Va60r*G!zt22F#zyFgȊ7""R42hL%!|p>鍄7ũu*_DʇG#gc 7AFFPTdɗHb==F 6d\x8𑔬"U?TaBO.c q5𩡂)ʕ* !/a DY23!n !F;~pK"=>ŏIr*Lgٕ;6<hԗ6KMUrW=r?9P9se&WIщjʒ<(4jIiG&Pzpq)mTZQT~4t2gY:3o.vK - |3+2T:O=Jibns#@u@IQG BΈ4+ggUڦvp\ƩZu$<&yw|ڢvEY1(FR)t:Z(:!zbH.m)L-*ϳthEXO}aa}RM4/ZBRը,gs6FYc)rIV**tbk&Ն )Q]J޼N ~ӻD5]a#FS]8$.ZּUߡ,/N4^;&бF&fyûpAטt(.1Q[z7..gx:GSpB !co/|uPLD2Ṉem2\ Xg^qՌf9m5lI4۹,Nm>4q8ǙπFme-\*YґtĞLN{Ӡ]@RԨN հgM6 εw^Mb^Yf;Ўv--j[6cn{ǍNv=η~NO;' ;LEDSign/WWW/ribbon_sm.gif010064400004260000017000000027500612443706000165010ustar00dbrownstudent00002200000001GIF89a+Ef3̙f3f3ffffff3f3333f333f3f3̙f3̙̙̙̙f̙3̙ffffff3f3333f333f3̙f3̙̙f3̙f3ff̙ffff3f33̙33f333̙f3ffffff3ffff̙fff3fffffff3ffffffffffff3fff3f3f3f3ff33f3ffffff3f3333f333333̙3f3333333f3333f3f3f3ff3f33f33333333f333333333f333f3̙f3f3ffffff3f3333f333f3wUD"wUD"wUD"ݻwwwUUUDDD"""!,+EH*,| #JȬ;xVLhPTEfų#G*+/ɍjP?z^FT! 8p.u&" Opr =8 Bz~[jPExȣ"Ys`A- _u~ okZ}`s'MZ?މ .x8͝;h o_kX5zVvYMk1j RS/*إf:TjKCLںܼQ/^혚Su;K^rnyUf֌ԩݬ~Mcw:/N{NYye'M53:^_:*|}Fן|Z {7ʆa!!O/' 3, Xa}dm1Dh!5EQ= kHՐ2YP|Xex套>Nb# LEDSign In Use

Examples of LED Sign in use

Here are some other sites that have put LED Sign to use. Check them out!!!

Businesses

Non-commercial sites

Personal Homepages

Have you done something new?

If you have done something new with LED Sign let me know. I'm looking for new original ideas like animations, new combinations of transitions, new fonts, and different uses. Remember, the main criteria that I am looking for is originality!!!


Back to the LED Sign home page. LEDSign/WWW/watercolor.jpg010064400004260000017000000044420612443706000167230ustar00dbrownstudent00002200000001JFIFGCREATOR: XV Version 3.00a Rev: 4/22/93 Quality = 75, Smoothing = 0 C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222``" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?\G8x!:0Y.x4Tc韧lyLtNUV71'[''߮[Z\ H9h{FK~PWqtBMB_.ö>ȋӟƢ-dےp͌iFF`WgePI\b#6s.8&)䔡{I 1GzRn3wNGI~4nݐF >c;򁙈\=97f$+ 1MnU^8kmƵLl㚂|ߎWEp%^?lμ*'s )R;<rx?( px犗!.:X3VYN.7xH zSce‰%۷:ӷDcgr)Uu}OJ.W3):ʸ>URi^nI.>POS(7 _<s#6ܲsǨS'bW0vwi=3 11fOng!rߗ '.3l>=Vq끚 <8T6ܞ 9BȹߗȲWO{Qι]ǩ3Ts)J8U7Wew|B>=PG8{Jw\n=&IU{vbUC+Ő\*7p aJ:1~'edRy`li(T :~r6ᰀv|v[ ҚVRIN?(LJF ޜv3vN#ٷnvO|ϐx9SxRxe.\ sRb-HHߝۛ `}})Q ;FzQo͹B?Kݲed z VϿ|JI#?]`}CU}-݅ãr1֔;2o͌g gHߘx4]ueıe6׊t`*zft$:u4G)nvsXI?Q΍.:Rɍ4ޝ3jlbݣLEDSign/WWW/ledsign27t.gif010064400004260000017000000316030612443706000165100ustar00dbrownstudent00002200000001GIF89aV9'55$11(66+::9MMPkk,<<#//n%22,;;)88&33&44*99$00!,,"..O)77!--**wvIoLhhx6II.??Qmmf@SiB{5]ڰ3FF\||RVttRMbd.>>=xK}Yxx rGk>SS'!b.*qf@WWuELlYfV-==E[RpF^IhCbWF__UsH1CCyK[?UUwJ}NX{LzLqkC~NRoo#uIPqGp|M2e@hP6HHnEj@flDy;PP`3EEJeemDQR9LLʖˍj\APK':|KEIj)f%c`/KSP^|/FEUn7i*P,QK|S|PQBMܩoDb .H xj#PVXj˭@YlqIPa5T1/ߔPʮfA #Cc@r\« g ^'M3QLCBjlC)r)m*AEQܥQ FE m =|!,/mtfi/0%T|1//$/C!s/QJ'ӎ`6$m>_' Epzc;H2*Ŵ.14 ΀G; 1o 8/@o)Ae@W?c) tW " c 6T%[pSy`J5QA & TxҘ(T,D>(VOJ6% rB F!P@2-AͨɳpPe!zd`( :&4Bz rխh. ! dX t@x#Sx{8@Ќfp9KA+.8 T f irK=h8NLH/z0(!m`0 :Ѓ2j Z;+.a/$ Ÿ<`T\ kP6l< 3MUl3X^W "! Ze(#r\(!$@ m:`OLwZ/꧇/\O`Tj h/} La +耋9ISH )j / dB0B ?Wa2'QPL3f驇! ]/Ȑ p a'`@/P Hhbͨ(Pf85Q@H kk ja8V' R !ǰ D@OkY@F@Iې4(# A+`D $E) (OP@\0WVZH&T؀ V]0tH0, D8/Ahv9xJ0AƎaF㸵åL5FF<t6 g28$hH ^E\Q8]ns#I0c]D{ \ "&qb̽PB63Sk @1^HV P-<bX?pp9 hA_D PÙZ )^Ap-l8  p wHA *P&h!؀(8F/B;p3lZ |`mY0]HX{3 *,0b,05BLYȁ6(@1@犆\ 2L/1 g  qS1n (1o!@ a Lmb"DPg#;dd 'sRF=' QЂ=Pzq;Xw$#)9prDfL XC @`@ 7 Z(@x:-|ؠXg|[^V4r%`;cĸ ԭ\Cz0oĄ< _ r2 o f ̠Fua bf1Yv [w&v G=P%G9 Pp!ri]>p`ppg0 H!|@ >؃Oq۰*0 |` (p @ Kl !)( `Bf D vp@ h30 W &8@>PR 0{@(ˠ d@ O0i&k t@j 30C*2 Q MYd0vqDfe @Pr8@TN (~)g*)%p >2) I&!40@ E 6 ji3( =@ 3 ' +=YU0&Ap(0p& ) w, k Vv x&gЊ @ b FDאPZ 0l Iy oP\ї 5@$5o@ H)@ 8 lVOİZ@1pv@`BU0ly1 C 3`6mTyII (Tf]8  ` gr3p9ϐ0{Ǡpj2*Đ 3 )9) ʎ2<ݠУy  IbͰ M9p g03Z F Bk fr[ )5w Pbȓn B @ }1 )X_ZyGGG - y*@3TJ ) >ɀ@ rO vPC`y$k&4Pvp T*Ϸzttٰ3 d'P@%  p2p3(Bt Q03 HЕCr V* Y01`5Kp8ZGv(Ť2*0G1[o ̐rHkv ÕXk oo`>%0dG@J9y^h%xK,{` )0 Q,k6QG%h2 1l* ;,㰽ip[)uQ ̰sb͠А0 ۸x?0 E1%< Ѕk ~9v+ t+Q0d5ɰ8 8`t0 Q`u d1G0 @G@ @IIp 1p   Q0 jH{uG[ڑ` .0Q0 yQP4< @ Sؠ+CP;gƈ{^!  Mp C4KV `\BPEP;Qu AS ;G1 Ơ`;P@t)i֮UP i]O (@; pp0ku9)/|LS@ P ֐`mҋk`S\hPMP`Qew@ `#cBL;uh0+Y'Qph h#vnܠg84 wm՜zJL.r` PhPZn!hȸ0 ̿} Ō?<@0@hLp^Kn" iKu0 L(_pNu`̽0P @@!8pb <JXnwLДhgŰ PeQr̶z lo 6ka8u@X.+{^ Ԑ > G L`<װ B8QUp}\Pa›fpbԺQNeǜ;L.4#bpL"vHqOFiQYj :;0!dlk2Ea! 0PSL.h6BeMIR8)A㗵_4p/6 Z(@p`^!K#(9&u8P2KIƒ h0`p@Ne 7) (%M P jwB@a@L-4;Õm U`@V5ITR+N $hGH"<8 g&|$ɕ@c!20+a喖X4/ ,0@5X#N8&,4a9`°hb` 6!$ <<8*HAcrA  [, c= ?,rÒq) ,]p"2AdJˁ "hf z'[|jLF`f$nMIZv@ 0[~I#&H\ ' wV($@QBjf)P X+ ċgށF t=d9`5UxAaH.R\#,ܘ1A&7ι <bUp5"2{n@HTR:x,`{C@C4|s [J)F+!87vW\RO@w 5!8Vp$gP n aci/q. s""ubY4% LhE~-$#Ci@\wl vwOs(7F1yBp\qӏj;׫A'(} g& `1YP^09p+d1SԧV - n Nхr`9pA vL {8[v B2LQ8J;k1)A#D«k[L IJa٢AFnx/h ]HvmxKpIxpOH7@%Y2>){ۨl8HL0#FQ1HȄH;KF`mbB)Ba`Lʄ_N Fhm83P8Q(xGȄCsl_4=?MxFF8HL(/ xIkBPGX`HFAs:8A@A?j{[Ą/.SH$$YxFhJNʌM$`FLFĄF8OA(gPgĄQPGL*FL(J,MA瓃ykL鬄GLPQaMj,".?$X<HE)j!mHj{+4N 8X1M)0#$0L)h ]l؄F)_<&5_DQ\/-1g*QyN)䴁{e0Vu 0C`+òi xRQ` zu]рP`JpXP(I8uS$@YpI7 y7aOԄ.L?pNCԄ4_I_J@XDA@` ik4I eP8s4OAL h5MOuSH@IJ[)c F^Jڔ5 B@:_ T2\V }`Xa685.Є G@HFT|$@@TFfX OwhḴ @B(OtYHZHO,58pP(@ LSLXpHY@@YXpXO$ZфG?@GH pFP??F@B 8E88[ |eKاҫq@?X@Sp pX0OZa &[HvXhp8pGp8 M`ZB8 m`m_ZimF+ZimF$UH ,AGSЕG FpTaX\G@?JN? Ma7 k FX@Q)pJ8Fh٣`/u3p]I?0E G8YH0 WmčL(_GOCC9 Ou]aQ!Fq Zk]]ۍ ] `ȒPF*@") WQiXD9J(Qf\`_Um4pȆv؆kHb6(EI.EP=1G똀3G^@gU ^o2yA3W@e&hPjss(s;'XpK,[Y]n H= $g'hKpQha p迱TVj?C>CHr6HwSOu\up!xg-)i*`XB(ʛr-V艞E2]hOeur] xzOan``'"4tAzW(`A@_cxgnbk@g@ly?h9 Zp#p.poyy~cw!- xjhezBWC[_jPh7ȂmBqyZ`hpBawkhq^u6.*@q {o?x$ Pv 'T֯4 s+[t]KUk{5y!ZrM2e˨.`9JW6J&&Alb7-7\3`5nϟxVx9h ms2n\<ゥz*/ #:E@]s׎Fa7>Բ aRG) PA38Q ' pF XV +FX[ h84'TD^ 2))$ .ԢN9MdvE S$$oWf% %E7'–iP/9tS(<'}'5ٔPt矉&(М܉P8X1 1M tYE l%DF8L\0+а!<2  Zh%Lrp/qBZp7?xdqEBl UWi 32_l ^hX!k .Xss#P6P@P፿Fc)IR$&wtP!؇H5f 8fY 0[+[hOI&6m?`F7P`DL`@|7}n1W\:)0 L1h!'oJ?3эr9-` +h1X#XR0Ѐ(Nsӝa ^FK N(@HRVf'TDME' nLn}+\-)qv1\USP9Ƶ=,loZȁƳO] mE,f3%@igW;n=EIj6 ;a Lmb"DPg#;dd 'sRF=' QЂ=Pzq;Xw$#)9prDfL XC @`@ 7 Z(@x:-LEDSign/fonts/004075500004260000017000000000000612443707100145065ustar00dbrownstudent00002200000001LEDSign/fonts/default.font010064400004260000017000000077140612443713600170320ustar00dbrownstudent00002200000001!! The default font file for LED Sign !! First line contains the height of the font. The !! second line contains the maximum width of any !! character. The third line is the number of !! characters. Any line that starts with a '!!' is a !! comment. !! !! Each letter defined has a header that consists of !! an ascii character on one line and a integer on the !! next line. The character is the label of the !! letter and the integer is width for that letter. !! The '#'s represent "on" LEDs and ' 's (spaces) !! represent "off" LEDs. 9 9 94 A 6 ## ## # # # # #### # # # # B 6 ##### # # # # ##### # # # # ##### C 6 ### # # # # # # # ### D 6 #### # # # # # # # # # # #### E 6 ###### # # ##### # # ###### F 6 ###### # # #### # # # G 7 #### # # # # ### # # # ## ### # H 6 # # # # # # ###### # # # # # # I 3 ### # # # # # ### J 5 # # # # # # # ### K 6 # ## # # # # ### # # # # # ## L 5 # # # # # # ##### M 7 # # ## ## # # # # # # # # # # # # # N 6 # # ## # # # # # # # # ## # # # # O 7 ### # # # # # # # # # # ### P 6 ##### # # # # ##### # # # Q 7 ### # # # # # # # # # # # ### # R 6 ##### # # # # ##### # # # # # # S 6 #### # # # #### # # # #### T 5 ##### # # # # # # U 6 # # # # # # # # # # # # #### V 7 # # # # # # # # # # # # # W 9 # # # # # # # # # # # # # # # ## ## # # X 7 # # # # # # # # # # # # # Y 7 ## ## # # # # # # # # Z 7 ####### # # # # # ####### a 6 ### # #### # # ### # b 5 # # #### # # # # # # #### c 5 ### # # # # # ### d 5 # # #### # # # # # # #### e 5 ### # # ##### # #### f 4 ## # #### # # # # g 5 #### # # # # # # #### # #### h 5 # # # #### # # # # # # i 2 # # # # # # j 2 # # # # # # # # k 4 # # # # # # ## # # # # l 2 # # # # # # # n 5 #### # # # # # # # # m 7 ### ## # # # # # # # # # # # # o 5 ### # # # # # # ### p 5 #### # # # # # # #### # # q 5 #### # # # # # # #### # # r 5 # ## # # # # # s 5 #### # ### # #### t 4 # # #### # # # # u 5 # # # # # # # # #### v 5 # # # # # # # # # w 7 # # # # # # # # # # # # # x 5 # # # # # # # # # y 5 # # # # # # # # # # # z 5 ##### # # # ##### 1 3 # # ### # # # # 2 5 ### # # # # # ## # ##### 3 5 ### # # # ## # # # ### 4 5 # ## # # # # ##### # # 5 5 ##### # #### # # # # ### 6 5 ### # # # #### # # # # ### 7 5 ##### # # # # # # 8 5 ### # # # # ### # # # # ### 9 5 ### # # # # #### # # # ### 0 5 ### # # # # # # # # # # ### ! 1 # # # # # # @ 8 #### # # # ## # # # # # # #### # #### # 5 # # # # ##### # # ##### # # # # $ 5 # #### # # ### # # #### # % 9 ## # # # # ## # # # ## # # # # ## ^ 5 # # # # # & 7 ## # # ## ### # ## # # ### ## * 5 # # # ##### # # # ( 2 # # # # # # # # # ) 2 # # # # # # # # # - 5 ##### _ 6 ###### = 5 ##### ##### + 5 # # ##### # # \ 3 # # # # # # # | 1 # # # # # # # ` 2 # # # ~ 6 ## # # ## [ 3 ### # # # # # # # ### ] 3 ### # # # # # # # ### { 3 # # # # # # # # # } 3 # # # # # # # # # ; 2 # # # # # : 1 # # ' 1 # # # " 5 ## ## # # # # , 2 ## ## # # . 2 ## ## < 5 ## ## # ## ## > 5 ## ## # ## ## / 3 # # # # # # # ? 5 ### # # # # # # LEDSign/fonts/charter.font010064400004260000017000000071160612443713600170320ustar00dbrownstudent00002200000001!! LEDSign font created from charter#gif !! !! following lines should be , , !! only the width is provided below 9 9 94 A 7 # # # # # ### # # # # ## ## B 6 ##### # # #### # # # # # # ##### C 5 ### # # # # # # # ### D 6 ##### # # # # # # # # # # ##### E 5 ##### # # ### # # # # # ##### F 5 ##### # # ### # # # # ## G 7 #### # # # # # ### # # #### H 7 ### ### # # ##### # # # # # # ### ### I 3 ### # # # # # ### J 4 ### # # # # # # ## K 6 ### ## # # # # ### # # # # ### # L 5 ### # # # # # # ##### M 9 ### ### ## ## # # ## # # # # # # # # # # # ### # ### N 7 ## ### ## # ## # # # # # ## # ## ### # O 6 ## # # # # # # # # # # ### P 5 #### # # # # ### # # ### Q 6 ## # # # # # # # # # # ## # ### R 6 ##### # # # # ### # # # # ### # S 4 ### # # ## # # # # # ### T 5 ##### # # # # # # # # U 7 ### ### # # # # # # # # # # ### V 7 ## ## # # # # ## # # # ### # W 9 ## # ## # # # # # # # # # # # # # # # ## ## # # X 6 ## ## # # ## # ## # # ## ## Y 6 ## ## # # # # # # # ### Z 5 ##### # ## ## # # ## # ##### a 5 ### # # ### # ## ## ## b 5 ## # ### # # # # # # ### c 4 ### # # # # ## d 5 ## # ### # # # # # ## # ## e 4 ### #### # # # ## f 4 ## # #### # # # ### g 4 #### # # ### # ## # # ### h 6 ## # # ## ## # # # # # ###### i 3 # ## # # # ### j 2 # ## # # # # # # k 5 ## # # ## # # ### # # ### # l 3 ## # # # # # ### m 9 ## # ## ## ## # # # # # # # ######### n 6 ## ## ## # # # # # ###### o 5 ### # # # # # # ### p 5 ## # ## # # # # # ### # ### q 5 ### # # # # # # ### # ### r 4 #### # # # ### s 3 ### # # # ### t 3 # ### # # # ## u 6 ## ## # # # # # ## ## ## v 5 ## ## # # # # ### # w 8 ## # ## # # # # ## # ### ## # # x 5 ## ## # # # # # ## ## y 5 ## ## # # # # ## # # ## z 4 #### # # # # # #### 1 4 # ### # # # # ### 2 4 ## # # # # # # # #### 3 5 ### # # # ## # # # ### 4 5 # ## # # # # ##### # # 5 4 ### # # ### # ## # ### 6 5 ## # # ## ## # # # # # ### 7 5 ##### # # # # # # # 8 5 ### # # # ## ### # ## # # ### 9 5 ### # # # # # ## ## # # # # 0 5 ### ## ## # # # # # # ## ## ### ! 1 # # # # # # @ 8 #### # ## # # # # # # # # # # # # # # # # # ##### # ## ### # 6 # # # # ###### ## ###### # # # # $ 4 # ### # ## # # ## ## # ## #### # % 8 ### # # # # # # # ### #### # # # # # # # ### ^ 3 # # # & 6 ### # # ## ### # # ## # # ### # * 5 # # # # # # ( 3 # # # # # # # # ) 3 # # # # # # # # - 3 ### _ 5 ##### + 7 # # # ####### # # # = 5 ###### ###### | 1 # # # # # # # # # \ 5 # # # # # # # # ~ 5 # # # ## ` 2 # # { 4 # # # # ## # # # # [ 2 ## # # # # # # ## } 4 # # # # ## # # # # ] 2 ## # # # # # # ## ; 1 # # # # : 1 # # " 3 # # # # # # ' 2 # # # < 6 ## ### # ### ## , 2 # # # > 6 ## ### # ### ## . 1 # ? 4 ### # ## # # # / 5 # # # # # # # # # # # # # ### # # # # ### # L 5 ### # # # # # # ##### M 9 ### ### ## ## # # ## # # # # # # # # # # # ### # ### N 7 ## ### ## # ## # # # # # ## # ## ### # O 6 ## # # # # # # # # # # ### P 5 #### # # # # ### # # ### Q 6 ## # # # # # # # # # # ## # ### R 6 ##### # # # # ### # # # # ### # S 4 ### # # ## # # # # # ### T 5LEDSign/fonts/tiny.font010064400004260000017000000047710612443713600163710ustar00dbrownstudent00002200000001!! The default font file for LED Sign !! First line contains the height of the font. The !! second line contains the maximum width of any !! character. The third line is the number of !! characters. Any line that starts with a '!!' is a !! comment. !! !! Each letter defined has a header that consists of !! an ascii character on one line and a integer on the !! next line. The character is the label of the !! letter and the integer is width for that letter. !! The '#'s represent "on" LEDs and ' 's (spaces) !! represent "off" LEDs. 6 5 94 A 3 # # # ### # # # # B 3 ## # # ## # # ## C 3 ## # # # ## D 4 ## # # # # # # ### E 3 ### # ## # ### F 3 ### # ## # # G 4 ### # # ## # # ## H 3 # # # # ### # # # # I 3 ### # # # ### J 4 # # # # # ## K 4 # # # # ## # # # # L 3 # # # # ### M 5 # # ## ## # # # # # # # N 5 # # ## # # # # # ## # # O 3 # # # # # # # # P 3 ## # # ## # # Q 4 # # # # # # # ### R 3 ## # # ## # # # # S 3 ## # # # ## T 3 ### # # # # U 3 # # # # # # # # ### V 3 # # # # # # # # # W 5 # # # # # # # ## ## # # X 3 # # # # # # # # # Y 3 # # # # # # # Z 3 ### # # # ### a 4 ## ## # # ## # b 3 # # ## # # ## c 3 ## # # ## d 3 # # ## # # ## e 3 # # # ## ### f 3 ## # ## # g 3 # # # ## # ## h 3 # # ## # # i 1 # # # j 2 # # # # # k 3 # # # # ## # # l 1 # # # # # n 3 ## # # # # # # m 5 # # # # # # # # # # # o 3 # # # # # # p 3 ## # # ## # q 4 # # # ## # ## r 3 # # # # # s 2 ## # # ## t 3 # # ### # ## u 3 # # # # # # ### v 3 # # # # # # # w 5 # # # # # # # # # # x 4 # # ## ## # # y 3 # # # # ## # ## z 2 ## # # ## 1 3 ## # # # ### 2 3 ## # # # ### 3 3 ## # # # ## 4 3 # # # # ### # # 5 3 ### # ## # ## 6 3 ## # ## # # # 7 3 ### # # # # 8 3 ### # # ### # # ### 9 3 # # # ## # ## 0 3 # # # ### # # # ! 1 # # # # @ 4 ## # ## # ## # ## # 5 # # ##### # # ##### # # $ 3 # ## ## ## ## # % 5 ## # ## # # # ## # ## ^ 3 # # # & 4 ### # # ## # # ### # * 5 # # # # ##### # # # # ( 2 # # # # # ) 2 # # # # # - 3 ### _ 4 #### = 3 ### ### + 3 # ### # \ 5 # # # # # | 1 # # # # # # ` 2 # # ~ 4 # # # # [ 2 ## # # # ## ] 2 ## # # # ## { 3 # # ## # # } 3 # # ## # # ; 2 # # # : 1 # # ' 1 # # " 5 # # # # , 2 # # # . 2 # < 3 # # # # # > 3 # # # # # / 5 # # # # # ? 3 ## # # # LEDSign/scripts/004075500004260000017000000000000612443707100150445ustar00dbrownstudent00002200000001LEDSign/scripts/Demo.led010064400004260000017000000015440612443714300164170ustar00dbrownstudent00002200000001!! The Demo script Do ScrollDown delay=30 center=true text=\rLED \oS\yi\gg\bn \rV2.7! Sleep delay=2000 Do ScrollLeft delay=30 startspace=20 endspace=20 text=Welcome to the LED Sign WWW site! Repeat times=2 ScrollLeft delay=30 startspace=20 endspace=20 text=The current time is \{tt} on \{mn}-\{dn}-\{yy}. ScrollLeft delay=30 startspace=20 endspace=120 text=Today is \{dd} \{mm} \{dn}, \{YY}. ScrollLeft endspace=20 URL=http://www.sun.com endspace=40 text=Click on this sign now to go to... Appear center=true URL=http://www.sun.com text=Sun MicroSystems Sleep URL=http://www.sun.com delay=500 Blink times=6 delay=500 URL=http://www.sun.com ScrollDown delay=70 center=true text=T\oH\yE \gE\bN\pD Sleep delay=2000 Pixel delay=10 pixels=15 clear=true Sleep delay=1000 !! repeat infinitely Repeat times=-1 LEDSign/scripts/example.led010064400004260000017000000003500612443714300171600ustar00dbrownstudent00002200000001!! An simple example script Do !! This is a comment ScrollUp center=true text=Hello Sleep delay=1000 ScrollLeft delay=30 center=true text=This is a test. Sleep delay=1500 !! repeat infinitely Repeat times=-1