Skladba formátu XML používaného pro popis prvků v QElectroTechu ve verzi 0.3

…nebo také průvodce vytvářením prvků v XML. Tyto stránky si kladou za cíl popsat stavbu XML používaného pro ukládání vymezení prvků používaných v programu QElectroTech. Obrací se na vývojáře QET, ale stejně tak i na ne-vývojáře, kteří by se chtěli projít po editoru prvků.

Příklad a obecná skladba vymezení prvku

<!DOCTYPE definition SYSTEM "definition_element.dtd">
  <definition type="element" width="45" height="65" hotspot_x="25" hotspot_y="45" orientation="dnnn">
    <names>
      <name lang="fr">Moteur asynchrone triphasé</name>
      <name lang="en">Three-phase induction motor</name>
    </names>
    <description>
      <!--U-->
      <polygon x1="-20" y1="-40" x2="-20" y2="-20" x3="-14" y3="-14" antialias="false" closed="false"/>
      <!--V-->
      <line x1="0" y1="-40" x2="0" y2="-20" antialias="false"/>
      <!--W-->
      <polygon x1="20" y1="-40" x2="20" y2="-20" x3="14" y3="-14" antialias="false" closed="false"/>
      <circle x="-20" y="-20" diameter="40" antialias="true" style="filling:white;"/>
      <!--Lettre M-->
      <text x="-13.5" y="12" size="24" text="M"/>
      <!--Bornes-->
      <terminal orientation="n" x="-20" y="-40"/>
      <terminal orientation="n" x="0"   y="-40"/>
      <terminal orientation="n" x="20"  y="-40"/>
    </description>
  </definition>

Tento kód XML představuje “asynchronní třífázový motor” : asynchronní třífázový motor

Ten doctype na prvním řádku není tolik důležitý při opatření, kdy DTD nepostačuje pro plné uznání vymezení prvku za platné.

Hlavní prvek XML je tedy značka “definition”. V případě, že bychom měli několik typů vymezení, se vlastnost type používá pro stanovení, že se jedná o vymezení prvku.

Rozměry prvku

Jednou z prvních věcí, kterou je při vymezení prvku potřeba přesně určit, je jeho velikost: šířka (width) a výška (height) v pixelech. Tyto dva rozměry musí být celé násobky desíti. Pokud tomu tak není, QET je zaokrouhlí směrem nahoru (příklad: 50 pro 42 pixelů). Vymezují velikost a obdélník vymezující prvek.

Vysvětlující vyobrazení

Bod zachycení prvku (hotspot - aktivní bod)

Bod zachycení prvku označuje bod spjatý s ukazovátkem myši při tažení a upuštění prvku. Musí se jednat o úplné souřadnice. “hotspot_x” je úsečka (abscica), “hotspot_y” je pořadnice (ordináta). Uvažuje se, že horní levý roh obdélníka, kterým je prvek vymezen, je počátek. Pokud poskytnuté hodnoty překračují vymezený obdélník, budou omezeny na velikost prvku. Bod zachycení je rovněž středem otáčení používaným při změně natočení prvku.

Směrování prvku

Potom je třeba určit, jaká jsou možná směrování prvku. Natočení prvku se používá při rozmístění vodičů ale také pro zabránění uživateli otočit prvkem ve směru, který by nedával žádný smysl. Vlastnost směrování je stanovena řadou čtyř znaků, každý znak určuje chování pro jedno směrování.

  • 1 znak: sever
  • 2 znak: východ
  • 3 znak: jih
  • 4 znak: západ

Každá vlastnost může mít následující hodnotu:

  • d pro “default” (výchozí): oznamuje, že prvek je ve výchozím nastavení považován za natočený v tomto směru. Naprosto nutně je třeba naznačit výchozí směrování prvku.
  • y pro “yes” (ano): uživatel může prvek natočit tímto směrem.
  • n pro “no” (ne): uživatel prvek tímto směrem natočit nemůže.

Příklad: orientation=“ydny” znamená, že prvek se kreslí natočený na východ a že jím lze otočit na sever a západ, ale ne na jih.

Vnitřní spojení

Ve výchozím nastavení není možné spojit dvě svorky téhož prvku. Toto chování lze změnit vlastností “ic” a hodnotou true.

Zbytek vymezení

Zbytek vymezení se štěpí na dvě části: první je vymezení názvu nebo názvů prvku; prvek XML “names”. Druhou je popis kresby a složení prvku; prvek XML “description”.

Určení jednoho nebo několika názvů prvku

Daný prvek má jen jeden název pro jeden jazyk. Je tedy možné stanovit kolik je možných překladů. Dle jazyka systému (který se od překladů, jež jsou dostupné pro QET, může lišit), je vybrán a zobrazen vhodný název. Uvnitř QET pracuje jen s názvy souborů.

Prvek XML “names” přijímá prvky potomky XML “name”. Každý “name” musí mít vlastnost “lang”, která obsahuje dvě písmena představující jeden jazyk. Ve skutečnosti se jedná o dvě první písmena systémového nastavení “locale”. Příklad: pro označení názvu prvku v sytému nastaveném na jazyk / locale “fr_FR@euro”, je třeba udat lang=“fr”.

Na prvky “name” bez vlastnosti “lang” se nedbá. Pokud není systémový jazyk nalezen v názvu prvku, je na jeho místě použit anglický jazyk (lang=“en”).

Kreslit a sestavovat prvek

Vymezení kresby prvku je dost blízké kódování obrázku ve formátu SVG. Části kresby jsou kresleny ve stejném pořadí jako prvky XML. Znamená to, že prvek případně přikryje své předchůdce. K neplatným prvkům XML se nepřihlíží.

Vlastnosti stylu

Pro většinu prvků XML představujících část kresby je možné stanovit vlastnosti stylu spočívající zejména na typu čáry a na výplni těchto částí kresby.

Použití vlastnosti “style” odpovídá tomu, jak je s ní zacházeno ve standardech HTML a XHTML: její hodnota je následkem dvojice styl/hodnota oddělené středníky. Příklad:

<circle x="-20" y="-20" diameter="40" antialias="true" style="line-weight:none;filling:white;"/>

Styl čáry

Styl čáry se určuje stylem “line-style”. Možnými hodnotami jsou:

  • dashed: tečkovaná čára
  • normal [výchozí]: plná čára

Barva čáry

Barva čáry se určuje stylem “color”. Možnými hodnotami jsou:

  • white: bílá čára
  • black [výchozí]: černá čára

Tento parametr se používá nejinak na text

Šířka čáry

Šířka čáry se určuje stylem “line-weight”. Možnými hodnotami jsou:

  • thin: tenká čára, vždy se zobrazuje o šířce 1 pixelu
  • normal [výchozí]: běžná čára
  • none: čára není viditelná

Výplň

Výplň se určuje stylem “filling”. Možnými hodnotami jsou:

  • white: bílá výplň
  • black: černá výplň
  • none [výchozí]: bez výplně

Vlastnost vyhlazování

Vedle vlastnosti “style” je možné používat vlastnost “antialiasing”; tato vlastnost přijímá hodnoty “true” nebo “false”. Vyhlazování je ve výchozím nastavení vypnuto. Tato vlastnost dovoluje stanovit, zda zobrazení této části kresby (a nikoli celý prvek) bude provedeno s potlačením roztřepení okrajů nebo ne.

Vyhlazování

DEL s a bez vyhlazování. Zaznamenejte, že vyhlazování není vždy žádoucí.

Značka

Souřadnice se vyjadřují v poměru ke značce mající počátek v bodu uchycení (hotspot - aktivní bod) a ne v horním levém rohu obdélníku, kterým se prvek vymezuje. Osa x je vodorovná a směřuje doprava. Osa y je svislá a směřuje dolů. Jednotkou je pixel. Přijímají se skutečné hodnoty (příklad: x=“2.5”).

Veillez à ne pas sortir du rectangle délimitant l'élément, sous peine de bugs graphiques.

Čára

Prvek line přijímá následující vlastnosti:

  • x1: úsečka (abscisa) prvního kraje čáry
  • y1: pořadnice (ordináta) prvního kraje čáry
  • x2: úsečka (abscisa) druhého kraje čáry
  • y2: pořadnice (ordináta) druhého kraje čáry
  • end1: typ konce prvního kraje
  • length1: délka použitá při kreslení konce prvního kraje. Výchozí hodnotou je “none”.
  • end2: typ kraje pro druhý kraj
  • length2: délka použitá při kreslení konce druhého kraje. Výchozí hodnotou je “none”.

Možnými typy konců jsou:

Konec Hodnota vlastnosti
end1 (nebo end2)
Obvyklý “none”
Jednoduchá šipka “simple”
Trojúhelníková šipka “triangle”
Kruh “circle”
Čtverec “diamond”

Obdélník

Obdélník je vymezen souřadnicemi svého levého horního rohu a svými rozměry (šířka a výška). Prvek tedy přesně přijme následující vlastnosti:

  • x: úsečka (abscissa) levého horního rohu obdélníku
  • y: pořadnice (ordináta) levého horního rohu obdélníku
  • width: šířka obdélníku
  • height: výška obdélníku

Elipsa

Elipsa je vymezena obdélníkem, do kterého je vepsána. Prvek elipsy tedy přijímá následující vlastnosti:

  • x: úsečka (abscissa) levého horního rohu obdélníku
  • y: pořadnice (ordináta) levého horního rohu obdélníku
  • width: šířka obdélníku
  • height: výška obdélníku

Kruh

Prvek kruhu je vymezen následujícími vlastnostmi:

  • x: úsečka (abscissa) levého horního rohu kvadratury kruhu
  • y: pořadnice (ordináta) levého horního rohu kvadratury kruhu
  • diameter: průměr kruhu

Elipsa, kruh a oblouk

Oblouk

Oblouk kruhu je vymezen jako část elipsy. Prvek oblouku tedy své vlastnosti sdílí s elipsou:

  • x: úsečka (abscissa) levého horního rohu obdélníku
  • y: pořadnice (ordináta) levého horního rohu obdélníku
  • width: šířka obdélníku
  • height: výška obdélníku

K těmto vlastnostem se přidávají dvě další:

  • start: odchozí úhel: úhel “0 stupeň” je na třech hodinách
  • angle: rozpětí (ve stupních) oblouku kruhu; kladná hodnota jde proti směru hodinových ručiček

Mnohoúhelník

Mnohoúhelník je vymezen řadou bodů. Prvek polygon si tedy bere řadu vlastností v následující podobě: x1, y1, x2, y2, x3, y3, x4, y4, atd… Ve výchozím nastavení je mnohoúhelník zavřený. Lze jej otevřít použitím nepovinné vlastnosti closed s hodnotou “false”. Příklad:

<!-- Dessine un carré -->
<polygon x1="1" y1="1" x2="41" y2="1" x3="41" y3="41" x4="1" y4="41" />
<!-- Dessine 3 côtés du carré -->
<polygon x1="1" y1="1" x2="41" y2="1" x3="41" y3="41" x4="1" y4="41" closed="false" />

Text

Prvek text přijímá následující vlastnosti:

  • x: úsečka (abscissa) začátku textu
  • y: pořadnice (ordináta) začátku textu
  • text: text k nakreslení
  • size: uživatelská velikost pro předpis znaku

Používaný předpis je “Sans Serif”

Svorka

Svorky jsou body používaného spojení pro připojování prvků mezi sebou vodiči. Vždy se kreslí poslední (tedy nad jinými částmi kresby), jakákoli je jejich poloha v souboru XML.

Mají tři vlastnosti:

  • x: úsečka (abscissa) svorky
  • y: pořadnice (ordináta) svorky
  • orientation: směrování svorky = sever (n), jih (s), východ (e) nebo západ (w)

Textová pole

Textová pole jsou uživatelem upravovatelné text; změny provedené v textu jsou zaznamenány ve výkresu.

Textové pole je prvek XML “input”. Přijímá stejné vlastnosti jako prvek “text”. Vlastnost “text” představuje výchozí hodnotu textu.

Je možné určit úhel výchozího natočení textového pole pomocí vlastnosti “rotation”. Její hodnotou je desetinné číslo, jež musí být vpočtu mezi -360.0° a 360.0°. 0° odpovídá poloze malé ručičky hodin, když jsou tři hodiny. Záporná hodnota představuje úhel ve smyslu proti směru hodinových ručiček, kdežto kladná hodnota představuje úhel ve smyslu po směru hodinových ručiček. Je třeba poznamenat, že když je jednou prvek položen na výkres, uživatel může změnit jeho natočení.

Umístění a otáčení se uskutečňuje naproti uprostřed levé strany textového pole.

Ve výchozím nastavení se textové pole chová tak, že zůstává vodorovně navzdory tomu, že se jeho rodičovský prvek otáčí (říkáme o tom tedy, že nenásleduje otočení provedené rodičovským prvkem). Toto chování lze změnit pomocí vlastnosti “rotate” a hodnotou true.

Imprimer/exporter