/*
Copyright (C) 2005 Piotr Wawrzyniak ([email protected])


Tutaj zawarte s� procedury odpowiedzialne za wczytanie lini z pliku
eps (wczytaj_linie) i pliku tex (wczytaj_linie_tex).

Here there are procedures that read line from eps file (wczytaj_linie)
and tex file (wczytaj_linie_tex)

*/
#include"czyt_zapis.h"
extern int debug_level;
extern int language;
int liczsobie;

int wczytaj_linie(char *linia,int *dlugosc, int DL_WIERSZA, ifstream &czyt)
{
 //miejmy pewno�� �e linia jest jednak naprawde wyzerowana
 for(liczsobie=0;liczsobie<DL_WIERSZA;liczsobie++)
   {
     linia[liczsobie]='\0';
   }


 if(debug_level)
   {
     if(language==0)
       {
         cout<<"**********************************"<<endl;
         cout<<"Funkcjon wczytaj_linie"<<endl;
       }
     else
       {
         cout<<"**********************************"<<endl;
         cout<<"Function wczytaj_linie"<<endl;
       }
   }
 char pomocnicza[DL_WIERSZA],c;
 pomocnicza[0]=pomocnicza[1]=pomocnicza[2]='\0';
 int licznik=0;
 //    if(czyt.eof())return 1;
 //if(czyt) cout<<"Nie moge znale~~ pliku"<<endl;
 if(debug_level)
   {
     if(language==0)
       {
         cout<<"Czytam z pliku z pozycji "<<endl<<czyt.tellg()<<endl;
       }
     else
       {
         cout<<"I am reading from file at the position: "<<czyt.tellg()<<endl;
       }
   }
 do
   {
     if(!czyt.get(c))
       return 1;
     else
       pomocnicza[licznik++]=c;
     pomocnicza[licznik]='\0';
   }

 while((c!='\n')&&(c!=EOF)&&(licznik<(DL_WIERSZA-17)));

 *dlugosc=licznik;
 strcpy(linia,pomocnicza);
 linia[licznik]='\0';
 if(debug_level)
   {
     if(language==0)
       {
         cout<<"Linia zosta�a przeczytana. Pozycja w pliku: "
             <<(czyt.tellg())<<endl
             <<"Przeczytana linia: "<<linia<<endl
             <<"Koniec funkcji czytaj�cej linie."<<endl
             <<"==========================================";

       }
     else
       {
         cout<<"The line is now read. The position in the file: "
             <<(czyt.tellg())<<endl
             <<"The read line: "<<linia<<endl
             <<"End of reading line function."<<endl
             <<"==========================================";
       }
   }
 return 0;
}

int wczytaj_linie_tex(char *linia,int *dlugosc, int dl_WIERSZA, ifstream &czyt)
{
 char pomocnicza[dl_WIERSZA],c[2],b[2];
 int licznik=0;

 if(debug_level)
   {
     if(language==0)
       {
         cout<<"*************************************************"<<endl
             <<"Funkcja wczytaj_linie_tex"<<endl;
       }
     else
       {
         cout<<"*************************************************"<<endl
             <<"Function wczytaj_linie_tex"<<endl;
       }
   }
 //wczytaj pierwszy znak ewentualnie mo�e to by� koniec pliku
 if(!czyt.get(c[0]))
   return 1;
 else
   {
     pomocnicza[licznik++]=c[0];
     pomocnicza[licznik]='\0';
   }
 int czy_skonczyc=1;
 do
   {
     if(!czyt.get(c[0]))
       return 1;
     else
       {
         pomocnicza[licznik++]=c[0];
         pomocnicza[licznik]='\0';
       }
     if (c[0]=='\\')
       {
         czy_skonczyc=0;
         licznik--;
         czyt.seekg(-1,ios::cur);
       }
     //char b[2]       ;
     if(!czyt.get(b[0]))
       czy_skonczyc=0;
     else
       czyt.seekg(-1,ios::cur);
 }

 while((c[0]!='\n')&&(licznik<(dl_WIERSZA-17))&&czy_skonczyc);
 *dlugosc=licznik;
 strcpy(linia,pomocnicza);
 if(debug_level)
   {
     if(language==0)
       {
         cout<<"Przeczytana linia w pliku TeX: "<<linia<<endl
             <<"Koniec funkcji wczytaj_linie_tex"<<endl
             <<"==========================================="<<endl;
       }
     else
       {
         cout<<"Read line in TeX file: "<<linia<<endl
             <<"The end of the wczytaj_linie_tex function"<<endl
             <<"==========================================="<<endl;
       }
   }
 linia[licznik]='\0';
 return 0;
}