diff options
Diffstat (limited to 'content/handlers/css/css.c')
-rw-r--r-- | content/handlers/css/css.c | 43 |
1 files changed, 23 insertions, 20 deletions
diff --git a/content/handlers/css/css.c b/content/handlers/css/css.c index 93efd6a1b..f9197ddfe 100644 --- a/content/handlers/css/css.c +++ b/content/handlers/css/css.c @@ -16,19 +16,22 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include <string.h> #include <assert.h> #include <libwapcaplet/libwapcaplet.h> #include <dom/dom.h> -#include "content/content_protected.h" -#include "content/fetch.h" -#include "content/hlcache.h" -#include "desktop/system_colour.h" +#include "utils/errors.h" #include "utils/corestrings.h" #include "utils/utils.h" #include "utils/http.h" #include "utils/log.h" #include "utils/messages.h" +#include "content/content_protected.h" +#include "content/content_factory.h" +#include "content/fetch.h" +#include "content/hlcache.h" +#include "desktop/system_colour.h" #include "css/css.h" #include "css/hints.h" @@ -37,6 +40,9 @@ /* Define to trace import fetches */ #undef NSCSS_IMPORT_TRACE +/** Screen DPI in fixed point units: defaults to 90, which RISC OS uses */ +css_fixed nscss_screen_dpi = F_90; + struct content_css_data; /** @@ -80,8 +86,6 @@ typedef struct { * imports array */ } nscss_import_ctx; -static bool nscss_process_data(struct content *c, const char *data, - unsigned int size); static bool nscss_convert(struct content *c); static void nscss_destroy(struct content *c); static nserror nscss_clone(const struct content *old, struct content **newc); @@ -98,7 +102,7 @@ static void nscss_destroy_css_data(struct content_css_data *c); static void nscss_content_done(struct content_css_data *css, void *pw); static css_error nscss_handle_import(void *pw, css_stylesheet *parent, - lwc_string *url, uint64_t media); + lwc_string *url); static nserror nscss_import(hlcache_handle *handle, const hlcache_event *event, void *pw); static css_error nscss_import_complete(nscss_import_ctx *ctx); @@ -170,7 +174,7 @@ nscss_create(const content_handler *handler, xnsbase, charset, result->base.quirks, nscss_content_done, result); if (error != NSERROR_OK) { - content_broadcast_errorcode(&result->base, NSERROR_NOMEM); + content_broadcast_error(&result->base, NSERROR_NOMEM, NULL); if (charset_value != NULL) lwc_string_unref(charset_value); free(result); @@ -245,14 +249,15 @@ static nserror nscss_create_css_data(struct content_css_data *c, * \param size Number of bytes to process * \return true on success, false on failure */ -bool nscss_process_data(struct content *c, const char *data, unsigned int size) +static bool +nscss_process_data(struct content *c, const char *data, unsigned int size) { nscss_content *css = (nscss_content *) c; css_error error; error = nscss_process_css_data(&css->data, data, size); if (error != CSS_OK && error != CSS_NEEDDATA) { - content_broadcast_errorcode(c, NSERROR_CSS); + content_broadcast_error(c, NSERROR_CSS, NULL); } return (error == CSS_OK || error == CSS_NEEDDATA); @@ -286,7 +291,7 @@ bool nscss_convert(struct content *c) error = nscss_convert_css_data(&css->data); if (error != CSS_OK) { - content_broadcast_errorcode(c, NSERROR_CSS); + content_broadcast_error(c, NSERROR_CSS, NULL); return false; } @@ -374,8 +379,8 @@ nserror nscss_clone(const struct content *old, struct content **newc) { const nscss_content *old_css = (const nscss_content *) old; nscss_content *new_css; - const char *data; - unsigned long size; + const uint8_t *data; + size_t size; nserror error; new_css = calloc(1, sizeof(nscss_content)); @@ -402,7 +407,9 @@ nserror nscss_clone(const struct content *old, struct content **newc) data = content__get_source_data(&new_css->base, &size); if (size > 0) { - if (nscss_process_data(&new_css->base, data, size) == false) { + if (nscss_process_data(&new_css->base, + (char *)data, + (unsigned int)size) == false) { content_destroy(&new_css->base); return NSERROR_CLONE_FAILED; } @@ -479,7 +486,7 @@ void nscss_content_done(struct content_css_data *css, void *pw) /* Retrieve the size of this sheet */ error = css_stylesheet_size(css->sheet, &size); if (error != CSS_OK) { - content_broadcast_errorcode(c, NSERROR_CSS); + content_broadcast_error(c, NSERROR_CSS, NULL); content_set_error(c); return; } @@ -512,11 +519,10 @@ void nscss_content_done(struct content_css_data *css, void *pw) * \param pw CSS object requesting the import * \param parent Stylesheet requesting the import * \param url URL of the imported sheet - * \param media Applicable media for the imported sheet * \return CSS_OK on success, appropriate error otherwise */ css_error nscss_handle_import(void *pw, css_stylesheet *parent, - lwc_string *url, uint64_t media) + lwc_string *url) { content_type accept = CONTENT_CSS; struct content_css_data *c = pw; @@ -562,7 +568,6 @@ css_error nscss_handle_import(void *pw, css_stylesheet *parent, } /* Create content */ - c->imports[c->import_count].media = media; /** \todo Why aren't we getting a relative url part, to join? */ nerror = nsurl_create(lwc_string_data(url), &ns_url); @@ -635,7 +640,6 @@ nserror nscss_import(hlcache_handle *handle, error = nscss_import_complete(ctx); break; - case CONTENT_MSG_ERRORCODE: case CONTENT_MSG_ERROR: hlcache_handle_release(handle); ctx->css->imports[ctx->index].c = NULL; @@ -643,7 +647,6 @@ nserror nscss_import(hlcache_handle *handle, error = nscss_import_complete(ctx); /* Already released handle */ break; - default: break; } |