/* $Revision Header *** Header built automatically - do not edit! ***********
 *
 *	(C) Copyright 1991 by Metalworx
 *
 *	Name .....: zeit_angabe.c
 *	Created ..: Fri 18-Oct-91 10:58
 *	Revision .: 1
 *
 *	Date		Author		Comment
 *	=========	========	====================
 *	26-Apr-92       Mtwx            Anpassungen an diverse Mathe-Modelle
 *	18-Oct-91	Mtwx		Created this file!
 *
 * $Revision Header ********************************************************/
 #define REVISION 1

/***************************************************************************
* zeit_angabe.c: berechnet aus der Startzeit und der aktuellen Zeit eine   *
*		 Zeit, die das voraussichtliche Ende des Zeichenvorgangs   *
*		 errechnet. Wird nach jedem Atom neu berechnet		   *
***************************************************************************/

/* ------------------------------- includes ----------------------------- */

#include <stdio.h>
#include "mathlibs.h"
#include <proto/intuition.h>

#include <mtwx_defs.h>

#include "messages.h"
#include "zeit_angabe.h"
#include "chem_defs.h"

/* ------------------------------- global references -------------------- */

struct Window *timewin;

/* ------------------------------- external references ------------------ */

extern int HEIGHT,atomanz;
extern long conwin;
extern ATOMTYP *a[];

extern struct Screen *FirstScreen;

/* ------------------------------- prototypes --------------------------- */

extern void SimpleRequest(char *,...);

/* ------------------------------- routines ----------------------------- */

void zeit_angabe(int n,long stime, long ntime)
{
  int i,rsumme=0,rschnitt;
  long vtime,etime;
  char line1[36],line2[36];

  vtime=ntime-stime;
  sprintf(line1,"Atom %2s: %03d/%03d  %s: %03d.%02d min",a[n]->name,n,
	  atomanz,TIME_TEXT1,vtime/60,vtime%60);
  for(i=1;i<=n;i++)
    rsumme+=(int)(PI*a[i]->r*a[i]->r);
  rschnitt=rsumme/n;
  rsumme=0;
  if(n<atomanz)
  {
    for(i=n+1;i<=atomanz;i++)
      rsumme+=(int)(PI*a[i]->r*a[i]->r);
  }
  etime=(int)((rsumme/(float)rschnitt)*(vtime/n)+vtime);
  sprintf(line2,"%s: %03d.%02d min",TIME_TEXT2,etime/60,etime%60);
  Print(timewin,line1,2,0,8,19);
  Print(timewin,line2,2,0,8,27);
}

BOOL prepare_zeitinfo(atomanz)
{
  ZeitFenster.Screen=FirstScreen;
  if(!(timewin=OpenWindow(&ZeitFenster)))
  {
    DisplayBeep(0L);
    WrConWin(conwin,NO_TIME_WIN);
    SimpleRequest(NO_TIME_WIN);
    return FALSE;  /* Fehler! */
  }
  Print(timewin,TIME_TEXT3,2,0,8,19);
  return TRUE;
}

