wolffd@0: /* $Id: color.h,v 1.7 2009/06/03 01:10:51 ellson Exp $ $Revision: 1.7 $ */ wolffd@0: /* vim:set shiftwidth=4 ts=8: */ wolffd@0: wolffd@0: /********************************************************** wolffd@0: * This software is part of the graphviz package * wolffd@0: * http://www.graphviz.org/ * wolffd@0: * * wolffd@0: * Copyright (c) 1994-2004 AT&T Corp. * wolffd@0: * and is licensed under the * wolffd@0: * Common Public License, Version 1.0 * wolffd@0: * by AT&T Corp. * wolffd@0: * * wolffd@0: * Information and Software Systems Research * wolffd@0: * AT&T Research, Florham Park NJ * wolffd@0: **********************************************************/ wolffd@0: wolffd@0: #ifndef GV_COLOR_H wolffd@0: #define GV_COLOR_H wolffd@0: wolffd@0: /* #include "arith.h" */ wolffd@0: wolffd@0: #ifdef __cplusplus wolffd@0: extern "C" { wolffd@0: #endif wolffd@0: wolffd@0: typedef struct hsvrgbacolor_t { wolffd@0: char *name; wolffd@0: unsigned char h, s, v; wolffd@0: unsigned char r, g, b, a; wolffd@0: } hsvrgbacolor_t; wolffd@0: wolffd@0: /* possible representations of color in gvcolor_t */ wolffd@0: typedef enum { HSVA_DOUBLE, RGBA_BYTE, RGBA_WORD, CMYK_BYTE, wolffd@0: RGBA_DOUBLE, COLOR_STRING, COLOR_INDEX } color_type_t; wolffd@0: wolffd@0: /* gvcolor_t can hold a color spec in a choice or representations */ wolffd@0: typedef struct color_s { wolffd@0: union { wolffd@0: double RGBA[4]; wolffd@0: double HSVA[4]; wolffd@0: unsigned char rgba[4]; wolffd@0: unsigned char cmyk[4]; wolffd@0: int rrggbbaa[4]; wolffd@0: char *string; wolffd@0: int index; wolffd@0: } u; wolffd@0: color_type_t type; wolffd@0: } gvcolor_t; wolffd@0: wolffd@0: #define COLOR_MALLOC_FAIL -1 wolffd@0: #define COLOR_UNKNOWN 1 wolffd@0: #define COLOR_OK 0 wolffd@0: wolffd@0: #ifdef __cplusplus wolffd@0: } wolffd@0: #endif wolffd@0: #endif