#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>


#define LOG(fmt, ...) fprintf(stderr, fmt "\n", ##__VA_ARGS__)
#define MARK() LOG("%s:%d", __FILE__, __LINE__)

#define MIN(a, b) (((a)<(b))?(a):(b))
#define MAX(a, b) (((a)>(b))?(a):(b))
#define ABSDIFF(a, b) (((a)>(b))?((a)-(b)):((b)-(a)))

typedef struct {
    unsigned mosaic_dim; // px
    unsigned mosaic_dim_half; // px, mosaic_dim/2
    unsigned tint; // %
    unsigned full_tint; // %
    enum { DIST_AVG=0, DIST_EUCLID=1, DIST_LAB=2 } dist_func;
} config_t;
extern const config_t& config;

int parse_args(int, const char**);