draw

Funkce

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.

Syntax

  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í

Specifické parametry přístroje

Nativní procedury přístroje

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.

Událostní procedury přístroje

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.