home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 6
/
AACD06.ISO
/
AACD
/
System
/
Mesa-3.1
/
src
/
AOS
/
palettes.i.in
< prev
next >
Wrap
Text File
|
1999-09-23
|
5KB
|
133 lines
//#ifndef AMIGAMESApal_I
//#define AMIGAMESApal_I
/*
* $Id: $
*/
/*
* Mesa 3-D graphics library
* Version: 3.1
* Copyright (C) 1995 Brian Paul (brianp@ssec.wisc.edu)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef PALETTE_DEFS
/* first part defines amigaMesa-specifig tag
* second part defines the choosen palette (aka modelling of available colors)
* third part defines methog to fetch data (aka encoding of given colors
*
* at the moment dithering is only available in RGBMode, that means if we are
* in index-mode the index-pixels are directly (without dither) mapped to
* pen-pixels, it could be an improvement to offer dithering even for index-modes
*/
/* dithering */
#define AMESA_HPCR_DITHER -8 /* hp-color-recovery */
#define AMESA_GREY_DITHER -4
#define AMESA_WEIGHTED_DITHER -2 /* default standard 0 */
#define AMESA_TRUECOLOR_DITHER -1 /* matches below 0 */
/* matching */
#define AMESA_HPCR_MATCH 8 /* hp-color-recovery */
#define AMESA_GREY_MATCH 4
#define AMESA_WEIGHTED_MATCH 2 /* default standard 0 */
#define AMESA_TRUECOLOR_MATCH 1 /* matches below 0 */
/* shifting */
#define AMESA_TRUECOLOR_SHIFT 0 /* shifts above 0 */
/* invalid */
#define AMESA_DEADFOOD 0xDEAD /* dead man */
#define MATCHtoDITHER(bool) ((bool) = -(bool)) /* if in shift-mode dither isn't available */
#define DITHERtoMATCH(bool) ((bool) = -(bool)) /* if in shift-mode dither isn't available */
#define IS_HPCR(bool) (((bool) == 8) || ((bool) == -8))
#define IS_GREY(bool) (((bool) == 4) || ((bool) == -4))
#define IS_WEIGHTED(bool) (((bool) == 2) || ((bool) == -2))
#define IS_TRUECOLOR(bool) (((bool) >= -1) && ((bool) <= 1))
#define IS_DITHER(bool) ((bool) < 0)
#define IS_MATCH(bool) ((bool) > 0)
#define IS_SHIFT(bool) ((bool) == 0)
/*****************************************************************************
*
* fetch-macros
*/
/* compositions */
#define c8toc32(x) (((((((x) << 8) | (x)) << 8) | (x)) << 8) | (x)) /* byte-pen to pattern-pen */
#define c24tocg(r,g,b) (((r << 5) + (g << 6) + (g << 5) + (b << 3) + b) >> 9) /* rgb-color to 64-grey (quick approximation) */
#define c24toc8(r,g,b) ((((r) & 0xE0) >> 0) | \
(((g) & 0xE0) >> 3) | \
(((b) & 0xE0) >> 6)) /* rgb-color to 332-color */
/* TrueColor-RGB */
#define TC_RGBA(r,g,b) (((((((r) << 8) | (g)) << 8) | (b)) << 8) | (0)) /* byte-rgb to long-rgba */
#define TC_ARGB(r,g,b) (((((((0) << 8) | (r)) << 8) | (g)) << 8) | (b)) /* byte-rgb to long-argb */
/* Grey-RGB */
#define GR_RGBA(am, r, g, b) (am->Palette[c24tocg(r, g, b)].PenNo) /* rgb-color to grey-pen */
/* Palette-Index */
#define PLD_RGBA(am, r, g, b, x, y) (GetPenDithered(r, g, b, am, x, y)) /* rgb-color to dithered-pen */
#define PLG_RGBA(am, r, g, b) (GetPen(r, g, b, am)) /* rgb-color to pen */
#define PL8_RGBA(am, r, g, b) (am->Palette[c24toc8(r, g, b)].PenNo) /* rgb-color to 332-pen */
/* the format of index is RGBI, red|green|blue|index */
#define MakeRGBP(am, r, g, b, x, y) (TC_RGBA(r, g, b) | PL_RGBA(am, r, g, b, x, y)) /* rgb to long-rgbp */
/* get the red/green/blue/pen from a given index */
#define GetRGBP(am, idx) (am->ItoP[(GLubyte)(idx)]) /* index to pen */
#define GetRGBPLocal(idx) (ItoP[(GLubyte)(idx)]) /* index to pen */
/* get the red/green/blue/index from a given pen */
#define GetIndex(am, idx) (am->PtoI[(GLubyte)(idx)]) /* pen to index */
#define GetIndexLocal(idx) (PtoI[(GLubyte)(idx)]) /* pen to index */
/*****************************************************************************/
#define ColorEntry_orgEntry_r %d
#define ColorEntry_orgEntry_g %d
#define ColorEntry_orgEntry_b %d
#define ColorEntry_orgEntry_a %d
#define ColorEntry_mapEntry_r %d
#define ColorEntry_mapEntry_g %d
#define ColorEntry_mapEntry_b %d
#define ColorEntry_mapEntry_a %d
#define PenNo ColorEntry_mapEntry_a
#define CACHED 0xFF
#define INVALID 0x00
#define ColorCache_PenCch %d
#define ColorCache_R %d
#define ColorCache_B %d
#define ColorCache_valid %d
#define palNumCols332 256
#define palNumCols 189
#define palNumColsGrey 64
#define palNumColsHPCR 256
#define palNumColsMax 256
#define ERROR_RANGE 512 /* -255 = 0 - 255, 255 = 255 - 0: -255 -> 255 */
#endif
/*****************************************************************************/
//#endif