diff options
-rw-r--r-- | include/libcss/errors.h | 4 | ||||
-rw-r--r-- | include/libcss/functypes.h | 4 | ||||
-rw-r--r-- | include/libcss/libcss.h | 4 | ||||
-rw-r--r-- | include/libcss/stylesheet.h | 36 | ||||
-rw-r--r-- | include/libcss/types.h | 13 | ||||
-rw-r--r-- | src/stylesheet.c | 135 | ||||
-rw-r--r-- | src/stylesheet.h | 5 |
7 files changed, 193 insertions, 8 deletions
diff --git a/include/libcss/errors.h b/include/libcss/errors.h index f7eeba2..55bd379 100644 --- a/include/libcss/errors.h +++ b/include/libcss/errors.h @@ -5,8 +5,8 @@ * Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org> */ -#ifndef css_errors_h_ -#define css_errors_h_ +#ifndef libcss_errors_h_ +#define libcss_errors_h_ #include <stddef.h> diff --git a/include/libcss/functypes.h b/include/libcss/functypes.h index 22a48bf..52cb33f 100644 --- a/include/libcss/functypes.h +++ b/include/libcss/functypes.h @@ -5,8 +5,8 @@ * Copyright 2007-8 John-Mark Bell <jmb@netsurf-browser.org> */ -#ifndef css_functypes_h_ -#define css_functypes_h_ +#ifndef libcss_functypes_h_ +#define libcss_functypes_h_ #include <stdbool.h> #include <stdint.h> diff --git a/include/libcss/libcss.h b/include/libcss/libcss.h index 364a3eb..6154828 100644 --- a/include/libcss/libcss.h +++ b/include/libcss/libcss.h @@ -5,8 +5,8 @@ * Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org> */ -#ifndef css_h_ -#define css_h_ +#ifndef libcss_h_ +#define libcss_h_ #include <libcss/errors.h> #include <libcss/functypes.h> diff --git a/include/libcss/stylesheet.h b/include/libcss/stylesheet.h new file mode 100644 index 0000000..a3ff0a6 --- /dev/null +++ b/include/libcss/stylesheet.h @@ -0,0 +1,36 @@ +/* + * This file is part of LibCSS. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2008 John-Mark Bell <jmb@netsurf-browser.org> + */ + +#ifndef libcss_stylesheet_h_ +#define libcss_stylesheet_h_ + +#include <libcss/errors.h> +#include <libcss/types.h> + +/** + * Type of stylesheet import handler + */ +typedef css_error (*css_import_handler)(void *pw, const char *url, + css_stylesheet *sheet); + +css_stylesheet *css_stylesheet_create(const char *url, const char *title, + css_origin origin, uint32_t media, + css_import_handler import_callback, void *import_pw, + css_alloc alloc, void *alloc_pw); +void css_stylesheet_destroy(css_stylesheet *sheet); + +css_error css_stylesheet_append_data(css_stylesheet *sheet, + const uint8_t *data, size_t len); +css_error css_stylesheet_data_done(css_stylesheet *sheet); + +css_error css_stylesheet_get_url(css_stylesheet *sheet, const char **url); +css_error css_stylesheet_get_title(css_stylesheet *sheet, const char **title); +css_error css_stylesheet_get_origin(css_stylesheet *sheet, css_origin *origin); +css_error css_stylesheet_get_media(css_stylesheet *sheet, uint32_t *media); + +#endif + diff --git a/include/libcss/types.h b/include/libcss/types.h index 104e339..ad5b5bf 100644 --- a/include/libcss/types.h +++ b/include/libcss/types.h @@ -5,8 +5,8 @@ * Copyright 2007 John-Mark Bell <jmb@netsurf-browser.org> */ -#ifndef css_types_h_ -#define css_types_h_ +#ifndef libcss_types_h_ +#define libcss_types_h_ #include <stdbool.h> #include <inttypes.h> @@ -32,4 +32,13 @@ typedef struct css_string { typedef struct css_stylesheet css_stylesheet; +/** + * Stylesheet origin + */ +typedef enum css_origin { + CSS_ORIGIN_UA = 0, /**< User agent stylesheet */ + CSS_ORIGIN_USER = 1, /**< User stylesheet */ + CSS_ORIGIN_AUTHOR = 2 /**< Author stylesheet */ +} css_origin; + #endif diff --git a/src/stylesheet.c b/src/stylesheet.c index d848e89..ef981d5 100644 --- a/src/stylesheet.c +++ b/src/stylesheet.c @@ -11,6 +11,141 @@ #include "utils/utils.h" /** + * Create a stylesheet + * + * \param url URL of stylesheet + * \param title Title of stylesheet + * \param origin Origin of stylesheet + * \param media Media stylesheet applies to + * \param import_callback Handler for imported stylesheets + * \param import_pw Client private data for import_callback + * \param alloc Memory (de)allocation function + * \param alloc_pw Client private data for alloc + * \return Pointer to stylesheet on success, NULL otherwise + */ +css_stylesheet *css_stylesheet_create(const char *url, const char *title, + css_origin origin, uint32_t media, + css_import_handler import_callback, void *import_pw, + css_alloc alloc, void *alloc_pw) +{ + UNUSED(url); + UNUSED(title); + UNUSED(origin); + UNUSED(media); + UNUSED(import_callback); + UNUSED(import_pw); + UNUSED(alloc); + UNUSED(alloc_pw); + + return NULL; +} + +/** + * Destroy a stylesheet + * + * \param sheet The stylesheet to destroy + */ +void css_stylesheet_destroy(css_stylesheet *sheet) +{ + UNUSED(sheet); +} + +/** + * Append source data to a stylesheet + * + * \param sheet The stylesheet to append data to + * \param data Pointer to data to append + * \param len Length, in bytes, of data to append + * \return CSS_OK on success, appropriate error otherwise + */ +css_error css_stylesheet_append_data(css_stylesheet *sheet, + const uint8_t *data, size_t len) +{ + UNUSED(sheet); + UNUSED(data); + UNUSED(len); + + return CSS_OK; +} + +/** + * Flag that the last of a stylesheet's data has been seen + * + * \param sheet The stylesheet in question + * \return CSS_OK on success, appropriate error otherwise + */ +css_error css_stylesheet_data_done(css_stylesheet *sheet) +{ + UNUSED(sheet); + + return CSS_OK; +} + +/** + * Retrieve the URL associated with a stylesheet + * + * \param sheet The stylesheet to retrieve the URL from + * \param url Pointer to location to receive pointer to URL + * \return CSS_OK on success, appropriate error otherwise + */ +css_error css_stylesheet_get_url(css_stylesheet *sheet, const char **url) +{ + UNUSED(sheet); + UNUSED(url); + + return CSS_OK; +} + +/** + * Retrieve the title associated with a stylesheet + * + * \param sheet The stylesheet to retrieve the title from + * \param title Pointer to location to receive pointer to title + * \return CSS_Ok on success, appropriate error otherwise + */ +css_error css_stylesheet_get_title(css_stylesheet *sheet, const char **title) +{ + UNUSED(sheet); + UNUSED(title); + + return CSS_OK; +} + +/** + * Retrieve the origin of a stylesheet + * + * \param sheet The stylesheet to retrieve the origin of + * \param origin Pointer to location to receive origin + * \return CSS_OK on success, appropriate error otherwise + */ +css_error css_stylesheet_get_origin(css_stylesheet *sheet, css_origin *origin) +{ + UNUSED(sheet); + UNUSED(origin); + + return CSS_OK; +} + +/** + * Retrieve the media types associated with a stylesheet + * + * \param sheet The stylesheet to retrieve the media types for + * \param media Pointer to location to receive media types + * \return CSS_OK on success, appropriate error otherwise + */ +css_error css_stylesheet_get_media(css_stylesheet *sheet, uint32_t *media) +{ + UNUSED(sheet); + UNUSED(media); + + return CSS_OK; +} + +/****************************************************************************** + * Private API below here * + ******************************************************************************/ + +/** * Create a selector * * \param sheet The stylesheet context diff --git a/src/stylesheet.h b/src/stylesheet.h index 0b87b9f..5968083 100644 --- a/src/stylesheet.h +++ b/src/stylesheet.h @@ -12,6 +12,7 @@ #include <libcss/errors.h> #include <libcss/functypes.h> +#include <libcss/stylesheet.h> #include <libcss/types.h> typedef struct css_rule css_rule; @@ -122,6 +123,7 @@ struct css_stylesheet { char *url; /**< URL of this sheet */ char *title; /**< Title of this sheet */ + css_origin origin; /**< Origin of stylesheet */ uint32_t media; /**< Bitfield of media types */ void *ownerNode; /**< Owning node in document */ @@ -133,6 +135,9 @@ struct css_stylesheet { css_stylesheet *next; /**< Next in sibling list */ css_stylesheet *prev; /**< Previous in sibling list */ + css_import_handler import; /**< Import callback */ + void *import_pw; /**< Import handler data */ + css_alloc alloc; /**< Allocation function */ void *pw; /**< Private word */ }; |