17dd7cddfSDavid du Colombier /* Copyright (C) 1995, 1999 Aladdin Enterprises. All rights reserved. 27dd7cddfSDavid du Colombier 3*593dc095SDavid du Colombier This software is provided AS-IS with no warranty, either express or 4*593dc095SDavid du Colombier implied. 57dd7cddfSDavid du Colombier 6*593dc095SDavid du Colombier This software is distributed under license and may not be copied, 7*593dc095SDavid du Colombier modified or distributed except as expressly authorized under the terms 8*593dc095SDavid du Colombier of the license contained in the file LICENSE in this distribution. 97dd7cddfSDavid du Colombier 10*593dc095SDavid du Colombier For more information about licensing, please refer to 11*593dc095SDavid du Colombier http://www.ghostscript.com/licensing/. For information on 12*593dc095SDavid du Colombier commercial licensing, go to http://www.artifex.com/licensing/ or 13*593dc095SDavid du Colombier contact Artifex Software, Inc., 101 Lucas Valley Road #110, 14*593dc095SDavid du Colombier San Rafael, CA 94903, U.S.A., +1(415)492-9861. 157dd7cddfSDavid du Colombier */ 167dd7cddfSDavid du Colombier 17*593dc095SDavid du Colombier /* $Id: gxctable.h,v 1.5 2002/06/16 08:45:43 lpd Exp $ */ 187dd7cddfSDavid du Colombier /* Interface to color table lookup and interpolation */ 197dd7cddfSDavid du Colombier 207dd7cddfSDavid du Colombier #ifndef gxctable_INCLUDED 217dd7cddfSDavid du Colombier # define gxctable_INCLUDED 227dd7cddfSDavid du Colombier 237dd7cddfSDavid du Colombier #include "gxfixed.h" 247dd7cddfSDavid du Colombier #include "gxfrac.h" 257dd7cddfSDavid du Colombier 267dd7cddfSDavid du Colombier /* 277dd7cddfSDavid du Colombier * Define a 3- or 4-D color lookup table. 287dd7cddfSDavid du Colombier * n is the number of dimensions (input indices), 3 or 4. 297dd7cddfSDavid du Colombier * dims[0..n-1] are the table dimensions. 307dd7cddfSDavid du Colombier * m is the number of output values, typically 3 (RGB) or 4 (CMYK). 317dd7cddfSDavid du Colombier * For n = 3: 327dd7cddfSDavid du Colombier * table[i], 0 <= i < dims[0], point to strings of length 337dd7cddfSDavid du Colombier * dims[1] x dims[2] x m. 347dd7cddfSDavid du Colombier * For n = 4: 357dd7cddfSDavid du Colombier * table[i], 0 <= i < dims[0] x dims[1], points to strings of length 367dd7cddfSDavid du Colombier * dims[2] x dims[3] x m. 377dd7cddfSDavid du Colombier * It isn't really necessary to store the size of each string, since 387dd7cddfSDavid du Colombier * they're all the same size, but it makes things a lot easier for the GC. 397dd7cddfSDavid du Colombier */ 407dd7cddfSDavid du Colombier typedef struct gx_color_lookup_table_s { 417dd7cddfSDavid du Colombier int n; 427dd7cddfSDavid du Colombier int dims[4]; /* [ndims] */ 437dd7cddfSDavid du Colombier int m; 447dd7cddfSDavid du Colombier const gs_const_string *table; 457dd7cddfSDavid du Colombier } gx_color_lookup_table; 467dd7cddfSDavid du Colombier 477dd7cddfSDavid du Colombier /* 487dd7cddfSDavid du Colombier * Interpolate in a 3- or 4-D color lookup table. 497dd7cddfSDavid du Colombier * pi[0..n-1] are the table indices, guaranteed to be in the ranges 507dd7cddfSDavid du Colombier * [0..dims[n]-1] respectively. 517dd7cddfSDavid du Colombier * Return interpolated values in pv[0..m-1]. 527dd7cddfSDavid du Colombier */ 537dd7cddfSDavid du Colombier 547dd7cddfSDavid du Colombier /* Return the nearest value without interpolation. */ 55*593dc095SDavid du Colombier void gx_color_interpolate_nearest(const fixed * pi, 56*593dc095SDavid du Colombier const gx_color_lookup_table * pclt, frac * pv); 577dd7cddfSDavid du Colombier 587dd7cddfSDavid du Colombier /* Use trilinear interpolation. */ 59*593dc095SDavid du Colombier void gx_color_interpolate_linear(const fixed * pi, 60*593dc095SDavid du Colombier const gx_color_lookup_table * pclt, frac * pv); 617dd7cddfSDavid du Colombier 627dd7cddfSDavid du Colombier #endif /* gxctable_INCLUDED */ 63