File: translate.c

package info (click to toggle)
xmakemol 5.16-6
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 1,724 kB
  • sloc: ansic: 19,032; sh: 2,977; perl: 98; makefile: 95
file content (97 lines) | stat: -rw-r--r-- 2,042 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*

Copyright (C) 1998, 1999, 2001, 2002, 2004, 2005 Matthew P. Hodges
This file is part of XMakemol.

XMakemol is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.

XMakemol is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with XMakemol; see the file COPYING.  If not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*/

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <math.h>
#include <stdio.h>
#include <stdlib.h>

#include <Xm/Xm.h>

#include "globals.h"


void
translate_atoms(double *vec)
{
  
  void adjust_current_frame(void);
  void canvas_cb(Widget, XtPointer, XtPointer);
  void clear_message_area (void);
  void deactivate_region(void);
  void update_bbox(void);
  void update_bond_matrix(Boolean);
  void update_lengths_dialog(Boolean);

  int i,all_moved;

  all_moved=1;

  for(i = 0; i < no_atoms; i++)
    {
      if((atoms[i].edit == 1))
        {
          atoms[i].x += vec[0];
          atoms[i].y += vec[1];
          atoms[i].z += vec[2];
        }
      else
        {
          all_moved = 0;
          atoms_sorted = 0; /* Depths have changed */
        }
    }

  if (bbox_available)
    {
      for (i = 0; i < 8; i++)
        {
          file_bbox.v[i][0] += vec[0];
          file_bbox.v[i][1] += vec[1];
          file_bbox.v[i][2] += vec[2];
        }
    }

  if(all_moved){
    for(i=0;i<3;i++){
      global_vector[i]+=vec[i];
    }
  }

  update_bbox ();

  redraw=1;

  if(!all_moved){
    update_bond_matrix(True);
  }

  deactivate_region();

  clear_message_area();

  canvas_cb(canvas,NULL,NULL);

  update_lengths_dialog(False);
}