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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
/*
* 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>
#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;
GLuint gl_list_id;
// GLuint gl_ref_buffer;
// GLuint gl_element_buffer;
GLfloat *gl_ref_vertex_array;
GLuint *gl_ref_element_array;
GLsizei gl_ref_num_vertices;
GLfloat *gl_marker_vertex_array;
GLuint *gl_marker_element_array;
GLsizei gl_marker_num_vertices;
GLfloat *gl_gen_vertex_array;
GLuint *gl_gen_element_array;
GLsizei gl_gen_num_vertices;
} 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 */
|