unit UGrafica;

interface
Uses Graph, CRT, UCalc3D, UCalcVec;
{---------------------------------------------------------------}
var MidX, MidY: word; {Mijlocul ecranului}
{---------------------------------------------------------------}
function InitGr: boolean;
function ChgPage: byte; {Schimba pagina activa cu cea vizuala}
function Line2D(p1, p2: TVec2Real): boolean;

{---------------------------------------------------------------}
implementation
var Page: byte;
{---------------------------------------------------------------}
function InitGr: boolean;
var GD, GM: integer;
begin
   GD := Detect;
   InitGraph(GD, GM, '');
   MidX := GetMaxX div 2;
   MidY := GetMaxY div 2;
   InitGr := GraphResult = 0;
end;
{---------------------------------------------------------------}
function ChgPage: byte;
begin
  SetActivePage(Page mod 2);        {Pagina pe care se deseneaza}
  if(Page=255)then Page := 0 else
  inc(Page);                        {Page = 0 sau 1}
  SetVisualPage(Page mod 2, true);        {Pagina care se afiseaza}
  ClearViewPort;                    {Pagina activa se sterge}
  ChgPage := Page;
end;
{---------------------------------------------------------------}
function Line2d(p1, p2: TVec2Real): boolean;
var i1,i2: TVec2Int;
begin
   {??? punctele pot iesi in afara limitelor ecranului}
   i1[1] := round(p1[1]);
   i2[1] := round(p2[1]);
   i1[2] := round(p1[2]);
   i2[2] := round(p2[2]);
   Line(MidX + i1[1], MidY - i1[2], MidX + i2[1], MidY - i2[2])
end;
{---------------------------------------------------------------}

end.
