From 6be6fa1b2197ffe6e511c5eff9abe14d883f8478 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Wed, 3 Jan 2018 23:58:18 +0000 Subject: CSS utils: Handle new units in length conversion routines. This causes a ripple effect of all the callsites needing information they didn't have. --- content/handlers/css/utils.h | 46 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 8 deletions(-) (limited to 'content/handlers/css/utils.h') diff --git a/content/handlers/css/utils.h b/content/handlers/css/utils.h index 21cb4973b..c8f4c82f4 100644 --- a/content/handlers/css/utils.h +++ b/content/handlers/css/utils.h @@ -26,25 +26,55 @@ /** DPI of the screen, in fixed point units */ extern css_fixed nscss_screen_dpi; +/** + * Length conversion context data. + */ +typedef struct nscss_len_ctx { + /** + * Viewport width in px. + * Only used if unit is vh, vw, vi, vb, vmin, or vmax. + */ + int vw; + /** + * Viewport height in px. + * Only used if unit is vh, vw, vi, vb, vmin, or vmax. + */ + int vh; + /** + * Computed style for the document root element. + * May be NULL if unit is not rem, or rlh. + */ + const css_computed_style *root_style; +} nscss_len_ctx; + /** * Convert an absolute CSS length to points. * - * \param[in] length Absolute CSS length. - * \param[in] unit Unit of the length. + * \param[in] ctx Length conversion context. + * \param[in] length Absolute CSS length. + * \param[in] unit Unit of the length. * \return length in points */ -css_fixed nscss_len2pt(css_fixed length, css_unit unit); +css_fixed nscss_len2pt( + const nscss_len_ctx *ctx, + css_fixed length, + css_unit unit); /** * Convert a CSS length to pixels. * - * \param length Length to convert - * \param unit Corresponding unit - * \param style Computed style applying to length. May be NULL if unit is - * neither em nor ex + * \param[in] ctx Length conversion context. + * \param[in] length Length to convert. + * \param[in] unit Corresponding unit. + * \param[in] style Computed style applying to length. + * May be NULL if unit is not em, ex, cap, ch, or ic. * \return length in pixels */ -css_fixed nscss_len2px(css_fixed length, css_unit unit, const css_computed_style *style); +css_fixed nscss_len2px( + const nscss_len_ctx *ctx, + css_fixed length, + css_unit unit, + const css_computed_style *style); /** -- cgit v1.2.3