Code beautification with uncrustify
[alexxy/gromacs.git] / src / ngmx / manager.c
index 23f883189f79e38f87f7a52b341b293171884140..cf4d4c0dd7107967c621e2420aaadf324d51a565 100644 (file)
@@ -1,11 +1,11 @@
 /*
- * 
+ *
  *                This source code is part of
- * 
+ *
  *                 G   R   O   M   A   C   S
- * 
+ *
  *          GROningen MAchine for Chemical Simulations
- * 
+ *
  *                        VERSION 3.2.0
  * Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * modify it under the terms of the GNU General Public License
  * as published by the Free Software Foundation; either version 2
  * of the License, or (at your option) any later version.
- * 
+ *
  * If you want to redistribute modifications, please consider that
  * scientific software is very special. Version control is crucial -
  * bugs must be traceable. We will be happy to consider code for
  * inclusion in the official distribution, but derived work must not
  * be called official GROMACS. Details are found in the README & COPYING
  * files - if they are missing, get the official version at www.gromacs.org.
- * 
+ *
  * To help us fund GROMACS development, we humbly ask that you cite
  * the papers on the package - you can find them in the top README file.
- * 
+ *
  * For more info, check our website at http://www.gromacs.org
- * 
+ *
  * And Hey:
  * Gyas ROwers Mature At Cryogenic Speed
  */
 #include "statutil.h"
 #include "string2.h"
 
-static void add_object(t_manager *man,eObject eO,atom_id ai,atom_id aj)
+static void add_object(t_manager *man, eObject eO, atom_id ai, atom_id aj)
 {
-  srenew(man->obj,++man->nobj);
-  man->obj[man->nobj-1].eO    = eO;
-  man->obj[man->nobj-1].eV    = eVNormal;
-  man->obj[man->nobj-1].color = WHITE;
-  man->obj[man->nobj-1].ai    = ai;
-  man->obj[man->nobj-1].aj    = aj;
-  man->obj[man->nobj-1].z     = 0.0;
+    srenew(man->obj, ++man->nobj);
+    man->obj[man->nobj-1].eO    = eO;
+    man->obj[man->nobj-1].eV    = eVNormal;
+    man->obj[man->nobj-1].color = WHITE;
+    man->obj[man->nobj-1].ai    = ai;
+    man->obj[man->nobj-1].aj    = aj;
+    man->obj[man->nobj-1].z     = 0.0;
 }
 
-static void add_bonds(t_manager *man,t_functype func[],
-                     t_ilist *b,gmx_bool bB[])
+static void add_bonds(t_manager *man, t_functype func[],
+                      t_ilist *b, gmx_bool bB[])
 {
-  gmx_bool    *bH=man->bHydro;
-  t_iatom *ia;
-  t_iatom type,ai,aj,ak;
-  int     i,delta,ftype;
-  
+    gmx_bool    *bH = man->bHydro;
+    t_iatom     *ia;
+    t_iatom      type, ai, aj, ak;
+    int          i, delta, ftype;
+
 #ifdef DEBUG
-  fprintf(stderr,"Going to make bonds from an ilist with %d entries\n",b->nr);
+    fprintf(stderr, "Going to make bonds from an ilist with %d entries\n", b->nr);
 #endif
-  ia=b->iatoms;
-  for(i=0; (i<b->nr); ) {
-    type  = ia[0];
-    ai    = ia[1];
-    ftype = func[type];
-    delta = interaction_function[ftype].nratoms;
-    
-    if (ftype == F_SETTLE) {
-      aj = ia[2];
-      ak = ia[3];
-      bB[ai]=bB[aj]=bB[ak]=TRUE;
-      add_object(man,eOHBond,ai,aj);
-      add_object(man,eOHBond,ai,ak);
-    }
-    else if (IS_CHEMBOND(ftype)) {
-      aj=ia[2];
+    ia = b->iatoms;
+    for (i = 0; (i < b->nr); )
+    {
+        type  = ia[0];
+        ai    = ia[1];
+        ftype = func[type];
+        delta = interaction_function[ftype].nratoms;
+
+        if (ftype == F_SETTLE)
+        {
+            aj     = ia[2];
+            ak     = ia[3];
+            bB[ai] = bB[aj] = bB[ak] = TRUE;
+            add_object(man, eOHBond, ai, aj);
+            add_object(man, eOHBond, ai, ak);
+        }
+        else if (IS_CHEMBOND(ftype))
+        {
+            aj = ia[2];
 #ifdef DEBUG
-      fprintf(stderr,"Adding bond from %d to %d\n",ai,aj);
+            fprintf(stderr, "Adding bond from %d to %d\n", ai, aj);
 #endif
-      bB[ai]=bB[aj]=TRUE;
-      if (!(bH[ai] == bH[aj])) 
-       add_object(man,eOHBond,ai,aj);
-      else if (!bH[ai] && !bH[aj]) 
-       add_object(man,eOBond,ai,aj);
-    }
+            bB[ai] = bB[aj] = TRUE;
+            if (!(bH[ai] == bH[aj]))
+            {
+                add_object(man, eOHBond, ai, aj);
+            }
+            else if (!bH[ai] && !bH[aj])
+            {
+                add_object(man, eOBond, ai, aj);
+            }
+        }
 #ifdef DEBUG
-    fprintf(stderr,"Type: %5d, delta: %5d\n",type,delta);
+        fprintf(stderr, "Type: %5d, delta: %5d\n", type, delta);
 #endif
-    ia += delta+1;
-    i  += delta+1;
-  }
+        ia += delta+1;
+        i  += delta+1;
+    }
 }
 
-static void add_bpl(t_manager *man,t_idef *idef,gmx_bool bB[])
+static void add_bpl(t_manager *man, t_idef *idef, gmx_bool bB[])
 {
-  int ftype;
-
-  for(ftype=0; ftype<F_NRE; ftype++)
-    if (IS_CHEMBOND(ftype) || ftype==F_SETTLE)
-      add_bonds(man,idef->functype,&idef->il[ftype],bB);
+    int ftype;
+
+    for (ftype = 0; ftype < F_NRE; ftype++)
+    {
+        if (IS_CHEMBOND(ftype) || ftype == F_SETTLE)
+        {
+            add_bonds(man, idef->functype, &idef->il[ftype], bB);
+        }
+    }
 }
-static atom_id which_atom(t_manager *man,int x, int y)
+
+static atom_id which_atom(t_manager *man, int x, int y)
 {
 #define DELTA 5
-  int i;
-  iv2 *ix=man->ix;
-
-  for(i=0; (i<man->natom); i++) {
-    if ((abs(ix[i][XX]-x) < DELTA) && (abs(ix[i][YY]-y) < DELTA)) {
-      if (man->bVis[i]) 
-       return (atom_id) i;
+    int  i;
+    iv2 *ix = man->ix;
+
+    for (i = 0; (i < man->natom); i++)
+    {
+        if ((abs(ix[i][XX]-x) < DELTA) && (abs(ix[i][YY]-y) < DELTA))
+        {
+            if (man->bVis[i])
+            {
+                return (atom_id) i;
+            }
+        }
     }
-  }
-  return NO_ATID;
+    return NO_ATID;
 }
 
-static void do_label(t_x11 *x11,t_manager *man,int x,int y,gmx_bool bSet)
+static void do_label(t_x11 *x11, t_manager *man, int x, int y, gmx_bool bSet)
 {
-  atom_id ai;
-  unsigned long   col;
-
-  if ((ai=which_atom(man,x,y)) != NO_ATID) {
-    x=man->ix[ai][XX];
-    y=man->ix[ai][YY];
-    if (bSet && !man->bLabel[ai]) {
-      col=WHITE;
-      man->bLabel[ai]=TRUE;
-    }
-    else if (!bSet && man->bLabel[ai]) {
-      col=BLUE;
-      man->bLabel[ai]=FALSE;
+    atom_id         ai;
+    unsigned long   col;
+
+    if ((ai = which_atom(man, x, y)) != NO_ATID)
+    {
+        x = man->ix[ai][XX];
+        y = man->ix[ai][YY];
+        if (bSet && !man->bLabel[ai])
+        {
+            col             = WHITE;
+            man->bLabel[ai] = TRUE;
+        }
+        else if (!bSet && man->bLabel[ai])
+        {
+            col             = BLUE;
+            man->bLabel[ai] = FALSE;
+        }
+        else
+        {
+            return;
+        }
+        XSetForeground(x11->disp, x11->gc, col);
+        XDrawString(x11->disp, man->molw->wd.self, x11->gc, x+2, y-2, man->szLab[ai],
+                    strlen(man->szLab[ai]));
+        XSetForeground(x11->disp, x11->gc, x11->fg);
     }
-    else
-      return;
-    XSetForeground(x11->disp,x11->gc,col);
-    XDrawString(x11->disp,man->molw->wd.self,x11->gc,x+2,y-2,man->szLab[ai],
-               strlen(man->szLab[ai]));
-    XSetForeground(x11->disp,x11->gc,x11->fg);
-  }
 }
 
-static void show_label(t_x11 *x11,t_manager *man,int x,int y)
+static void show_label(t_x11 *x11, t_manager *man, int x, int y)
 {
-  do_label(x11,man,x,y,TRUE);
+    do_label(x11, man, x, y, TRUE);
 }
 
-static void hide_label(t_x11 *x11,t_manager *man,int x,int y)
+static void hide_label(t_x11 *x11, t_manager *man, int x, int y)
 {
-  do_label(x11,man,x,y,FALSE);
+    do_label(x11, man, x, y, FALSE);
 }
 
-void set_file(t_x11 *x11,t_manager *man,const char *trajectory,
+void set_file(t_x11 *x11, t_manager *man, const char *trajectory,
               const char *status)
 {
-  gmx_atomprop_t aps;
-  char         buf[256],quote[256];
-  t_tpxheader  sh;
-  t_atoms      *at;
-  gmx_bool         *bB;
-  int          i,idum;
-
-  read_tpxheader(status,&sh,TRUE,NULL,NULL);
-  snew(man->ix,sh.natoms);
-  snew(man->zz,sh.natoms);
-  snew(man->col,sh.natoms);
-  snew(man->size,sh.natoms);
-  snew(man->vdw,sh.natoms);
-  snew(man->bLabel,sh.natoms);
-  snew(man->bVis,sh.natoms);
-  for(i=0; (i<sh.natoms); i++)
-    man->bVis[i]=FALSE;
-
-  man->bPbc=FALSE;
-
-  snew(man->szLab,sh.natoms);
-  snew(man->bHydro,sh.natoms);
-  snew(bB,sh.natoms);
-  read_tpx_top(status,NULL,man->box,&man->natom,NULL,NULL,NULL,&man->top);
-  man->gpbc = gmx_rmpbc_init(&man->top.idef,-1,man->natom,man->box);
-  
-  man->natom=
-    read_first_x(man->oenv,&man->status,trajectory,&(man->time),&(man->x),
-                 man->box);
-  man->trajfile=strdup(trajectory);
-  if (man->natom > man->top.atoms.nr)
-    gmx_fatal(FARGS,"Topology %s (%d atoms) and trajectory %s (%d atoms) "
-               "do not match",status,man->top.atoms.nr,
-               trajectory,man->natom);
-  cool_quote(quote,255,NULL);
-  sprintf(buf,"%s: %s",*man->top.name,quote);
-  man->title.text = strdup(buf);
-  man->view       = init_view(man->box);
-  at  = &(man->top.atoms);
-  aps = gmx_atomprop_init();
-  for(i=0; (i<man->natom); i++) {
-    char *aname=*(at->atomname[i]);
-    t_resinfo *ri=&at->resinfo[at->atom[i].resind];
-
-    man->col[i]=Type2Color(aname);
-    snew(man->szLab[i],20);
-    if (ri->ic != ' ') {
-      sprintf(man->szLab[i],"%s%d%c, %s",*ri->name,ri->nr,ri->ic,aname);
-    } else {
-      sprintf(man->szLab[i],"%s%d, %s",*ri->name,ri->nr,aname);
+    gmx_atomprop_t    aps;
+    char              buf[256], quote[256];
+    t_tpxheader       sh;
+    t_atoms          *at;
+    gmx_bool         *bB;
+    int               i, idum;
+
+    read_tpxheader(status, &sh, TRUE, NULL, NULL);
+    snew(man->ix, sh.natoms);
+    snew(man->zz, sh.natoms);
+    snew(man->col, sh.natoms);
+    snew(man->size, sh.natoms);
+    snew(man->vdw, sh.natoms);
+    snew(man->bLabel, sh.natoms);
+    snew(man->bVis, sh.natoms);
+    for (i = 0; (i < sh.natoms); i++)
+    {
+        man->bVis[i] = FALSE;
     }
-    man->bHydro[i]=(toupper(aname[0])=='H');
-    if ( man->bHydro[i] )
-      man->vdw[i]=0;
-    else if (!gmx_atomprop_query(aps,epropVDW,*ri->name,aname,&(man->vdw[i])))
-      man->vdw[i] = 0;
-  }
-  gmx_atomprop_destroy(aps);
-  add_bpl(man,&(man->top.idef),bB);
-  for(i=0; (i<man->natom); i++)
-    if (!bB[i]) 
-      add_object(man,eOSingle,(atom_id) i,0);
-  sfree(bB);
-
-  ExposeWin(x11->disp,man->molw->wd.self);
-}
 
-void step_message(t_x11 *x11,t_manager *man)
-{
-  XEvent letter;
-
-  letter.type=ClientMessage;
-  letter.xclient.display=x11->disp;
-  letter.xclient.window=man->wd.self;
-  letter.xclient.message_type=0;
-  letter.xclient.format=32;
-  letter.xclient.data.l[0]=IDSTEP;
-  letter.xclient.data.l[1]=Button1;
-  XSendEvent(x11->disp,letter.xclient.window,True,0,&letter);
+    man->bPbc = FALSE;
+
+    snew(man->szLab, sh.natoms);
+    snew(man->bHydro, sh.natoms);
+    snew(bB, sh.natoms);
+    read_tpx_top(status, NULL, man->box, &man->natom, NULL, NULL, NULL, &man->top);
+    man->gpbc = gmx_rmpbc_init(&man->top.idef, -1, man->natom, man->box);
+
+    man->natom =
+        read_first_x(man->oenv, &man->status, trajectory, &(man->time), &(man->x),
+                     man->box);
+    man->trajfile = strdup(trajectory);
+    if (man->natom > man->top.atoms.nr)
+    {
+        gmx_fatal(FARGS, "Topology %s (%d atoms) and trajectory %s (%d atoms) "
+                  "do not match", status, man->top.atoms.nr,
+                  trajectory, man->natom);
+    }
+
+    cool_quote(quote, 255, NULL);
+    sprintf(buf, "%s: %s", *man->top.name, quote);
+    man->title.text = strdup(buf);
+    man->view       = init_view(man->box);
+    at              = &(man->top.atoms);
+    aps             = gmx_atomprop_init();
+    for (i = 0; (i < man->natom); i++)
+    {
+        char      *aname = *(at->atomname[i]);
+        t_resinfo *ri    = &at->resinfo[at->atom[i].resind];
+
+        man->col[i] = Type2Color(aname);
+        snew(man->szLab[i], 20);
+        if (ri->ic != ' ')
+        {
+            sprintf(man->szLab[i], "%s%d%c, %s", *ri->name, ri->nr, ri->ic, aname);
+        }
+        else
+        {
+            sprintf(man->szLab[i], "%s%d, %s", *ri->name, ri->nr, aname);
+        }
+        man->bHydro[i] = (toupper(aname[0]) == 'H');
+        if (man->bHydro[i])
+        {
+            man->vdw[i] = 0;
+        }
+        else if (!gmx_atomprop_query(aps, epropVDW, *ri->name, aname, &(man->vdw[i])))
+        {
+            man->vdw[i] = 0;
+        }
+    }
+    gmx_atomprop_destroy(aps);
+    add_bpl(man, &(man->top.idef), bB);
+    for (i = 0; (i < man->natom); i++)
+    {
+        if (!bB[i])
+        {
+            add_object(man, eOSingle, (atom_id) i, 0);
+        }
+    }
+    sfree(bB);
+
+    ExposeWin(x11->disp, man->molw->wd.self);
 }
 
-gmx_bool ReadMonfile(char *fn,int *nbars, int *bars)
+void step_message(t_x11 *x11, t_manager *man)
 {
-  FILE *fp;
-  if ((fp = fopen(fn,"r"))==NULL) 
-    return(FALSE);
-  else {
-    for((*nbars)=0; fscanf(fp,"%d",&bars[*nbars])>0; (*nbars)++)
-      ;
-    fclose(fp);
-    return (TRUE);
-  }
+    XEvent letter;
+
+    letter.type                 = ClientMessage;
+    letter.xclient.display      = x11->disp;
+    letter.xclient.window       = man->wd.self;
+    letter.xclient.message_type = 0;
+    letter.xclient.format       = 32;
+    letter.xclient.data.l[0]    = IDSTEP;
+    letter.xclient.data.l[1]    = Button1;
+    XSendEvent(x11->disp, letter.xclient.window, True, 0, &letter);
 }
 
-static void reset_mols(t_block *mols,matrix box,rvec x[])
+gmx_bool ReadMonfile(char *fn, int *nbars, int *bars)
 {
-  int  i,m0,m1,j,m;
-  rvec xcm,icm;
-  real ix,iy,iz;
-  
-  for(i=0; (i<mols->nr); i++) {
-    m0=mols->index[i];
-    m1=mols->index[i+1];
-    
-    clear_rvec(xcm);
-    clear_rvec(icm);
-    
-    for(j=m0; (j<m1); j++) {
-      rvec_inc(xcm,x[j]);
+    FILE *fp;
+    if ((fp = fopen(fn, "r")) == NULL)
+    {
+        return(FALSE);
     }
-    for(m=0; (m<DIM); m++)
-      xcm[m]/=(m1-m0);
-    for(m=0; (m<DIM); m++) {
-      if (xcm[m] < 0) 
-       icm[m]=box[m][m];
-      else if (xcm[m] >= box[m][m]) 
-       icm[m]=-box[m][m];
+    else
+    {
+        for ((*nbars) = 0; fscanf(fp, "%d", &bars[*nbars]) > 0; (*nbars)++)
+        {
+            ;
+        }
+        fclose(fp);
+        return (TRUE);
     }
-    ix=icm[XX],iy=icm[YY],iz=icm[ZZ];
-    
-    if ((ix != 0) || (iy != 0) || (iz != 0)) {
-      for(j=m0; (j<m1); j++) {
-       x[j][XX]+=ix;
-       x[j][YY]+=iy;
-       x[j][ZZ]+=iz;
-      }
+}
+
+static void reset_mols(t_block *mols, matrix box, rvec x[])
+{
+    int  i, m0, m1, j, m;
+    rvec xcm, icm;
+    real ix, iy, iz;
+
+    for (i = 0; (i < mols->nr); i++)
+    {
+        m0 = mols->index[i];
+        m1 = mols->index[i+1];
+
+        clear_rvec(xcm);
+        clear_rvec(icm);
+
+        for (j = m0; (j < m1); j++)
+        {
+            rvec_inc(xcm, x[j]);
+        }
+        for (m = 0; (m < DIM); m++)
+        {
+            xcm[m] /= (m1-m0);
+        }
+        for (m = 0; (m < DIM); m++)
+        {
+            if (xcm[m] < 0)
+            {
+                icm[m] = box[m][m];
+            }
+            else if (xcm[m] >= box[m][m])
+            {
+                icm[m] = -box[m][m];
+            }
+        }
+        ix = icm[XX], iy = icm[YY], iz = icm[ZZ];
+
+        if ((ix != 0) || (iy != 0) || (iz != 0))
+        {
+            for (j = m0; (j < m1); j++)
+            {
+                x[j][XX] += ix;
+                x[j][YY] += iy;
+                x[j][ZZ] += iz;
+            }
+        }
     }
-  }
 }
 
-static gmx_bool step_man(t_manager *man,int *nat)
+static gmx_bool step_man(t_manager *man, int *nat)
 {
-  static int  ncount=0;
-  static gmx_bool bWarn = FALSE;
-  gmx_bool        bEof;
-  int         dum;
-  const char *warn;
-
-  if (!man->natom) {
-    fprintf(stderr,"Not initiated yet!");
-    exit(1);
-  }
-  bEof=read_next_x(man->oenv,man->status,&man->time,man->natom,man->x,man->box);
-  *nat=man->natom;
-  if (ncount == man->nSkip) {
-    switch (man->molw->boxtype) {
-    case esbTri:
-      put_atoms_in_triclinic_unitcell(ecenterDEF,man->box,man->natom,man->x);
-      break;
-    case esbTrunc:
-      warn = put_atoms_in_compact_unitcell(man->molw->ePBC,ecenterDEF,man->box,
-                                          man->natom,man->x);
-      if (warn && !bWarn) {
-       fprintf(stderr,"\n%s\n",warn);
-       bWarn = TRUE;
-      }
-      break;
-    case esbRect:
-    case esbNone:
-    default:
-      break;
+    static int      ncount = 0;
+    static gmx_bool bWarn  = FALSE;
+    gmx_bool        bEof;
+    int             dum;
+    const char     *warn;
+
+    if (!man->natom)
+    {
+        fprintf(stderr, "Not initiated yet!");
+        exit(1);
     }
-    if (man->bPbc) {
-      gmx_rmpbc(man->gpbc,man->natom,man->box,man->x);
-      reset_mols(&(man->top.mols),man->box,man->x);
+    bEof = read_next_x(man->oenv, man->status, &man->time, man->natom, man->x, man->box);
+    *nat = man->natom;
+    if (ncount == man->nSkip)
+    {
+        switch (man->molw->boxtype)
+        {
+            case esbTri:
+                put_atoms_in_triclinic_unitcell(ecenterDEF, man->box, man->natom, man->x);
+                break;
+            case esbTrunc:
+                warn = put_atoms_in_compact_unitcell(man->molw->ePBC, ecenterDEF, man->box,
+                                                     man->natom, man->x);
+                if (warn && !bWarn)
+                {
+                    fprintf(stderr, "\n%s\n", warn);
+                    bWarn = TRUE;
+                }
+                break;
+            case esbRect:
+            case esbNone:
+            default:
+                break;
+        }
+        if (man->bPbc)
+        {
+            gmx_rmpbc(man->gpbc, man->natom, man->box, man->x);
+            reset_mols(&(man->top.mols), man->box, man->x);
+        }
+        ncount = 0;
     }
-    ncount=0;
-  }
-  else {
-    if (man->nSkip > 0) {
-      ncount++;
-      return step_man(man,nat);
+    else
+    {
+        if (man->nSkip > 0)
+        {
+            ncount++;
+            return step_man(man, nat);
+        }
     }
-  }
 
-  return bEof;
+    return bEof;
 }
 
-static void HandleClient(t_x11 *x11,t_manager *man,long data[])
+static void HandleClient(t_x11 *x11, t_manager *man, long data[])
 {
-  int  ID,button,x,y;
-  gmx_bool bPos;
-  real fac;
-
-  ID=data[0];
-  button=data[1];
-  x=data[2];
-  y=data[3];
-  bPos=(button==Button1);
-  switch (ID) {
-  case IDROTX:
-  case IDROTY:
-  case IDROTZ:
-    rotate_3d(man->view,ID-IDROTX,bPos);
-    draw_mol(x11,man);
-    break;
-  case IDZOOM:
-    if (bPos)
-      fac=0.8; /* Reduce distance between eye and origin */
-    else
-      fac=1.25;
-    
-    /*  zoom changed to scale by Berk Hess 3-7-96
-    if (zoom_3d(man->view,fac))
-      draw_mol(x11,man); */
-    man->view->sc_x/=fac;
-    man->view->sc_y/=fac;
-    draw_mol(x11,man);
-    break;
-  case IDTRANSX:
-  case IDTRANSY:
-  case IDTRANSZ:
-    translate_view(man->view,ID-IDTRANSX,bPos);
-    draw_mol(x11,man);
-    break;
-  case IDREWIND:
-    if (man->status) {
-      rewind_trj(man->status);
-      read_next_x(man->oenv,man->status,&(man->time),man->natom,man->x,
-                  man->box);
-      man->bEof=FALSE;
-      draw_mol(x11,man);
-    }
-    break;
-  case IDSTEP: {
-    int      nat;
-
-    nat=0;
-    if (!step_man(man,&nat)) {
-      man->bEof=TRUE;
-      man->bStop=TRUE;
-    }
-    else {
-      if (nat > 0) {
-       draw_mol(x11,man);
-       usleep(man->nWait*1000);
-      }
+    int      ID, button, x, y;
+    gmx_bool bPos;
+    real     fac;
+
+    ID     = data[0];
+    button = data[1];
+    x      = data[2];
+    y      = data[3];
+    bPos   = (button == Button1);
+    switch (ID)
+    {
+        case IDROTX:
+        case IDROTY:
+        case IDROTZ:
+            rotate_3d(man->view, ID-IDROTX, bPos);
+            draw_mol(x11, man);
+            break;
+        case IDZOOM:
+            if (bPos)
+            {
+                fac = 0.8; /* Reduce distance between eye and origin */
+            }
+            else
+            {
+                fac = 1.25;
+            }
+
+            /*  zoom changed to scale by Berk Hess 3-7-96
+               if (zoom_3d(man->view,fac))
+               draw_mol(x11,man); */
+            man->view->sc_x /= fac;
+            man->view->sc_y /= fac;
+            draw_mol(x11, man);
+            break;
+        case IDTRANSX:
+        case IDTRANSY:
+        case IDTRANSZ:
+            translate_view(man->view, ID-IDTRANSX, bPos);
+            draw_mol(x11, man);
+            break;
+        case IDREWIND:
+            if (man->status)
+            {
+                rewind_trj(man->status);
+                read_next_x(man->oenv, man->status, &(man->time), man->natom, man->x,
+                            man->box);
+                man->bEof = FALSE;
+                draw_mol(x11, man);
+            }
+            break;
+        case IDSTEP:
+        {
+            int      nat;
+
+            nat = 0;
+            if (!step_man(man, &nat))
+            {
+                man->bEof  = TRUE;
+                man->bStop = TRUE;
+            }
+            else
+            {
+                if (nat > 0)
+                {
+                    draw_mol(x11, man);
+                    usleep(man->nWait*1000);
+                }
+            }
+            break;
+        }
+        case IDFF:
+            man->bStop = FALSE;
+            break;
+        case IDSTOP_ANI:
+            man->bStop = TRUE;
+            break;
+        case IDDRAWMOL:
+            draw_mol(x11, man);
+            break;
+        case IDLABEL:
+            switch (button)
+            {
+                case Button1:
+                case Button2:
+                    show_label(x11, man, x, y);
+                    break;
+                case Button3:
+                    hide_label(x11, man, x, y);
+                    break;
+            }
+            break;
+        default:
+            break;
     }
-    break;
-  }
-  case IDFF:
-    man->bStop=FALSE;
-    break;
-  case IDSTOP_ANI:
-    man->bStop=TRUE;
-    break;
-  case IDDRAWMOL:
-    draw_mol(x11,man);
-    break;
-  case IDLABEL:
-    switch (button) {
-    case Button1:
-    case Button2:
-      show_label(x11,man,x,y);
-      break;
-    case Button3:
-      hide_label(x11,man,x,y);
-      break;
+    if (man->bAnimate && !man->bEof && !man->bStop)
+    {
+        step_message(x11, man);
     }
-    break;
-  default:
-    break;
-  }
-  if (man->bAnimate && !man->bEof && !man->bStop)
-    step_message(x11,man);
 }
 
-static gmx_bool TitleCallBack(t_x11 *x11,XEvent *event, Window w, void *data)
+static gmx_bool TitleCallBack(t_x11 *x11, XEvent *event, Window w, void *data)
 {
-  t_windata *wd;
-
-  wd=(t_windata *)data;
-  switch (event->type) {
-  case Expose:
-    if (wd->text && (wd->width > 10)) {
-      XSetForeground(x11->disp,x11->gc,WHITE);
-      TextInWin(x11,wd,wd->text,eXCenter,eYCenter);
-      XDrawLine(x11->disp,wd->self,x11->gc,0,wd->height,
-               wd->width,wd->height);
+    t_windata *wd;
+
+    wd = (t_windata *)data;
+    switch (event->type)
+    {
+        case Expose:
+            if (wd->text && (wd->width > 10))
+            {
+                XSetForeground(x11->disp, x11->gc, WHITE);
+                TextInWin(x11, wd, wd->text, eXCenter, eYCenter);
+                XDrawLine(x11->disp, wd->self, x11->gc, 0, wd->height,
+                          wd->width, wd->height);
+            }
+            break;
+        case ConfigureNotify:
+            wd->width  = event->xconfigure.width;
+            wd->height = event->xconfigure.height;
+            break;
     }
-    break;
-  case ConfigureNotify:
-    wd->width=event->xconfigure.width;
-    wd->height=event->xconfigure.height;
-    break;
-  }
-  return FALSE;
+    return FALSE;
 }
 
-static gmx_bool ManCallBack(t_x11 *x11,XEvent *event, Window w, void *data)
+static gmx_bool ManCallBack(t_x11 *x11, XEvent *event, Window w, void *data)
 {
-  t_manager *man;
-  int       width,height;
-
-  man=(t_manager *)data;
-  switch(event->type) {
-  case ConfigureNotify:
-    width=event->xconfigure.width;
-    height=event->xconfigure.height;
-    if ((width!=man->wd.width) || (height!=man->wd.height))
-      move_man(x11,man,width,height);
-    break;
-  case ClientMessage:
-    HandleClient(x11,man,event->xclient.data.l);
-    break;
-  default:
-    break;
-  }
-  return FALSE;
+    t_manager *man;
+    int        width, height;
+
+    man = (t_manager *)data;
+    switch (event->type)
+    {
+        case ConfigureNotify:
+            width  = event->xconfigure.width;
+            height = event->xconfigure.height;
+            if ((width != man->wd.width) || (height != man->wd.height))
+            {
+                move_man(x11, man, width, height);
+            }
+            break;
+        case ClientMessage:
+            HandleClient(x11, man, event->xclient.data.l);
+            break;
+        default:
+            break;
+    }
+    return FALSE;
 }
 
-void no_labels(t_x11 *x11,t_manager *man)
+void no_labels(t_x11 *x11, t_manager *man)
 {
-  int i;
+    int i;
 
-  for(i=0; (i<man->natom); i++)
-    man->bLabel[i]=FALSE;
-  draw_mol(x11,man);
+    for (i = 0; (i < man->natom); i++)
+    {
+        man->bLabel[i] = FALSE;
+    }
+    draw_mol(x11, man);
 }
 
-void move_man(t_x11 *x11,t_manager *man,int width,int height)
+void move_man(t_x11 *x11, t_manager *man, int width, int height)
 {
-  int x0,y0,mw,mh,hb;
-  int th;
-  
+    int x0, y0, mw, mh, hb;
+    int th;
+
 #ifdef DEBUG
-  fprintf(stderr,"Move manager %dx%d\n",width,height);
+    fprintf(stderr, "Move manager %dx%d\n", width, height);
 #endif
-  man->wd.width=width;
-  man->wd.height=height;
-
-  /* Move all subwindows, resize only Mol window */
-  x0=width-EWIDTH-AIR-4*BORDER;               /* Starting of ewin etc. */
-  y0=AIR;
-  
-  /* Mol Window */
-  mw=x0-2*AIR-4*BORDER;
-  mh=height-y0-AIR-2*BORDER;
-  XMoveResizeWindow(x11->disp,man->molw->wd.self,AIR,y0,mw,mh);
-
-  /* Title Window */
-  th=XTextHeight(x11->font);
-  XMoveResizeWindow(x11->disp,man->title.self,0,0,mw,th+AIR);
-  
-  /* Legend Window */
-  XMoveResizeWindow(x11->disp,man->legw->wd.self,x0,y0,EWIDTH,LEGHEIGHT);
-  y0+=LEGHEIGHT+AIR+2*BORDER;
-
-  if (y0 > height) 
-    printf("Error: Windows falling out of main window!\n");
-
-  /* Button Box */
-  hb=height-y0-AIR-2*BORDER;
-  XMoveResizeWindow(x11->disp,man->bbox->wd.self,x0,y0,EWIDTH,hb);
-  
-  /* Video Box */
-  x0=(mw-man->vbox->wd.width)/2;
-  y0=(mh-2-AIR-man->vbox->wd.height);
-  XMoveWindow(x11->disp,man->vbox->wd.self,x0,y0);
+    man->wd.width  = width;
+    man->wd.height = height;
+
+    /* Move all subwindows, resize only Mol window */
+    x0 = width-EWIDTH-AIR-4*BORDER;           /* Starting of ewin etc. */
+    y0 = AIR;
+
+    /* Mol Window */
+    mw = x0-2*AIR-4*BORDER;
+    mh = height-y0-AIR-2*BORDER;
+    XMoveResizeWindow(x11->disp, man->molw->wd.self, AIR, y0, mw, mh);
+
+    /* Title Window */
+    th = XTextHeight(x11->font);
+    XMoveResizeWindow(x11->disp, man->title.self, 0, 0, mw, th+AIR);
+
+    /* Legend Window */
+    XMoveResizeWindow(x11->disp, man->legw->wd.self, x0, y0, EWIDTH, LEGHEIGHT);
+    y0 += LEGHEIGHT+AIR+2*BORDER;
+
+    if (y0 > height)
+    {
+        printf("Error: Windows falling out of main window!\n");
+    }
+
+    /* Button Box */
+    hb = height-y0-AIR-2*BORDER;
+    XMoveResizeWindow(x11->disp, man->bbox->wd.self, x0, y0, EWIDTH, hb);
+
+    /* Video Box */
+    x0 = (mw-man->vbox->wd.width)/2;
+    y0 = (mh-2-AIR-man->vbox->wd.height);
+    XMoveWindow(x11->disp, man->vbox->wd.self, x0, y0);
 }
 
-void map_man(t_x11 *x11,t_manager *man)
+void map_man(t_x11 *x11, t_manager *man)
 {
-  XMapWindow(x11->disp,man->wd.self);
-  map_mw(x11,man->molw);
-  XMapWindow(x11->disp,man->title.self);
-  map_legw(x11,man->legw);
-  show_but(x11,man->bbox);
+    XMapWindow(x11->disp, man->wd.self);
+    map_mw(x11, man->molw);
+    XMapWindow(x11->disp, man->title.self);
+    map_legw(x11, man->legw);
+    show_but(x11, man->bbox);
 }
 
-gmx_bool toggle_animate (t_x11 *x11,t_manager *man)
-{ 
-  if (man->status) {
-    man->bAnimate=!man->bAnimate;
-    man->bStop=TRUE;
-    man->bEof=FALSE;
-    if (man->bAnimate)
-      show_but(x11,man->vbox);
-    else
-      hide_but(x11,man->vbox);
-  }
-  return man->bAnimate;
+gmx_bool toggle_animate (t_x11 *x11, t_manager *man)
+{
+    if (man->status)
+    {
+        man->bAnimate = !man->bAnimate;
+        man->bStop    = TRUE;
+        man->bEof     = FALSE;
+        if (man->bAnimate)
+        {
+            show_but(x11, man->vbox);
+        }
+        else
+        {
+            hide_but(x11, man->vbox);
+        }
+    }
+    return man->bAnimate;
 }
 
 gmx_bool toggle_pbc (t_manager *man)
 {
-  man->bPbc=!man->bPbc;
-  
-  return man->bPbc;
+    man->bPbc = !man->bPbc;
+
+    return man->bPbc;
 }
 
 
-t_manager *init_man(t_x11 *x11,Window Parent,
-                   int x,int y,int width,int height,
-                   unsigned long fg,unsigned long bg,
-                   int ePBC,matrix box,
+t_manager *init_man(t_x11 *x11, Window Parent,
+                    int x, int y, int width, int height,
+                    unsigned long fg, unsigned long bg,
+                    int ePBC, matrix box,
                     const output_env_t oenv)
 {
-  t_manager *man;
-
-  snew(man,1);
-  man->status=NULL;
-  man->bPlus=TRUE;
-  man->bSort=TRUE;
-  man->oenv=oenv;
-  InitWin(&(man->wd),x,y,width,height,0,"Manager");
-  man->wd.self=XCreateSimpleWindow(x11->disp,Parent,man->wd.x, man->wd.y, 
-                                  man->wd.width,man->wd.height,
-                                  man->wd.bwidth,fg,bg);
-  x11->RegisterCallback(x11,man->wd.self,Parent,ManCallBack,man);
-  x11->SetInputMask(x11,man->wd.self,StructureNotifyMask | 
-                   ExposureMask | ButtonPressMask);
-
-  /* The order of creating windows is important for the stacking order */
-  /* Mol Window */
-  man->molw=init_mw(x11,man->wd.self,0,0,1,1,WHITE,BLUE,ePBC,box);
-
-  /* Title Window */
-  InitWin(&(man->title),0,0,1,1,0,NULL);
-  man->title.self=XCreateSimpleWindow(x11->disp,man->molw->wd.self,
-                                     man->title.x,man->title.y,
-                                     man->title.width,man->title.height,
-                                     man->title.bwidth,WHITE,BLUE);
-  x11->RegisterCallback(x11,man->title.self,man->molw->wd.self,
-                       TitleCallBack,&(man->title));
-  x11->SetInputMask(x11,man->title.self,ExposureMask | StructureNotifyMask);
-  
-  /* Button box */
-  man->bbox=init_bbox(x11,man->wd.self,man->wd.self,1,WHITE,BLUE);
-  
-  /* Legend Window */
-  man->legw=init_legw(x11,man->wd.self,0,0,EWIDTH,LEGHEIGHT,WHITE,BLUE);
-
-  /* Video Box */
-  man->vbox=init_vbox(x11,man->molw->wd.self,man->wd.self,WHITE,BLUE);
-  
-  return man;
+    t_manager *man;
+
+    snew(man, 1);
+    man->status = NULL;
+    man->bPlus  = TRUE;
+    man->bSort  = TRUE;
+    man->oenv   = oenv;
+    InitWin(&(man->wd), x, y, width, height, 0, "Manager");
+    man->wd.self = XCreateSimpleWindow(x11->disp, Parent, man->wd.x, man->wd.y,
+                                       man->wd.width, man->wd.height,
+                                       man->wd.bwidth, fg, bg);
+    x11->RegisterCallback(x11, man->wd.self, Parent, ManCallBack, man);
+    x11->SetInputMask(x11, man->wd.self, StructureNotifyMask |
+                      ExposureMask | ButtonPressMask);
+
+    /* The order of creating windows is important for the stacking order */
+    /* Mol Window */
+    man->molw = init_mw(x11, man->wd.self, 0, 0, 1, 1, WHITE, BLUE, ePBC, box);
+
+    /* Title Window */
+    InitWin(&(man->title), 0, 0, 1, 1, 0, NULL);
+    man->title.self = XCreateSimpleWindow(x11->disp, man->molw->wd.self,
+                                          man->title.x, man->title.y,
+                                          man->title.width, man->title.height,
+                                          man->title.bwidth, WHITE, BLUE);
+    x11->RegisterCallback(x11, man->title.self, man->molw->wd.self,
+                          TitleCallBack, &(man->title));
+    x11->SetInputMask(x11, man->title.self, ExposureMask | StructureNotifyMask);
+
+    /* Button box */
+    man->bbox = init_bbox(x11, man->wd.self, man->wd.self, 1, WHITE, BLUE);
+
+    /* Legend Window */
+    man->legw = init_legw(x11, man->wd.self, 0, 0, EWIDTH, LEGHEIGHT, WHITE, BLUE);
+
+    /* Video Box */
+    man->vbox = init_vbox(x11, man->molw->wd.self, man->wd.self, WHITE, BLUE);
+
+    return man;
 }
 
-void done_man(t_x11 *x11,t_manager *man)
+void done_man(t_x11 *x11, t_manager *man)
 {
-  done_bbox(x11,man->vbox);
-  done_bbox(x11,man->bbox);
-  done_mw(x11,man->molw);
-  done_legw(x11,man->legw);
-  x11->UnRegisterCallback(x11,man->title.self);
-  x11->UnRegisterCallback(x11,man->wd.self);
-  sfree(man->x);
-  sfree(man->obj);
-  sfree(man->bHydro);
-  sfree(man->bLabel);
-  sfree(man->szLab);
-  sfree(man->col);
-  sfree(man);
+    done_bbox(x11, man->vbox);
+    done_bbox(x11, man->bbox);
+    done_mw(x11, man->molw);
+    done_legw(x11, man->legw);
+    x11->UnRegisterCallback(x11, man->title.self);
+    x11->UnRegisterCallback(x11, man->wd.self);
+    sfree(man->x);
+    sfree(man->obj);
+    sfree(man->bHydro);
+    sfree(man->bLabel);
+    sfree(man->szLab);
+    sfree(man->col);
+    sfree(man);
 }
 
-void do_filter(t_x11 *x11,t_manager *man,t_filter *filter)
+void do_filter(t_x11 *x11, t_manager *man, t_filter *filter)
 {
-  int      i;
-  atom_id  j;
-
-  for(i=0; (i<man->natom); i++)
-    man->bVis[i]=FALSE;
-  for(i=0; (i<filter->grps->nr); i++) {
-    if (filter->bShow[i])
-      for(j=filter->grps->index[i]; (j<filter->grps->index[i+1]); j++)
-       man->bVis[filter->grps->a[j]]=TRUE;
-  }
-
-  ExposeWin(x11->disp,man->wd.self);
+    int      i;
+    atom_id  j;
+
+    for (i = 0; (i < man->natom); i++)
+    {
+        man->bVis[i] = FALSE;
+    }
+    for (i = 0; (i < filter->grps->nr); i++)
+    {
+        if (filter->bShow[i])
+        {
+            for (j = filter->grps->index[i]; (j < filter->grps->index[i+1]); j++)
+            {
+                man->bVis[filter->grps->a[j]] = TRUE;
+            }
+        }
+    }
+
+    ExposeWin(x11->disp, man->wd.self);
 }