dia-installer.de / Dokumentatsioon / Manuaal

Peatükk 11. Kohandatud kujundite moodul

11.1. Kohandatud kujundite mooduli tutvustus

Kohandatud kujundite moodul võimaldab uusi kujundeid luua C keeles programmeerimist oskamata. Piisab lihtsast XML failist, mis kireldab kujundit. See võimaldab etteantud mustrite baasil ka programmeerimisoskuseta kasutajatel uusi kujundeid luua.

Kujund kirjeldatakse kasutades SVG spetsifikatsiooni alamosa. Toetatud on joon, kompleksjoon, hulknurk, ristkülik, ring, ellips, trajektoor ja g kujund. Trajektoori element toetab ainult M,m,L,l,H,h,V,v,C,c,S,s,A,a,Z,z käske. Transformatsioonid ja CSS ühikud pole toetatud, CSS atribuutidest on samuti ainult piiratud hulk kasutuses.

Kujundiga saab vastavusse panna mitu ühenduspunkti, mille asukohad kirjeldatakse sama koordinaatsüsteemi abil nagu kujundite endi kirjeldused.

Kujundiga saab seostada ka tekstikasti. Ka selle puhul kasutatakse kujundiga sama koordinaatsüsteemi.

Tekstikasti suuruse ja asukoha valimiseks võid ette kujutada kahte ristkülikut - üks sisaldab tekstikasti ja teine kõiki SVG elemente (nimetagem seda pildi ristkülikuks). Kui asetad kujundi lõuendil ja kirjutad sellele teksti, siis peab kogu tekst tekstikasti ära mahtuma. Kui vaja, siis tekstikasti mõõdud kasvavad ja nendega samas proportsioonis kasvab ka pildi ristkülik).

Kõige ülejäänu eest on juba sinu eest hoolitsetud (suuruse muutmine, liigutamine, joontega ühendamine, laadimine, salvestamine, unustamine jne).

11.2. Kujundid

Tüüpiline kujundifail näeb välja umbes selline:

<?xml version="1.0"?> <shape xmlns="http://www.daa.com.au/~james/dia-shape-ns" xmlns:svg="http://www.w3.org/2000/svg"> <name>Circuit with identifiers - NPN Transistor</name> <icon>npn.xpm</icon> <connections> <point x="0" y="0"/> <point x="6" y="-4"/> <point x="6" y="4"/> </connections> <aspectratio type="fixed"/> <textbox x1="4" y1="-3" x2="12" y2="3" /> <svg:svg> <svg:line x1="0" y1="0" x2="3" y2="0" /> <svg:line x1="3" y1="-3" x2="3" y2="3" /> <svg:line x1="3" y1="-2" x2="6" y2="-4" /> <svg:line x1="3" y1="2" x2="6" y2="4" /> <svg:polyline points="5,4 6,4 5.6154,3.0769" /> </svg:svg> </shape>

Kujundifailis on kohustuslikud ainult name ja svg elemendid. Kõik muud pole kohustuslikud.

Element name annab objektile nime. Seda kasutatakse antud kujundi salvestamisel ja laadimisel unikaalse identifikaatorina.

Nagu näites toodud saad kasutada mitmeosalist nime. Enamikul kujunditest märgib esimene nimeosa lehte, millel kujund asub, kuid ka see pole kohustuslik.

icon element määrab xpm või png faili, mida kasutatakse Dia tööriistakastis ikoonina. Failinimi võib olla relatiivne kujundifaili suhtes. Kui seda pole määratud kasutatakse vaikimisi ikooni.

connections osa kirjeldab kujundi ühenduspunkte. Nende asukohta kirjeldav koordinaatide süsteem on sama nagu kujundi kirjeldamisel kasutatakse.

aspectratio element kirjeldab kuidas kujundit venitada saab. Selleks on kolm võimalust:

  • <aspectratio type="free"/> - Kõik proportsioonid on lubatud (vaikimisi).
  • <aspectratio type="fixed"/> - Fikseeritud proportsioonid.
  • <aspectratio type="range" min="n" max="m"/> - Etteantud valik proportsioonidest.

Viimane valik võimaldab määrata lubatud muutmise piire.

The textbox element lubab kujundiga tksti siduda. Süntaks:

<textbox x1="left" y1="top" x2="right" y2="bottom"/>

Ühe kujundi kohta on lubatud vaid üks tekstikast! Atribuudid annavad tekstikastile piirded samas koordinaatsüsteemis nagu kujundi kirjeldus.

<textbox/> elemendil on ka mittekohustuslikke atribuute:

resize="no" :
vaikimisi muudetakse tekstikasti koos sinna tipitava tekstiga
align="center" :
"center" ehk keskele joondamine on vaikimisi valik, muud kasutatavad variandid on "left" ehk vasak ja "right" ehk parem

Kujunditele antakse loomisel vaikimisi suurus. Kui see ei sobi, siis saad selle uuesti defineerida (ainult ühe või mõlemad:
<default-width>1cm</default-width> <default-height>3cm</default-height>
Vaikimisi ühiku "cm" võib ära jätta.

svg element kirjeldab kujundit. Kõrgust ja laiust ignoreeritakse ning on kirjas vaid SVG spetsifikatsioonile vastamiseks. SVG kohta loe lähemalt: http://www.w3.org/Graphics/SVG

Järgmine osa kirjeldab lubatud SVG alamhulka kujundifailides.

11.3. Kujundi kirjeldus

SVG ehk skaleeruva vektorgraafika formaati kasutatakse kujundi defineerimisel. Seetõttu kasutatakse selle faili osa jaoks eraldi nimeruumi.

11.3.1. Stiili atribuut

Iga SVG joonistuselement saab aru stiili atribuudist. Atribuut peaks olema järgmisel kujul:

<svg:whatever style="name1: value1; name2: value2; ... name42: value42"/>

Hetkel saab kasutada ainult järgmisi stiili atribuute:

  • stroke-width - Joone laius kasutaja defineeritud laiuse suhtes.
  • stroke-linecap - Joone otsa stiil, üks järgnevast nimekirjast: butt, round, square, projecting (sünonüü square jaoks) või default.
  • stroke-linejoin - Joone ühenduse stiil, üks järgnevast nimekirjast: miter, round, bevel või default.
  • stroke-pattern - Kriipsu muster, üks järgnevast nimekirjast: none, dashed, dash-dot, dash-dot-dot, dotted või default.
  • stroke-dashlength - Katkendjoone mustris joone pikkus kasutaja defineeritud väärtuse suhtes (default on 1.0 sünonüüm).
  • stroke - Joone värv. Saad kasutada ühte neist sümboolsetest nimedest: foreground, fg, default, background, bg inverse, text või none või kasuta kuueteistkümnendsüsteemis (0-9,A-F) värvi väärtust kujul #rrggbb.
  • fill - Täitevärv. Kasutab samu väärtusi nagu joon (stroke), ainult default ja inverse tähendused on vahetuses. Vaikimisi pole elemendid täidetud, seega vaikimisi täitmise saamiseks kasuta "fill: default"
[Nõuanne] Nõuanne

Kõige peenema joonega ristküliku joonistamiseks kasuta järgmist trikki:

<svg:rect style="stroke-width: 0" x="..." y="..." width="..." height="..."/>

Ordinaadid x ja y kasvavad sama moodi nagu Dias.

11.3.2. Tuvastatavad joonistuselemendid

Tuvastatavad joonistuselemendid on:

  • <svg:g>

    See on grupi element. Siia sisse saab paigutada teisi elemente. Grupi stiili atribuuti rakendatakse ka grupi sisse pandud elementidele kui nood seda ise üle ei defineeri.

  • <svg:line x1="..." y1="..." x2="..." y2="..."/>

    See element on joon.

  • <svg:polyline points="...."/>

    See element on kompleksjoon ehk mitu ühendatud joone segmenti. Punktide atribuut sisaldab joone segmentide lõpp-punktide koordinaate, mis eraldatakse üksteisest tühikute või komadega. Soovituslik formaat on "x1,y1 x2,y2 x3,y3 ...".

  • <svg:polygon points="...."/>

    See on hulknurk. Punkti argumendid on samas formaadis nagu kompleksjoonel.

  • <svg:rect x1="..." y1="..." width="..." height="..."/>

    See on ristkülik. Ülemine vasak nurk on (x1,y1) ja alumine parem nurk on (x1+width,y1+height).

  • <svg:image x1="..." y1="..." width="..." height="..." xlink:href="..." />

    See on väline pilt. Ülemine vasak nurk on (x1,y1) ja alumine parem nurk on (x1+width,y1+height). Toetatakse kaht lingitüüpi - absoluutne failinimi kujul "file:///home/user/image.png" ja relatiivne ilma eesliiteta "file://" näiteks "image.png". Viimane on eelistatud, sest see ei sõltu paigalduse asukohast. Failinimi on relatiivne kujundifaili asukoha suhtes. Näites toodud PNG fail ja kujund peavad asuma samas kaustas.

  • <svg:circle cx="..." cy="..." r="..."/>

    See on ring keskpunktiga (cx,cy) ja raadiusega r.

  • <svg:ellipse cx="..." cy="..." rx="..." ry="..."/>

    See on ellips keskpunktiga (cx, cy) ja x-suunalise raadiusega rx ning y-suunalise raadiusega ry.

  • <svg:path d="...."/>

    See on kõige keerukam joonistuselement. See kirjeldab trajektoori, mis koosneb joone segmentidest ja Bezier kõveratest. Hetkel ei toeta elliptilist kaart ja nelinurkseid Bezier kõveraid. Sõne d koosneb käskudest kujul "x arg1 arg2 ..." kus x on sümbolkood, mis identifitseerib käsu ja argumentideks on tühikute või komadega eraldatud numbrid. Igal käsul on absoluutne ja relatiivne variant. Absoluutsed käsud kirjutatakse suure tähega. Relatiivsed väikese tähega ning kasutavad eelmise käsu lõppu uue alguspunktina.

    Toetatud käsud on:

    • M x,y - Kursori liigutamine
    • L x,y - x ja y vahele joone joonistamine
    • H x - Horisontaalse joone joonistamine x-ni
    • V y - Vertikaalse joone joonistamine y-ni
    • C x1,y1 x2,y2, x3,y3 - Bezier kõvera joonistamine (x3,y3)-ni kus (x1,y1) ja (x2,y2) on juhtpunktid. C (suur täht) märgib absoluutseid ja c (väike täht) märgib relatiivseid koordinaate tähe järel.
    • S x1,y1 x2,y2 - Sama nagu eelmine, aga joonistatakse sujuv Bezier kõver. See tähendab, et esimene kontrollpunkt järeldatakse eelmise kõvera andmetest. S (suur täht) märgib absoluutseid ja s (väike täht) märgib relatiivseid koordinaate tähe järel.
    • A (rx ry x-axis-rotation large-arc-flag sweep-flag x y)+ - Joonistab elliptilise kaare praegusest punktist punkti (x, y). Suuruse ja orientatsiooni määravad kaks raadiust (rx, ry) ja x-telje pööre (x-axis-rotation). Kese arvutatakse automaatselt. large-arc-flag ja sweep-flag võtmed abistavad automaatsete arvutuste juures ja aitavad määrata, kuidas kaar joonistada tuleb. A (suur täht) märgib absoluutseid ja a (väike täht) märgib relatiivseid koordinaate tähe järel.
    • Z - Sulge trajektoor.

    Kui trajektoori sulgemiseks kasutatakse z või Z, siis saab seda täita. Vastasel juhul ainult joonistatakse.

  • <svg:text x="..." y="..." style="..."> ... </svg:text>

    Tekst kujundi sees. Tekst peab olema märgiste vahel.

    Parameetrid on:

    • x,y - Teksti asukoht
    • style - Teksti vormistuse seaded

      Toetatakse järgmisi vormistuse seadeid:

      • font-size - teksti suurus pt

11.4. Kujundid kujundite sees ehk alamkujundid

Kohandatud kujundi sisse iseseisvalt skaleeritavate kujundite lisamine võimaldab alamkujundite tekitamist. See saavutatakse grupi elemendi lisaparameetrite abil.

<svg:g subshape="true" v_anchor="fixed.bottom" h_anchor="fixed.left" default_scale="1.0">

v_anchor[Definitsioon: Toetatud väärtused: "fixed.top" "fixed.bottom" "proportional" ]
Alamkujundi vertikaalne ankurdus.
h_anchor [Definitsioon: Toetatud väärtused: "fixed.left" "fixed.right" "proportional" ]
Alamkujundi horisontaalne ankurdus.
default_scale
Hetkel ei kasutata.

11.5. Laiendatud atribuudid

Kohandatud kujundile uute atribuutide lisamise saad kirja panna nii:

<ext_attributes> <ext_attribute name="Integer" type="int" /> <ext_attribute name="String" type="string" /> <ext_attribute name="Float" type="real" /> </ext_attributes>

siltide <shape></shape> vahel. Tulemuseks on kohandatud objektile uute atribuutide lisamine. Need on redigeeritavad omaduste dialoogi abil ning neid laetakse ja salvestatakse koos skeemiga. Programmselt saad nende atribuutide poole pöörduda kui kasutad "custom:<name>"

11.6. Lehe kirjeldus

Ühele lehele saab panna mitu objekti - nii omaloodud objekte kui ka juba mujal lehtedel leiduvaid.

Lihtne lehte defineeriv fail näeb välja selline:

<?xml version="1.0" encoding="utf-8"?> <sheet xmlns="http://www.lysator.liu.se/~alla/dia/dia-sheet-ns"> <name>Circuit with identifiers</name> <name xml:lang="es">Circuito con identificadores</name> <description>Components for circuit diagrams</description> <description xml:lang="es">Componentes para diagramas de circuitos </description> <contents> <object name="Circuit with identifiers - NPN Transistor"> <description>A bipolar npn transistor</description> <description xml:lang="es">Un transistor bipolar npn identificable </description> </object> <object name="UML - Objet"> <description>An UML object</description> <description xml:lang="es">Un objeto UML</description> </object> </contents> </sheet>

11.7. Kuidas Dia aitab lehti ja kujundeid tekitada ja hallata.

Võid juba Dias olemasolevate elementide abil joonistada kujundi ja eksportida selle kujundifailiks kui valid menüüst Fail->Eksportimine->Faililaiendi järgi->Kujund.

Seni pole sellised kujundifailid sisaldanud tekstikaste. Need eeldatavasti peavad hakkama saama küll osade svg:text elementidega, aga Dia tekstikast pole toetatud. Kui vajad tekstikasti, siis pead eksporditud faili käsitsi muutma.

Koos kujundifailiga genereeritakse ka PNG fail, mida saad kasutada ikoonina.

Kasutades menüüd Fail->Lehed ja objektid saad luua uusi lehti ning lisada, kustutada ja osaliselt redigeerida kujundeid või kujundeid erinevate lehtede vahel liigutada.

11.8. Disainimärkmed

Kohandatud kujundi kood on disainitud nii, et üks lehekülg objektidega oleks omaette kaustas. Uusi objekte saab lisada pakkides .tar.gz faili lahti ~/.dia/shapes või $(prefix)/share/dia/shapes kausta ning lehe kirjelduse kausta ~/.dia/sheets liigutades.

Kui sul on selle koodi kohta soovitusi, siis anna mulle teada.

James Henstridge koos mõnede muudatustega, mille kirjutas Dolores Alia de Saravia

dia-installer.de / Dokumentatsioon / Manuaal

Imprint | Privaatsuspoliitika