File: fitscut.h

package info (click to toggle)
fitscut 1.4.4-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, buster, stretch
  • size: 924 kB
  • ctags: 465
  • sloc: ansic: 6,024; sh: 767; makefile: 132
file content (183 lines) | stat: -rw-r--r-- 4,909 bytes parent folder | download | duplicates (2)
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
/* -*- mode:C; indent-tabs-mode:nil; tab-width:8; c-basic-offset:8; -*-
 *
 * fitscut.h -- declarations for fitscut
 * Copyright (C) 1999 William Jon McCann
 *
 * This program 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 of the License, or
 * (at your option) any later version.
 *
 * This program 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 this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 * $Id: fitscut.h,v 1.26 2004/04/29 22:22:30 mccannwj Exp $
 */

#include <stdarg.h>

#if defined(__STDC__) || defined(PROTO)
#  define OF(args)  args
#else
#  define OF(args)  ()
#endif

#ifndef RETSIGTYPE
#  define RETSIGTYPE void
#endif

#define strequ(s1, s2) (strcmp((s1),(s2)) == 0)

typedef RETSIGTYPE (*sig_type) OF((int));

#ifndef SET_BINARY_MODE
#  define SET_BINARY_MODE(fd)
#endif

#ifndef O_BINARY
#  define O_BINARY 0 /* creation mode for open() */
#endif

#if !defined(S_ISDIR) && defined(S_IFDIR)
#  define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#if !defined(S_ISREG) && defined(S_IFREG)
#  define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif

#ifndef MAX_PATH_LEN
#  define MAX_PATH_LEN   1024 /* max pathname length */
#endif

/* Separator for file name parts (see shorten_name()) */
#ifdef NO_MULTIPLE_DOTS
#  define PART_SEP "-"
#else
#  define PART_SEP "."
#endif

#define BYTE    unsigned char
#define WORD    unsigned short int
#define LWORD   unsigned long
#define SPACE   32
#define DEL     127
#define ICSIZE  100

#ifndef TRUE
#define TRUE (1==1)
#endif 	/* TRUE */

#ifndef FALSE
#define FALSE !(TRUE)
#endif	/* FALSE */

/* Return codes */
#define OK      0
#define ERROR   1
#define WARNING 2

#define tolow(c)  (isupper(c) ? (c)-'A'+'a' : (c)) /* force to lower case */

#define WARN(msg) {if (!quiet) fprintf msg ; \
		   if (exit_code == OK) exit_code = WARNING;}

#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
#define MAX(X,Y) ((X) < (Y) ? (Y) : (X))

typedef enum {
        OUTPUT_FITS = 0,
        OUTPUT_PNG,
        OUTPUT_JPG
} FitscutOutputFormat;

typedef enum {
        SCALE_LINEAR = 0,
        SCALE_LOG,
        SCALE_SQRT,
        SCALE_HISTEQ,
        SCALE_FACTOR,
        SCALE_RATE,
        SCALE_ASINH
} FitscutScaleType;

typedef enum {
        SCALE_MODE_MINMAX = 0,
        SCALE_MODE_AUTO,
        SCALE_MODE_USER
} FitscutScaleMode;

typedef enum {
        CMAP_GRAY = 0,
        CMAP_HEAT,
        CMAP_COOL,
        CMAP_RAINBOW,
        CMAP_RED,
        CMAP_GREEN,
        CMAP_BLUE
} FitscutColormapType;

typedef enum {
        ALIGN_NONE = 0,
        ALIGN_FIRST,
        ALIGN_NORTH,
        ALIGN_USER_WCS
} FitscutAlignType;

RETSIGTYPE abort_fitscut   (void);
void       do_exit         (int);
void       fitscut_error   (char *);
void       fitscut_message (int level, const char *format, ...);

#define NBINS 10000

extern int foreground;            /* set if program run in foreground */
extern int force;        /* don't ask questions, overwrite (-f) */
extern int to_stdout;    /* output to stdout (-c) */
extern int verbose;      /* be verbose (-v) */
extern int quiet;        /* be very quiet (-q) */
extern int exit_code;   /* program exit code */

#define MAX_CHANNELS 3

#define MAGIC_SIZE_ALL_NUMBER 999999

typedef struct fitscut_image {
        int output_type;
        int output_scale;
        int output_colormap;
        int output_scale_mode;
        int output_alignment;
        int output_compass;
        int output_invert;
        float output_zoom;
        char *input_filename[MAX_CHANNELS];
        int input_datatype[MAX_CHANNELS];
        char *output_filename;
        int channels;
        long x0[MAX_CHANNELS], y0[MAX_CHANNELS], xc[MAX_CHANNELS], yc[MAX_CHANNELS];
        long ncols[MAX_CHANNELS], nrows[MAX_CHANNELS];
        double user_min[MAX_CHANNELS];
        int user_min_set;
        double user_max[MAX_CHANNELS];
        int user_max_set;
        double user_scale_factor[MAX_CHANNELS];
        int user_scale_factor_set;
        double autoscale_percent_low[MAX_CHANNELS];
        double autoscale_percent_high[MAX_CHANNELS];
        double autoscale_min[MAX_CHANNELS], autoscale_max[MAX_CHANNELS];
        int autoscale_performed;
        double data_min[MAX_CHANNELS], data_max[MAX_CHANNELS];
        float *histogram[MAX_CHANNELS];
        float *data[MAX_CHANNELS];
        char *header[MAX_CHANNELS];
        int header_cards[MAX_CHANNELS];
#ifdef HAVE_LIBWCS
        struct WorldCoor *wcs[MAX_CHANNELS];
#endif
} FitsCutImage;