Exemple #1
0
 Stroka TFormatOutput::Format(const char *str) {
     Stroka ret, Line;
     size_t pos = 0, len = strlen(str);
     do {
         pos = FormLine(str, pos, Line);
         ret += Line + "\n";
     } while(pos < len);
     return ret;
 }
Exemple #2
0
//---------------------------------------------------------------------------
int MakeFile(char* NameF)
{
int i,m, k;
int isTab;
int TabCount;
char s1[100],s2[100],s3[100];


	if ((ft = fopen(NameF, "w")) == NULL) return(-1);
  // 	 Обязательная часть - преамбула документа
	for (i = 0; i < 24; i++)    //  24 LINES Now!!!!!
	{
		fprintf(ft, "%s\n", DocBeg[i]);
	}
//......................................................

	 fprintf(ft,"%s",b_ffoot);
     fprintf(ft,"%s",k_ssm);
     fprintf(ft,"%s\n","\\ifthenelse{\\value{page}=\\pageref{LastPage}}");
	 Kegel = 6;
	 Algn  = 0; // Unknown!!!!!
	 P_cnt = 0;
	 LaufTab =0;
	 TabCount =0;
//.................. PageFooter Type ...........................................
	 isTab = 0;
	 for (i=0; i<Rep_cnt; i++)     // ищем Pagefooter
	 {
	  if ( Rep_st[i].Typ== 4)  //PageFooter Type
	  {
		bzero(&si[0], 400);
		if((isTab==1) && (Rep_st[i].Value==0))
            {sprintf(&a_si[P_cnt][0],"%s \n",e_tbl1);isTab=0;
                                        P_cnt++;TabCount=TabCount+2;}// Таблица кончилась - закрываем!
		if(Rep_st[i].Value>0)
        {
            if(isTab && (Rep_st[i].Value!=LaufTab))   // одна таблица сменяют другую
            {
                // закрываем текущую
                sprintf(&a_si[P_cnt][0],"%s \n",e_tbl1);isTab=0;P_cnt++;TabCount=TabCount+2;
            }
			if ((!isTab))
			{   isTab = 1;
                LaufTab = Rep_st[i].Value;
                sprintf(&a_si[P_cnt][0],"%s %s %i %s %i %s %i %s\n",b_tbl1,"p{",Rep_st[i].Cols[0],"mm}p{",Rep_st[i].Cols[1],"mm}p{",Rep_st[i].Cols[2],"mm}}");
                P_cnt++;
			}
        } //if(Rep_st[i].Value>0)!
        if(isTab)
        {
            bzero(&s1[0], 100);
            bzero(&s2[0], 100);
            bzero(&s3[0], 100);
            FormLineF(i);
            k = Translate(&Rep_st[i].Num[0]);
            if (k) Rep_st[i].Bold = 4; // TT Type must to use!
            save_si(&s1[0]);bzero(&si[0], 400);
            Translate(&Rep_st[i].NCand[0]);
            save_si(&s2[0]);bzero(&si[0], 400);
            Translate(&Rep_st[i].Txt[0]);
            sprintf(&a_si[P_cnt][0],"%s %s %s %s %s %s %s %s %s %s%s%i%s\n",fs1,fs2,fs3,fs4,s1,"&",s2,"&",si,c_eol,"[",Rep_st[i].Vsps,"pt]");
            P_cnt++;
        }
        else{
            k = Translate(&Rep_st[i].Txt[0]);
            if (k) Rep_st[i].Bold = 4; // TT Type must to use!
            if (FormLineF(i)>0)// CHECK for empty Txt inline FormLine()!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            {
                sprintf(&a_si[P_cnt][0],"%s %s%s%s%s %s %s%i%s\n",fs1,fs2,fs3,fs4,si,c_eol,"[",Rep_st[i].Vsps,"pt]");      // закончили строку подвала!
                P_cnt++;
            }
            }
	  } // Type == PageFooter
	 } // все просмотрели - заканчиваем footer
	 if(isTab){sprintf(&a_si[P_cnt][0],"%s \n",e_tbl1);isTab=0;
                                        P_cnt++;TabCount=TabCount+2;}// PageFooter кончилась - закрываем!
//!!!!!!!!!!!!!!!!!!! L A N G !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
         fprintf(ft,"%s%d%s","{\\vspace{",int(Kegel*1.3*2*(P_cnt-TabCount)),"pt}");
         if(Lang==0) fprintf(ft,"%s\n",e_ffoot);
         else fprintf(ft,"%s\n",en_ffoot);
    fprintf(ft,"%s","{");
    for(i=0;i<P_cnt;i++)
    {
        fprintf(ft,"%s",a_si[i]);
    }

    if(Lang==0) fprintf(ft,"%s\n",e_ffoot);
    else fprintf(ft,"%s\n",en_ffoot);
    fprintf(ft,"%s\n","}");
//......................End of PageFooter.......................................

	 fprintf(ft,"%s %i %s\n"," \\textheight = ",int(255-(Kegel*2.4*(P_cnt-TabCount))/2.65+0.5),"mm");

// ..................!!!!!! Begin DOKUMENT  !!!!!!!!!!! ........................
	fprintf(ft,"%s\n",b_doc);
	Kegel = 10;
	isTab = 0;
	 for (i=0; i<Rep_cnt; i++)     // просмотр для Head
	 {
	   if ( Rep_st[i].Typ== 1) { // Header Type
	     bzero(&si[0], 400);
		  k = Translate(&Rep_st[i].Txt[0]);
		  FormLine(i);
		  fprintf(ft,"%s %s\n",si,c_eol);
	   }  // end of Header
	  }  // End cicle for Head
//............................................................................
	   for (i=0; i<Rep_cnt; i++)     // просмотр для  ВСЕГО ТЕКСТА
	   {
	   if(Rep_st[i].Typ == 5)   // Immediate Command!!!
        fprintf(ft,"%s\n",Rep_st[i].Txt.c_str());

	   if ( Rep_st[i].Typ== 2)  // Table Type
	   {  	bzero(&si[0], 400);
            if(isTab && (Rep_st[i].Tab!=LaufTab))   // одна таблица сменяют другую
            {
                // закрываем текущую
                fprintf(ft,"%s \n",e_tbl);isTab=0;
            }
			if ((!isTab))
			{   isTab = 1;
                LaufTab = Rep_st[i].Tab;
			    FormLine(i);
				fprintf(ft,"%s",b_tbl);
			/*	k = Rep_st[i].Cols[0]+Rep_st[i].Cols[1]+Rep_st[i].Cols[2]+
					Rep_st[i].Cols[3]+Rep_st[i].Cols[4]; */
				k = abs(Rep_st[i].Cols[0])+abs(Rep_st[i].Cols[1])+abs(Rep_st[i].Cols[2])+
					abs(Rep_st[i].Cols[3])+abs(Rep_st[i].Cols[4]);
				double d = 160./k;
				fprintf(ft,"%s"," {");
				for	(m=0;m<5;m++)
				 if (Rep_st[i].Cols[m]!=0)
				   {
					  //fprintf(ft,"%s %i %s","p{",(int)(d*Rep_st[i].Cols[m]),"mm}");
					  fprintf(ft,"%s %i %s","p{",(int)(d*abs(Rep_st[i].Cols[m])),"mm}");
				   }
				fprintf(ft,"%s\n"," }");
			}
                for	(m=0;m<5;m++)
				 if (Rep_st[i].Cols[m]!=0)
				   {  switch (m)
					 { case 0:{
                            if(abs(Rep_st[i].Cols[0]==1)) fprintf(ft,"%s ",Rep_st[i].Txt.c_str());
                            else fprintf(ft,"%s ",Rep_st[i].Num.c_str());
                            if(Rep_st[i].Cols[0]<0)fprintf(ft,"%s",c_dotfill); //!!!!!!!!!!!
                            break;}
					   case 1:{fprintf(ft,"%s","&");
                            if (Rep_st[i].NCand.length()>0)fprintf(ft,"%s %s",
                            Rep_st[i].NCand.c_str(),". ");
                            if(Rep_st[i].Cols[1]<0)fprintf(ft,"%s",c_dotfill); //!!!!!!!!!!!
                            break;}
                       case 2:{fprintf(ft,"%s","&");fprintf(ft,"%s",Rep_st[i].Txt.c_str());
                            if(Rep_st[i].Cols[2]<0)fprintf(ft,"%s",c_dotfill); //!!!!!!!!!!!
                            break;}
					   case 3:{fprintf(ft,"%s %i","&",Rep_st[i].Value);
                            if(Rep_st[i].Cols[3]<0)fprintf(ft,"%s",c_dotfill); //!!!!!!!!!!!
                            break;}
					   case 4:{fprintf(ft,"%s %s","&",Rep_st[i].V_prop.c_str());break;}
					   default:;
					 }
					}  fprintf(ft,"%s %s %i %s\n",c_eol,"[",Rep_st[i].Vsps,"pt]");
	   }  // end of Body
	   if ( Rep_st[i].Typ== 3)  // Normal text Type
	   {  if(isTab){fprintf(ft,"%s \n",e_tbl);isTab=0;}
          bzero(&si[0], 400);
		  k = Translate(&Rep_st[i].Txt[0]);
		  FormLine(i);
		  fprintf(ft,"%s %s %s %i %s\n",si,c_eol,"[",Rep_st[i].Vsps,"pt]");
	   }
	  } // End cycle for Text
      if(isTab){fprintf(ft,"%s \n",e_tbl);isTab=0;}

//..............................................................................
    fprintf(ft,"%s \n","\\begin{figure}[ht]");
    for(i=0;i<P_cnt;i++)
        fprintf(ft,"%s",a_si[i]);
    fprintf(ft,"%s \n","\\end{figure}");


//..............................................................................
// !!! End of DOKUMENT  !!!!!!
	fprintf(ft,"%s\n",e_doc);
// Конец ТеХ файла - закрываем!
//	fprintf(ft,"%s \n",c_eol);
	fclose(ft);

return(1);
};