# buffer_display

### Funkce

  Zobrazení dat v kanálech a proměnných typu buffer.

  ### Syntax

         buffer_display buffer_display_name;
           rem = string;
           bubble = string;
           timer = timer_name;
           owner = owner_name;
           position = integer, integer, integer, integer;
           win_disable = [ identifier, . . . ];
           win_title = string;
           input = buffer_dataelement;
           minimum = real_dataelement;
           maximum = real_dataelement;
           average = real_dataelement;
           range_from = real_expression;
           range_to = real_expression;
           show_all_samples = boolean_expression;
           first_sample = real;
           last_sample = real;
           show = [ identifier, . . . ];
           frame = integer;
           driver_exception = driver_name;
           colors
             paper = color;
             ink = color;
             top_shadow = color;
             bottom_shadow = color;
             minimum = color;
             maximum = color;
             average = color;
           end_colors;
         end_buffer_display;

  ### Specifické parametry přístroje

  - input
    Obsahuje jméno vstupního bufferu.
  - minimum
    Obsahuje výstupní proměnnou (kanál), do které se bude posílat minimální hodnota ze zobrazené části bufferu.
  - maximum
    Obsahuje výstupní proměnnou (kanál), do které se bude posílat maximální hodnota ze zobrazené části bufferu.
  - average
    Obsahuje výstupní proměnnou (kanál), do které se bude posílat aritmetický průměr hodnot ze zobrazené části bufferu.
  - range_from a range_to
    Jsou parametry udávající rozsah přístroje buffer_display. Nebude-li vstupní hodnota v bufferu v tomto rozsahu přístroje, nezobrazí se. Hodnoty jsou numerické.
  - show_all_samples
    Obsahuje podmínku, kterou se řídí způsob zobrazení vzorků bufferu. Je-li podmínka splněna, přístroj zobrazí vždy všechny vzorky z bufferu, v opačném případě se zobrazí pouze vzorky v rozsahu určeném výrazy first_sample a last_sample.
  - first_sample a last_sample
    Obsahují výraz. Jeho výsledkem je první a poslední zobrazený vzorek bufferu.
  - show
    Obsahuje seznam zobrazovaných částí přístroje. Jde o
      low_envelope - obsahuje-li buffer více vzorků než je šířka přístroje v bodech obrazovky, počítá se ze vzorků minimální hodnota, kterou je možné zvolením tohoto parametru zobrazit. Není-li vybrán ani parametr low_envelope ani high_envelope, nezobrazují se žádné hodnoty.
      high_envelope – obsahuje-li buffer více vzorků než je šířka přístroje v bodech obrazovky, počítá se ze vzorků maximální hodnota, kterou je možné zvolením tohoto parametru zobrazit. Není-li vybrán ani parametr low_envelope ani high_envelope, nezobrazují se žádné hodnoty.
      minimum – zobrazení linky s minimální hodnotou
      maximum – zobrazení linky s maximální hodnotou
      average – zobrazení linky s hodnotu aritmetického průměru
  - frame
    Obsahuje celočíselnou hodnotu, která vyjadřuje výšku rámečku přístroje (v pixelech).
  - driver_exception
    Jméno ovladače, od kterého budou přijímány výjimky.
  - colors
    Seznam prvků přístroje, kterým lze měnit nastavení barvy:
      paper - podkladový papír
      ink - hodnota bufferu
      top_shadow - horní stín
      bottom_shadow - dolní stín
      minimum - barva linky minima
      maximum - barva linky maxima
      average - barva linky průměru

  ### Poznámky

  - Pro demonstraci funkce přístroje je standardně dodáván ovladač `SIM_BUF.DLL`, který poskytuje šestnáct virtuálních bufferů s nastavitelnými parametry.
  - Implicitně jsou nastaveny parametry:
      position = 0, 0, 200, 100;
      show = low_envelope, high_envelope, minimum, maximum, average;

  ### Příklad

  Příklad nastavení parametrů přístroje:

         window buffer_display Display;
           timer = Main_Timer, 1;
           owner = background;
           position = 20, 20, 400, 140;
           buffer_display Display;
           timer = Main_Timer, 1;
           owner = background;
           position = 20, 20, 400, 140;
           input = Buffer;
           minimum = Min;
           maximum = Max;
           average = Avg;
           show_all_samples = not Show_Part;
           first_sample = F_Sample;
           last_sample = L_Sample;
           frame = 2;
           colors
             paper = white;
             ink = black;
             top_shadow = black;
             minimum = black;
             maximum = black;
             average = black;
           end_colors;
         end_buffer_display

  ### Nativní procedury přístroje

      SetRangeFrom( LowLimit : real )
      SetRangeTo( HighLimit : real )

  Nastavení horní a dolní meze zobrazovaných hodnot. Přístroj bude zobrazovat pouze vzorky s hodnotou menší než HighLimit a větší než LowLimit.

      SetFirstSample( FirstSample : real )
      SetLastSample( LastSample : real )

  Nastavení prvního a posledního vzorku bufferu, který bude přístrojem zobrazován. Metody slouží k výběru podoblasti bufferu, která má být viditelná. Prostřednictvím těchto dvou metod je možné provádět dynamickou změnu měřítka pohledu na buffer. Vlastnost zobrazení celého bufferu nebo jeho podoblasti je nastavitelná pomocí metody SetShowAllSampes.

      SetShowAllSamples( AllSamples : boolean )

  Metoda umožňující dynamickou změnu měřítka pohledu na buffer. Je-li tato metoda zavolána s parametrem true, je možné nastavovat zobrazenou podoblast bufferu metodami SetFirstSample a SetLastSample. V opačném případě přístroj zobrazuje celý buffer bez ohledu na nastavení prvního a posledního vzorku.

      PaintBuffer()

  Po zavolání metody dojde k překreslení bufferu a tím se zobrazí aktuální stav bufferu.

      NewRect( x, y, width, depth : real )

  Zavoláním metody je možné přístroji změnit současně jeho pozici a velikost. Velikosti hodnot x, y, width, a depth jsou v bodech obrazovky.

      MoveTo( x, y : real )

  Posunutí přístroje na pozici x, y. Velikosti hodnot x a y jsou v bodech obrazovky.

      Show()

  Zobrazení skrytého přístroje.

      Hide()

  Skrytí viditelného přístroje.

  ### Událostní procedury přístroje

  Přístroj může volat standardní událostní procedury:

      OnActivate()
      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 )
      OnSelect()
      OnDeselect()
      OnShow()
      OnHide()
      OnNewPosition( RectX, RectY, RectW, RectD : integer )
      OnWindowMinimize()
      OnWindowMaximize()
      OnWindowRestore( WasMinimized, WasMaximized : boolean )

  Podrobnější informace k těmto procedurám lze nalézt v kapitole Programování a procedury.