/* babl - dynamically extendable universal pixel conversion library.
* Copyright (C) 2005, Øyvind Kolås.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
* Public License along with this library; if not, see
* .
*/
#include "config.h"
#include
#include
#include
#include "babl.h"
#include "common.inc"
int
main (void)
{
int OK = 1;
babl_init ();
OK = ! babl_format_is_palette (babl_format_n (babl_type ("double"), 3));
if(1){
unsigned char in[][1] = {{ 0},{ 1},{ 2},{15}};
unsigned char out[][4] = {{0,0,0,255},{127,0,0,255},{0,127,0,255},{255,255,255,255}};
const Babl *palA;// = babl_new_palette (NULL, 0);
//Babl *palB = babl_new_palette (NULL, 0);
//
babl_new_palette (NULL, &palA, NULL);
assert (palA);
CHECK_CONV("pal to rgba", unsigned char,
palA, babl_format("R'G'B'A u8"),
in, out);
}
{
unsigned char in[][2] = {{ 0,255},{ 1,255},{ 2,255},{15,200}};
unsigned char out[][4] = {{0,0,0,255},{127,0,0,255},{0,127,0,255},{255,255,255,200}};
const Babl *palA;
babl_new_palette (NULL, NULL, &palA);
assert (palA);
CHECK_CONV("palA to rgba", unsigned char,
palA, babl_format("R'G'B'A u8"),
in, out);
}
#if 1
{
unsigned char in[][4] = {{0,0,0,255},{140,0,0,255},{0,127,0,255}};
unsigned char out[][1] = {{ 0},{ 1},{ 2}};
const Babl *palA;
babl_new_palette ("palC", &palA, NULL);
CHECK_CONV("rgba to pal", unsigned char,
babl_format("R'G'B'A u8"), palA,
in, out);
}
{
unsigned char in[][4] = {{0,0,0,255},{140,0,0,255},{0,127,0,127}};
unsigned char out[][2] = {{ 0,255},{ 1,255},{ 2,127}};
const Babl *pal;
babl_new_palette ("palC", NULL, &pal);
CHECK_CONV("rgba to pal+alpha", unsigned char,
babl_format("R'G'B'A u8"), pal,
in, out);
}
/* check with a custom floating point palette, _and_ alpha component */
{
float palette[] = {
0.5, 1.0,
0.23, 0.42,
1.0, 0.2
};
unsigned char in[][2] = {{ 0,255},{0,127},{ 1,255},{ 2,255}};
unsigned char out[][4] = {{128,128,128,255},{128,128,128,127},{59,59,59,107},{255,255,255,51}};
const Babl *pal;
babl_new_palette (NULL, NULL, &pal);
babl_palette_set_palette (pal, babl_format ("YA float"), palette, 3);
CHECK_CONV("rgba to YA float pal+alpha", unsigned char,
pal, babl_format("RGBA u8"),
in, out);
}
/* check with a custom floating point palette, _and_ alpha component */
{
float palette[] = {
0.5, 1.0,
0.23, 0.42,
1.0, 0.2
};
unsigned char in[][2] = {{ 0,255},{0,127},{ 1,255},{ 2,255}};
unsigned char out[][4] = {{128,128,128,255},{128,128,128,127},{59,59,59,107},{255,255,255,51}};
const Babl *pal;
babl_new_palette (NULL, NULL, &pal);
babl_palette_set_palette (pal, babl_format ("YA float"), palette, 3);
CHECK_CONV("rgba to YA float pal+alpha", unsigned char,
pal, babl_format("RGBA u8"),
in, out);
}
/* check with a custom floating point palette */
{
float palette[] = {
0.5, 1.0,
0.23, 0.42,
1.0, 0.2
};
unsigned char in[][1] = {{ 0},{ 1},{ 2}};
unsigned char out[][4] = {{128,128,128,255},{59,59,59,107},{255,255,255,51}};
const Babl *pal;
babl_new_palette (NULL, &pal, NULL);
babl_palette_set_palette (pal, babl_format ("YA float"), palette, 3);
CHECK_CONV("rgba to float pal", unsigned char,
pal, babl_format("RGBA u8"),
in, out);
{
const Babl *p2;
p2 = babl_format_with_space ((void*)pal, babl_space ("ACEScg"));
CHECK_CONV("rgba to float pal", unsigned char,
p2, babl_format("RGBA u8"),
in, out);
}
}
#endif
babl_exit ();
return !OK;
}