/* vim:expandtab:ts=2 sw=2:
*/
/* Grafx2 - The Ultimate 256-color bitmap paint program
Copyright owned by various GrafX2 authors, see COPYRIGHT.txt for details.
Grafx2 is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; version 2
of the License.
Grafx2 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 General Public License for more details.
You should have received a copy of the GNU General Public License
along with Grafx2; if not, see
*/
//////////////////////////////////////////////////////////////////////////////
///@file op_c.h
/// Color reduction and color conversion (24b->8b, RGB<->HSL).
/// This is called op_c because half of the process was originally
/// coded in op_asm, in assembler.
//////////////////////////////////////////////////////////////////////////////
#ifndef _OP_C_H_
#define _OP_C_H_
#include "struct.h"
#include "colorred.h"
//////////////////////////////////////////////// Définition des types de base
typedef T_Components * T_Bitmap24B;
typedef byte * T_Bitmap256;
///////////////////////////////////////// Définition d'une table d'occurences
/**
* Occurence table.
*
* This table is used to count the occurrence of an (RGB) pixel value in the
* source 24bit image. These count are then used by the median cut algorithm to
* decide which cluster to split.
*/
typedef struct
{
int nbb_r; // Nb de bits de précision sur les rouges
int nbb_g; // Nb de bits de précision sur les verts
int nbb_b; // Nb de bits de précision sur les bleu
int rng_r; // Nb de valeurs sur les rouges (= 1<