static int format_has_cmyk_model (const Babl *format)
{
- return format->format.model->is_cmyk;
+ return format->format.model->flags & BABL_MODEL_FLAG_CMYK;
}
static void
int id,
int components,
BablComponent **component,
- int is_cmyk)
+ BablModelFlag flags)
{
Babl *babl;
babl->model.space = space;
babl->model.data = NULL;
babl->model.model = NULL;
- babl->model.is_cmyk = is_cmyk;
+ babl->model.flags = flags;
strcpy (babl->instance.name, name);
memcpy (babl->model.component, component, sizeof (BablComponent *) * components);
char *name = NULL;
const Babl *space = babl_space ("sRGB");
BablComponent *component [BABL_MAX_COMPONENTS];
- int is_cmyk = 0;
+ BablModelFlag flags = 0;
va_start (varg, first_argument);
{
assigned_name = va_arg (varg, char *);
}
-
+ else if (!strcmp (arg, "gray"))
+ {
+ flags |= BABL_MODEL_FLAG_GRAY;
+ }
+ else if (!strcmp (arg, "CIE"))
+ {
+ flags |= BABL_MODEL_FLAG_CIE;
+ }
+ else if (!strcmp (arg, "rgb"))
+ {
+ flags |= BABL_MODEL_FLAG_RGB;
+ }
else if (!strcmp (arg, "cmyk"))
{
- is_cmyk = 1;
+ flags |= BABL_MODEL_FLAG_CMYK;
+ }
+ else if (!strcmp (arg, "inverted"))
+ {
+ flags |= BABL_MODEL_FLAG_INVERTED;
+ }
+ else if (!strcmp (arg, "premultiplied"))
+ {
+ flags |= BABL_MODEL_FLAG_PREMULTIPLIED;
+ }
+ else if (!strcmp (arg, "alpha"))
+ {
+ flags |= BABL_MODEL_FLAG_ALPHA;
+ }
+ else if (!strcmp (arg, "nonlinear"))
+ {
+ flags |= BABL_MODEL_FLAG_NONLINEAR;
+ }
+ else if (!strcmp (arg, "perceptual"))
+ {
+ flags |= BABL_MODEL_FLAG_PERCEPTUAL;
}
/* if we didn't point to a known string, we assume argument to be babl */
if (! babl)
{
- babl = model_new (name, space, id, components, component, is_cmyk);
+ babl = model_new (name, space, id, components, component, flags);
babl_db_insert (db, babl);
construct_double_format (babl);
}
return babl_remodel_with_space (babl_model (name), space);
}
+BablModelFlag babl_model_get_flags (const Babl *model)
+{
+ if (!model) return 0;
+ return model->model.flags;
+}
void *data; /* user-data, used for palette */
const Babl *space;
void *model; /* back pointer to model with sRGB space */
- int is_cmyk; /* is an cmyk based model */
+ BablModelFlag flags;
} BablModel;
#endif
*/
const Babl * babl_format_get_model (const Babl *format);
+
+
+typedef enum _BablModelFlag BablModelFlag;
+
+enum _BablModelFlag
+{
+ BABL_MODEL_FLAG_OTHER = 0,
+ BABL_MODEL_FLAG_ALPHA = 1<<1,
+ BABL_MODEL_FLAG_PREMULTIPLIED = 1<<2,
+ BABL_MODEL_FLAG_CIE = 1<<3,
+ BABL_MODEL_FLAG_GRAY = 1<<4,
+ BABL_MODEL_FLAG_RGB = 1<<5,
+ BABL_MODEL_FLAG_CMYK = 1<<6,
+ BABL_MODEL_FLAG_INVERTED = 1<<7,
+ BABL_MODEL_FLAG_NONLINEAR = 1<<8,
+ BABL_MODEL_FLAG_PERCEPTUAL = 1<<9,
+};
+
+BablModelFlag babl_model_get_flags (const Babl *model);
+
/**
* babl_format_get_n_components:
*
*/
const char * babl_format_get_encoding (const Babl *babl);
-
int babl_space_is_cmyk (const Babl *space);
/* values below this are stored premultiplied with this value,
*/
#include "config.h"
+
#include <math.h>
#include <string.h>
-#include "babl.h"
+#include "babl-internal.h"
#include "babl-base.h"
#include "base/util.h"
babl_component ("ka"),
babl_component ("A"),
"cmyk",
+ "inverted",
+ "alpha",
+ "premultiplied",
NULL
);
babl_component ("key"),
babl_component ("A"),
"cmyk",
+ "inverted",
+ "alpha",
NULL
);
babl_model_new (
babl_component ("yellow"),
babl_component ("key"),
"cmyk",
+ "inverted",
NULL
);
babl_component ("Ka"),
babl_component ("A"),
"cmyk",
+ "alpha",
+ "premultiplied",
NULL
);
babl_component ("Key"),
babl_component ("A"),
"cmyk",
+ "alpha",
NULL
);
babl_model_new (
babl_model_new (
"id", BABL_GRAY,
babl_component_from_id (BABL_GRAY_LINEAR),
+ "gray",
NULL);
"id", BABL_GRAY_ALPHA,
babl_component_from_id (BABL_GRAY_LINEAR),
babl_component_from_id (BABL_ALPHA),
+ "gray",
+ "alpha",
NULL);
babl_model_new (
"id", BABL_GRAY_ALPHA_PREMULTIPLIED,
babl_component_from_id (BABL_GRAY_LINEAR_MUL_ALPHA),
babl_component_from_id (BABL_ALPHA),
+ "gray",
+ "premultiplied",
+ "alpha",
NULL);
babl_model_new (
"id", BABL_MODEL_GRAY_NONLINEAR,
babl_component_from_id (BABL_GRAY_NONLINEAR),
+ "gray",
+ "nonlinear",
NULL);
babl_model_new (
"id", BABL_MODEL_GRAY_NONLINEAR_ALPHA,
babl_component_from_id (BABL_GRAY_NONLINEAR),
babl_component_from_id (BABL_ALPHA),
+ "gray",
+ "nonlinear",
+ "alpha",
NULL);
babl_model_new (
"id", BABL_MODEL_GRAY_NONLINEAR_ALPHA_PREMULTIPLIED,
babl_component_from_id (BABL_GRAY_NONLINEAR_MUL_ALPHA),
babl_component_from_id (BABL_ALPHA),
+ "gray",
+ "nonlinear",
+ "premultiplied",
+ "alpha",
NULL);
babl_model_new (
"id", BABL_MODEL_GRAY_PERCEPTUAL,
babl_component_from_id (BABL_GRAY_PERCEPTUAL),
+ "gray",
+ "perceptual",
NULL);
babl_model_new (
"id", BABL_MODEL_GRAY_PERCEPTUAL_ALPHA,
babl_component_from_id (BABL_GRAY_PERCEPTUAL),
babl_component_from_id (BABL_ALPHA),
+ "gray",
+ "perceptual",
+ "alpha",
NULL);
}
babl_component_from_id (BABL_RED),
babl_component_from_id (BABL_GREEN),
babl_component_from_id (BABL_BLUE),
+ "rgb",
NULL);
babl_model_new (
babl_component_from_id (BABL_GREEN_MUL_ALPHA),
babl_component_from_id (BABL_BLUE_MUL_ALPHA),
babl_component_from_id (BABL_ALPHA),
+ "rgb",
+ "premultiplied",
+ "alpha",
NULL);
babl_model_new (
babl_component_from_id (BABL_RED_NONLINEAR),
babl_component_from_id (BABL_GREEN_NONLINEAR),
babl_component_from_id (BABL_BLUE_NONLINEAR),
+ "rgb",
+ "nonlinear",
NULL);
babl_model_new (
babl_component_from_id (BABL_RED_PERCEPTUAL),
babl_component_from_id (BABL_GREEN_PERCEPTUAL),
babl_component_from_id (BABL_BLUE_PERCEPTUAL),
+ "rgb",
+ "perceptual",
NULL);
babl_model_new (
babl_component_from_id (BABL_GREEN_NONLINEAR),
babl_component_from_id (BABL_BLUE_NONLINEAR),
babl_component_from_id (BABL_ALPHA),
+ "rgb",
+ "nonlinear",
+ "alpha",
NULL);
babl_model_new (
babl_component_from_id (BABL_GREEN_PERCEPTUAL),
babl_component_from_id (BABL_BLUE_PERCEPTUAL),
babl_component_from_id (BABL_ALPHA),
+ "rgb",
+ "perceptual",
+ "alpha",
NULL);
babl_model_new (
babl_component_from_id (BABL_GREEN_NONLINEAR_MUL_ALPHA),
babl_component_from_id (BABL_BLUE_NONLINEAR_MUL_ALPHA),
babl_component_from_id (BABL_ALPHA),
+ "rgb",
+ "nonlinear",
+ "premultiplied",
+ "alpha",
NULL);
babl_model_new (
babl_component_from_id (BABL_GREEN_PERCEPTUAL_MUL_ALPHA),
babl_component_from_id (BABL_BLUE_PERCEPTUAL_MUL_ALPHA),
babl_component_from_id (BABL_ALPHA),
+ "rgb",
+ "perceptual",
+ "premultiplied",
+ "alpha",
NULL);
}
babl_component_from_id (BABL_CB),
babl_component_from_id (BABL_CR),
babl_component_from_id (BABL_ALPHA),
+ "alpha",
NULL);
}