NewsTicker klad v0.1nl

Eisen

Functionaliteit

Uiterlijk

Tekst verschijn en verdwijn effecten

Afbeelding verschijn en verdwijn effecten

Realisering

Formaat van het nieuwsberichten bestand

Alle nieuwsberichten en layout aanwijzingen zijn in een bestand verzameld. Dit formaat lijkt op HTML (JB: en XML).

Alle tekst tussen de commando's <news> en </news> wordt weergegeven, waarbij meervoudige spaties tussen woorden en newlines verwijderd worden. Alle commando's zijn geldig tussen <tag> en </tag>. Met <tag/> is een commando geldig tot het volgende commando met de zelfde naam en er wordt niets afgesloten. Dit is vooral voor <position> nuttig. <position/> kan ook buiten een <news>-blok gebruikt worden. Hiermee wordt de startpositie van het volgende <news>-blok vastgelegd.

Om de tiep snelheid te kunnen verhogen, is het voldoende om alleen de eerste letter van een commando of een parameter te gebruiken (bv. <f n="Arial">).

Tot aan (JB: behalve?) <news> en <ticker> kunnen alle commando's meerdere keren gebruikt (JB: genest?) worden.

Commando's voor het nieuwsbericht:
<font name="Arial" size=12 color=#000000>      : Veranderd het lettertype
<bold>                                         : Vet
<italic>                                       : Cursief
<position x=100 y=200>                         : Positie voor de volgende tekst
<effect class="test">                          : Effect met diverse parameters
<canvas image="achtergrond.gif" color=#000000> : Achtergrond afbeelding of kleur
<link target="http://xyz">                     : Link voor het nieuws

Het gehele bestand kan optioneel worden voorafgegaan door het commando <ticker> en met </ticker> beeindigd worden. Als parameter kan play="ordered" of play="random" gebruikt worden, dit om de volgorde van weergave van de niewsberichten vast te stellen.

Een bericht wordt met het commando <news> gedefinieerd. Wanneer dit commando gelezen wordt, dan worden alle huidige instellingen onthouden en aan het einde van dit <news>-blok weer hersteld. Daardoor kan bijvoorbeeld een <position>-commando op meerdere <news>-blokken van toepassing zijn. Wordt een <news/> gebruikt, dan geldt dit block tot het volgende <news/>, <news>, </ticker> of tot het einde van het bestand.

Overige commando's:
<!-- Kommentaar -->
Speciale tekens:
\>                                              : >
\<                                              : <
\ (Backslash gevolgt door een spatie)	: expliciete spatie
\\                                              : \

Technische omzetting

Intern worden meerdere toestanden van het de Ticker gebruikt:

fontName: String
fontSize: int
fontColor: Color
bold: boolean
italic: boolean
effectClass: String
effectParameter: Hashtable (parameter: String -> value: [Integer | String])
canvasImage: Image
canvasColor: Color
link: URL
position: Point

Deze kunnen door de optionele commando's veranderd worden, waarbij met <tag/> de oude toestand niet onthouden wordt en na </tag> de optionele toestand (voor </news>) van <tag> hersteld wordt.

Tijdens het parsen van het bestand wordt een lijst gemaakt van nieuws-objecten, die afhankelijke van de play-parameter afgespeeld worden. In de pauze tussen de berichten worden voorbereidingen getroffen voor ander nieuws, bijvoorbeeld het laden van afbeeldingen.

Om de grootte van het applet te beperken, wordt geen Lex/Yacc voor het parsen gebruikt, maar een direktere opzet, die met 2 toestanden werkt, waarbij voor elk gelezen commando een bijbehorende actie wordt uitvoerd, bijvoorbeeld <news> bewaart een eventueel vorig nieuws-object en creeert een nieuw nieuws-object.

  1. Toestand:
  2. Toestand:

Beschrijving van versie BETA_1

In de eerste beta versie zijn alle commando's opgenomen en twee effecten. Als eerste het ShowEffekt, dat de tekst direct toont en als als tweede het WordEffekt, dat een nieuwsbericht per woord laat verschijnen, de Canvas-Color verloopt naar Text-Color.

Het huidige klassendiagram:

BNF

NewsFile    ::= <ticker [Parameters] > [CmdList] </ticker> |
                <ticker [Parameters] /> [CmdList] |
                [CmdList]
CmdList     ::= < [Cmd] [Parameters] > [CmdList] </ [Cmd] [Parameters] > |
                < [Cmd] [Parameters] /> [CmdList] |
                <!-- [CommentText] --> |
                leeg
Cmd         ::= news     | n |
                font     | f |
                bold     | b |
                italic   | i |
                position | p |
                effect   | e |
                canvas   | c |
                link
Parameters  ::= [Parameters] [Parameter] |
                leeg
Parameter   ::= [Identifier] = [Value]
Identifier  ::= volgende reguliere expressie: [a-zA-Z_]*[a-zA-Z0-9]*
Value       ::= String |
                Int |
                Hex
String      ::= tekst tussen aanhalingstekens , waar \" voor " staat
Int         ::= volgende reguliere expressie: [0-9]*
Hex         ::= volgende reguliere expressie: #[0-9a-fA-F]*
CommentText ::= willekeurige String, waar niet het teken '>' in voorkomt