From 615096b610b74bb24cab855866e3add42c48bac0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Mon, 22 Jul 2019 17:10:08 +0200 Subject: [PATCH] docs: improve generated reference When registering types, models, formats and components one can now specify override "doc" strings that end up in this reference. --- babl/babl-component.c | 11 ++++-- babl/base/model-ycbcr.c | 2 ++ docs/babl.css | 4 ++- extensions/CIE.c | 14 +++++--- tools/babl-html-dump.c | 74 ++++++++++++++++++++++++++++++++--------- 5 files changed, 81 insertions(+), 24 deletions(-) diff --git a/babl/babl-component.c b/babl/babl-component.c index 2993e81..514ad26 100644 --- a/babl/babl-component.c +++ b/babl/babl-component.c @@ -29,7 +29,8 @@ component_new (const char *name, int id, int luma, int chroma, - int alpha) + int alpha, + const char *doc) { Babl *babl; @@ -39,6 +40,7 @@ component_new (const char *name, babl->class_type = BABL_COMPONENT; babl->instance.id = id; + babl->instance.doc = doc; babl->component.luma = luma; babl->component.chroma = chroma; babl->component.alpha = alpha; @@ -73,6 +75,7 @@ babl_component_new (void *first_arg, int alpha = 0; const char *name = first_arg; const char *arg; + const char *doc = NULL; va_start (varg, first_arg); @@ -87,6 +90,10 @@ babl_component_new (void *first_arg, { id = va_arg (varg, int); } + else if (!strcmp (arg, "doc")) + { + doc = va_arg (varg, const char *); + } else if (!strcmp (arg, "luma")) { @@ -136,7 +143,7 @@ babl_component_new (void *first_arg, return babl; } - babl = component_new (name, id, luma, chroma, alpha); + babl = component_new (name, id, luma, chroma, alpha, doc); /* Since there is not an already registered instance by the required * id/name, inserting newly created class into database. diff --git a/babl/base/model-ycbcr.c b/babl/base/model-ycbcr.c index 21353e6..64db6a2 100644 --- a/babl/base/model-ycbcr.c +++ b/babl/base/model-ycbcr.c @@ -63,6 +63,7 @@ models (void) { babl_model_new ( "id", BABL_YCBCR, + "doc", "Y'CbCr video format model, NB! math is tuned to sRGB space", babl_component_from_id (BABL_GRAY_NONLINEAR), babl_component_from_id (BABL_CB), babl_component_from_id (BABL_CR), @@ -70,6 +71,7 @@ models (void) babl_model_new ( "id", BABL_YCBCR_ALPHA, + "doc", "Y'CbCr video format model, separate alpha NB! math is tuned to sRGB space", babl_component_from_id (BABL_GRAY_NONLINEAR), babl_component_from_id (BABL_CB), babl_component_from_id (BABL_CR), diff --git a/docs/babl.css b/docs/babl.css index c63b7f3..ecfe47e 100644 --- a/docs/babl.css +++ b/docs/babl.css @@ -2,6 +2,7 @@ body { margin: 0; padding: 0; + font-size: 14pt; } div.paper { background-color: #fff; @@ -149,6 +150,7 @@ span.NULL { color: #555; } + tt { font-size: 110%; } pre.authors { font-size: 100%; font-family: FreeSans, Verdana, sans-serif; @@ -314,7 +316,7 @@ } } -.item_title { font-weight: bold; margin-top: 1.5em; margin-bottom: 0.6em; +.item_title { font-weight: bold; margin-top: 2.5em; margin-bottom: 0.6em; } diff --git a/extensions/CIE.c b/extensions/CIE.c index 9bfb41b..4b41894 100644 --- a/extensions/CIE.c +++ b/extensions/CIE.c @@ -85,11 +85,11 @@ init (void) static void components (void) { - babl_component_new ("CIE L", NULL); - babl_component_new ("CIE a", "chroma", NULL); - babl_component_new ("CIE b", "chroma", NULL); - babl_component_new ("CIE C(ab)", "chroma", NULL); - babl_component_new ("CIE H(ab)", "chroma", NULL); + babl_component_new ("CIE L", "doc", "Luminance, range 0.0-100.0 in float", NULL); + babl_component_new ("CIE a", "chroma", "doc", "chroma component 0.0 is no saturation", NULL); + babl_component_new ("CIE b", "chroma", "doc", "chroma component 0.0 is no saturation", NULL); + babl_component_new ("CIE C(ab)", "chroma", "doc", "chrominance/saturation", NULL); + babl_component_new ("CIE H(ab)", "chroma", "doc", "hue value range 0.0-360.0", NULL); babl_component_new ("CIE X", NULL); babl_component_new ("CIE Y", NULL); babl_component_new ("CIE Z", NULL); @@ -106,6 +106,7 @@ models (void) { babl_model_new ( "name", "CIE Lab", + "doc", "CIE Lab color model, a perceptually uniform space, euclidian distance in this space represents delta E.", babl_component ("CIE L"), babl_component ("CIE a"), babl_component ("CIE b"), @@ -114,6 +115,7 @@ models (void) babl_model_new ( "name", "CIE Lab alpha", + "doc", "CIE Lab color model, with separate alpha", babl_component ("CIE L"), babl_component ("CIE a"), babl_component ("CIE b"), @@ -124,6 +126,7 @@ models (void) babl_model_new ( "name", "CIE LCH(ab)", + "doc", "CIE LCH color model, using cylindrical coordinates", babl_component ("CIE L"), babl_component ("CIE C(ab)"), babl_component ("CIE H(ab)"), @@ -132,6 +135,7 @@ models (void) babl_model_new ( "name", "CIE LCH(ab) alpha", + "doc", "CIE LCH color model, using cylindrical coordinates, with separate alpha", babl_component ("CIE L"), babl_component ("CIE C(ab)"), babl_component ("CIE H(ab)"), diff --git a/tools/babl-html-dump.c b/tools/babl-html-dump.c index 0f294a0..08db1cd 100644 --- a/tools/babl-html-dump.c +++ b/tools/babl-html-dump.c @@ -44,24 +44,21 @@ main (void) { babl_init (); - printf ("
"); - printf ("
\n"); + printf ("
"); + printf ("

Types

"); babl_type_class_for_each (each_item, NULL); printf ("
\n"); - printf ("
\n"); - printf ("
"); - printf ("
\n"); + printf ("
"); + printf ("

Models

"); babl_model_class_for_each (each_item, NULL); printf ("
\n"); - printf ("
\n"); - printf ("
"); - printf ("
\n"); + printf ("
"); + printf ("

Pixelformats

"); babl_format_class_for_each (each_item, NULL); printf ("
\n"); - printf ("
\n"); /* printf ("
"); @@ -109,10 +106,23 @@ static int each_item (Babl *babl, void *user_data) { - printf ("
\n", + const char *fun_pre = "babl_type"; + const char *fun_post = ")"; + + switch (babl->class_type) + { + case BABL_MODEL: fun_pre = "babl_model"; break; + case BABL_FORMAT: fun_pre = "babl_format_with_space"; + fun_post = ", space|NULL)"; + break; + } + + printf ("
\n", normalize (babl->instance.name), normalize (babl->instance.name), - babl->instance.name); + fun_pre, + babl->instance.name, + fun_post); printf ("
"); @@ -157,6 +167,38 @@ model_doc (const Babl *babl) printf ("%s", babl->instance.doc); else { + BablModelFlag flags = babl_get_model_flags (babl); + if (flags & BABL_MODEL_FLAG_RGB) + printf ("RGB"); + else if (flags & BABL_MODEL_FLAG_GRAY) + printf ("Grayscale"); + else if (flags & BABL_MODEL_FLAG_CMYK) + { + if (flags & BABL_MODEL_FLAG_INVERTED) + printf ("CMYK with inverted color components (0.0=full coverage), for additive compositing"); + else + printf ("CMYK"); + } + + if (flags & BABL_MODEL_FLAG_LINEAR) + printf (" linear"); + if (flags & BABL_MODEL_FLAG_NONLINEAR) + printf (" with TRC from space"); + if (flags & BABL_MODEL_FLAG_PERCEPTUAL) + printf (" with perceptual (sRGB) TRC"); + + if (flags & BABL_MODEL_FLAG_ALPHA) + { + if (flags & BABL_MODEL_FLAG_ASSOCIATED) + { + printf (", associated alpha"); + } + else + { + printf (", separate alpha"); + } + } + } } @@ -214,12 +256,12 @@ format_html (Babl *babl) printf ("%s", babl->instance.doc); else { - const Babl *type = BABL (babl->format.type[0]); + //const Babl *type = BABL (babl->format.type[0]); model_doc (model); - if (type->instance.doc) - printf (" %s", type->instance.doc); - else - printf (" %s", type->instance.name); + //if (type->instance.doc) + // printf (" %s", type->instance.doc); + //else + // printf (" %s", type->instance.name); } printf ("

"); -- 2.30.2