/* * libpipi Proper image processing implementation library * Copyright (c) 2004-2008 Sam Hocevar * All Rights Reserved * * $Id$ * * This library is free software. It comes without any warranty, to * the extent permitted by applicable law. You can redistribute it * and/or modify it under the terms of the Do What The Fuck You Want * To Public License, Version 2, as published by Sam Hocevar. See * http://sam.zoy.org/wtfpl/COPYING for more details. */ /* pipi_template.h: the magic template preprocessing file * * Define the following macros before including this file: * * TEMPLATE_FLAGS is set to a list of toggle flags, a binary OR of: * - SET_FLAG_GRAY * - SET_FLAG_WRAP * - SET_FLAG_8BIT * * TEMPLATE_FILE is set to the template file. The following macros * will be defined when including it. Their value depend on the flags * specified above: * - FLAG_GRAY is set to 0 or 1 * - FLAG_WRAP is set to 0 or 1 * - FLAG_8BIT is set to 0 or 1 * - T(x) expands x by adding relevant information, eg. x##_gray_wrap */ #if !defined FLAG_GRAY # if (TEMPLATE_FLAGS) & SET_FLAG_GRAY # define FLAG_GRAY 1 # define T_GRAY(x) CAT(x, _gray) # include __FILE__ # undef FLAG_GRAY # undef T_GRAY # endif # define FLAG_GRAY 0 # define T_GRAY(x) x # include __FILE__ # undef FLAG_GRAY # undef T_GRAY #elif !defined FLAG_WRAP # if (TEMPLATE_FLAGS) & SET_FLAG_WRAP # define FLAG_WRAP 1 # define T_WRAP(x) CAT(x, _wrap) # include __FILE__ # undef FLAG_WRAP # undef T_WRAP # endif # define FLAG_WRAP 0 # define T_WRAP(x) x # include __FILE__ # undef FLAG_WRAP # undef T_WRAP #elif !defined FLAG_8BIT # if (TEMPLATE_FLAGS) & SET_FLAG_8BIT # define FLAG_8BIT 1 # define T_8BIT(x) CAT(x, _8bit) # include __FILE__ # undef FLAG_8BIT # undef T_8BIT # endif # define FLAG_8BIT 0 # define T_8BIT(x) x # include __FILE__ # undef FLAG_8BIT # undef T_8BIT #else # define CAT(x, y) x ## y # define T(x) T_8BIT(T_WRAP(T_GRAY(x))) # include TEMPLATE_FILE # undef CAT # undef S #endif