aboutsummaryrefslogtreecommitdiff
path: root/src/html.cc
diff options
context:
space:
mode:
authorRodrigo Arias Mallo <rodarima@gmail.com>2024-05-31 19:53:14 +0200
committerRodrigo Arias Mallo <rodarima@gmail.com>2024-10-05 09:46:55 +0200
commitac56aa678cfe1666b60821f342ccb7b3d3fa7a0d (patch)
tree2887de1a5a21c8550e4bd52ea8867c18a5e2bac9 /src/html.cc
parentee32215fc1937e8a5e3c26b646ca8563e8de92e9 (diff)
Define CssLength as struct instead of int
The int type doesn't have a fixed size, and is only guarantee to hold 16 bits. The current implementation assumes a size of at least 32 bits, an uses three bits to encode the type of information stored in the rest. To add more types of lengths we would need to take more bits from the value itself. A simpler approach is just to use a enumeration to take care of the type of length and a union to encapsulate the different lengths values.
Diffstat (limited to 'src/html.cc')
-rw-r--r--src/html.cc28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/html.cc b/src/html.cc
index ac5dd1ab..1c5a08f4 100644
--- a/src/html.cc
+++ b/src/html.cc
@@ -2205,32 +2205,32 @@ static bool Html_load_image(BrowserWindow *bw, DilloUrl *url,
static void Html_tag_open_img(DilloHtml *html, const char *tag, int tagsize)
{
- int space, border;
+ int border;
const char *attrbuf;
a_Html_common_image_attrs(html, tag, tagsize);
/* Spacing to the left and right */
if ((attrbuf = a_Html_get_attr(html, tag, tagsize, "hspace"))) {
- space = strtol(attrbuf, NULL, 10);
+ int space = strtol(attrbuf, NULL, 10);
if (space > 0) {
- space = CSS_CREATE_LENGTH(space, CSS_LENGTH_TYPE_PX);
+ CssLength len = CSS_CREATE_LENGTH(space, CSS_LENGTH_TYPE_PX);
html->styleEngine->setNonCssHint (CSS_PROPERTY_MARGIN_LEFT,
- CSS_TYPE_LENGTH_PERCENTAGE, space);
+ CSS_TYPE_LENGTH_PERCENTAGE, len);
html->styleEngine->setNonCssHint (CSS_PROPERTY_MARGIN_RIGHT,
- CSS_TYPE_LENGTH_PERCENTAGE, space);
+ CSS_TYPE_LENGTH_PERCENTAGE, len);
}
}
/* Spacing at the top and bottom */
if ((attrbuf = a_Html_get_attr(html, tag, tagsize, "vspace"))) {
- space = strtol(attrbuf, NULL, 10);
+ int space = strtol(attrbuf, NULL, 10);
if (space > 0) {
- space = CSS_CREATE_LENGTH(space, CSS_LENGTH_TYPE_PX);
+ CssLength len = CSS_CREATE_LENGTH(space, CSS_LENGTH_TYPE_PX);
html->styleEngine->setNonCssHint (CSS_PROPERTY_MARGIN_TOP,
- CSS_TYPE_LENGTH_PERCENTAGE, space);
+ CSS_TYPE_LENGTH_PERCENTAGE, len);
html->styleEngine->setNonCssHint (CSS_PROPERTY_MARGIN_BOTTOM,
- CSS_TYPE_LENGTH_PERCENTAGE, space);
+ CSS_TYPE_LENGTH_PERCENTAGE, len);
}
}
@@ -2238,15 +2238,15 @@ static void Html_tag_open_img(DilloHtml *html, const char *tag, int tagsize)
if ((attrbuf = a_Html_get_attr(html, tag, tagsize, "border"))) {
border = strtol(attrbuf, NULL, 10);
if (border >= 0) {
- border = CSS_CREATE_LENGTH(border, CSS_LENGTH_TYPE_PX);
+ CssLength b = CSS_CREATE_LENGTH(border, CSS_LENGTH_TYPE_PX);
html->styleEngine->setNonCssHint (CSS_PROPERTY_BORDER_TOP_WIDTH,
- CSS_TYPE_LENGTH_PERCENTAGE, border);
+ CSS_TYPE_LENGTH_PERCENTAGE, b);
html->styleEngine->setNonCssHint (CSS_PROPERTY_BORDER_BOTTOM_WIDTH,
- CSS_TYPE_LENGTH_PERCENTAGE, border);
+ CSS_TYPE_LENGTH_PERCENTAGE, b);
html->styleEngine->setNonCssHint (CSS_PROPERTY_BORDER_LEFT_WIDTH,
- CSS_TYPE_LENGTH_PERCENTAGE, border);
+ CSS_TYPE_LENGTH_PERCENTAGE, b);
html->styleEngine->setNonCssHint (CSS_PROPERTY_BORDER_RIGHT_WIDTH,
- CSS_TYPE_LENGTH_PERCENTAGE, border);
+ CSS_TYPE_LENGTH_PERCENTAGE, b);
html->styleEngine->setNonCssHint (CSS_PROPERTY_BORDER_TOP_STYLE,
CSS_TYPE_ENUM, BORDER_SOLID);