Geokuk - tvorba vlastních ikon: Porovnání verzí

Z GeoWiki
Přejít na: navigace, hledání
(Smazání obsahu, protože neumím smazat stránku. Přesouvá se na github.)
 
(Nejsou zobrazeny 4 mezilehlé verze od 3 uživatelů.)
Řádka 1: Řádka 1:
== Ikony v Geokuku ==
 
Program geokuk je vcelku univerzální program pro zobrazování bodů nad mapou. Zobrazované body mohou být libovolné, jejich počet není nijak omezen a uživatel má tedy možnost doplnit zobrazení vlastních bodů a přizpůsobit si již připravené zobrazení. Každý bod může být zobrazen jako ikona složená z různých vrstev, které se vzájemně překrývají a tvoří tak výsledný obraz ikony.
 
  
Program má trochu zvláštní terminologii, ale v základu je pochopitelná. Základem je '''kešoid''', což je jakási zobecněná keš. Zobecněná proto, že se vůbec nemusí jednat o kěš jako takovou, ale v podstatě o jakýsi souhrnný typ bodu (Autor Geoget v poslední době začal říkat kešoidu "bod"). Kešoid má jméno a další atributy (nazývané geny) v závislosti na typu kešoidu. Kešoid sáam o sobě nemá souřadnice, ale obsahuje jeden nebo více waypointů, ty už souřadnice povinně mají. Jeden z waypointů kešoidu se považuje waypoint hlavní, takže lze říci, že pozice hlavního waypointu je pozicí kešoidu.
 
 
Rozdílné pojetí waypointu od geocachingu je to, že i souřadnice tradiční keše nebo úvodní souřadnice mysterky se považují za waypoint.
 
 
Geokuk rozlišuje čtyři typy kešoidů, každý trochu s jinými vlastnostmi:
 
 
* kešoid '''keš''' s typy tradiční, multy, mystery, ..., zahrunuje vlastní waypoint keše a také dodatečné waypointy parkovistě, finalový bod, stage of multicache, ...
 
* kešoid '''waymark''' může obsahovat dynamicky se měnící (rozšiřující se) typy, namátkou fontány, triangulační body, porály, sakrální stavby, ... Waymarky mají obvykle jen jeden waypoint, ale určitě půjde v Gogetu přiřadit waypointy další.
 
* kešoid '''Český geodetický bod''' obsahuje například typy Trigonometrický bod, Zhušťovací bod, Bod základního tíhového pole, Bod ZGS (základní geodynamické síť) a Základní nivelační bod. Zahrnuje centrální waypoint geodetického bodu a také přidružené body k danému centrálnímu bodu.
 
* kešoid '''obecný waypoint''' kam padne vše, co se při načítání nepřiřadí do některé z předchozích kategorií, má jen jeden waypoint
 
=== Sada ===
 
Sada obsahuje množinu ikon, které mohou být v programu zobrazovány zároveň. Každá sada má své jméno, implicitní sada se jmenuje '''Standard'''. Uživatelé si mohu vytvářet vlastní sady nebo mohu dopkňovat, měnit, či odstraňovat ikony ve standardní sadě, aniž by přitom museli zasahovat do programu. Seznam sad najdeme v menu ''Ikony'' a můžeme sady přepínat. V daném okamžiku je aktivní právě jedna sada. Můžeme mít v třeba ve standardní sadě například ikony dle vzoru GS a v druhé třeba špendlíky. A do obou sad můžeme doplnit zastávky MHD se svými ikonami. Každá sada může mít přiřazenu ikonu sady, ta se objeví takké v menu, standardní sada má znak Groundspeaku, protože ikony v ní jsou z gc.com přejaté.
 
 
== Adresářová struktura ==
 
Program pro kreslení ikon používá adresářovou strukturu, která začíná v místě zadaném v menu '''Soubor / Umístění souborů'''
 
v položkách
 
 
* Složka s mými vlastními rozšiřujícími obrázky
 
* Složka s rozšiřujícími obrázky jiných geokolegů
 
* A také složka zabudovaná uvnitř programu geokuk
 
 
K tomu, aby byly příslušné funkce opravdu využity, je nutné u každé položky ještě zaškrtout volbu '''Aktivní'''. Zde zadaným
 
bodům říkejme '''Kořen''', takže ''kořeny mohou být až tři''. Adresáře v těchto třech kořenech se však logicky sloučí do jednoho. Pokud je stejný soubor ve více kořenech, bere se v úvahu ten specifičtější.
 
 
Lze si to představit tak, jakobychom přes sebe nakopírovali složky a soubory s geogetu, přes to překopírovali rozšiřující obrázky a přes to vlastní obrázky s tím, že bychom stejnojmenné soubory nechali přepsat. My však nic kopírovat nebudeme, Geokuk se bude chovat, jako by se už stalo.
 
 
V každém z kořenů je vždy adresář '''map''' (nekdy třeba budou i další), který dál obsahuje pro každou sadu ikon další adresář. Budeme-li vyvíjet vlastní sadu, nazvěme pro další příklady adresář s naší sadou '''Vyvoj''', jméno adresáře je jménem sady se pak zobrazí v menu ''Ikony''.
 
 
+ kořen
 
    + map
 
      + Vyvoj
 
          + skloX
 
          + skloY
 
          - skla.txt obsahuje ... seznam podadresaru sklo*, které definují překrývající se vrstvy pro
 
                                  vlastní vykreslování ikon
 
          - groups.properties ... obsahuje definici typ!=texovy popis. (pocet pismen typu je dulezity?)
 
          - iconOfSada.png (???k cemu???)
 
      + Dalsi sada
 
 
=== Adresáře s definicí skla ===
 
Představme si, že všechny vrstvy obrázků ikon nejdříve nalepíme na několik skel a nakonec ta skla naskládáme přes sebe. Každému sklu odpovídá jeden adresář se jménem skla. Pořadí skel určuje soubor '''skla.txt''' nacházející se přímo v adresáři sady vedle adresářů skel. A jak z příkladu dole vidíme, můžeme jednou nakreslené sklo použít i vícekrát. Suffixe za jménem sklad v soubru je z důvodů optimalizace. Jsou tyto možnosti:
 
;VSE: vykreslit na sklo všechny waypointy
 
;MYS: vykreslit na sklo jen waypointy kešoidu, na jehož aspoň jednom waypontu je myš
 
 
Ve standardní sadě má soubor tento obsah:
 
skloNormal.VSE
 
skloZvyrazneni.MYS
 
skloNormal.MYS
 
 
Na nejspodnějším skle jsou vykresleny všehny obrázky. Pak se vykreslí žluté kruhy na mešoidu, nad nimž je myš. Tím se však ikonky waypointů překryjí. Musíme je tedy vykreslit znovu, ale tentokrát jen ty, nad kterými je myš, aby to netrvalo tak dlouho.
 
 
=== Vrstvy ===
 
Každý adresář s definicí skla obsahuje další podadresáře vrstev. Z každé vrstvy se na sklo vykresluje právě jeden obrázekreprezentovaným jedním souborem. Vrstvy se zpracovávají dle abecedního pořadí a obrázky na sklo postupně vykreslují a překrývají. Vždy se vykreslí všechny vrstvy jednoho waypointu, pak všechny vrstvy dalšího waypointu atd. A to je právě rozdíl vrstev od skel. Pokud jsou tedy waypinty blízko sebe, tak ten později vykreslený waypoint částečně překrývá waypoint vykreslený dříve. Jméno vrstvy může být libovolné, je ale vhodné, začínalo číslicí, řazení je pak jasné na první pohled.
 
 
=== Soubory s obrázky ===
 
Uvnitř adresáře jsou soubory s obrázky. Obrázky mou být jako
 
* Skutečně obrázky v různých formátech (JPG, PNG, GIF, BMP) s podporou průhlednosti.
 
* Soubory s příponou '''properties'', který popisuje algoritmus, jakým způsobem se obrázek nakreslí nebo jak se modifikuje obrázek již vykreslený be spodnějších vrstvách.
 
 
==== Obrázky definované v properties ====
 
 
Jsou to (skoro) obyčejné textové soubory, na každém řádku je jedna definice vlastnosti. Vlastnost, která nemá být použita není v souboru vůbec definována.
 
 
width=NN ...... šířka ikony
 
height=NN ..... výška ikony
 
class=cz.geokuk.api.mapicon.XXXXX ... tvar vykreslení plochy s ikonou
 
                            XXXXX = OvalRdaver (kružnice/elipsa)
 
                                    RoundRectDrawer (čtverec/obdélník se zaoblenými rohy)
 
                                    StdArchivDrawer (???)
 
                                    GrayDrawer (???)
 
                                    (nějaké další???)
 
fill=RRR,GGG,BBB ... RGB složky barvy pro vyplnění vykreslené plochy,
 
                      složky jsou v dekadickém tvaru oddělené čárkou
 
lineWidth=NN ....... šířka čáry ohraničující vykreslenou plochu (0=bez čáry)
 
 
Class je Java třída, která provádí vykreslování. Musí implementovat dané rozhraní, musíte implementovat settery pro nastavení propert ze souboru a metodu, která provede kreslení do již vykreslené ikony z dřívějších vrstev. Pokud umíte programovat v Javě, můžete si vytvořit vlastní vykreslovače, tře ba změnšovat ikony pro micra a zvětšovat pro large. Pouze musíte vědět jak se to dělá, pokud o to bude mít někdo zájem, nechť napíše autorovi a ten dokumentaci vyplodí.
 
 
Soubory s ikonami mají pevně daný formát jména (před příponou). Jeho vysvětlení je dál v textu.
 
 
== Princip zobrazování ikon ==
 
Je vhodné, aby horní vrstvy byly v takovém formátu, který podporuje průhlednost, aby v některých místech mohly být vidět vrstvy spodní. Autor opět zavedl svou vlastní terminologii, kde vrstvě s nějakou sledovanou vlastností přisoudil jméno '''Gen''' (v některém dialogu je pro zmatení použil pojem '''Fenotyp'''???) a hodnotám, které může vrstva (vlastnost) nabývat dal jméno '''Alela'''. Příklad:
 
 
* gen '''velikost keše''' má alely mikro, small, regular, ...
 
* gen '''typ waypointu''' může mít alely keš, waymark, ...
 
 
Seznam genů (tedy sledovaných vlastností a tedy i vrstev) je ohraničený a každému genu je přiřazena konkrétní vrstva daného čísla. Číslo zároveň udává počet znaků, které musí mít pojmenování všech alel tohoto genu. Skládáním jmena alel za sebe pak vzniká cesta a jméno souboru, z nějž se načítají ikony.
 
 
Terminologi Gen a Alela byla zvolena ze dvou důvodů:
 
# Autor se v program už ztrácel v pojmech jako vlastnost, property, atribut, které mohu znamenat plno jiných věcí.
 
# Paralela s genetikou zde je. Waypoint jako takový má nějaké geny (velikost, typ, terén ...) a u každého jedince se gen vyskytuje v nějaké alele. Množina všech
 
alel určitého jedince pak tvoří fenotyp.
 
 
Správný seznam genů a jejich alel najdete v menu ''Ikony/Ladění ikon"''. Zde uvedený seznam berte jako orientační. Pokud stisknete checkbox "Zobrazit vše", uvidíte přehled všech genů a alel, pro které je možné připravit ikony. Poku zaškrtunt checkbox není, vidíten jen ty, ke kterým ikony máte.
 
: <table border=1>
 
<tr><th>Gen</th><th>Číslo vrstvy</th><th>Možné alely</th><th>Ikonový kód</th></tr>
 
<tr><th>Typ waypointu</th><td>0</td><td>Alely nejsou pevně stanoveny</td></tr>
 
<tr><th rowspan=3>Postavení</th><td rowspan=3>1</td><td>Nevykresluje se.</td><td>0</td></tr>
 
<tr><td>Hlavní bod kešoidu - vždy právě jeden.</td><td>h</td></tr>
 
<tr><td>Vedlejší body kešoidu. Žádný nebo více.</td><td>v</td></tr>
 
 
<tr><th rowspan=5>Druh kešoidu</th><td rowspan=5>2</td><td>Nevykresluje se.</td><td>00</td></tr>
 
<tr><td>Keš</td><td>gc</td></tr>
 
<tr><td>Waymark, kromě Českých geodetických bodů</td><td>wm</td></tr>
 
<tr><td>České geodetické body (speciální Waymark)</td><td>gb</td></tr>
 
<tr><td>Obecný waypoint (může mít i dodatečné waypointy, ale nejspíš mít nebude).</td><td>wp</td></tr>
 
 
<tr><th rowspan=4>Vztah</th><td rowspan=4>3</td><td>Nehledáno a tudíž nemohlo být nalezeno</td><td>hnf</td></tr>
 
<tr><td>Nalezeno</td><td>fnd</td></tr>
 
<tr><td>Moje vlastní</td><td>own</td></tr>
 
<tr><td>Neexistující, tedy vůbec nezaloženo,
 
(vyskytuje se jen českých geodetických bodů, u kterých existuje databáze)</td><td>not</td></tr>
 
 
<tr><th rowspan=3>Stav</th><td rowspan=3>4</td><td>Aktivní</td><td>actv</td></tr>
 
<tr><td>Disable</td><td>dsbl</td></tr>
 
<tr><td>Archivovaná</td><td>arch</td></tr>
 
 
<tr><th rowspan=8>Velikost</th><td rowspan=8>5</td><td>Nevykresluje se</td><td>00000</td></tr>
 
<tr><td>Micro</td><td>micro</td></tr>
 
<tr><td>Small</td><td>small</td></tr>
 
<tr><td>Regular</td><td>regul</td></tr>
 
<tr><td>Large</td><td>large</td></tr>
 
<tr><td>Huge</td><td>hugex</td></tr>
 
<tr><td>Nespecifikována</td><td>nspec</td></tr>
 
<tr><td>Nazaškrtnuta</td><td>nchec</td></tr>
 
 
<tr><th rowspan=3>Výlet</th><td rowspan=3>6</td><td>Nevíme</td><td>nevime</td></tr>
 
<tr><td>Lovíme</td><td>lovime</td></tr>
 
<tr><td>Ignorujeme</td><td>ignoru</td></tr>
 
 
<tr><th rowspan=3>Postavení k myši</th><td rowspan=3>7</td><td>Myš není nad waypoitem z keše</td><td>nomouse</td></tr>
 
<tr><td>Myš je nad jiným waypointm z keše</td><td>mousean</td></tr>
 
<tr><td>Myš je nad tímto waypointem</td><td>mouseon</td></tr>
 
 
<tr><th rowspan=2>Vybranost</th><td rowspan=2>8</td><td>Nevybraný, čili normální</td><td>noselect</td></tr>
 
<tr><td>Vybraný</td><td>selected</td></tr>
 
 
<tr><th rowspan=2>Vyluštěnost</th><td rowspan=2>9</td><td>Mysterka, multina či jiná nevyluštěná</td><td>nevyluste</td></tr>
 
<tr><td>Keš je vyluštěna, to znamená, že existuje finální waypoint nebo je to keš tradiční.</td><td>vylusteno</td></tr>
 
 
<tr><th rowspan=2>Zdroj</th><td rowspan=2>10</td><td>Importované z PQ či jiného zdroje</td><td>pqimported</td></tr>
 
<tr><td>Ručně přidané</td><td>handedited</td></tr>
 
 
<tr><th rowspan=2>Terény</th><td rowspan=2></td><td>Nevykresluje se</td><td>ter0</td></tr>
 
<tr><td>Terény 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5</td><td>ter10, ter15, ter20, ...</td></tr>
 
 
<tr><th rowspan=2>Obtížnost</th><td rowspan=2></td><td>Nevykresluje se</td><td>dif0</td></tr>
 
<tr><td>Obtížnosti 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5</td><td>dif10, dif15, dif20, ...ccc</td></tr>
 
 
</table>
 
 
=== Groups ===
 
Aby se v lévém sloupci dialogů a v adresářích nemíchaly hrušky s jabkama (keše s waymarkama a dalšími dodatečnými waypointy), jsou zavedeny skupiny.
 
Ikonu zařadíme do skupiny tím, že před její název dáme jméno skupiny a vykřičník, například <tt>wm!</tt>. Pokud chceme skupině přidělit i rozumný čitelný název, provedeme tak v souboru <tt>groups.properties</tt> umístěném přímo v adresáři sady. Ve standardní sadě je tento soubor:
 
 
gc!=Ke\u0161ky
 
gcawp!=Dodate\u010dn\u00e9 waypointy
 
cgp!=Chech Geodetic Point
 
wm!=Waymark
 
 
Skupiny nemají vliv na nic jiného než na zobrazování v dialozích a na řazení v adresářích. A soubor <tt>groups.properties<tt> nemá vliv na nic jiného než na zobrazení návzu skupiny v dialogu, pokud se zde položka nenalzene, zobrazí se přímo ta zkratka skupiny.
 
 
== Tvorba jmen souborů s ikonami ==
 
Jméno souboru s ikonou je poskládáno z jednotlivých jmen alel (hodnoty uvedené v posledním sloupci v tabulce) a v případě potřeby je možné doplnit ještě některé další vlastnosti.
 
Na pořadí jmen alel nezáleží, ale doporučujeme zachovat pořadí genů z dialogu ''Ikony/Ladění ikon''.
 
 
=== Priorita ===
 
V rámci vrstvy se vždy vybere ten nejspecifičtější soubor. Pokud by však program nemusel správně rozhodnout, který soubor je specifičtejěí, může být ke jménu doplněna ještě priorita ve tvaru '''_pN''', kde N je číslo priority. v tom případě bude použita ikona s vyšším číslem priority. Pokud priorita není určena, má hodnotu 5.
 
 
=== Umístění ikon ===
 
Za normálních okolností se ikona umisťuje střenem na zadané souřadnice. Pomocí dalších parametrů ve jméně souboru s ikonou je možné ikonu pozicovat jinak.
 
 
* '''x3''' - X na pozici tři, Y na střed
 
* '''y14''' - X na střed, , Y na pozici 14.
 
* '''x8_y20''' - X na pozici 8 a Y na pozici 20.
 
 
 
== Jednoduchý příklad definice vlastní sady ==
 
Protože mám k dispozici GPX soubor se stanicemi pražské MHD, rozhodl jsem se je zobrazit. Zadal jsem si tedy
 
kořenový adresář a v nem vytvořil strukturu '''map/MHD''' a v něm vytvořil textový soubor '''skla.txt''' obsahující řádky
 
 
skloNormal.VSE
 
skloZvyrazneni.MYS
 
skloNormal.MYS
 
 
(Netuším, co znamenají ty přípony, ale opsal jsem to z jakési dokumentace od autora ???)
 
 
Pak jsem vytvořil adresáře '''skloNormal''' a '''skloZvyrazneni''' (v adresáři MHD) a další soubor '''groups.properties'''.
 
Do tohoto souboru jsem zapsal jediný řádek
 
 
mh!=MHD
 
 
kterým jsem definoval nový typ kešoidu. V adresáři '''skloNormal\2ctverce''' jsem vytvořil soubor '''_mh_actv_nomouse_p7_h16_v16.properties''' s následujícím obsahem:
 
 
class=cz.geokuk.api.mapicon.RoundRectDrawer
 
width=16
 
height=16
 
fill=255,255,255
 
 
Tím jsem definoval velikost zobrazených ikon. V adresáři '''skloNormal\5typy''' jsem vytvořil soubory s ikonami jednotlivých typů zastavek:
 
 
mh!Bus.png
 
mh!MetroA.png
 
mh!MetroB.png
 
mh!MetroC.png
 
mh!Tram.png
 
 
Pak už zbývá jen do gpx souborů pro každou zastávku správně uvést
 
 
  <type>mh</type>
 
  <sym>Bus</sym>
 
  resp. příslušný symbol dopravního prostředku
 
 
A na mapě se zastávky objevily. Definice se nijak nedotkne zobrazení dalších bodů, protože ty zůstávají zobrazeny implicitním způsobem. Jen jsem doplnil nové body.
 

Aktuální verze z 13. 2. 2016, 17:48