TickerTape ist ein Java-Applet, das eine elektronische
Laufschrift mit LED-Matrix simuliert. Es dient zur Animation
von HTML-Seiten. (Download hier)
History und Danksagung
Die Laufschrift-Anwendung ist wohl so etwas wie das “Hello
World!”-Programm unter den Java-Applets. Im Internet sind
viele Applets frei verfügbar, teilweise mit Sourcecode. Viele
dieser freeware-Applets basieren auf dem Ur-Applets
“TickerTape” aus dem Jahre 1996 von John Criswick.
Seine Programmsource bildeten auch den Ausgangspunkt für
meine eigene Arbeit. Ich zitiere als hommage den Kommentar
aus seinem “TickerTape.java”:
/* A Ticker Tape based on Light Emitting Diode (LED) - objects
* like the kind of advertising ticker tape you see in some retail
* stores these days.
* Currently only accepts text input from an HTML <param string. To
* specify the text to display you will need a line like:
* <param name=text value="The Quick Brown Fox...">
* inside your applet tag.
* Speed can also be set but seems to work best with the default
* setting of 100 milliSeconds update rate. Param tag should look like:
* <param name=speed value=100>
* To do:
* - other features of real life LED ticker tapes like
* blinking non-scrolling text, ability to use different
* colour LEDs in the same text etc. etc.
* Coder: John Criswick, Ottawa, {criswick@conveyor.com"}
* * Version 1.0b2a Jan.28.96
*/
|
|
Features:
Mein “TickerTape” versucht möglichst kompatibel zu John Criswicks Applet und dessen
Nachfolgern zu bleiben, bietet aber folgende Erweiterungen:
-
Es können beliebig lange Texte dargestellt werden. Criswicks TickerTape und alle
Abwandlungen können nur Text anzeigen, der 4096 Pixel lang ist (wegen
Einschränkungen der Java-Klasse “Image”).
-
Textende und Textanfang können beim der zyklischen Anzeige direkt aufeinander
folgen (“short cycle”). Ist der anzuzeigende Text kürzer als das Display, erscheint der
Text sogar gleichzeitig mehrfach auf dem Display.
-
Der Text kann mehrfarbig oder blinkend sein, die Zeichenattribute werden durch die
gängigen HTML-Tags gesetzt.
-
Verschiedene Zeichensätze können in einer XML-Datei definiert werden, und der Text
kann alle definierten Fonts verwenden.
-
Im Text können verschiedene URLs definiert werden. Durch Klick in den laufenden
Text wird die URL aufgerufen.
-
Die Scrollposition kann an die Systemuhrzeit gekoppelt werden, dann wird bei einem
Refresh der HTML-Seite das Schriftband nicht zurückgesetzt.
Das Ganze kann dann so aussehen:
Installation
Als einzige Datei ist “tickertape.jar” nötig. Der Web-Browser muss das Java-Plugin aus dem
SDK 1.3 oder höher installiert haben. Die Einbettung in die Webseite kann mit dem
<APPLET>-Tag erfolgen. Das Beispiel oben wird durch folgenden Code in der HTML-Seite
aufgerufen:
<APPLET ID="DemoTickerTape" NAME="HomeTickerTape"
CODE=" TickerTapeApplet.class" CODEBASE="../../../"
ARCHIVE=" tickertape.jar" HEIGHT=48 WIDTH=594 ALT="">
<PARAM NAME="speed" VALUE="25">
<PARAM NAME="scrollfactor" VALUE="1">
<PARAM NAME="ledcolor" VALUE="red">
<PARAM NAME="backcolor" VALUE="black">
<PARAM NAME="framecolor" VALUE="lightgray">
<PARAM NAME="ledoffcolor" VALUE="darkgray">
<PARAM NAME="framethick" VALUE="4">
<PARAM NAME="ledsize" VALUE="2">
<PARAM NAME="ledtype" VALUE="0">
<PARAM NAME="ledspacing" VALUE="1">
<PARAM NAME="shortcycle" VALUE="1">
<PARAM NAME="file" VALUE="../../../tickertape_demo.txt">
<PARAM NAME="runalways" VALUE="1">
</APPLET>
|
|
Der angezeigte Text steht hier in der Datei “tickertape_demo.txt” und sieht so aus:
<font color="white" face="Proportional">
--- Colors:
<font color="#FF6666"><blink color="#993333">R</blink></font>
<font color="#FFFF66"><blink color="#999933">a</blink></font>
<font color="#66FF66"><blink color="#339933">i</blink></font>
<font color="#66FFFF"><blink color="#339999">n</blink></font>
<font color="#6699FF"><blink color="#336699">b</blink></font>
<font color="#CC66FF"><blink color="#993399">o</blink></font>
<font color="#FF66CC"><blink color="#993399">w</blink></font>
---
Different fonts:
"<font color="yellow" face="Default">Default</font>",
"<font color="yellow"
face="Proportional">Proportional</font>",
"<font color="yellow"
face="ALPHALED_5*5">ALPHALED_5*5</font>",
"<font color="yellow"
face="ALPHALED_5*7">Alphaled_5*7</font>",
"<font color="yellow"
face="ALPHALED_FANCY">Alphaled_Fancy</font>"
--- URLs:
Click <a href="http://www.j-hoppe.de"><font color="lime">here and go home!
</font>
|
|
Übrigens: die erste Anweisung “<font color="white"...> “ sorgt für weissen Text und
übersteuert den Applet-Parameter “<PARAM NAME="ledcolor" VALUE="red">”.
Parameter
Das Applet akzeptiert folgende Parameter (sorry, still in english):
Parameter
|
Typ
|
Bedeutung
|
Default
|
width
|
integer
|
Width of display on screen in pixels. Sets also the
amount of visible LED matrix rows.
|
80
|
height
|
integer
|
Height of display on screen in pixels. Should be
greater than "text_height * (ledsize + ledspacing)
+ ledspacing". “text_heigth” is the required
amount of LEDs, it is automatically calculated from the
character heigths used the display text.
|
39
|
Note: frame is drawn with width and height,
interior is filled with
backcolor, LED matrix is centered inside frame.
|
speed
|
integer
|
Time between two display updates in milli seconds.
|
100
|
scrollfactor
|
integer
|
Horizontal movement per display update in LED columns.
|
2
|
shortcycle
|
boolean: 0 or 1
|
Controls amount of separator space show when display
text rolls around: 0 = end of text and begin of text
are not visible at the same time. 1 = end of text
follows directly after begin.
|
0
|
runalways
|
boolean: 0 or 1.
|
If “1”, the tickertape seems to "run in
background" even if not active. On reset or start,
it begins with a scroll position depending on system
time.
|
0
|
ledsize
|
integer
|
Diameter of LED symbols in pixels.
|
2
|
ledspacing
|
integer
|
Space between LED symbols in pixels.
|
1
|
ledtype
|
0 or 1
|
Shape of LED symbols. 0 = square, 1 = circular.
|
0
|
backcolor backcolour
|
color string
|
Color for background of LED matrix
|
“black”
|
ledcolor ledcolour
|
color string
|
Default color of shining LED's.
|
“green”
|
ledoffcolor ledoffcolour
|
color string
|
Color for dark LED’s.
|
backcolor
|
fontlist
|
String
|
Load XML-file with definitions of pixel fonts. These
can be used in the <FONT>-Tag.
|
none, "fonts.xml" from .jar-archive is used
|
font
|
String
|
Choose a font from "fontlist" as default
font.
|
build-in default font “Default”
|
framethick
|
integer
|
Thickness of frame around LED matrix in pixels.
|
1
|
framecolor framecolour
|
color string
|
color for frame around LED matrix
|
“green”
|
href
|
URL string
|
Default URL for click into LED display. Can be
overriden by marking text with the
"<a>"-tag
|
none
|
text
|
String
|
The text to be displayed. May be of *ANY* size. Is
interpeted as HTML code.:
|
“-----”
|
file
|
Filename string
|
Name of file containing display text. Must be given
relative to position of calling HTML-page.
|
none
|
Note: "text" overrides "file".
|
HTML-Tags im Displaytext
Der anzuzeigende Text wird nach dem HTML-Standard ausgewertet. Dies heisst zunächst,
dass Zeilenumbrüche keine Bedeutung haben und folgende Zeichen in der “&xxx;”-Notation
geschrieben werden müssen:
Zeichen
|
Character entity
|
mehrfache Leerzeichen
|
|
“
|
"
|
&
|
&
|
<
|
<
|
>
|
>
|
Zeichenformatierungen und Sonderfunktionen werden durch besondere Tags angegeben.
TickerTape versteht folgende Tags:
Tag
|
Parameter
|
Bedeutung
|
<blink>
|
color=color_code
|
Der zwischen <blink> und </blink>
eingeschlossene Text wird blinkend angezeigt. Mit
“color=” kann die HTML-Zeichenfarbe für die
Blinkphase angegeben werden, ansonsten wird mit
“ledoffcolor” geblinkt.
|
<font>
|
color=color_code
|
Setzt die Zeichenfarbe für den Text zwischen
<font> und </font>. Default: Parameter
“ledcolor”
|
<font>
|
face=font_name
|
Setzt den Zeichensatz für den Text zwischen
<font> und </font>. “font_name” muss im
verwendeten Font-Definitionsdatei definiert wurden
sein (siehe Parameter “fontlist” und den Absatz über
die Fontbeschreibung). Default: “Default”.
|
<a>
|
href=URL
|
Setzt die URL für den Text zwischen <a> und
</a>. Bei Klick auf diesen Text wird die URL
aufgerufen ... da sich der Text bewegt, sollte die
Klickzone nicht zu klein sein. Wenn die Maus in das
Display bewegt wird, wird die URL in der Statuszeile
des Webbrowsers angezeigt. Default: Parameter “href”.
|
Color strings
Farben können im HTML-Text und in den Applet-Parametern generell in der “#rrggbb”
Notation oder als HTML-Farbname angegeben werden. Die erlaubten Namen sind:
"black”, "gray", "maroon", "red", "green", "lime", "olive", "yellow", "navy", "blue", "purple",
"fuchsia", "teal", "aqua", "silver", "white".
Wegen der Kompatibilität zu anderen Laufschrift-Applets können für die Applet-Parameter
zusätzlich folgende Java-Farbnamen angegeben werden:
“orange”, “pink”, “lightgray”, “darkgray”, “cyan”, magenta”.
Die Fontbeschreibung
Ein Standardzeichensatz mit dem Namen “Default” ist in TickerTape direkt “eingebaut”.
Zusätzliche Zeichensätze werden beim Start des Applets aus der Datei “fonts.xml” gelesen,
die sich im Archiv “tickertape.jar” befindet.
Anstelle von “fonts.xml” kann durch Angabe des Parameters ”fontlist” eine andere
Zeichensatzdatei geladen werden, der Dateiname wird durch eine normale URL gebildet.
Diese Methode hat den Nachteil, dass die relative grosse Font-Datei mit auf den Client
geladen werden muss (ca. 50 KB pro Font). Als Alternative zu ”fontlist” sollte die im Archiv
“tickertape.jar” fest eingebaute Fontdatei geändert werden, denn diese ist wie alle Dateien im
Archiv komprimiert. Falls eigene Fonts definiert werden sollen, muss diese Datei im Archiv
ersetzt werden.
Es sind folgende Fonts definiert:
Name
|
definiert in
|
Matrix
|
Info
|
Default
|
eingebaut
|
8 * 11
|
Klassische Zeichendarstellung mit Unterlängen, feste
Zeichenbreite, ISO-Latin-1
|
Proportional
|
fonts.xml
|
8 * 11
|
Wie “Default”, aber individuelle Zeichenbreiten.
|
ALPHALED_5*5
|
fonts.xml
|
5 * 5
|
Miniatur-Versalien, nur ASCII, nur Grossbuchstaben,
wie im Alpha 220C-Display.
|
ALPHALED_5*7
|
fonts.xml
|
5 * 7
|
Angepasster Standardzeichensatz für das Alpha
220C-Display. Keine Unterlängen, proportional.
Eingeschränkter ISO-Latin-1 Zeichensatz.
|
ALPHALED_FANCY
|
fonts.xml
|
8 * 7
|
Effekt-Zeichensatz aus dem Alpha 220C. Keine
Unterlängen, proportional. Eingeschränkter
ISO-Latin-1 Zeichensatz.
|
Die Fonts werden in XML definiert, wobei die Definition optisch kontrolliert werden kann ...
es müssen keine kryptischen Hexadezimal-Zahlen angegeben werden. Das Beispiel zeigt die
Definition des kleinen “a” im Font “Proportional” in der mitgelieferten Datei “fonts.xml” und
sagt wohl mehr als alle Worte:
<fontlist>
<font name="Proportional" pixelrows="11" baserow="8" separatorcols="0">
.... Zeichendefinitionen ....
<char ansi="97" pixelcolumns="6"><!-- a -->
<pixelrow rownum="00"> ------ </pixelrow>
<pixelrow rownum="01"> ------ </pixelrow>
<pixelrow rownum="02"> ------ </pixelrow>
<pixelrow rownum="03"> ------ </pixelrow>
<pixelrow rownum="04"> -XX--- </pixelrow>
<pixelrow rownum="05"> ---X-- </pixelrow>
<pixelrow rownum="06"> -XXX-- </pixelrow>
<pixelrow rownum="07"> X--X-- </pixelrow>
<pixelrow rownum="08"> -XX-X- </pixelrow>
<pixelrow rownum="09"> ------ </pixelrow>
<pixelrow rownum="10"> ------ </pixelrow>
</char>
.... Zeichendefinitionen ....
</font>
<font ...>
..... mehr Fontdefinitionen ...
</font>
</fontlist>
|
|
Zum Aufbau der XML-Datei:
-
“font/baserow” bezeichnet die Basislinie des Fonts, sie gilt für alle Zeichen eines Fonts.
Die einzelnen Zeichen eines Textes werden vertikal mit der Pixelzeile “<pixelrow
rownum=baserow>” aufeinander ausgerichtet.
Erst dadurch ergibt sich die Höhe der Pixelmatrix, die das Applet anzeigt.
-
“font/separators” gibt an, wieviele leere Pixelspalten zwischen zwei aufeinander
folgenden Zeichen eingefügt werden sollen. Der leere Trennraum kann aber auch als
Teil jedes einzelnen Zeichens definiert werden (wie im Beispiel).
-
“char/ansi” gibt die dezimale Nummer des Zeichens in der Codepage an.
-
“char/pixelrow” gibt die vertikale Lage der definierten Pixelzeile an. Die oberste Zeile
hat die Position “0”, die unterste die Position “font/pixelrows”-1. Zeilen ohne gesetzte
Pixel brauchen nicht angegeben werden, dienen aber der Übersichtlichkeit.
-
Im “char/pixelrow”-Tag dürfen nur “-” und “X” verwendet werden. Spaces links und
rechts werden ignoriert.
|