toimiv demo, kus saab süntaksiga tutvust teha

kiire algus

SWOGi funktsionaalsed osad

Esialgu on SWOG realiseeritud PERLis, vaata funktsioone, mille abil suheldakse.
Lisaks on loodud ka skript, mille abil saab SWOGile ligi ka ise Perli koodi kirjutamata. Selle kohta saab lugeda siit.

pildi joonistamine

saab swog koodi ja väljastab pildi (png/gif/jpeg) formaadis
SWOG::readObjects(swog script file);
#faili väljastamiseks
SWOG::file_png(filename);
#puhtalt png väljastamiseks (näiteks .cgi skriptis brauserisse pildina)
SWOG::output_raw_png();

punkti järgi lingi ja objekti väljastaja

saab swog koodi ja punkti koordinaadid, väljastab antud punktil olevate objektide info (link ja nimi), tagastatakse ainult neeb objektid, millele on omistatud nimi (rea lõpus :object_name) või link (rea lõpus <link>)
Objektid tagastatakse puu struktuuris, siin on näide perli koodist, vt ka näidet index.cgi failis.
BEGIN{
	SWOG::readObjects(swog script file);
	my $objects=SWOG::detect_click(X,Y);   
	display_object($objects,$X,$Y);
}
#kasutaja funktsioon rekursiivseks objektide puu kuvamiseks
sub display_object
{
        my ($obj,$X,$Y)=(@_);
        foreach(@$obj){
                my ($name,$link,$alt,$tree)=(@$_);
		print $name;
                if (defined($link)){
                        print " <a href=".$link.">".$link."</a>";
                }
                if (defined($alt)){
                        print " <i>".$alt."</i>";
                }
                print "<br>\n";
                if (defined $tree){
                        display_object($tree,$X,$Y);
                }
        }
}


clickmapi väljastaja

saab swog koodi ja väljastab htmlis selle lingitud piirkonnad, vt näiteks
graafi näidet
SWOG::readObjects(swog script file);
print "<map name=\"map\">";
SWOG::output_html();
print "</map>";
print "<img src=picture usemap=map>";

süntaks

SWOGI süntaksiga saab tutvuda siin

Skript SWOG.pl

Skript SWOG.pl on kasutaja jaoks programm, millega saab SWOGi mootorile ligi. Kui käivitate parameetriga --help, näete abiinfot:
$ perl SWOG.pl --help
Command line interface to use SWOG
        --help prints this help message and exits
        --bufGif starts fast mode and creates a GIF image
        --bufGifanim=tempDir starts fast mode and writes a 
                GIF animation frames to the tempDir, use --toGifanim to output
        --bufPng starts fast mode and creates PNG image
        --bufSVGToFile=filename starts fast mode and stores SVG to the file 
        --input=filename SWOG picture description file (when given it 
                is passed to SWOG before executing any other commands)
        --mode=state sets script operation mode, when input
                redirection is used then default value is 'input', 
                without redirected input default value is 'none' 
             Modes are: 
                  none - program uses only command line options and 
                        waits no user interaction
                  input - program reads SWOG commands from std. input, 
                        after Ctrl+D or line starting with #endInput 
                        executes outputting commands given 
                        as command line arguments and exits
                  command - program reads user commands from std. input.
                        commands are:
                           help - help on commands
	--outputHtml prints to std output picture's html clickmap
        --outputRawGif ouputs to std output picture as gif file
        --outputRawGifAnim outputs to std output picture as gif 
		animation
        --outputRawPng outputs to std output picture as png file
        --outputRawSVG outputs to std output picture as SVG file
        --toGif=s outputs to given file as gif image
        --toGifAnim=s outputs to given file as gif animation
        --toPng=s outputs to given file as png image
        --toSVG=s outputs to given gile as SVG image
        --version prints out SWOG version
Oluliseim on mõista võtme --mode poolt määratavat skripti käitumist, sellega saate määrata, millises reziimis programm töötab:
Kui valite none (vaikimisi), siis kõik skripti poolt tehtavaid tegevusi saab valida ainult käsurealt parameetritega määrates, kasutaja sisendit programm ei oota.
Kui valite input, siis programm ootab kasutajalt SWOG pilti kirjeldavate käskude sisestamist ning peale Ctrl+D või #endInput sisestamist väljastatakse pilt käsurea parameetritega määratud viisil.
Kui valite aga command, siis töötab skript käskude sisestamise reziimis, selles olles saate abi käsust help:
$ perl SWOG.pl --mode=command                 
help
commands are:
        debug  prints SWOG objects hashtable to std. output
        detect_click X Y  prints objects containing the given point
        help  prints this help message
        imageDimensions  prints out image width and height
        input  starts reading SWOG picture description, Ctrl+D changes
                back to command mode
        objectInfo obj-name  prints out object properties
        outputHtml  prints out HTML clickmap
        outputRawGif  prints gif to std. output
        outputRawGifAnim [temp-dir]  prints gif animation to std. 
                output
        outputRawPng  prints png image to std. output
        outputRawSVG  prints SVG to std. output
        readObjects  filename reads SWOG picture file
        toGif filename  outputs to gif file
        toGifAnim [temp-dir] filename  outputs animation to gif file
        toPng filename  outputs to png file
        toSVG filename  outputs to SVG file
        version  prints out SWOG version
        quit  exits command mode and processes commands issued by 
                command line arguments
Loodetavasti on skripti abiinfo ammendav, aga igaks juhuks ka üks lihtne näide, kuidas skripti kasutada. Käivitame skripti käskude sisestamise reziimis ning loeme algselt sisse skripti simple.swog:
perl SWOG.pl --input=simple.swog --mode=command
Väljastame pildi faili simple.png:
toPng simple
Järgnevalt lähme SWOG koodi sisestamise reziimi ja lisame pildile teksti:
input
string 10,10 {naerata!} 
Lõpetame pildi sisestamise reziimi, selleks sisestame
#endInput
(soovi korral oleks võinud kasutada ka klahvikombinatsiooni Ctrl+D) ning väljastame pildi taas faili simple.png
toPng simple
Ja lõpetame skripti töö (võiks ka vajutada Ctrl+D):
quit

Seadete fail SWOGConfig.txt

Esiteks otsitakse faili jooksvast kataloogist, kui seal ei ole, siis samast kataloogist, kus paikneb SWOG.pm. Selles failis määratakse SWOG tekstilise pildi kirjelduse ligipääs failidele.
Faili formaat:
Ridade kaupa on määratud ligipääs käsu argumendis antud failidele.
Rea formaat:
käsk1;käsk1;..käskN lubatudNimi1;lubatudNimi2;...

käskudeks on faile kasutavad SWOG käsud: font, toPng, toGif, toSVG, toGifAnim, toHtml, image

lubatudNimiN määrab lubatud failinime kuju. Nimes võib kasutada ka erisümboleid:
Sümbol Tähendus
+ vähemalt üks sümbolitest [a-zA-Z]
* null või mitu sümbolit hulgast [a-zA-Z]
? täpselt üks sümbol hulgast [a-zA-Z]
// Kataloog, kus paikneb SWOG.pm. Näiteks //fonts/Arial.ttf võidakse asendada /group/software/SWOG/bin/fonts kataloogiks kataloogiks.
Kui lubatudNimi1 sisaldab sümbolit '/', siis SWOG käsu argumendiks antud failinimedele, mis ei sisalda sümbolit '/' vastavad failid kujul:
(lubatudNimi1 kuni viimase /-ni)/(argumendiks antud failinimi).
Seda küll ainult juhul, kui antud failinimi ei vasta mõnele teisele lubatud nimele. Näiteks kui seadefailis on
font fonts/*.TTF;courier.TTF
ning SWOG koodis
font {ARIAL.TTF} :arial
font {courier.TTF} :courier
Siis kasutatakse faile fonts/ARIAL.TTF ning courier.TTF