unit Global;

interface

uses IOGraphics;

const {Reprezentace obrazu}
      InvalidVal =    0; // jakou hodnotu ma neplatny pixel (neznama hodnota)

      {Parametry ovlivnujici zpracovani obrazu}
      MaxKerSize   = 64;         // -MaxKerSize..MaxKerSize je max. velikost 2D jadra pro vypocet histogramu
      MaxNRKerSize = 300;        // -MaxNRKerSize..MaxNRKerSize je max. velikost 1D jadra pro redukci sumu
      Saturation   = 16383;      // hodnota saturovaneho pixelu pro SDO v orig. souboru
      SunCircle    = false;      // zda vykreslit okraj Slunce (jen pro test)
      ActExt       = '.act';     // pripona aktivovanych souboru

      {Parametry ovlivnujici ovladani programu}
      MaxRoiNum    = 20;         // max. poct polozek v ComboBoxu ROI
      TestSDO_AIA  = false;      // testovat zde je obraz z SDO AIA. Pokud ne, tak odmitnout
      CtrDisplay   = false;      // zda stale prekreslovat obraz pri pohybu TrackBaru
      MaxThreadNum = 64;         // max. povoleny pocet vlaken pro vypocet ekvalizace
      DisplayAign  = false;      // zda vypisovat stred a otoceni obrazu pro SDO/AIA
      AutoStretch  = false;      // zda pri nacteni obrazu nastavit automaticky Stretch
      KerDisplay   = true;       // zda na DblClick ScrollBoxu vakreslit 1D graf Ker 

      {Font pro vypis textu do obrazu}
      FontName     = 'Courier New';

type  TRoiItem = record
                   Width  : integer;
                   Height : integer;
                   Text   : string
                 end;
      TKer = array[-MaxKerSize..MaxKerSize,-MaxKerSize..MaxKerSize] of single;
      TFontPar = record
                   Top  : integer;
                   Left : integer;
                   Size : integer;
                 end;


var  HomeDir       : string;         // adresar, ve kterem je exe
     ImgFileName   : string;         // nazev obr. souboru s cestou
     ImgFileNameEx : string;         // nazev obr. souboru bez cesty
     ImgFileDir    : string;         // adresar ve, keterem je obraz
     ImgFileExt    : string;         // pripona obraz. souboru (velka pismena)
     EQFileName    : string;         // nazev souboru pro ekvalizovany obraz
     EQAutoSave    : boolean=false;  // zda automaticky ukladat ekvalizovane obrazy
     EQDir         : string;         // adresar pro ukladani ekvalizovanych obrazu
     Info          : TImgRec;        // info o obraze
     Img           : pointer;        // pointer na vstupni obraz (16bit, BW)
     ImgGamma      : pointer;        // pointer na obraz s gama korekci (16bit, BW)
     ImgEQ         : pointer;        // pointer na ekvalizovany obraz (16bit, BW)
     ImgResult     : pointer;        // pointer na vysledny obraz (16bit, BW)
     ImgPom        : pointer;        // pomocny obraz (alokuje se dle potreby)
     Stretch       : integer;        // zmenseni obrazu pro zobraeni
     StretchFit    : integer;        // min. Stretch bez ScrollBaru
     RoiSet        : boolean;        // zda je nastaveno ROI (false = Full frame)
     RoiLeft       : integer;        // ROI
     RoiTop        : integer;        // -"-
     RoiWidth      : integer;        // -"-
     RoiHeight     : integer;        // -"-
     Black         : word;           // hodnota pixelu pro cernou
     White         : word;           // hodnota pixelu pro bilou
     OutputBlack   : word;           // hodnota pixelu pro cernou ve vyslednem obraze
     OutputWhite   : word;           // hodnota pixelu pro bilou  ve vyslednem obraze
     Gamma         : integer;        // Gamma/10 je skutecne gamma obrazu (tj. 10 je linearni), -1 je sRGB
     KerSize       : integer;
     Ker           : TKer;
     NRSigma       : integer;         // Sigma pro vypocet jadra konvoluce pro redukci histogramu pro SDO AIA
     NRKerSize     : integer;         // -NRKerSize..NRKerSize velikost 1D jadra pro redukci sumu
     FKer          : array[-MaxNRKerSize..MaxNRKerSize] of single;
     FontSize      : integer;
     FontParArr    : array[1..10] of TFontPar;
     Loading       : boolean;        // zda se prave nacita obrazek
     FirstImage    : boolean;        // zda se nacita prvni obrazek po startu programu


     FullFrameActivated : boolean;  // zda byls spocitana ekvalizece pro cely obraz 
     EqWeight           : integer;  // vaha ekvalizovaneho obrazu v procentech
     ThreadNum          : integer;  // poct vlaken pro vypocet ekvalizace
     ProcessorNum       : integer;  // poct procesoru pocitace
     RoiCount           : integer;
     RoiArr             : array[0..MaxRoiNum] of TRoiItem;
     EQDirReadOnly      : boolean;  // zda je mozne ukladat aktivovane obrazy



     GlobalBlackWeight : single;
     LocalBlackWeight  : single;

     GlobalWhiteWeight : single;
     LocalWhiteWeight  : single;


     Gamma4500 : integer;
     Gamma1700 : integer;
     Gamma1600 : integer;
     Gamma304  : integer;
     Gamma335  : integer;
     Gamma211  : integer;
     Gamma193  : integer;
     Gamma171  : integer;
     Gamma131  : integer;
     Gamma94   : integer;

     Nafe4500  : integer;
     Nafe1700  : integer;
     Nafe1600  : integer;
     Nafe304   : integer;
     Nafe335   : integer;
     Nafe211   : integer;
     Nafe193   : integer;
     Nafe171   : integer;
     Nafe131   : integer;
     Nafe94    : integer;

     KerS_480  : single;
     KerS_320  : single;
     KerS_220  : single;
     KerS_160  : single;
     KerS_110  : single;
     KerS_80   : single;
     KerS_56   : single;
     KerS_40   : single;
     KerS_28   : single;
     KerS_20   : single;
     KerS_14   : single;
     KerS_10   : single;


implementation

end.
