aboutsummaryrefslogtreecommitdiff
path: root/src/control.h
blob: ac3a357710c156ca2d0130966fb3f8f69548991d (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
118
119
120
121
122
123
124
125
/*
 * 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>

#define MAX_IMAGES 256

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

typedef enum {
	FORMULATION_CLEN,
	FORMULATION_PIXELSIZE
} FormulationMode;

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

typedef enum {
	RECONSTRUCTION_MAPPING,
	RECONSTRUCTION_PREDICTION
} ReconstructionMode;

typedef struct imagerecord_struct {

	uint16_t	*image;
	double		tilt;		/* Degrees */
	double		omega;		/* Degrees */
	
	FormulationMode fmode;
	double		pixel_size;
	double		camera_len;
	double		lambda;
	double		resolution;
	
	int		width;
	int		height;
	int		x_centre;
	int		y_centre;

} ImageRecord;

typedef struct {
	int	x;
	int	y;
	double	intensity;
} ImageReflection;

typedef struct cctx_struct {
	
	/* Modes */
	InputFileType		inputfiletype;
	FormulationMode		fmode;
	ReconstructionMode 	rmode;
	PeakSearchMode 		psmode;
	unsigned int		prealign;
	unsigned int		savecache;
	unsigned int		have_centres;
	
	/* Input filename */
	char 			*filename;
	
	/* Basic parameters, stored here solely so they can be copied
	 * into the ImageRecord(s) more easily */
	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 */
	int			n_images;
	ImageRecord		images[MAX_IMAGES];
	
	/* Output */
	struct rctx_struct	*reflectionctx;
	
	/* GTK bits */
	GtkWidget		*combo_algorithm;
	GtkWidget		*combo_peaksearch;
	GtkWidget		*checkbox_prealign;
	GtkWidget		*checkbox_savecache;

} ControlContext;

extern int control_add_image(ControlContext *ctx, uint16_t *image, int width, int height, double tilt);
extern ControlContext *control_ctx_new(void);

#endif	/* CONTROL_H */