Zobrazení vektorové kresby složené ze základních geometrických prvků (přímek, elips, obdélníků apod.). Rozměry jednotlivých prvků mohou být svázány s výrazy a mohou se tedy s časem měnit. Přístroj draw dokáže animovat zobrazení, která není možno realizovat standardními přístroji.
draw draw_name rem = string; bubble = string; timer = timer_name; owner = owner_name; position = integer, integer, integer, integer; win_disable = [ identifier, . . . ]; win_title = string; color = color; transparent; zoomable; draw_size = integer, integer; drawing DRAWING_BLOCK; end_drawing; end_draw;
DRAWING_BLOCK
Je složen z definic nastavení barev a dalších parametrů zobrazení PARAM_BLOCK a grafických objektů DRAW_BLOCK. Barevné nastavení platí vždy pro všechny objekty uvedené v pořadí za ním.
PARAM_BLOCK -> e | ink COLOR_REF; | solid_paper COLOR_REF; | pattern_paper COLOR_REF : COLOR_REF : fill_identifier; | textcolor COLOR_REF; | shade COLOR_REF : COLOR_REF; | fill FILL_REF; | pen_width integer; | pen_style pen_line_style; COLOR_REF -> color CHANGE_BLOCK CHANGE_BLOCK -> e | change_color COLOR_LIST end COLOR_LIST -> e | CHANGE_COLOR COLOR_LIST CHANGE_COLOR -> boolean_expression , color;
DRAW_BLOCK text {name} - řetězec znaků line {name} - úsečka polyline {name} - několik spojených úseček polygon {name} - mnohoúhelník box {name} - obdélník frame {name} - stínovaný obdélník roundbox {name} - zakulacený obdélník ellipse {name} - elipsa ring {name} - eliptický prstenec arc {name} - oblouk pie {name} - oblouk s výplní
fill_identifier
Upozornění: V systémech Windows může být ignorováno nastavení stylu u čar, jejichž tloušťka je větší jak 1.
Všechny nastavované parametry vyjma stylu čáry obrysu mohou být za běhu aplikace podle zadaných podmínek proměnné. Definice proměnné barvy se provádí v sekci change_color za každou zvolenou barvou. Seznam barev je vyhodnocován v uvedeném pořadí a platná je ta barva, jejíž podmínka je první vyhodnocena jako true. V případě, že pravdivá není žádná z podmínek, je platná barva základní.
Poznámka: Zápis barev a jejich přehled je identický se zápisem barev v systému Control Web. Použití solid_paper, pattern_paper a fill je vzájemně výlučné.
Nepovinný parametr name za definičním jménem útvaru slouží k pojmenování objektu. Toto jméno je možné použít pro identifikaci objektu při volání nativních metod přístroje za běhu aplikace.
Plošné objekty mohou být vykreslovány třemi různými způsoby, které se při definici připojí ke klíčovému slovu rozlišujícímu objekty. <object_id> je klíčové slovo, identifikující objekt.
Podporované podoby přístroje
Syntax:
text integer [: real_expression], integer [: real_expression]; string; font = font_identifier, integer, style_identifier;
Podporované podoby přístroje
Syntax:
line name integer [: real_expression], integer [: real_expression], integer [: real_expression], integer [: real_expression];
Podporované podoby přístroje
Syntax:
polyline name num_points, integer [: real_expression], integer [: real_expression], ..., integer [: real_expression], integer [: real_expression];
Podporované podoby přístroje
Syntax:
polygon name num_points, integer [: real_expression], integer [: real_expression], ..., integer [: real_expression], integer [: real_expression];
Podporované podoby přístroje
Syntax:
box name integer [: real_expression], integer [: real_expression], (* x, y *) integer [: real_expression], integer [: real_expression]; (* w, d *)
Podporované podoby přístroje
Syntax:
frame integer [: real_expression], integer [: real_expression], (* x, y *) integer [: real_expression], integer [: real_expression], (* w, d *) integer [: real_expression]; (* frame *)
Podporované podoby přístroje
Syntax:
roundbox name integer [: real_expression], integer [: real_expression], (* x, y *) integer [: real_expression], integer [: real_expression], (* w, d *) integer [: real_expression]; (* radius *)
Podporované podoby přístroje
Syntax:
ellipse name integer [: real_expression], integer [: real_expression], (* x, y *) integer [: real_expression], integer [: real_expression]; (* rx, ry *)
Podporované podoby přístroje
Syntax:
ring name integer [: real_expression], integer [: real_expression], (* x, y *) integer [: real_expression], integer [: real_expression], (* inner rx, ry *) integer [: real_expression], integer [: real_expression], (* outer rx, ry *)
Podporované podoby přístroje
Syntax:
arc name integer [: real_expression], integer [: real_expression], (* x, y *) integer [: real_expression], integer [: real_expression], (* rx, ry *) integer [: real_expression], integer [: real_expression], (* vx1, vy1 *) integer [: real_expression], integer [: real_expression], (* vx2, vy2 *)
Podporované podoby přístroje
Syntax:
pie name integer [: real_expression], integer [: real_expression], (* x, y *) integer [: real_expression], integer [: real_expression], (* rx, ry *) integer [: real_expression], integer [: real_expression], (* vx1, vy1 *) integer [: real_expression], integer [: real_expression], (* vx2, vy2 *)
Poznámka: Jednotlivé souřadnice jsou vždy určeny iniciální číselnou hodnotou. Nepovinně za touto hodnotou může být za dvojtečkou uveden výraz. Pokud je výraz uveden, může se hodnota souřadnice měnit v časovém kroku přístroje v závislosti na zadaném výraze.
Action()
Provede aktualizaci obrázku podle aktuálních vstupních hodnot.
Následující netivní procedury pracují s objekty obrázku označenými jménem. Pojmenování objektu lze provést v inspektoru přístroje v dialogovém okně parametrů objektu, které spustíte klikem pravým tlačítkem nad objektem, nebo přímo uvedením jména za klíčové slovo objektu.
Více objektů může mít shodné jméno. Potom změna související s použitou nativní procedurou bude provedena u všech těchto objektů.
SetInk( Name : string; Color : real )
SetInk(
Name : string; R, G, B : real )
Nastaví všem objektům uvedeného jména barvu obrysu (inkoustu). Barva je zadávána jako číslo 0 až 15 odpovídající základní paletě 16 barevného adaptéru IBM PC nebo jako trojice čísel udávající jednotlivé složky složky barvy v modelu RGB. Nastavení barvy má vyšší prioritu než barva uvedená v definici kresby, včetně proměnné barvy.
SetSolidPaper( Name : string; Color : real )
SetSolidPaper( Name : string; R, G, B : real )
Nastaví barvu nevzorované výplně všem objektům uvedeného jména. Barva je zadávána jako u metody SetInk. Nastavení barvy má vyšší prioritu než barva uvedená v definici kresby, včetně proměnné barvy.
SetPatternPaper( Name : string; CF, CB, P1, P2, P3,
P4, P5, P6, P7, P8 : real )
SetPatternPaper( Name : string; CF, CB : real;
P : string )
Nastaví barvu vzorované výplně všem objektům uvedeného jména. Pomocí parametrů CF a CB je zadávána barva popředí a pozadí. Typ výplně lze zadat buď jako osmici charakteristických čísel nebo názvem typu výplně (viz nastavení vzorované výplně u kresby v přístroji draw). Nastavení barvy má vyšší prioritu než barva uvedená v definici kresby, včetně proměnné barvy.
ClearSet( Name : string )
Zruší nastavení barev pomocí nativních procedur SetInk, SetSolidPaper a SetPatternPaper a objekty budou akceptovat barvu zadanou v definici kresby, případně získanou ohodnocením výrazů pro změnu barvy.
CalculateObject( Name : string )
Provede aktualizaci rozměrů a barev zadaných objektů podle vstupních hodnot.
PaintObject( Name : string )
Vykreslí zadané objekty.
MarkObject( Name : string )
PaintMarked()
MarkObject označí zadané objekty pro následující vykreslení metodou PaintMarked. Slouží pro současné vykreslení skupiny objektů různých jmen.
Přístroj může volat standardní událostní procedury:
OnActivate()
OnShow()
OnHide()
OnMouseDown( MouseX, MouseY : integer; LeftButton, MiddleButton, RightButton :
boolean )
OnMouseDoubleClick( MouseX, MouseY : integer; LeftButton,
MiddleButton, RightButton : boolean )
OnMouseUp( MouseX, MouseY : integer;
LeftButton, MiddleButton, RightButton : boolean )
OnMouseMove( MouseX,
MouseY : integer; LeftButton, MiddleButton, RightButton : boolean )
OnWindowMinimize()
OnWindowMaximize()
OnWindowRestore( WasMinimized,
WasMaximized : boolean )
OnWindowClose()
Podrobnější informace k těmto procedurám lze nalézt v kapitole Programování a procedury.