1 #ifndef _SEQUENCE_H_
2 #define _SEQUENCE_H_
3 
4 #include <stdint.h>
5 #include "../core/siril.h"
6 #include "../core/processing.h"
7 #include "../algos/PSF.h"
8 
9 void populate_seqcombo(const gchar *realname);
10 int	read_single_sequence(char *realname, image_type imagetype);
11 int	seqsetnum(int image_number);
12 int	check_seq(int recompute_stats);
13 int	seq_check_basic_data(sequence *seq, gboolean load_ref_into_gfit);
14 int	set_seq(const char *);
15 char *	seq_get_image_filename(sequence *seq, int index, char *name_buf);
16 int	seq_read_frame(sequence *seq, int index, fits *dest, gboolean force_float, int thread_id);
17 int	seq_read_frame_part(sequence *seq, int layer, int index, fits *dest, const rectangle *area, gboolean do_photometry, int thread_id);
18 int	seq_load_image(sequence *seq, int index, gboolean load_it);
19 int64_t seq_compute_size(sequence *seq, int nb_frames, data_type type);
20 gboolean check_if_seq_exist(gchar *name, gboolean name_is_base);
21 int	seq_open_image(sequence *seq, int index);
22 void	seq_close_image(sequence *seq, int index);
23 int	seq_opened_read_region(sequence *seq, int layer, int index, void *buffer, const rectangle *area, int thread_id);
24 void	set_fwhm_star_as_star_list(sequence *seq);
25 char *	fit_sequence_get_image_filename(sequence *seq, int index, char *name_buffer, gboolean add_fits_ext);
26 char *	fit_sequence_get_image_filename_prefixed(sequence *seq, const char *prefix, int index);
27 char *	get_possible_image_filename(sequence *seq, int image_number, char *name_buffer);
28 int	get_index_and_basename(const char *filename, char **basename, int *index, int *fixed);
29 void	remove_prefixed_sequence_files(sequence *seq, const char *prefix);
30 void	initialize_sequence(sequence *seq, gboolean is_zeroed);
31 void	free_sequence(sequence *seq, gboolean free_seq_too);
32 void	sequence_free_preprocessing_data(sequence *seq);
33 void	close_sequence(int loading_another);
34 gboolean sequence_is_loaded();
35 
36 typedef enum {
37 	ORIGINAL_FRAME,
38 	FOLLOW_STAR_FRAME,
39 	REGISTERED_FRAME
40 } framing_mode;
41 
42 struct seqpsf_args {
43 	gboolean for_registration;
44 	framing_mode framing;
45 
46 	/* The seqpsf result for each image, list of seqpsf_data */
47 	GSList *list;
48 };
49 
50 struct seqpsf_data {
51 	int image_index;
52 	fitted_PSF *psf;
53 	double exposure;
54 };
55 
56 int	sequence_find_refimage(sequence *seq);
57 void	check_or_allocate_regparam(sequence *seq, int layer);
58 void	set_shifts(sequence *seq, int frame, int layer, float shiftx, float shifty, gboolean data_is_top_down);
59 sequence *create_internal_sequence(int size);
60 void	internal_sequence_set(sequence *seq, int index, fits *fit);
61 int	internal_sequence_find_index(sequence *seq, fits *fit);
62 fits	*internal_sequence_get(sequence *seq, int index);
63 gboolean sequence_is_rgb(sequence *seq);
64 void	enforce_area_in_image(rectangle *area, sequence *seq);
65 
66 int seqpsf(sequence *seq, int layer, gboolean for_registration, gboolean regall,
67 		framing_mode framing, gboolean run_in_thread);
68 int seqpsf_image_hook(struct generic_seq_args *args, int out_index, int index, fits *fit, rectangle *area);
69 void free_reference_image();
70 
71 /* in export.c now */
72 void	update_export_crop_label();
73 
74 int compute_nb_images_fit_memory(sequence *seq, double factor, gboolean force_float, unsigned int *MB_per_orig_image, unsigned int *MB_per_scaled_image, unsigned int *max_mem_MB);
75 
76 void fix_selnum(sequence *seq, gboolean warn);
77 
78 #endif
79