#ifndef GoutH
#define GoutH
#include <vcl.h>
#define LSTR  101

/*----------------------------------------------------*/
/*   структура, определяющая рисунок                  */
/*----------------------------------------------------*/
typedef struct {
    int  op;    /* номер операции */
    int  type;  /* тип линии */
    double pf;  /* положение оси X 1/0/-1 */
    double py;  /* положение нуля Y */
    double xo;  /* формат рисунка по X */
    double yo;  /* формат рисунка по Y */
    double xr;  /* размер поля графика по X */
    double yr;  /* размер поля графика по Y */
    double stx; /* шаг разметки по X */
    double sty; /* шаг разметки по Y */
    double xt;  /* координата начала текста по X */
    double yt;  /* координата начала текста по Y */
    double x0;  /* начало оцифровки оси X */
    double y00; /* начало очифровки оси Y */
    double x;
    double y;
    double hi;  /* высота символов */
    double it;  /* угол наклона букв */
    double an;  /* угол наклона строки текстта */
    double mx;  /* масштаб по оси X */
    double my;  /* масштаб по оси Y */
    double mf;  /* масштаб функции */
    char  formx[10];  /* формат оцифровки по оси X */
    char  formy[10];  /* формат оцифровки по оси Y */
    char  ei[10];     /* единица измерения функции */
    char  mark[10];   /* код маркера */
    char  nx[20];     /* имя функции по оси X */
    char  gx[20];     /* название аргумента */
    char  ny[20];     /* имя шкалы по оси Y */
    char  nf[20];     /* имя функции */
    char  gf[100];    /* название функции */
    char  fi[32];     /* имя файла результатов */
    char  str[LSTR];
} NOP;

typedef struct {
   bool type_func;
   double mf;
   char nf[20];
   char gf[30];
   char ei[10];
   char fi[80];
   char mark[2];
   int mark_size;
   int mark_step;
   int mark_shift;
} Func;

void g_mf(NOP* nop);
void g_mout(double x, double y);
void g_str(double x, double y, char *str);
void g_ot(double x, double y);
void g_bot(double x, double y);
void g_cyrc(double rad);
void g_squar();
void g_trian(double ss);
void g_smul();
void g_ssum();
void g_h(double h);
void g_it(double h);
void g_an(double h);
void g_mark(char* m);
void g_type(int type);
int g_pg(NOP * nop);
void sout(char *st);
void four(double x);
int g_rpar(NOP* nop);
int g_fun(NOP* nop);
int g_funt(NOP* nop);
void g_x(NOP* nop);
void g_vir(double t, double y, char* str);
void g_y(NOP* nop);
int g_gr(NOP* nop);
void g_outop(char *form);
void g_outc(char *form, char * str);
void g_oute(char *form, double num);
void g_outi(char * form,int num);
void pAx_X(TMetafileCanvas *pCanvas, NOP* nop);
void pAx_Y(TMetafileCanvas *pCanvas, NOP* nop);
void pSetka(TMetafileCanvas *pCanvas, NOP* nop);
void pFont(TMetafileCanvas *pCanvas, NOP* nop);
void g_mout_(TMetafileCanvas *pCanvas, double x, double y);
void g_ot_(TMetafileCanvas *pCanvas, double x, double y);
void g_bot_(TMetafileCanvas *pCanvas, double x, double y);
void g_vir_(TMetafileCanvas *pCanvas, double x, double y, char *str);
void g_str_(TMetafileCanvas *pCanvas, double x, double y, char *str);
void g_text(double x, double y, char *str);
void g_mout_(TMetafileCanvas *pCanvas, double x, double y);
void g_cyrc_(TMetafileCanvas *pCanvas,double rad);
void g_squar_(TMetafileCanvas *pCanvas);
void g_trian_(TMetafileCanvas *pCanvas,double ss);
void g_smul_(TMetafileCanvas *pCanvas);
void g_ssum_(TMetafileCanvas *pCanvas);
#endif

