From c853ffb5b2f75f5a889ed2e3ef89b818a736e87a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 13 Apr 2024 13:50:49 +0200 Subject: Adding upstream version 1.3+ds. Signed-off-by: Daniel Baumann --- .../libcroco/docs/examples/cssom-example-1.c | 109 +++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/3rdparty/libcroco/docs/examples/cssom-example-1.c (limited to 'src/3rdparty/libcroco/docs/examples/cssom-example-1.c') diff --git a/src/3rdparty/libcroco/docs/examples/cssom-example-1.c b/src/3rdparty/libcroco/docs/examples/cssom-example-1.c new file mode 100644 index 0000000..85079ce --- /dev/null +++ b/src/3rdparty/libcroco/docs/examples/cssom-example-1.c @@ -0,0 +1,109 @@ +/* -*- Mode: C; indent-tabs-mode:nil; c-basic-offset:8 -*- */ + +/** + *This is an example that shows how to use + *the CSSOM api of the libcroco CSS2 parsing library. + *It just parses the CSS document given in argument and + *it dumps it (serializes) it on the screen. + * + *To compile it using gcc, type + * + *gcc -g -Wall `croco-0.6-config --cflags` `croco-0.6-config --libs` -o cssom-example-1 cssom-example-1.c + * + *Prior to that, you must have compiled and installed libcroco, of course. + * + *@author Dodji Seketeli + */ + +#include +#include + +/** + *Displays the usage of this program. + *@param prg_name the name of the program. + */ +void +display_usage (char *prg_name) +{ + printf ("\nusage: %s [options] \n\n", + prg_name) ; + printf ("\twhere options are:\n") ; + printf ("\t--help|h\tdisplays this help\n") ; + printf ("\n") ; +} + + +/** + *Main entry point. + *This function illustrates a way to use libcroco. + *In this example, we will use a CSS Object Model parser + *to parse a cascading style sheet and dump what we have parsed on stdout. + * + *The goal of the object model parser is to parse a css and build + *an abstract tree out of it. One can then walk the tree to perform + *whatever action he wants. In our case, the function used to + *dump the tree on stdout will walk the tree and dump each one of its + *components (a.k.a. css statements). + */ +int +main (int argc, char **argv) +{ + short i = 0 ; + enum CRStatus status = CR_OK ; + CRStyleSheet *stylesheet = NULL ; + + /*first parse command line arguments*/ + for (i = 1 ; i < argc ; i++) + { + if (argv[i][0] != '-') + break ; + if (!strcmp (argv[i],"--help") + || !strcmp (argv[i], "-h")) + { + display_usage (argv[0]) ; + return 0 ; + } + else + { + display_usage (argv[0]) ; + return 0 ; + } + } + if (i >= argc) + { + display_usage (argv[0]) ; + return 0; + } + + /***************************************************** + *Enough plumbering... now, the real libcroco stuffs. + ***************************************************/ + + /* + *What we want here is to simply parse + *a CSS document using the cssom api. + */ + status = cr_om_parser_simply_parse_file ((const guchar*)argv[i] /*sheet*/, + CR_ASCII /*the encoding*/, + &stylesheet) ; + if (status == CR_OK && stylesheet) + { + /* + *everything went well, + *so dump the stylesheet on stdout. + */ + cr_stylesheet_dump (stylesheet, stdout) ; + } + + if (stylesheet) + { + /* + *free the the memory used to hold the css + *object model + */ + cr_stylesheet_destroy (stylesheet) ; + stylesheet = NULL ; + } + + return 0 ; +} -- cgit v1.2.3