#define IMAGEI_H_
#include "imager.h"
+#include <stddef.h>
/* wrapper functions that implement the floating point sample version of a
function in terms of the 8-bit sample version
extern i_img_dim i_gsamp_bits_fb(i_img *im, i_img_dim x, i_img_dim r, i_img_dim y, unsigned *samp,
const int *chans, int chan_count, int bits);
-#define SampleFTo16(num) ((int)((num) * 65535.0 + 0.01))
+#define SampleFTo16(num) ((int)((num) * 65535.0 + 0.5))
/* we add that little bit to avoid rounding issues */
#define Sample16ToF(num) ((num) / 65535.0)
-#define SampleFTo8(num) ((int)((num) * 255.0 + 0.01))
+#define SampleFTo8(num) ((int)((num) * 255.0 + 0.5))
#define Sample8ToF(num) ((num) / 255.0)
-#define Sample16To8(num) ((num) / 257)
+#define Sample16To8(num) (((num)+128) / 257)
#define Sample8To16(num) ((num) * 257)
extern void i_get_combine(int combine, i_fill_combine_f *, i_fill_combinef_f *);
#define color_to_grey(col) ((col)->rgb.r * 0.222 + (col)->rgb.g * 0.707 + (col)->rgb.b * 0.071)
+#define IM_ERROR_COUNT 20
+typedef struct im_context_tag {
+ int error_sp;
+ size_t error_alloc[IM_ERROR_COUNT];
+ i_errmsg error_stack[IM_ERROR_COUNT];
+#ifdef IMAGER_LOG
+ /* the log file and level for this context */
+ FILE *lg_file;
+ int log_level;
+
+ /* whether we own the lg_file, false for stderr and for cloned contexts */
+ int own_log;
+
+ /* values supplied by lhead */
+ const char *filename;
+ int line;
+#endif
+
+ /* file size limits */
+ i_img_dim max_width, max_height;
+ size_t max_bytes;
+
+ /* per context storage */
+ size_t slot_alloc;
+ void **slots;
+
+ ptrdiff_t refcount;
+} im_context_struct;
+
+#define DEF_BYTES_LIMIT 0x40000000
+
#endif