static BablPalette * make_pal (const Babl *pal_space, const Babl *format, const void *data, int count) { BablPalette *pal = NULL; int bpp = babl_format_get_bytes_per_pixel (format); babl_assert (count > 0); pal = babl_malloc (sizeof (BablPalette)); pal->count = count; pal->format = format; pal->data = babl_malloc (bpp * count); pal->data_double = babl_malloc (4 * sizeof(double) * count); pal->data_u8 = babl_malloc (4 * sizeof(char) * count); pal->radii = babl_malloc (sizeof (BablPaletteRadius) * (pal->count - 1) * pal->count); memcpy (pal->data, data, bpp * count); babl_process (babl_fish (format, babl_format_with_space ("RGBA double", pal_space)), data, pal->data_double, count); babl_process (babl_fish (format, babl_format_with_space ("R'G'B'A u8", pal_space)), data, pal->data_u8, count); babl_palette_init_radii (pal); babl_palette_reset_hash (pal); return pal; }
static BablPalette *make_pal (const Babl *format, const void *data, int count) { BablPalette *pal = NULL; int bpp = babl_format_get_bytes_per_pixel (format); pal = babl_malloc (sizeof (BablPalette)); pal->count = count; pal->format = format; pal->data = babl_malloc (bpp * count); pal->data_double = babl_malloc (4 * sizeof(double) * count); pal->data_u8 = babl_malloc (4 * sizeof(char) * count); memcpy (pal->data, data, bpp * count); babl_process (babl_fish (format, babl_format ("RGBA double")), data, pal->data_double, count); babl_process (babl_fish (format, babl_format ("RGBA u8")), data, pal->data_u8, count); babl_palette_reset_hash (pal); return pal; }
static Babl * type_new (const char *name, int id, int bits) { Babl *babl; babl_assert (bits != 0); babl_assert (bits % 8 == 0); babl = babl_malloc (sizeof (BablType) + strlen (name) + 1); babl_set_destructor (babl, babl_type_destroy); babl->instance.name = (void *) ((char *) babl + sizeof (BablType)); babl->class_type = BABL_TYPE; babl->instance.id = id; strcpy (babl->instance.name, name); babl->type.bits = bits; babl->type.from_list = NULL; return babl; }