Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

69 lines
2.5 KiB

//----------------------------------------------------------------------------
//
// palette.h
//
// Structures and prototypes ramp palette code.
//
// Copyright (C) Microsoft Corporation, 1997.
//
//----------------------------------------------------------------------------
#ifndef _RAMPPALETTE_H_
#define _RAMPPALETTE_H_
#include "colall.h"
typedef void (*RLDDIPaletteSetColorMethod)(void*, int index,
int red, int green, int blue);
typedef int (*RLDDIPaletteAllocateColorMethod)(void*,
int red, int green, int blue);
typedef void (*RLDDIPaletteFreeColorMethod)(void*, int index);
typedef struct _RLDDIPaletteEntry RLDDIPaletteEntry;
typedef enum _PaletteState
{
PALETTE_FREE, /* not used, allocatable */
PALETTE_UNUSED, /* not used, not allocatable */
PALETTE_USED /* used, allocatable */
} PaletteState;
struct _RLDDIPaletteEntry {
LIST_MEMBER(_RLDDIPaletteEntry) list;
int usage; /* how many users (0 => free) */
unsigned char red, green, blue, pad1; /* intensity values */
PaletteState state;
};
#define HASH_SIZE 257
#define RGB_HASH(red, green, blue) (((red) << 8) ^ ((green) << 4) ^ (blue))
#define ENTRY_TO_INDEX(pal, entry) ((int)((entry) - (pal)->entries))
#define INDEX_TO_ENTRY(pal, index) (&(pal)->entries[index])
typedef struct _RLDDIPalette {
RLDDIPaletteEntry* entries; /* palette entries */
size_t size; /* number of entries in palette */
LIST_ROOT(name3, _RLDDIPaletteEntry) free; /* free list */
LIST_ROOT(name4, _RLDDIPaletteEntry) unused; /* colors not to use */
LIST_ROOT(name5, _RLDDIPaletteEntry) hash[HASH_SIZE];
void* priv;
RLDDIPaletteAllocateColorMethod allocate_color;
RLDDIPaletteFreeColorMethod free_color;
RLDDIPaletteSetColorMethod set_color;
/*
* A color allocator for use with RLDDIColormap.
*/
RLDDIColorAllocator alloc;
} RLDDIPalette;
RLDDIPalette* RLDDICreatePalette(PD3DI_RASTCTX pCtx, size_t size);
void RLDDIPaletteSetColor(RLDDIPalette* pal,
int index, int red, int green, int blue);
int RLDDIPaletteAllocateColor(RLDDIPalette* pal,
int red, int green, int blue);
void RLDDIPaletteFreeColor(RLDDIPalette* pal, int index);
void RLDDIDestroyPalette(RLDDIPalette* pal);
#endif // _RAMPPALETTE_H_