Program odczytuje dane z pliku tekstowego i wyświetla je, płynnie przesuwając po ekranie z określoną prędkością. Za pomocą licznych parametrów można wpływać na wygląd tekstu i jego zachowanie.
Program odczytuje wskazany plik i przechowuje go w pamięci podczas przetwarzania. Po zakończeniu odczytuje plik od nowa, więc może to być w kółko ten sam tekst lub można go zmieniać, aktualizując plik przy pomocy innego programu. Jeżeli brak pliku z danymi, program wyświetla tekst "awaryjny", który można zdefiniować w wierszu poleceń, użytym do uruchomienia programu.
W systemie Vista lub nowszym można ponadto sprawić, aby tło i/lub litery były całkowicie lub częściowo przezroczyste.
Wszelkie efekty wizualne, włącznie z jednostajnym ruchem tekstu, są zrealizowane poprzez system dołączanych funkcji o bardzo prostej budowie, dzięki czemu dodawanie "wodotrysków" jest bardzo łatwe. Przykładowo, za jednostajne przesuwanie się tekstu odpowiada funkcja:
bool UPD_Move (OBJECT2D* obj, float advance)
{
obj->SetPos(obj->GetPos() + obj->GetSpeed() * advance);
return obj->InBox();
}
Otrzymuje ona wskaźnik do obiektu, którym ma sterować, oraz czas, jaki upłynął od poprzedniego wywołania. Zmienia położenie obiektu na ekranie stosownie do zawartej w nim informacji o szybkości. Kończąc zwraca wartość true, jeżeli obiekt ma pozostać w użyciu, a false jeżeli należy go unicestwić. W tym przypadku werdykt pochodzi z funkcji InBox(), która weryfikuje, czy obiekt mieści się w granicach widzialnego obszaru.
Mając dostęp do wszystkich atrybutów obiektu, np. do prędkości obrotowej i aktualnego kąta obrotu, możemy łatwo wprawić obiekt w ruch wirowy:
bool UPD_Spin (OBJECT2D* obj, float advance)
{
obj->SetAngle(obj->GetAngle() + obj->GetSpin() * advance);
return true;
}
Funkcje można składać bez ograniczeń, tzn. pojedynczym obiektem może jednocześnie rządzić dowolnie wiele funkcji.
Program został napisany przy użyciu Visual C++.
|
c wiersza poleceń, t w tekście, - ulotne
typ | składnia | opis |
c | window=<x>,<y>,<szerokość>,<wysokość> | współrzędne okna, domyślnie na środku ekranu, ¼ powierzchni | c | expire=<liczba> | po tylu sekundach program samoczynnie kończy pracę, domyślnie 0 = nigdy | c | id=<liczba> | ID okienka, domyślnie 1 | c | font=<krój>,<rozmiar>,b,i | parametry tekstu: b = pogrubienie, i = pochylenie, np. font=Times+New+Roman,120 (plusy zamiast odstępów) | c t | color=<kolor> | kolor znaków, można podać jako liczbę szesnastkową lub składowe [a,]r,g,b | c t | bgcolor=<kolor> | kolor tła, można podać jako liczbę szesnastkową lub składowe [a,]r,g,b | c t | anycolor | program wybiera losowo kolor znaków | c t | anybgcolor | program wybiera losowo kolor tła | c t | anycolors | program wybiera losowo kolor tła i znaków | c | speed=<liczba> | prędkość przesuwania tekstu, dodatnie w prawo, ujemne w lewo | c | source=<ścieżka pliku> | wskazuje źródło danych, domyślnie plik content.txt | c | imgdir=<ścieżka folderu> | wskazuje folder z plikami obrazów, domyślnie image | c | imgfit | skaluje obrazki do wysokości tekstu | c | default=<tekst+bez+odstępów> | tekst wyświetlany domyślnie gdy brak pliku źródłowego | c t | shadow=<przesunięcie>,<przezroczystość> | parametry cienia rzucanego przez tekst, domyślnie 2,204 | t- | blink | pomruguje następnym elementem | t- | spin=<liczba> | w stopniech na jednostkę czasu, obraca następny element | t- | jumpy=<liczba> | amplituda w pikselach, element trzęsie się nerwowo | c t- | grow=<liczba> | w procentach na kwant czasu, zmienia wielkość elementu | c | bottom-band | ustawia okienko w postaci paska na dole ekranu | c | border | włącza obramowanie okienka (domyślne dla okienek innych niż bottom-band) | c | noborder | wyłącza obramowanie okna (domyślne dla bottom-band) | c | ontop | utrzymuje okienko zawsze na wierzchu | c | glass | w systemie Windows Vista lub nowszym włącza dostępność efektu przezroczystości (zależnego od koloru tła) |
|
- Plik źródłowy, podobnie jak wiersz poleceń, jest rozbierany na pojedyncze elementy rozdzielone spacjami lub końcami wiersza. Wewnątrz takiego elementu nie może być spacji, a tam, gdzie są niezbędne (np. w nazwie kroju czcionki), zastępujemy je znakiem „+”. W opcji default w tekście nie można ponadto użyć znaku „=”, który w tym przypadku zastępujemy znakiem „~”.
- Opcja ulotna to taka, której działanie dotyczy tylko jednego elementu, a zmieniony parametr powraca samoczynnie do domyślnej wartości.
- Przy określeniu czcionki kolejność parametrów nie ma znaczenia i można pomijać dowolne z nich, przy czym dla kroju i rozmiaru domyślna jest dotychczasowa wartość, a dla pogrubienia i pochylenia – ich brak. np. font=b,200 to styl pogrubiony prosty o wysokości 200 pikseli.
Kolor liter definiowany poleceniem color wewnątrz tekstu działa aż do następnego użycia tego polecenia, przy czym postać color= powoduje powrót do domyślnych ustawień.
- Jeśli przy określeniu koloru zostaną użyte składowe r, g, b albo 6-cyfrowa liczba szesnastkowa, wówczas program uzupełnia taką definicję o bajt przezroczystości równy 255 (całkowicie nieprzezroczyste). Aby ustalić inny stopień przezroczystości, należy podać kolor czterema składowymi: a, r, g, b lub 8-cyfrową liczbą szesnastkową.
- Pełna przezroczystość tła wymaga podania koloru 00000000 lub 0,0,0,0. Analogicznie wymusza się przezroczystość tekstu, przy czym pod przezroczystym tekstem nie ma tła, co daje możliwość interesujących efektów, np. literowych dziur w litym tle.
- Program jest wyposażony w wewnętrzny „pluginowy” system efektów, a blink, spin, jumpy i grow są tylko trywialnymi przykładami. Dodanie do wiersza poleceń opcji grow=5 powoduje powiększanie tekstu o 5% na jednostkę czasu, a ponieważ odstępy w tekście się nie zmieniają, powstaje interesująca kompozycja (choć mało praktyczna z uwagi na czytelność). Bardzo łatwo można dodawać nowe efekty.
- Tekst jest przechowywany w pamięci programu, a czcionka i obrazy – w pamięci karty graficznej. Dlatego należy unikać przesadnie dużych rozmiarów liter i ilustracji w stosunku do posiadanej pamięci karty graficznej, bo jej przepełnienie powoduje problemy wydajnościowe (zrywanie płynności wyświetlania).
|