aboutsummaryrefslogtreecommitdiff
path: root/src/control.h
blob: 4bb828d1ab3607797b364faddc5223d2e3f46c38 (plain)
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/*
 * control.h
 *
 * Common control structure
 *
 * (c) 2007 Thomas White <taw27@cam.ac.uk>
 *
 *  dtr - Diffraction Tomography Reconstruction
 *
 */
 
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#ifndef CONTROL_H
#define CONTROL_H

#include <gtk/gtk.h>
#include <inttypes.h>
#include <GL/gl.h>

typedef enum ift_enum {
	INPUT_NONE,
	INPUT_QDRP,
	INPUT_MRC,
	INPUT_CACHE,
	INPUT_DRX
} InputFileType;

typedef enum {
	FORMULATION_CLEN,
	FORMULATION_PIXELSIZE
} FormulationMode;

typedef enum {
	PEAKSEARCH_NONE,
	PEAKSEARCH_THRESHOLD,
	PEAKSEARCH_ADAPTIVE_THRESHOLD,
	PEAKSEARCH_ZAEFFERER,
	PEAKSEARCH_STAT,
	PEAKSEARCH_CACHED
} PeakSearchMode;

typedef struct cctx_struct {
	
	/* Modes */
	InputFileType			inputfiletype;
	PeakSearchMode 			psmode;
	unsigned int			prealign;
	unsigned int			finecentering;
	unsigned int			have_centres;
	unsigned int			sum_stack;
	
	/* Input filename */
	char 				*filename;
	char				*cache_filename;
	
	/* Basic parameters, stored here solely so they can be copied
	 * into the ImageRecord(s) more easily */
	FormulationMode			fmode;
	double				camera_length;
	double				omega;		/* Degrees */
	double				resolution;
	double				lambda;
	double				pixel_size;
	double				x_centre;
	double				y_centre;
	
	/* QDRP Parser flags */
	unsigned int			started;
	unsigned int			camera_length_set;
	unsigned int			omega_set;
	unsigned int			resolution_set;
	unsigned int			lambda_set;
	
	/* The input images */
	struct imagelist_struct		*images;
	
	/* "Output" */
	struct reflectionlist_struct	*reflectionlist;	/* Measured reflections (and stuff added to get displayed) */
	struct dw_struct		*dw;
	struct basis_struct		*cell;			/* Current estimate of the reciprocal unit cell */
	struct reflectionlist_struct	*cell_lattice;		/* Reflections calculated from 'cell' */
	
	/* GTK bits */
	GtkWidget			*combo_peaksearch;
	GtkWidget			*checkbox_prealign;
	GtkWidget			*checkbox_finecentering;
	GtkWidget			*checkbox_sumstack;
	GtkWidget			*cache_file_selector;
	
	/* DirAx low-level stuff */
	GIOChannel			*dirax;
	int				dirax_pty;
	pid_t				dirax_pid;
	char				*dirax_rbuffer;
	int				dirax_rbufpos;
	int				dirax_rbuflen;
	
	/* DirAx high-level stuff */
	int				dirax_step;
	int				dirax_read_cell;
	
	/* Reprojection stuff */
	int				reproject_cur_image;
	struct imagedisplay_struct	*reproject_id;
	
	/* Refinement stuff */
	GtkWidget			*refine_window;
		
} ControlContext;

extern ControlContext *control_ctx_new(void);

#endif	/* CONTROL_H */