toolchains: branch master updated. ae1f09a701386fe517ccccb1fbc4aca7d048cf64
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/toolchains.git/shortlog/ae1f09a701386fe517...
...commit http://git.netsurf-browser.org/toolchains.git/commit/ae1f09a701386fe517cc...
...tree http://git.netsurf-browser.org/toolchains.git/tree/ae1f09a701386fe517cccc...
The branch, master has been updated
via ae1f09a701386fe517ccccb1fbc4aca7d048cf64 (commit)
from b4fd4dd4ba8abaca4e984b1af5892607483a46d7 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/toolchains.git/commit/?id=ae1f09a701386fe5...
commit ae1f09a701386fe517ccccb1fbc4aca7d048cf64
Author: John-Mark Bell <jmb(a)netsurf-browser.org>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
SDK: bump openssl and curl
diff --git a/sdk/Makefile b/sdk/Makefile
index 960e1af..a35c44e 100644
--- a/sdk/Makefile
+++ b/sdk/Makefile
@@ -32,7 +32,7 @@ VERSION_LIBICONV := 1.17
# https://laurikari.net/tre/
VERSION_LIBTRE := 0.8.0
# https://www.openssl.org/
-VERSION_OPENSSL := 3.0.10
+VERSION_OPENSSL := 3.0.11
# http://www.libpng.org/pub/png/libpng.html
VERSION_LIBPNG := 1.6.40
# http://libjpeg.sourceforge.net/
@@ -44,7 +44,7 @@ VERSION_LIBWEBP := 1.3.2
# https://c-ares.haxx.se/
VERSION_LIBCARES := 1.19.1
# https://curl.haxx.se/
-VERSION_LIBCURL := 8.3.0
+VERSION_LIBCURL := 8.4.0
VERSION_LIBGNURX := 2.5.1
# http://mission-base.com/peter/source/
# 1.7.0: https://github.com/peterGraf/pbl/releases
-----------------------------------------------------------------------
Summary of changes:
sdk/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sdk/Makefile b/sdk/Makefile
index 960e1af..a35c44e 100644
--- a/sdk/Makefile
+++ b/sdk/Makefile
@@ -32,7 +32,7 @@ VERSION_LIBICONV := 1.17
# https://laurikari.net/tre/
VERSION_LIBTRE := 0.8.0
# https://www.openssl.org/
-VERSION_OPENSSL := 3.0.10
+VERSION_OPENSSL := 3.0.11
# http://www.libpng.org/pub/png/libpng.html
VERSION_LIBPNG := 1.6.40
# http://libjpeg.sourceforge.net/
@@ -44,7 +44,7 @@ VERSION_LIBWEBP := 1.3.2
# https://c-ares.haxx.se/
VERSION_LIBCARES := 1.19.1
# https://curl.haxx.se/
-VERSION_LIBCURL := 8.3.0
+VERSION_LIBCURL := 8.4.0
VERSION_LIBGNURX := 2.5.1
# http://mission-base.com/peter/source/
# 1.7.0: https://github.com/peterGraf/pbl/releases
--
Cross-compilation toolchains and environments
1 month, 2 weeks
libcss: branch master updated. release/0.9.1-91-g76ccb5b
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/libcss.git/shortlog/76ccb5b60d67b5ff96d48b...
...commit http://git.netsurf-browser.org/libcss.git/commit/76ccb5b60d67b5ff96d48bfe...
...tree http://git.netsurf-browser.org/libcss.git/tree/76ccb5b60d67b5ff96d48bfe12...
The branch, master has been updated
via 76ccb5b60d67b5ff96d48bfe12aa04787c5b1f99 (commit)
via d6e9f636d693fb129b373862d69ae85c861049f0 (commit)
from 20de9212123bd14efa8f1fd500765038be3851bf (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/libcss.git/commit/?id=76ccb5b60d67b5ff96d4...
commit 76ccb5b60d67b5ff96d48bfe12aa04787c5b1f99
Author: Michael Orlitzky <michael(a)orlitzky.com>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
Add support for SVG stroke-opacity property
https://www.w3.org/TR/SVGTiny12/painting.html#StrokeOpacityProperty
This property is unique to SVG documents, but is otherwise analogous
to the usual CSS "opacity" property (and the recently-added SVG
fill-opacity property).
diff --git a/docs/Bytecode b/docs/Bytecode
index 65926a9..272fd07 100644
--- a/docs/Bytecode
+++ b/docs/Bytecode
@@ -1392,4 +1392,13 @@ Opcodes
bit 7 clear => Reserved for future expansion
bits 0-6: MBZ
-7d-3ff - Reserved for future expansion.
+7d - stroke-opacity
+ <value> (14bits) :
+ bits 8-13: MBZ
+ bits 0-7 :
+ bit 7 set => number follows
+ bits 0-6: MBZ
+ bit 7 clear => Reserved for future expansion
+ bits 0-6: MBZ
+
+7e-3ff - Reserved for future expansion.
diff --git a/include/libcss/computed.h b/include/libcss/computed.h
index c3aa922..5d9cc7e 100644
--- a/include/libcss/computed.h
+++ b/include/libcss/computed.h
@@ -342,6 +342,10 @@ uint8_t css_computed_fill_opacity(
const css_computed_style *style,
css_fixed *fill_opacity);
+uint8_t css_computed_stroke_opacity(
+ const css_computed_style *style,
+ css_fixed *stroke_opacity);
+
uint8_t css_computed_text_transform(
const css_computed_style *style);
diff --git a/include/libcss/properties.h b/include/libcss/properties.h
index 07a71aa..cb1f0ff 100644
--- a/include/libcss/properties.h
+++ b/include/libcss/properties.h
@@ -139,6 +139,7 @@ enum css_properties_e {
CSS_PROP_JUSTIFY_CONTENT = 0x07a,
CSS_PROP_ORDER = 0x07b,
CSS_PROP_FILL_OPACITY = 0x07c,
+ CSS_PROP_STROKE_OPACITY = 0x07d,
CSS_N_PROPERTIES
};
@@ -786,6 +787,11 @@ enum css_right_e {
CSS_RIGHT_AUTO = 0x2
};
+enum css_stroke_opacity_e {
+ CSS_STROKE_OPACITY_INHERIT = 0x0,
+ CSS_STROKE_OPACITY_SET = 0x1
+};
+
enum css_table_layout_e {
CSS_TABLE_LAYOUT_INHERIT = 0x0,
CSS_TABLE_LAYOUT_AUTO = 0x1,
diff --git a/src/bytecode/opcodes.h b/src/bytecode/opcodes.h
index df062af..7a1377b 100644
--- a/src/bytecode/opcodes.h
+++ b/src/bytecode/opcodes.h
@@ -726,6 +726,10 @@ enum op_stress {
STRESS_SET = 0x0080
};
+enum op_stroke_opacity {
+ STROKE_OPACITY_SET = 0x0080
+};
+
enum op_table_layout {
TABLE_LAYOUT_AUTO = 0x0000,
TABLE_LAYOUT_FIXED = 0x0001
diff --git a/src/parse/important.c b/src/parse/important.c
index 6e2590e..02aafc4 100644
--- a/src/parse/important.c
+++ b/src/parse/important.c
@@ -351,6 +351,11 @@ void css__make_style_important(css_style *style)
offset++; /* value */
break;
+ case CSS_PROP_STROKE_OPACITY:
+ if (value == STROKE_OPACITY_SET)
+ offset++; /* value */
+ break;
+
case CSS_PROP_ORDER:
if (value == ORDER_SET)
offset++; /* value */
diff --git a/src/parse/properties/Makefile b/src/parse/properties/Makefile
index fc7ac76..df84d49 100644
--- a/src/parse/properties/Makefile
+++ b/src/parse/properties/Makefile
@@ -62,6 +62,7 @@ DIR_SOURCES := \
play_during.c \
properties.c \
quotes.c \
+ stroke_opacity.c \
text_decoration.c \
utils.c \
voice_family.c
diff --git a/src/parse/properties/properties.c b/src/parse/properties/properties.c
index c1187ca..2cc849c 100644
--- a/src/parse/properties/properties.c
+++ b/src/parse/properties/properties.c
@@ -141,6 +141,7 @@ const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP] =
css__parse_speak,
css__parse_speech_rate,
css__parse_stress,
+ css__parse_stroke_opacity,
css__parse_table_layout,
css__parse_text_align,
css__parse_text_decoration,
@@ -263,6 +264,7 @@ const uint32_t property_unit_mask[CSS_N_PROPERTIES] = {
[CSS_PROP_Z_INDEX] = UNIT_MASK_Z_INDEX,
[CSS_PROP_OPACITY] = UNIT_MASK_OPACITY,
[CSS_PROP_FILL_OPACITY] = UNIT_MASK_FILL_OPACITY,
+ [CSS_PROP_STROKE_OPACITY] = UNIT_MASK_STROKE_OPACITY,
[CSS_PROP_BREAK_AFTER] = UNIT_MASK_BREAK_AFTER,
[CSS_PROP_BREAK_BEFORE] = UNIT_MASK_BREAK_BEFORE,
[CSS_PROP_BREAK_INSIDE] = UNIT_MASK_BREAK_INSIDE,
diff --git a/src/parse/properties/properties.h b/src/parse/properties/properties.h
index 25ef60e..17b7f41 100644
--- a/src/parse/properties/properties.h
+++ b/src/parse/properties/properties.h
@@ -409,6 +409,9 @@ css_error css__parse_speech_rate(css_language *c,
css_error css__parse_stress(css_language *c,
const parserutils_vector *vector, int32_t *ctx,
css_style *result);
+css_error css__parse_stroke_opacity(css_language *c,
+ const parserutils_vector *vector, int32_t *ctx,
+ css_style *result);
css_error css__parse_table_layout(css_language *c,
const parserutils_vector *vector, int32_t *ctx,
css_style *result);
@@ -550,6 +553,7 @@ extern const uint32_t property_unit_mask[CSS_N_PROPERTIES];
#define UNIT_MASK_Z_INDEX (0)
#define UNIT_MASK_OPACITY (0)
#define UNIT_MASK_FILL_OPACITY (0)
+#define UNIT_MASK_STROKE_OPACITY (0)
#define UNIT_MASK_BREAK_AFTER (0)
#define UNIT_MASK_BREAK_BEFORE (0)
#define UNIT_MASK_BREAK_INSIDE (0)
diff --git a/src/parse/properties/stroke_opacity.c b/src/parse/properties/stroke_opacity.c
new file mode 100644
index 0000000..7c10998
--- /dev/null
+++ b/src/parse/properties/stroke_opacity.c
@@ -0,0 +1,82 @@
+/*
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "parse/properties/properties.h"
+#include "parse/properties/utils.h"
+
+/**
+ * Parse stroke-opacity
+ *
+ * \param c Parsing context
+ * \param vector Vector of tokens to process
+ * \param ctx Pointer to vector iteration context
+ * \param result resulting style
+ * \return CSS_OK on success,
+ * CSS_NOMEM on memory exhaustion,
+ * CSS_INVALID if the input is not valid
+ *
+ * Post condition: \a *ctx is updated with the next token to process
+ * If the input is invalid, then \a *ctx remains unchanged.
+ */
+css_error css__parse_stroke_opacity(css_language *c,
+ const parserutils_vector *vector, int32_t *ctx,
+ css_style *result)
+{
+ int32_t orig_ctx = *ctx;
+ css_error error;
+ const css_token *token;
+ enum flag_value flag_value;
+
+ token = parserutils_vector_iterate(vector, ctx);
+ if ((token == NULL) || ((token->type != CSS_TOKEN_IDENT) && (token->type != CSS_TOKEN_NUMBER))) {
+ *ctx = orig_ctx;
+ return CSS_INVALID;
+ }
+
+ flag_value = get_css_flag_value(c, token);
+
+ if (flag_value != FLAG_VALUE__NONE) {
+ error = css_stylesheet_style_flag_value(result, flag_value,
+ CSS_PROP_STROKE_OPACITY);
+
+ } else if (token->type == CSS_TOKEN_NUMBER) {
+ css_fixed num = 0;
+ size_t consumed = 0;
+
+ num = css__number_from_lwc_string(token->idata, false, &consumed);
+ /* Invalid if there are trailing characters */
+ if (consumed != lwc_string_length(token->idata)) {
+ *ctx = orig_ctx;
+ return CSS_INVALID;
+ }
+
+ /* Clamp to range [0,1] */
+ if (num < 0)
+ num = 0;
+ if (num > INTTOFIX(1))
+ num = INTTOFIX(1);
+
+ error = css__stylesheet_style_appendOPV(result, CSS_PROP_STROKE_OPACITY, 0, STROKE_OPACITY_SET);
+ if (error != CSS_OK) {
+ *ctx = orig_ctx;
+ return error;
+ }
+
+ error = css__stylesheet_style_append(result, num);
+ } else {
+ error = CSS_INVALID;
+ }
+
+ if (error != CSS_OK)
+ *ctx = orig_ctx;
+
+ return error;
+}
+
diff --git a/src/parse/propstrings.c b/src/parse/propstrings.c
index 62c149a..c57bc1b 100644
--- a/src/parse/propstrings.c
+++ b/src/parse/propstrings.c
@@ -215,6 +215,7 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
SMAP("speak"),
SMAP("speech-rate"),
SMAP("stress"),
+ SMAP("stroke-opacity"),
SMAP("table-layout"),
SMAP("text-align"),
SMAP("text-decoration"),
diff --git a/src/parse/propstrings.h b/src/parse/propstrings.h
index 2725df2..8491e72 100644
--- a/src/parse/propstrings.h
+++ b/src/parse/propstrings.h
@@ -64,10 +64,10 @@ enum {
PAGE_BREAK_AFTER, PAGE_BREAK_BEFORE, PAGE_BREAK_INSIDE, PAUSE,
PAUSE_AFTER, PAUSE_BEFORE, PITCH_RANGE, PITCH, PLAY_DURING, POSITION,
QUOTES, RICHNESS, RIGHT, SPEAK_HEADER, SPEAK_NUMERAL, SPEAK_PUNCTUATION,
- SPEAK, SPEECH_RATE, STRESS, TABLE_LAYOUT, TEXT_ALIGN, TEXT_DECORATION,
- TEXT_INDENT, TEXT_TRANSFORM, TOP, UNICODE_BIDI, VERTICAL_ALIGN,
- VISIBILITY, VOICE_FAMILY, VOLUME, WHITE_SPACE, WIDOWS, WIDTH,
- WORD_SPACING, WRITING_MODE, Z_INDEX,
+ SPEAK, SPEECH_RATE, STRESS, STROKE_OPACITY, TABLE_LAYOUT, TEXT_ALIGN,
+ TEXT_DECORATION, TEXT_INDENT, TEXT_TRANSFORM, TOP, UNICODE_BIDI,
+ VERTICAL_ALIGN, VISIBILITY, VOICE_FAMILY, VOLUME, WHITE_SPACE, WIDOWS,
+ WIDTH, WORD_SPACING, WRITING_MODE, Z_INDEX,
LAST_PROP = Z_INDEX,
diff --git a/src/select/autogenerated_computed.h b/src/select/autogenerated_computed.h
index e5d05c7..40005c1 100644
--- a/src/select/autogenerated_computed.h
+++ b/src/select/autogenerated_computed.h
@@ -96,6 +96,7 @@ struct css_computed_style_i {
* page_break_inside 2
* position 3
* right 2 + 5 4
+ * stroke_opacity 1 4
* table_layout 2
* text_align 4
* text_decoration 5
@@ -141,9 +142,9 @@ struct css_computed_style_i {
* quotes 1 sizeof(ptr)
*
* --- --- ---
- * 463 bits 232 + 8sizeof(ptr) bytes
+ * 464 bits 236 + 8sizeof(ptr) bytes
* ===================
- * 290 + 8sizeof(ptr) bytes
+ * 294 + 8sizeof(ptr) bytes
*
* Bit allocations:
*
@@ -193,13 +194,13 @@ struct css_computed_style_i {
* 12 bbbbbbbbbbbaaaaaaaaaaavvvvvvvvvw
* border_spacing; background_position; vertical_align; widows
*
- * 13 bbbbpppaaagggooovvvjjjffflllcccq
+ * 13 bbbbpppaaagggooovvvjjjffflllcccs
* border_bottom_style; position; page_break_before; page_break_after;
* overflow_y; overflow_x; justify_content; font_family; flex_direction; clear;
- * quotes
+ * stroke_opacity
*
- * 14 bbaaorplfeicuCk.................
- * background_color; background_attachment; orphans; order; opacity;
+ * 14 bbaaqorplfeicuCk................
+ * background_color; background_attachment; quotes; orphans; order; opacity;
* list_style_image; flex_shrink; flex_grow; fill_opacity; counter_reset;
* counter_increment; color; background_image
*/
@@ -258,6 +259,7 @@ struct css_computed_style_i {
css_fixed padding_right;
css_fixed padding_top;
css_fixed right;
+ css_fixed stroke_opacity;
css_fixed text_indent;
css_fixed top;
css_fixed vertical_align;
diff --git a/src/select/autogenerated_propget.h b/src/select/autogenerated_propget.h
index 206c7ee..d1f7ffb 100644
--- a/src/select/autogenerated_propget.h
+++ b/src/select/autogenerated_propget.h
@@ -140,8 +140,8 @@ static inline uint8_t get_background_color(const css_computed_style *style,
#undef BACKGROUND_COLOR_MASK
#define BACKGROUND_IMAGE_INDEX 14
-#define BACKGROUND_IMAGE_SHIFT 17
-#define BACKGROUND_IMAGE_MASK 0x20000
+#define BACKGROUND_IMAGE_SHIFT 16
+#define BACKGROUND_IMAGE_MASK 0x10000
static inline uint8_t get_background_image_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[BACKGROUND_IMAGE_INDEX];
@@ -878,8 +878,8 @@ static inline uint8_t get_clip(
#undef CLIP_MASK
#define COLOR_INDEX 14
-#define COLOR_SHIFT 18
-#define COLOR_MASK 0x40000
+#define COLOR_SHIFT 17
+#define COLOR_MASK 0x20000
static inline uint8_t get_color_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[COLOR_INDEX];
@@ -1166,8 +1166,8 @@ static inline uint8_t get_content(const css_computed_style *style, const
#undef CONTENT_MASK
#define COUNTER_INCREMENT_INDEX 14
-#define COUNTER_INCREMENT_SHIFT 19
-#define COUNTER_INCREMENT_MASK 0x80000
+#define COUNTER_INCREMENT_SHIFT 18
+#define COUNTER_INCREMENT_MASK 0x40000
static inline uint8_t get_counter_increment_bits(const css_computed_style
*style)
{
@@ -1195,8 +1195,8 @@ static inline uint8_t get_counter_increment(const css_computed_style *style,
#undef COUNTER_INCREMENT_MASK
#define COUNTER_RESET_INDEX 14
-#define COUNTER_RESET_SHIFT 20
-#define COUNTER_RESET_MASK 0x100000
+#define COUNTER_RESET_SHIFT 19
+#define COUNTER_RESET_MASK 0x80000
static inline uint8_t get_counter_reset_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[COUNTER_RESET_INDEX];
@@ -1329,8 +1329,8 @@ static inline uint8_t get_empty_cells(const css_computed_style *style)
#undef EMPTY_CELLS_MASK
#define FILL_OPACITY_INDEX 14
-#define FILL_OPACITY_SHIFT 21
-#define FILL_OPACITY_MASK 0x200000
+#define FILL_OPACITY_SHIFT 20
+#define FILL_OPACITY_MASK 0x100000
static inline uint8_t get_fill_opacity_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[FILL_OPACITY_INDEX];
@@ -1416,8 +1416,8 @@ static inline uint8_t get_flex_direction(const css_computed_style *style)
#undef FLEX_DIRECTION_MASK
#define FLEX_GROW_INDEX 14
-#define FLEX_GROW_SHIFT 22
-#define FLEX_GROW_MASK 0x400000
+#define FLEX_GROW_SHIFT 21
+#define FLEX_GROW_MASK 0x200000
static inline uint8_t get_flex_grow_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[FLEX_GROW_INDEX];
@@ -1446,8 +1446,8 @@ static inline uint8_t get_flex_grow(const css_computed_style *style, css_fixed
#undef FLEX_GROW_MASK
#define FLEX_SHRINK_INDEX 14
-#define FLEX_SHRINK_SHIFT 23
-#define FLEX_SHRINK_MASK 0x800000
+#define FLEX_SHRINK_SHIFT 22
+#define FLEX_SHRINK_MASK 0x400000
static inline uint8_t get_flex_shrink_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[FLEX_SHRINK_INDEX];
@@ -1820,8 +1820,8 @@ static inline uint8_t get_line_height(
#undef LINE_HEIGHT_MASK
#define LIST_STYLE_IMAGE_INDEX 14
-#define LIST_STYLE_IMAGE_SHIFT 24
-#define LIST_STYLE_IMAGE_MASK 0x1000000
+#define LIST_STYLE_IMAGE_SHIFT 23
+#define LIST_STYLE_IMAGE_MASK 0x800000
static inline uint8_t get_list_style_image_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[LIST_STYLE_IMAGE_INDEX];
@@ -2149,8 +2149,8 @@ static inline uint8_t get_min_width(const css_computed_style *style, css_fixed
#undef MIN_WIDTH_MASK
#define OPACITY_INDEX 14
-#define OPACITY_SHIFT 25
-#define OPACITY_MASK 0x2000000
+#define OPACITY_SHIFT 24
+#define OPACITY_MASK 0x1000000
static inline uint8_t get_opacity_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[OPACITY_INDEX];
@@ -2179,8 +2179,8 @@ static inline uint8_t get_opacity(const css_computed_style *style, css_fixed
#undef OPACITY_MASK
#define ORDER_INDEX 14
-#define ORDER_SHIFT 26
-#define ORDER_MASK 0x4000000
+#define ORDER_SHIFT 25
+#define ORDER_MASK 0x2000000
static inline uint8_t get_order_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[ORDER_INDEX];
@@ -2209,8 +2209,8 @@ static inline uint8_t get_order(const css_computed_style *style, int32_t
#undef ORDER_MASK
#define ORPHANS_INDEX 14
-#define ORPHANS_SHIFT 27
-#define ORPHANS_MASK 0x8000000
+#define ORPHANS_SHIFT 26
+#define ORPHANS_MASK 0x4000000
static inline uint8_t get_orphans_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[ORPHANS_INDEX];
@@ -2605,9 +2605,9 @@ static inline uint8_t get_position(const css_computed_style *style)
#undef POSITION_SHIFT
#undef POSITION_MASK
-#define QUOTES_INDEX 13
-#define QUOTES_SHIFT 0
-#define QUOTES_MASK 0x1
+#define QUOTES_INDEX 14
+#define QUOTES_SHIFT 27
+#define QUOTES_MASK 0x8000000
static inline uint8_t get_quotes_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[QUOTES_INDEX];
@@ -2664,6 +2664,36 @@ static inline uint8_t get_right(const css_computed_style *style, css_fixed
#undef RIGHT_SHIFT
#undef RIGHT_MASK
+#define STROKE_OPACITY_INDEX 13
+#define STROKE_OPACITY_SHIFT 0
+#define STROKE_OPACITY_MASK 0x1
+static inline uint8_t get_stroke_opacity_bits(const css_computed_style *style)
+{
+ uint32_t bits = style->i.bits[STROKE_OPACITY_INDEX];
+ bits &= STROKE_OPACITY_MASK;
+ bits >>= STROKE_OPACITY_SHIFT;
+
+ /* 1bit: t : type */
+ return (bits & 0x1);
+}
+static inline uint8_t get_stroke_opacity(const css_computed_style *style,
+ css_fixed *fixed)
+{
+ uint32_t bits = style->i.bits[STROKE_OPACITY_INDEX];
+ bits &= STROKE_OPACITY_MASK;
+ bits >>= STROKE_OPACITY_SHIFT;
+
+ /* 1bit: t : type */
+ if ((bits & 0x1) == CSS_STROKE_OPACITY_SET) {
+ *fixed = style->i.stroke_opacity;
+ }
+
+ return (bits & 0x1);
+}
+#undef STROKE_OPACITY_INDEX
+#undef STROKE_OPACITY_SHIFT
+#undef STROKE_OPACITY_MASK
+
#define TABLE_LAYOUT_INDEX 10
#define TABLE_LAYOUT_SHIFT 10
#define TABLE_LAYOUT_MASK 0xc00
diff --git a/src/select/autogenerated_propset.h b/src/select/autogenerated_propset.h
index 850545c..198bc1e 100644
--- a/src/select/autogenerated_propset.h
+++ b/src/select/autogenerated_propset.h
@@ -104,8 +104,8 @@ static inline css_error set_background_color(css_computed_style *style, uint8_t
#undef BACKGROUND_COLOR_MASK
#define BACKGROUND_IMAGE_INDEX 14
-#define BACKGROUND_IMAGE_SHIFT 17
-#define BACKGROUND_IMAGE_MASK 0x20000
+#define BACKGROUND_IMAGE_SHIFT 16
+#define BACKGROUND_IMAGE_MASK 0x10000
static inline css_error set_background_image(css_computed_style *style, uint8_t
type, lwc_string *string)
@@ -639,8 +639,8 @@ static inline css_error set_clip(
#undef CLIP_MASK
#define COLOR_INDEX 14
-#define COLOR_SHIFT 18
-#define COLOR_MASK 0x40000
+#define COLOR_SHIFT 17
+#define COLOR_MASK 0x20000
static inline css_error set_color(css_computed_style *style, uint8_t type,
css_color color)
@@ -902,8 +902,8 @@ static inline css_error set_content(
#undef CONTENT_MASK
#define COUNTER_INCREMENT_INDEX 14
-#define COUNTER_INCREMENT_SHIFT 19
-#define COUNTER_INCREMENT_MASK 0x80000
+#define COUNTER_INCREMENT_SHIFT 18
+#define COUNTER_INCREMENT_MASK 0x40000
static inline css_error set_counter_increment(css_computed_style *style,
uint8_t type, css_computed_counter *counter_arr)
@@ -938,8 +938,8 @@ static inline css_error set_counter_increment(css_computed_style *style,
#undef COUNTER_INCREMENT_MASK
#define COUNTER_RESET_INDEX 14
-#define COUNTER_RESET_SHIFT 20
-#define COUNTER_RESET_MASK 0x100000
+#define COUNTER_RESET_SHIFT 19
+#define COUNTER_RESET_MASK 0x80000
static inline css_error set_counter_reset(css_computed_style *style, uint8_t
type, css_computed_counter *counter_arr)
@@ -1064,8 +1064,8 @@ static inline css_error set_empty_cells(css_computed_style *style, uint8_t type)
#undef EMPTY_CELLS_MASK
#define FILL_OPACITY_INDEX 14
-#define FILL_OPACITY_SHIFT 21
-#define FILL_OPACITY_MASK 0x200000
+#define FILL_OPACITY_SHIFT 20
+#define FILL_OPACITY_MASK 0x100000
static inline css_error set_fill_opacity(css_computed_style *style, uint8_t
type, css_fixed fixed)
@@ -1125,8 +1125,8 @@ static inline css_error set_flex_direction(css_computed_style *style, uint8_t
#undef FLEX_DIRECTION_MASK
#define FLEX_GROW_INDEX 14
-#define FLEX_GROW_SHIFT 22
-#define FLEX_GROW_MASK 0x400000
+#define FLEX_GROW_SHIFT 21
+#define FLEX_GROW_MASK 0x200000
static inline css_error set_flex_grow(css_computed_style *style, uint8_t type,
css_fixed fixed)
@@ -1146,8 +1146,8 @@ static inline css_error set_flex_grow(css_computed_style *style, uint8_t type,
#undef FLEX_GROW_MASK
#define FLEX_SHRINK_INDEX 14
-#define FLEX_SHRINK_SHIFT 23
-#define FLEX_SHRINK_MASK 0x800000
+#define FLEX_SHRINK_SHIFT 22
+#define FLEX_SHRINK_MASK 0x400000
static inline css_error set_flex_shrink(css_computed_style *style, uint8_t
type, css_fixed fixed)
@@ -1417,8 +1417,8 @@ static inline css_error set_line_height(css_computed_style *style, uint8_t
#undef LINE_HEIGHT_MASK
#define LIST_STYLE_IMAGE_INDEX 14
-#define LIST_STYLE_IMAGE_SHIFT 24
-#define LIST_STYLE_IMAGE_MASK 0x1000000
+#define LIST_STYLE_IMAGE_SHIFT 23
+#define LIST_STYLE_IMAGE_MASK 0x800000
static inline css_error set_list_style_image(css_computed_style *style, uint8_t
type, lwc_string *string)
@@ -1653,8 +1653,8 @@ static inline css_error set_min_width(css_computed_style *style, uint8_t type,
#undef MIN_WIDTH_MASK
#define OPACITY_INDEX 14
-#define OPACITY_SHIFT 25
-#define OPACITY_MASK 0x2000000
+#define OPACITY_SHIFT 24
+#define OPACITY_MASK 0x1000000
static inline css_error set_opacity(css_computed_style *style, uint8_t type,
css_fixed fixed)
@@ -1674,8 +1674,8 @@ static inline css_error set_opacity(css_computed_style *style, uint8_t type,
#undef OPACITY_MASK
#define ORDER_INDEX 14
-#define ORDER_SHIFT 26
-#define ORDER_MASK 0x4000000
+#define ORDER_SHIFT 25
+#define ORDER_MASK 0x2000000
static inline css_error set_order(css_computed_style *style, uint8_t type,
int32_t integer)
@@ -1694,8 +1694,8 @@ static inline css_error set_order(css_computed_style *style, uint8_t type,
#undef ORDER_MASK
#define ORPHANS_INDEX 14
-#define ORPHANS_SHIFT 27
-#define ORPHANS_MASK 0x8000000
+#define ORPHANS_SHIFT 26
+#define ORPHANS_MASK 0x4000000
static inline css_error set_orphans(css_computed_style *style, uint8_t type,
int32_t integer)
@@ -1970,9 +1970,9 @@ static inline css_error set_position(css_computed_style *style, uint8_t type)
#undef POSITION_SHIFT
#undef POSITION_MASK
-#define QUOTES_INDEX 13
-#define QUOTES_SHIFT 0
-#define QUOTES_MASK 0x1
+#define QUOTES_INDEX 14
+#define QUOTES_SHIFT 27
+#define QUOTES_MASK 0x8000000
static inline css_error set_quotes(css_computed_style *style, uint8_t type,
lwc_string **string_arr)
@@ -2027,6 +2027,27 @@ static inline css_error set_right(css_computed_style *style, uint8_t type,
#undef RIGHT_SHIFT
#undef RIGHT_MASK
+#define STROKE_OPACITY_INDEX 13
+#define STROKE_OPACITY_SHIFT 0
+#define STROKE_OPACITY_MASK 0x1
+
+static inline css_error set_stroke_opacity(css_computed_style *style, uint8_t
+ type, css_fixed fixed)
+{
+ uint32_t *bits = &style->i.bits[STROKE_OPACITY_INDEX];
+
+ /* 1bit: t : type */
+ *bits = (*bits & ~STROKE_OPACITY_MASK) | (((uint32_t)type & 0x1) <<
+ STROKE_OPACITY_SHIFT);
+
+ style->i.stroke_opacity = fixed;
+
+ return CSS_OK;
+}
+#undef STROKE_OPACITY_INDEX
+#undef STROKE_OPACITY_SHIFT
+#undef STROKE_OPACITY_MASK
+
#define TABLE_LAYOUT_INDEX 10
#define TABLE_LAYOUT_SHIFT 10
#define TABLE_LAYOUT_MASK 0xc00
diff --git a/src/select/computed.c b/src/select/computed.c
index a0c92bb..78f3b80 100644
--- a/src/select/computed.c
+++ b/src/select/computed.c
@@ -816,6 +816,12 @@ uint8_t css_computed_fill_opacity(const css_computed_style *style,
return get_fill_opacity(style, fill_opacity);
}
+uint8_t css_computed_stroke_opacity(const css_computed_style *style,
+ css_fixed *stroke_opacity)
+{
+ return get_stroke_opacity(style, stroke_opacity);
+}
+
uint8_t css_computed_text_transform(const css_computed_style *style)
{
return get_text_transform(style);
diff --git a/src/select/dispatch.c b/src/select/dispatch.c
index c8efa44..74bc6ed 100644
--- a/src/select/dispatch.c
+++ b/src/select/dispatch.c
@@ -518,5 +518,9 @@ struct prop_table prop_dispatch[CSS_N_PROPERTIES] = {
{
PROPERTY_FUNCS(fill_opacity),
0,
+ },
+ {
+ PROPERTY_FUNCS(stroke_opacity),
+ 0,
}
};
diff --git a/src/select/properties/Makefile b/src/select/properties/Makefile
index 2e10f4a..eee6cc3 100644
--- a/src/select/properties/Makefile
+++ b/src/select/properties/Makefile
@@ -108,6 +108,7 @@ speak_header.c \
speak_numeral.c \
speak_punctuation.c \
stress.c \
+stroke_opacity.c \
table_layout.c \
text_align.c \
text_decoration.c \
diff --git a/src/select/properties/properties.h b/src/select/properties/properties.h
index fba5be8..cb0b213 100644
--- a/src/select/properties/properties.h
+++ b/src/select/properties/properties.h
@@ -130,6 +130,7 @@ PROPERTY_FUNCS(speak_punctuation);
PROPERTY_FUNCS(speak);
PROPERTY_FUNCS(speech_rate);
PROPERTY_FUNCS(stress);
+PROPERTY_FUNCS(stroke_opacity);
PROPERTY_FUNCS(table_layout);
PROPERTY_FUNCS(text_align);
PROPERTY_FUNCS(text_decoration);
diff --git a/src/select/properties/stroke_opacity.c b/src/select/properties/stroke_opacity.c
new file mode 100644
index 0000000..c27e127
--- /dev/null
+++ b/src/select/properties/stroke_opacity.c
@@ -0,0 +1,73 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_stroke_opacity(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_STROKE_OPACITY_INHERIT;
+ css_fixed stroke_opacity = 0;
+
+ if (hasFlagValue(opv) == false) {
+ value = CSS_STROKE_OPACITY_SET;
+
+ stroke_opacity = *((css_fixed *) style->bytecode);
+ advance_bytecode(style, sizeof(stroke_opacity));
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ getFlagValue(opv))) {
+ return set_stroke_opacity(state->computed, value, stroke_opacity);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_stroke_opacity_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_stroke_opacity(style, hint->status, hint->data.fixed);
+}
+
+css_error css__initial_stroke_opacity(css_select_state *state)
+{
+ return set_stroke_opacity(state->computed, CSS_STROKE_OPACITY_SET, INTTOFIX(1));
+}
+
+css_error css__copy_stroke_opacity(
+ const css_computed_style *from,
+ css_computed_style *to)
+{
+ css_fixed stroke_opacity = 0;
+ uint8_t type = get_stroke_opacity(from, &stroke_opacity);
+
+ if (from == to) {
+ return CSS_OK;
+ }
+
+ return set_stroke_opacity(to, type, stroke_opacity);
+}
+
+css_error css__compose_stroke_opacity(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ css_fixed stroke_opacity = 0;
+ uint8_t type = get_stroke_opacity(child, &stroke_opacity);
+
+ return css__copy_stroke_opacity(
+ type == CSS_STROKE_OPACITY_INHERIT ? parent : child,
+ result);
+}
+
diff --git a/src/select/select_config.py b/src/select/select_config.py
index 5feed6c..1cfe05c 100644
--- a/src/select/select_config.py
+++ b/src/select/select_config.py
@@ -96,6 +96,7 @@ style = {
('min_width', 2, 'length', 'CSS_MIN_WIDTH_SET'),
('opacity', 1, 'fixed', 'CSS_OPACITY_SET'),
('fill_opacity', 1, 'fixed', 'CSS_FILL_OPACITY_SET'),
+ ('stroke_opacity', 1, 'fixed', 'CSS_STROKE_OPACITY_SET'),
('order', 1, 'integer', 'CSS_ORDER_SET'),
('padding_top', 1, 'length', 'CSS_PADDING_SET'),
('padding_right', 1, 'length', 'CSS_PADDING_SET'),
diff --git a/test/data/parse2/svg.dat b/test/data/parse2/svg.dat
index 19839c7..e5ee2a3 100644
--- a/test/data/parse2/svg.dat
+++ b/test/data/parse2/svg.dat
@@ -37,3 +37,43 @@
| *
| fill-opacity: 1
#reset
+
+#data
+* { stroke-opacity: inherit; }
+#errors
+#expected
+| *
+| stroke-opacity: inherit
+#reset
+
+#data
+* { stroke-opacity: revert; }
+#errors
+#expected
+| *
+| stroke-opacity: revert
+#reset
+
+#data
+* { stroke-opacity: 0.00000; }
+#errors
+#expected
+| *
+| stroke-opacity: 0
+#reset
+
+#data
+* { stroke-opacity: -0.5; }
+#errors
+#expected
+| *
+| stroke-opacity: 0
+#reset
+
+#data
+* { stroke-opacity: 5; }
+#errors
+#expected
+| *
+| stroke-opacity: 1
+#reset
diff --git a/test/data/select/defaulting.dat b/test/data/select/defaulting.dat
index cce46ac..9548ae8 100644
--- a/test/data/select/defaulting.dat
+++ b/test/data/select/defaulting.dat
@@ -92,6 +92,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -204,6 +205,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -317,6 +319,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -431,6 +434,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -541,6 +545,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -655,6 +660,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -768,6 +774,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -881,6 +888,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -994,6 +1002,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1104,6 +1113,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1217,6 +1227,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1332,6 +1343,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1447,6 +1459,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
diff --git a/test/data/select/tests1.dat b/test/data/select/tests1.dat
index f620d5f..9240ed6 100644
--- a/test/data/select/tests1.dat
+++ b/test/data/select/tests1.dat
@@ -94,6 +94,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -206,6 +207,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -321,6 +323,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -440,6 +443,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -560,6 +564,7 @@ padding-left: 0px
position: absolute
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -680,6 +685,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -800,6 +806,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -910,6 +917,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1021,6 +1029,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1132,6 +1141,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1242,6 +1252,7 @@ padding-left: 0px
position: static
quotes: "a" "b"
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1357,6 +1368,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1472,6 +1484,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1588,6 +1601,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1707,6 +1721,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1825,6 +1840,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1949,6 +1965,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2073,6 +2090,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2197,6 +2215,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2325,6 +2344,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2452,6 +2472,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2577,6 +2598,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2701,6 +2723,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2825,6 +2848,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2949,6 +2973,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3073,6 +3098,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3197,6 +3223,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3321,6 +3348,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3445,6 +3473,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3569,6 +3598,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3693,6 +3723,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3817,6 +3848,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3941,6 +3973,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4065,6 +4098,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4189,6 +4223,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4313,6 +4348,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4437,6 +4473,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4561,6 +4598,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4685,6 +4723,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4809,6 +4848,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4933,6 +4973,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5057,6 +5098,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5174,6 +5216,7 @@ padding-left: 0px
position: absolute
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5291,6 +5334,7 @@ padding-left: 0px
position: absolute
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5408,6 +5452,7 @@ padding-left: 0px
position: absolute
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5522,6 +5567,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5637,6 +5683,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5752,6 +5799,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5867,6 +5915,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5978,6 +6027,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6090,6 +6140,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6201,6 +6252,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6312,6 +6364,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6423,6 +6476,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6534,6 +6588,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6645,6 +6700,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6758,6 +6814,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6869,6 +6926,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6980,6 +7038,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7092,6 +7151,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7203,6 +7263,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7314,6 +7375,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7425,6 +7487,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7536,6 +7599,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7647,6 +7711,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7758,6 +7823,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7869,6 +7935,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7979,6 +8046,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8089,6 +8157,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8199,6 +8268,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8311,6 +8381,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8423,6 +8494,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8533,6 +8605,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8645,6 +8718,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8757,6 +8831,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8869,6 +8944,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8979,6 +9055,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9089,6 +9166,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9199,6 +9277,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9309,6 +9388,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9419,6 +9499,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9529,6 +9610,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9639,6 +9721,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9749,6 +9832,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9861,6 +9945,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9973,6 +10058,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10083,6 +10169,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10193,6 +10280,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10303,6 +10391,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10413,6 +10502,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10523,6 +10613,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10633,6 +10724,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10743,6 +10835,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10855,6 +10948,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10967,6 +11061,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11077,6 +11172,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11187,6 +11283,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11297,6 +11394,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11409,6 +11507,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11519,6 +11618,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11631,6 +11731,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11741,6 +11842,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11851,6 +11953,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11961,6 +12064,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12071,6 +12175,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12181,6 +12286,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12291,6 +12397,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12401,6 +12508,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12511,6 +12619,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12621,6 +12730,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12731,6 +12841,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12841,6 +12952,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12951,6 +13063,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13061,6 +13174,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13171,6 +13285,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13281,6 +13396,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13391,6 +13507,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13501,6 +13618,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13611,6 +13729,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13721,6 +13840,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13831,6 +13951,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13941,6 +14062,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -14051,6 +14173,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -14161,6 +14284,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -14290,6 +14414,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -14400,6 +14525,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -14510,6 +14636,7 @@ padding-left: 0px
position: sticky
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
diff --git a/test/dump.h b/test/dump.h
index f52c9cc..09a35b0 100644
--- a/test/dump.h
+++ b/test/dump.h
@@ -492,6 +492,7 @@ static const char *opcode_names[] = {
"justify-content",
"order",
"fill-opacity",
+ "stroke-opacity",
};
static void dump_css_fixed(css_fixed f, char **ptr)
@@ -1831,6 +1832,17 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth)
break;
}
break;
+ case CSS_PROP_STROKE_OPACITY:
+ switch (value) {
+ case STROKE_OPACITY_SET:
+ {
+ css_fixed val = *((css_fixed *) bytecode);
+ ADVANCE(sizeof(val));
+ dump_number(val, ptr);
+ }
+ break;
+ }
+ break;
case CSS_PROP_FLEX_BASIS:
switch (value) {
case FLEX_BASIS_AUTO:
diff --git a/test/dump_computed.h b/test/dump_computed.h
index 55d9f85..f769075 100644
--- a/test/dump_computed.h
+++ b/test/dump_computed.h
@@ -2820,6 +2820,30 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
ptr += wrote;
*len -= wrote;
+ /* stroke-opacity */
+ val = css_computed_stroke_opacity(style, &len1);
+ switch (val) {
+ case CSS_STROKE_OPACITY_INHERIT:
+ wrote = snprintf(ptr, *len, "stroke-opacity: inherit\n");
+ break;
+ case CSS_STROKE_OPACITY_SET:
+ wrote = snprintf(ptr, *len, "stroke-opacity: ");
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = dump_css_fixed(len1, ptr, *len);
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = snprintf(ptr, *len, "\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
/* table-layout */
val = css_computed_table_layout(style);
switch (val) {
commitdiff http://git.netsurf-browser.org/libcss.git/commit/?id=d6e9f636d693fb129b37...
commit d6e9f636d693fb129b373862d69ae85c861049f0
Author: Michael Orlitzky <michael(a)orlitzky.com>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
Add support for SVG fill-opacity property
https://www.w3.org/TR/SVGTiny12/painting.html#FillOpacityProperty
This property is unique to SVG documents, but is otherwise analogous
to the usual CSS "opacity" property.
diff --git a/docs/Bytecode b/docs/Bytecode
index 67450cd..65926a9 100644
--- a/docs/Bytecode
+++ b/docs/Bytecode
@@ -1383,4 +1383,13 @@ Opcodes
bit 7 clear => Reserved for future expansion
bits 0-6: MBZ
-7c-3ff - Reserved for future expansion.
+7c - fill-opacity
+ <value> (14bits) :
+ bits 8-13: MBZ
+ bits 0-7 :
+ bit 7 set => number follows
+ bits 0-6: MBZ
+ bit 7 clear => Reserved for future expansion
+ bits 0-6: MBZ
+
+7d-3ff - Reserved for future expansion.
diff --git a/include/libcss/computed.h b/include/libcss/computed.h
index 30e369b..c3aa922 100644
--- a/include/libcss/computed.h
+++ b/include/libcss/computed.h
@@ -338,6 +338,10 @@ uint8_t css_computed_opacity(
const css_computed_style *style,
css_fixed *opacity);
+uint8_t css_computed_fill_opacity(
+ const css_computed_style *style,
+ css_fixed *fill_opacity);
+
uint8_t css_computed_text_transform(
const css_computed_style *style);
diff --git a/include/libcss/properties.h b/include/libcss/properties.h
index af0a1f5..07a71aa 100644
--- a/include/libcss/properties.h
+++ b/include/libcss/properties.h
@@ -138,6 +138,7 @@ enum css_properties_e {
CSS_PROP_FLEX_WRAP = 0x079,
CSS_PROP_JUSTIFY_CONTENT = 0x07a,
CSS_PROP_ORDER = 0x07b,
+ CSS_PROP_FILL_OPACITY = 0x07c,
CSS_N_PROPERTIES
};
@@ -451,6 +452,11 @@ enum css_empty_cells_e {
CSS_EMPTY_CELLS_HIDE = 0x2
};
+enum css_fill_opacity_e {
+ CSS_FILL_OPACITY_INHERIT = 0x0,
+ CSS_FILL_OPACITY_SET = 0x1
+};
+
enum css_flex_basis_e {
CSS_FLEX_BASIS_INHERIT = 0x0,
CSS_FLEX_BASIS_SET = 0x1,
diff --git a/src/bytecode/opcodes.h b/src/bytecode/opcodes.h
index 8bc05b4..df062af 100644
--- a/src/bytecode/opcodes.h
+++ b/src/bytecode/opcodes.h
@@ -351,6 +351,11 @@ enum op_empty_cells {
EMPTY_CELLS_HIDE = 0x0001
};
+enum op_fill_opacity {
+ FILL_OPACITY_SET = 0x0080
+};
+
+
enum op_flex_basis {
FLEX_BASIS_AUTO = 0x0000,
FLEX_BASIS_CONTENT = 0x0001,
diff --git a/src/parse/important.c b/src/parse/important.c
index f4aef00..6e2590e 100644
--- a/src/parse/important.c
+++ b/src/parse/important.c
@@ -346,6 +346,11 @@ void css__make_style_important(css_style *style)
offset++; /* value */
break;
+ case CSS_PROP_FILL_OPACITY:
+ if (value == FILL_OPACITY_SET)
+ offset++; /* value */
+ break;
+
case CSS_PROP_ORDER:
if (value == ORDER_SET)
offset++; /* value */
diff --git a/src/parse/properties/Makefile b/src/parse/properties/Makefile
index 6461dda..fc7ac76 100644
--- a/src/parse/properties/Makefile
+++ b/src/parse/properties/Makefile
@@ -45,6 +45,7 @@ DIR_SOURCES := \
cue.c \
cursor.c \
elevation.c \
+ fill_opacity.c \
flex.c \
flex_flow.c \
font.c \
diff --git a/src/parse/properties/fill_opacity.c b/src/parse/properties/fill_opacity.c
new file mode 100644
index 0000000..caed86f
--- /dev/null
+++ b/src/parse/properties/fill_opacity.c
@@ -0,0 +1,82 @@
+/*
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+#include <assert.h>
+#include <string.h>
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "parse/properties/properties.h"
+#include "parse/properties/utils.h"
+
+/**
+ * Parse fill-opacity
+ *
+ * \param c Parsing context
+ * \param vector Vector of tokens to process
+ * \param ctx Pointer to vector iteration context
+ * \param result resulting style
+ * \return CSS_OK on success,
+ * CSS_NOMEM on memory exhaustion,
+ * CSS_INVALID if the input is not valid
+ *
+ * Post condition: \a *ctx is updated with the next token to process
+ * If the input is invalid, then \a *ctx remains unchanged.
+ */
+css_error css__parse_fill_opacity(css_language *c,
+ const parserutils_vector *vector, int32_t *ctx,
+ css_style *result)
+{
+ int32_t orig_ctx = *ctx;
+ css_error error;
+ const css_token *token;
+ enum flag_value flag_value;
+
+ token = parserutils_vector_iterate(vector, ctx);
+ if ((token == NULL) || ((token->type != CSS_TOKEN_IDENT) && (token->type != CSS_TOKEN_NUMBER))) {
+ *ctx = orig_ctx;
+ return CSS_INVALID;
+ }
+
+ flag_value = get_css_flag_value(c, token);
+
+ if (flag_value != FLAG_VALUE__NONE) {
+ error = css_stylesheet_style_flag_value(result, flag_value,
+ CSS_PROP_FILL_OPACITY);
+
+ } else if (token->type == CSS_TOKEN_NUMBER) {
+ css_fixed num = 0;
+ size_t consumed = 0;
+
+ num = css__number_from_lwc_string(token->idata, false, &consumed);
+ /* Invalid if there are trailing characters */
+ if (consumed != lwc_string_length(token->idata)) {
+ *ctx = orig_ctx;
+ return CSS_INVALID;
+ }
+
+ /* Clamp to range [0,1] */
+ if (num < 0)
+ num = 0;
+ if (num > INTTOFIX(1))
+ num = INTTOFIX(1);
+
+ error = css__stylesheet_style_appendOPV(result, CSS_PROP_FILL_OPACITY, 0, FILL_OPACITY_SET);
+ if (error != CSS_OK) {
+ *ctx = orig_ctx;
+ return error;
+ }
+
+ error = css__stylesheet_style_append(result, num);
+ } else {
+ error = CSS_INVALID;
+ }
+
+ if (error != CSS_OK)
+ *ctx = orig_ctx;
+
+ return error;
+}
+
diff --git a/src/parse/properties/properties.c b/src/parse/properties/properties.c
index 06524da..c1187ca 100644
--- a/src/parse/properties/properties.c
+++ b/src/parse/properties/properties.c
@@ -74,6 +74,7 @@ const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP] =
css__parse_display,
css__parse_elevation,
css__parse_empty_cells,
+ css__parse_fill_opacity,
css__parse_flex,
css__parse_flex_basis,
css__parse_flex_direction,
@@ -261,6 +262,7 @@ const uint32_t property_unit_mask[CSS_N_PROPERTIES] = {
[CSS_PROP_WORD_SPACING] = UNIT_MASK_WORD_SPACING,
[CSS_PROP_Z_INDEX] = UNIT_MASK_Z_INDEX,
[CSS_PROP_OPACITY] = UNIT_MASK_OPACITY,
+ [CSS_PROP_FILL_OPACITY] = UNIT_MASK_FILL_OPACITY,
[CSS_PROP_BREAK_AFTER] = UNIT_MASK_BREAK_AFTER,
[CSS_PROP_BREAK_BEFORE] = UNIT_MASK_BREAK_BEFORE,
[CSS_PROP_BREAK_INSIDE] = UNIT_MASK_BREAK_INSIDE,
diff --git a/src/parse/properties/properties.h b/src/parse/properties/properties.h
index 83aa32b..25ef60e 100644
--- a/src/parse/properties/properties.h
+++ b/src/parse/properties/properties.h
@@ -208,6 +208,9 @@ css_error css__parse_elevation(css_language *c,
css_error css__parse_empty_cells(css_language *c,
const parserutils_vector *vector, int32_t *ctx,
css_style *result);
+css_error css__parse_fill_opacity(css_language *c,
+ const parserutils_vector *vector, int32_t *ctx,
+ css_style *result);
css_error css__parse_flex(css_language *c,
const parserutils_vector *vector, int32_t *ctx,
css_style *result);
@@ -546,6 +549,7 @@ extern const uint32_t property_unit_mask[CSS_N_PROPERTIES];
#define UNIT_MASK_WORD_SPACING (UNIT_LENGTH)
#define UNIT_MASK_Z_INDEX (0)
#define UNIT_MASK_OPACITY (0)
+#define UNIT_MASK_FILL_OPACITY (0)
#define UNIT_MASK_BREAK_AFTER (0)
#define UNIT_MASK_BREAK_BEFORE (0)
#define UNIT_MASK_BREAK_INSIDE (0)
diff --git a/src/parse/propstrings.c b/src/parse/propstrings.c
index 786a3b7..62c149a 100644
--- a/src/parse/propstrings.c
+++ b/src/parse/propstrings.c
@@ -148,6 +148,7 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
SMAP("display"),
SMAP("elevation"),
SMAP("empty-cells"),
+ SMAP("fill-opacity"),
SMAP("flex"),
SMAP("flex-basis"),
SMAP("flex-direction"),
diff --git a/src/parse/propstrings.h b/src/parse/propstrings.h
index 6d6dd49..2725df2 100644
--- a/src/parse/propstrings.h
+++ b/src/parse/propstrings.h
@@ -51,22 +51,23 @@ enum {
COLUMN_COUNT, COLUMN_FILL, COLUMN_GAP, COLUMN_RULE, COLUMN_RULE_COLOR,
COLUMN_RULE_STYLE, COLUMN_RULE_WIDTH, COLUMN_SPAN, COLUMN_WIDTH,
CONTENT, COUNTER_INCREMENT, COUNTER_RESET, CUE, CUE_AFTER, CUE_BEFORE,
- CURSOR, DIRECTION, DISPLAY, ELEVATION, EMPTY_CELLS, FLEX, FLEX_BASIS,
- FLEX_DIRECTION, FLEX_FLOW, FLEX_GROW, FLEX_SHRINK, FLEX_WRAP,
- LIBCSS_FLOAT, FONT, FONT_FAMILY, FONT_SIZE, FONT_STYLE, FONT_VARIANT,
- FONT_WEIGHT, HEIGHT, JUSTIFY_CONTENT, LEFT, LETTER_SPACING, LINE_HEIGHT,
- LIST_STYLE, LIST_STYLE_IMAGE, LIST_STYLE_POSITION, LIST_STYLE_TYPE,
- MARGIN, MARGIN_BOTTOM, MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP,
- MAX_HEIGHT, MAX_WIDTH, MIN_HEIGHT, MIN_WIDTH, OPACITY, ORDER, ORPHANS,
- OUTLINE, OUTLINE_COLOR, OUTLINE_STYLE, OUTLINE_WIDTH, OVERFLOW,
- OVERFLOW_X, OVERFLOW_Y, PADDING, PADDING_BOTTOM, PADDING_LEFT,
- PADDING_RIGHT, PADDING_TOP, PAGE_BREAK_AFTER, PAGE_BREAK_BEFORE,
- PAGE_BREAK_INSIDE, PAUSE, PAUSE_AFTER, PAUSE_BEFORE, PITCH_RANGE, PITCH,
- PLAY_DURING, POSITION, QUOTES, RICHNESS, RIGHT, SPEAK_HEADER,
- SPEAK_NUMERAL, SPEAK_PUNCTUATION, SPEAK, SPEECH_RATE, STRESS,
- TABLE_LAYOUT, TEXT_ALIGN, TEXT_DECORATION, TEXT_INDENT, TEXT_TRANSFORM,
- TOP, UNICODE_BIDI, VERTICAL_ALIGN, VISIBILITY, VOICE_FAMILY, VOLUME,
- WHITE_SPACE, WIDOWS, WIDTH, WORD_SPACING, WRITING_MODE, Z_INDEX,
+ CURSOR, DIRECTION, DISPLAY, ELEVATION, EMPTY_CELLS, FILL_OPACITY, FLEX,
+ FLEX_BASIS, FLEX_DIRECTION, FLEX_FLOW, FLEX_GROW, FLEX_SHRINK,
+ FLEX_WRAP, LIBCSS_FLOAT, FONT, FONT_FAMILY, FONT_SIZE, FONT_STYLE,
+ FONT_VARIANT, FONT_WEIGHT, HEIGHT, JUSTIFY_CONTENT, LEFT,
+ LETTER_SPACING, LINE_HEIGHT, LIST_STYLE, LIST_STYLE_IMAGE,
+ LIST_STYLE_POSITION, LIST_STYLE_TYPE, MARGIN, MARGIN_BOTTOM,
+ MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP, MAX_HEIGHT, MAX_WIDTH,
+ MIN_HEIGHT, MIN_WIDTH, OPACITY, ORDER, ORPHANS, OUTLINE, OUTLINE_COLOR,
+ OUTLINE_STYLE, OUTLINE_WIDTH, OVERFLOW, OVERFLOW_X, OVERFLOW_Y, PADDING,
+ PADDING_BOTTOM, PADDING_LEFT, PADDING_RIGHT, PADDING_TOP,
+ PAGE_BREAK_AFTER, PAGE_BREAK_BEFORE, PAGE_BREAK_INSIDE, PAUSE,
+ PAUSE_AFTER, PAUSE_BEFORE, PITCH_RANGE, PITCH, PLAY_DURING, POSITION,
+ QUOTES, RICHNESS, RIGHT, SPEAK_HEADER, SPEAK_NUMERAL, SPEAK_PUNCTUATION,
+ SPEAK, SPEECH_RATE, STRESS, TABLE_LAYOUT, TEXT_ALIGN, TEXT_DECORATION,
+ TEXT_INDENT, TEXT_TRANSFORM, TOP, UNICODE_BIDI, VERTICAL_ALIGN,
+ VISIBILITY, VOICE_FAMILY, VOLUME, WHITE_SPACE, WIDOWS, WIDTH,
+ WORD_SPACING, WRITING_MODE, Z_INDEX,
LAST_PROP = Z_INDEX,
diff --git a/src/select/autogenerated_computed.h b/src/select/autogenerated_computed.h
index c65cf98..e5d05c7 100644
--- a/src/select/autogenerated_computed.h
+++ b/src/select/autogenerated_computed.h
@@ -52,6 +52,7 @@ struct css_computed_style_i {
* direction 2
* display 5
* empty_cells 2
+ * fill_opacity 1 4
* flex_basis 2 + 5 4
* flex_direction 3
* flex_grow 1 4
@@ -140,9 +141,9 @@ struct css_computed_style_i {
* quotes 1 sizeof(ptr)
*
* --- --- ---
- * 462 bits 228 + 8sizeof(ptr) bytes
+ * 463 bits 232 + 8sizeof(ptr) bytes
* ===================
- * 286 + 8sizeof(ptr) bytes
+ * 290 + 8sizeof(ptr) bytes
*
* Bit allocations:
*
@@ -197,10 +198,10 @@ struct css_computed_style_i {
* overflow_y; overflow_x; justify_content; font_family; flex_direction; clear;
* quotes
*
- * 14 bbaaorplfecuCk..................
+ * 14 bbaaorplfeicuCk.................
* background_color; background_attachment; orphans; order; opacity;
- * list_style_image; flex_shrink; flex_grow; counter_reset; counter_increment;
- * color; background_image
+ * list_style_image; flex_shrink; flex_grow; fill_opacity; counter_reset;
+ * counter_increment; color; background_image
*/
uint32_t bits[15];
@@ -229,6 +230,7 @@ struct css_computed_style_i {
css_color column_rule_color;
css_fixed column_rule_width;
css_fixed column_width;
+ css_fixed fill_opacity;
css_fixed flex_basis;
css_fixed flex_grow;
css_fixed flex_shrink;
diff --git a/src/select/autogenerated_propget.h b/src/select/autogenerated_propget.h
index 6c958aa..206c7ee 100644
--- a/src/select/autogenerated_propget.h
+++ b/src/select/autogenerated_propget.h
@@ -140,8 +140,8 @@ static inline uint8_t get_background_color(const css_computed_style *style,
#undef BACKGROUND_COLOR_MASK
#define BACKGROUND_IMAGE_INDEX 14
-#define BACKGROUND_IMAGE_SHIFT 18
-#define BACKGROUND_IMAGE_MASK 0x40000
+#define BACKGROUND_IMAGE_SHIFT 17
+#define BACKGROUND_IMAGE_MASK 0x20000
static inline uint8_t get_background_image_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[BACKGROUND_IMAGE_INDEX];
@@ -878,8 +878,8 @@ static inline uint8_t get_clip(
#undef CLIP_MASK
#define COLOR_INDEX 14
-#define COLOR_SHIFT 19
-#define COLOR_MASK 0x80000
+#define COLOR_SHIFT 18
+#define COLOR_MASK 0x40000
static inline uint8_t get_color_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[COLOR_INDEX];
@@ -1166,8 +1166,8 @@ static inline uint8_t get_content(const css_computed_style *style, const
#undef CONTENT_MASK
#define COUNTER_INCREMENT_INDEX 14
-#define COUNTER_INCREMENT_SHIFT 20
-#define COUNTER_INCREMENT_MASK 0x100000
+#define COUNTER_INCREMENT_SHIFT 19
+#define COUNTER_INCREMENT_MASK 0x80000
static inline uint8_t get_counter_increment_bits(const css_computed_style
*style)
{
@@ -1195,8 +1195,8 @@ static inline uint8_t get_counter_increment(const css_computed_style *style,
#undef COUNTER_INCREMENT_MASK
#define COUNTER_RESET_INDEX 14
-#define COUNTER_RESET_SHIFT 21
-#define COUNTER_RESET_MASK 0x200000
+#define COUNTER_RESET_SHIFT 20
+#define COUNTER_RESET_MASK 0x100000
static inline uint8_t get_counter_reset_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[COUNTER_RESET_INDEX];
@@ -1328,6 +1328,36 @@ static inline uint8_t get_empty_cells(const css_computed_style *style)
#undef EMPTY_CELLS_SHIFT
#undef EMPTY_CELLS_MASK
+#define FILL_OPACITY_INDEX 14
+#define FILL_OPACITY_SHIFT 21
+#define FILL_OPACITY_MASK 0x200000
+static inline uint8_t get_fill_opacity_bits(const css_computed_style *style)
+{
+ uint32_t bits = style->i.bits[FILL_OPACITY_INDEX];
+ bits &= FILL_OPACITY_MASK;
+ bits >>= FILL_OPACITY_SHIFT;
+
+ /* 1bit: t : type */
+ return (bits & 0x1);
+}
+static inline uint8_t get_fill_opacity(const css_computed_style *style,
+ css_fixed *fixed)
+{
+ uint32_t bits = style->i.bits[FILL_OPACITY_INDEX];
+ bits &= FILL_OPACITY_MASK;
+ bits >>= FILL_OPACITY_SHIFT;
+
+ /* 1bit: t : type */
+ if ((bits & 0x1) == CSS_FILL_OPACITY_SET) {
+ *fixed = style->i.fill_opacity;
+ }
+
+ return (bits & 0x1);
+}
+#undef FILL_OPACITY_INDEX
+#undef FILL_OPACITY_SHIFT
+#undef FILL_OPACITY_MASK
+
#define FLEX_BASIS_INDEX 7
#define FLEX_BASIS_SHIFT 4
#define FLEX_BASIS_MASK 0x7f0
diff --git a/src/select/autogenerated_propset.h b/src/select/autogenerated_propset.h
index 71d1596..850545c 100644
--- a/src/select/autogenerated_propset.h
+++ b/src/select/autogenerated_propset.h
@@ -104,8 +104,8 @@ static inline css_error set_background_color(css_computed_style *style, uint8_t
#undef BACKGROUND_COLOR_MASK
#define BACKGROUND_IMAGE_INDEX 14
-#define BACKGROUND_IMAGE_SHIFT 18
-#define BACKGROUND_IMAGE_MASK 0x40000
+#define BACKGROUND_IMAGE_SHIFT 17
+#define BACKGROUND_IMAGE_MASK 0x20000
static inline css_error set_background_image(css_computed_style *style, uint8_t
type, lwc_string *string)
@@ -639,8 +639,8 @@ static inline css_error set_clip(
#undef CLIP_MASK
#define COLOR_INDEX 14
-#define COLOR_SHIFT 19
-#define COLOR_MASK 0x80000
+#define COLOR_SHIFT 18
+#define COLOR_MASK 0x40000
static inline css_error set_color(css_computed_style *style, uint8_t type,
css_color color)
@@ -902,8 +902,8 @@ static inline css_error set_content(
#undef CONTENT_MASK
#define COUNTER_INCREMENT_INDEX 14
-#define COUNTER_INCREMENT_SHIFT 20
-#define COUNTER_INCREMENT_MASK 0x100000
+#define COUNTER_INCREMENT_SHIFT 19
+#define COUNTER_INCREMENT_MASK 0x80000
static inline css_error set_counter_increment(css_computed_style *style,
uint8_t type, css_computed_counter *counter_arr)
@@ -938,8 +938,8 @@ static inline css_error set_counter_increment(css_computed_style *style,
#undef COUNTER_INCREMENT_MASK
#define COUNTER_RESET_INDEX 14
-#define COUNTER_RESET_SHIFT 21
-#define COUNTER_RESET_MASK 0x200000
+#define COUNTER_RESET_SHIFT 20
+#define COUNTER_RESET_MASK 0x100000
static inline css_error set_counter_reset(css_computed_style *style, uint8_t
type, css_computed_counter *counter_arr)
@@ -1063,6 +1063,27 @@ static inline css_error set_empty_cells(css_computed_style *style, uint8_t type)
#undef EMPTY_CELLS_SHIFT
#undef EMPTY_CELLS_MASK
+#define FILL_OPACITY_INDEX 14
+#define FILL_OPACITY_SHIFT 21
+#define FILL_OPACITY_MASK 0x200000
+
+static inline css_error set_fill_opacity(css_computed_style *style, uint8_t
+ type, css_fixed fixed)
+{
+ uint32_t *bits = &style->i.bits[FILL_OPACITY_INDEX];
+
+ /* 1bit: t : type */
+ *bits = (*bits & ~FILL_OPACITY_MASK) | (((uint32_t)type & 0x1) <<
+ FILL_OPACITY_SHIFT);
+
+ style->i.fill_opacity = fixed;
+
+ return CSS_OK;
+}
+#undef FILL_OPACITY_INDEX
+#undef FILL_OPACITY_SHIFT
+#undef FILL_OPACITY_MASK
+
#define FLEX_BASIS_INDEX 7
#define FLEX_BASIS_SHIFT 4
#define FLEX_BASIS_MASK 0x7f0
diff --git a/src/select/computed.c b/src/select/computed.c
index c257f17..a0c92bb 100644
--- a/src/select/computed.c
+++ b/src/select/computed.c
@@ -810,6 +810,12 @@ uint8_t css_computed_opacity(const css_computed_style *style,
return get_opacity(style, opacity);
}
+uint8_t css_computed_fill_opacity(const css_computed_style *style,
+ css_fixed *fill_opacity)
+{
+ return get_fill_opacity(style, fill_opacity);
+}
+
uint8_t css_computed_text_transform(const css_computed_style *style)
{
return get_text_transform(style);
diff --git a/src/select/dispatch.c b/src/select/dispatch.c
index a6c868d..c8efa44 100644
--- a/src/select/dispatch.c
+++ b/src/select/dispatch.c
@@ -514,5 +514,9 @@ struct prop_table prop_dispatch[CSS_N_PROPERTIES] = {
{
PROPERTY_FUNCS(order),
0,
+ },
+ {
+ PROPERTY_FUNCS(fill_opacity),
+ 0,
}
};
diff --git a/src/select/properties/Makefile b/src/select/properties/Makefile
index 6c6cf84..2e10f4a 100644
--- a/src/select/properties/Makefile
+++ b/src/select/properties/Makefile
@@ -50,6 +50,7 @@ direction.c \
display.c \
elevation.c \
empty_cells.c \
+fill_opacity.c \
flex_basis.c \
flex_direction.c \
flex_grow.c \
diff --git a/src/select/properties/fill_opacity.c b/src/select/properties/fill_opacity.c
new file mode 100644
index 0000000..af0b52b
--- /dev/null
+++ b/src/select/properties/fill_opacity.c
@@ -0,0 +1,73 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_fill_opacity(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_FILL_OPACITY_INHERIT;
+ css_fixed fill_opacity = 0;
+
+ if (hasFlagValue(opv) == false) {
+ value = CSS_FILL_OPACITY_SET;
+
+ fill_opacity = *((css_fixed *) style->bytecode);
+ advance_bytecode(style, sizeof(fill_opacity));
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ getFlagValue(opv))) {
+ return set_fill_opacity(state->computed, value, fill_opacity);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_fill_opacity_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_fill_opacity(style, hint->status, hint->data.fixed);
+}
+
+css_error css__initial_fill_opacity(css_select_state *state)
+{
+ return set_fill_opacity(state->computed, CSS_FILL_OPACITY_SET, INTTOFIX(1));
+}
+
+css_error css__copy_fill_opacity(
+ const css_computed_style *from,
+ css_computed_style *to)
+{
+ css_fixed fill_opacity = 0;
+ uint8_t type = get_fill_opacity(from, &fill_opacity);
+
+ if (from == to) {
+ return CSS_OK;
+ }
+
+ return set_fill_opacity(to, type, fill_opacity);
+}
+
+css_error css__compose_fill_opacity(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ css_fixed fill_opacity = 0;
+ uint8_t type = get_fill_opacity(child, &fill_opacity);
+
+ return css__copy_fill_opacity(
+ type == CSS_FILL_OPACITY_INHERIT ? parent : child,
+ result);
+}
+
diff --git a/src/select/properties/properties.h b/src/select/properties/properties.h
index be31d0b..fba5be8 100644
--- a/src/select/properties/properties.h
+++ b/src/select/properties/properties.h
@@ -72,6 +72,7 @@ PROPERTY_FUNCS(direction);
PROPERTY_FUNCS(display);
PROPERTY_FUNCS(elevation);
PROPERTY_FUNCS(empty_cells);
+PROPERTY_FUNCS(fill_opacity);
PROPERTY_FUNCS(flex_basis);
PROPERTY_FUNCS(flex_direction);
PROPERTY_FUNCS(flex_grow);
diff --git a/src/select/select_config.py b/src/select/select_config.py
index fd9e765..5feed6c 100644
--- a/src/select/select_config.py
+++ b/src/select/select_config.py
@@ -95,6 +95,7 @@ style = {
('min_height', 2, 'length', 'CSS_MIN_HEIGHT_SET'),
('min_width', 2, 'length', 'CSS_MIN_WIDTH_SET'),
('opacity', 1, 'fixed', 'CSS_OPACITY_SET'),
+ ('fill_opacity', 1, 'fixed', 'CSS_FILL_OPACITY_SET'),
('order', 1, 'integer', 'CSS_ORDER_SET'),
('padding_top', 1, 'length', 'CSS_PADDING_SET'),
('padding_right', 1, 'length', 'CSS_PADDING_SET'),
diff --git a/test/data/parse2/INDEX b/test/data/parse2/INDEX
index e4a369c..95534f6 100644
--- a/test/data/parse2/INDEX
+++ b/test/data/parse2/INDEX
@@ -24,3 +24,4 @@ multicol.dat Multi-column layout property tests
flexbox.dat Flexbox properties and shorthands tests
units.dat Length unit tests
dodgy-media-block.dat Media block with incomplete ruleset
+svg.dat SVG property tests
diff --git a/test/data/parse2/svg.dat b/test/data/parse2/svg.dat
new file mode 100644
index 0000000..19839c7
--- /dev/null
+++ b/test/data/parse2/svg.dat
@@ -0,0 +1,39 @@
+#data
+* { fill-opacity: inherit; }
+#errors
+#expected
+| *
+| fill-opacity: inherit
+#reset
+
+#data
+* { fill-opacity: revert; }
+#errors
+#expected
+| *
+| fill-opacity: revert
+#reset
+
+#data
+* { fill-opacity: 0.867; }
+#errors
+#expected
+| *
+| fill-opacity: 0.867
+#reset
+
+#data
+* { fill-opacity: -0.5; }
+#errors
+#expected
+| *
+| fill-opacity: 0
+#reset
+
+#data
+* { fill-opacity: 5; }
+#errors
+#expected
+| *
+| fill-opacity: 1
+#reset
diff --git a/test/data/select/defaulting.dat b/test/data/select/defaulting.dat
index 4242e30..cce46ac 100644
--- a/test/data/select/defaulting.dat
+++ b/test/data/select/defaulting.dat
@@ -50,6 +50,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -161,6 +162,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -273,6 +275,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -386,6 +389,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -495,6 +499,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -608,6 +613,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -720,6 +726,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -832,6 +839,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -944,6 +952,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1053,6 +1062,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1165,6 +1175,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1279,6 +1290,7 @@ cursor: auto
direction: ltr
display: inline-block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1393,6 +1405,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
diff --git a/test/data/select/tests1.dat b/test/data/select/tests1.dat
index 997e88e..f620d5f 100644
--- a/test/data/select/tests1.dat
+++ b/test/data/select/tests1.dat
@@ -52,6 +52,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -163,6 +164,7 @@ cursor: auto
direction: ltr
display: inline-grid
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -277,6 +279,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -395,6 +398,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -514,6 +518,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -633,6 +638,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -752,6 +758,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -861,6 +868,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -971,6 +979,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1081,6 +1090,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1190,6 +1200,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1304,6 +1315,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1418,6 +1430,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1533,6 +1546,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1651,6 +1665,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1768,6 +1783,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1891,6 +1907,7 @@ cursor: auto
direction: ltr
display: table-row
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2014,6 +2031,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2137,6 +2155,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2264,6 +2283,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2390,6 +2410,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2514,6 +2535,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2637,6 +2659,7 @@ cursor: auto
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2760,6 +2783,7 @@ cursor: auto
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2883,6 +2907,7 @@ cursor: auto
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3006,6 +3031,7 @@ cursor: crosshair
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3129,6 +3155,7 @@ cursor: default
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3252,6 +3279,7 @@ cursor: pointer
direction: ltr
display: table
empty-cells: hide
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3375,6 +3403,7 @@ cursor: move
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3498,6 +3527,7 @@ cursor: e-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3621,6 +3651,7 @@ cursor: ne-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3744,6 +3775,7 @@ cursor: nw-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3867,6 +3899,7 @@ cursor: n-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3990,6 +4023,7 @@ cursor: se-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4113,6 +4147,7 @@ cursor: sw-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4236,6 +4271,7 @@ cursor: s-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4359,6 +4395,7 @@ cursor: w-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4482,6 +4519,7 @@ cursor: text
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4605,6 +4643,7 @@ cursor: wait
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4728,6 +4767,7 @@ cursor: help
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4851,6 +4891,7 @@ cursor: progress
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4974,6 +5015,7 @@ cursor: url('sonic-team.png') pointer
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5090,6 +5132,7 @@ cursor: auto
direction: ltr
display: none
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5206,6 +5249,7 @@ cursor: auto
direction: ltr
display: none
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5322,6 +5366,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5435,6 +5480,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5549,6 +5595,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5663,6 +5710,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5777,6 +5825,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5887,6 +5936,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5998,6 +6048,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6108,6 +6159,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6218,6 +6270,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6328,6 +6381,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6438,6 +6492,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6548,6 +6603,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6660,6 +6716,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6770,6 +6827,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6880,6 +6938,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6991,6 +7050,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -7101,6 +7161,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 10px
flex-direction: row
flex-grow: 2.000
@@ -7211,6 +7272,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 1.000
@@ -7321,6 +7383,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -7431,6 +7494,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 0.000
@@ -7541,6 +7605,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 0.000
@@ -7651,6 +7716,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 0.000
@@ -7761,6 +7827,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 3.000
@@ -7870,6 +7937,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 3px
flex-direction: row
flex-grow: 0.000
@@ -7979,6 +8047,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 3em
flex-direction: row
flex-grow: 2.000
@@ -8088,6 +8157,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 20.000
@@ -8199,6 +8269,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 3.000
@@ -8310,6 +8381,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 3px
flex-direction: row
flex-grow: 3.000
@@ -8419,6 +8491,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 0.000
@@ -8530,6 +8603,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -8641,6 +8715,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 3%
flex-direction: row
flex-grow: 3.000
@@ -8752,6 +8827,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 3%
flex-direction: row
flex-grow: 3.000
@@ -8861,6 +8937,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -8970,6 +9047,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -9079,6 +9157,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -9188,6 +9267,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -9297,6 +9377,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: column
flex-grow: 0.000
@@ -9406,6 +9487,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row-reverse
flex-grow: 0.000
@@ -9515,6 +9597,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: column-reverse
flex-grow: 0.000
@@ -9624,6 +9707,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: column-reverse
flex-grow: 0.000
@@ -9735,6 +9819,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: column
flex-grow: 0.000
@@ -9846,6 +9931,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row-reverse
flex-grow: 0.000
@@ -9955,6 +10041,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 4.500em
flex-direction: row
flex-grow: 2.370
@@ -10064,6 +10151,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10173,6 +10261,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10282,6 +10371,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10391,6 +10481,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10500,6 +10591,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10609,6 +10701,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10720,6 +10813,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10831,6 +10925,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10940,6 +11035,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11049,6 +11145,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11158,6 +11255,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11269,6 +11367,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11378,6 +11477,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 4.500em
flex-direction: column
flex-grow: 2.300
@@ -11489,6 +11589,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 4.500em
flex-direction: column
flex-grow: 2.300
@@ -11598,6 +11699,7 @@ cursor: auto
direction: ltr
display: flex
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11707,6 +11809,7 @@ cursor: auto
direction: ltr
display: inline-flex
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11816,6 +11919,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11925,6 +12029,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12034,6 +12139,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12143,6 +12249,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12252,6 +12359,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12361,6 +12469,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12470,6 +12579,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12579,6 +12689,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12688,6 +12799,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12797,6 +12909,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12906,6 +13019,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13015,6 +13129,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13124,6 +13239,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13233,6 +13349,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13342,6 +13459,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13451,6 +13569,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13560,6 +13679,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13669,6 +13789,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13778,6 +13899,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13887,6 +14009,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13996,6 +14119,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -14124,6 +14248,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -14233,6 +14358,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -14342,6 +14468,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
diff --git a/test/dump.h b/test/dump.h
index f585788..f52c9cc 100644
--- a/test/dump.h
+++ b/test/dump.h
@@ -491,6 +491,7 @@ static const char *opcode_names[] = {
"flex-wrap",
"justify-content",
"order",
+ "fill-opacity",
};
static void dump_css_fixed(css_fixed f, char **ptr)
@@ -1819,6 +1820,17 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth)
break;
}
break;
+ case CSS_PROP_FILL_OPACITY:
+ switch (value) {
+ case FILL_OPACITY_SET:
+ {
+ css_fixed val = *((css_fixed *) bytecode);
+ ADVANCE(sizeof(val));
+ dump_number(val, ptr);
+ }
+ break;
+ }
+ break;
case CSS_PROP_FLEX_BASIS:
switch (value) {
case FLEX_BASIS_AUTO:
diff --git a/test/dump_computed.h b/test/dump_computed.h
index 2ce7849..55d9f85 100644
--- a/test/dump_computed.h
+++ b/test/dump_computed.h
@@ -1635,6 +1635,30 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
ptr += wrote;
*len -= wrote;
+ /* fill-opacity */
+ val = css_computed_fill_opacity(style, &len1);
+ switch (val) {
+ case CSS_FILL_OPACITY_INHERIT:
+ wrote = snprintf(ptr, *len, "fill-opacity: inherit\n");
+ break;
+ case CSS_FILL_OPACITY_SET:
+ wrote = snprintf(ptr, *len, "fill-opacity: ");
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = dump_css_fixed(len1, ptr, *len);
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = snprintf(ptr, *len, "\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
/* flex-basis */
val = css_computed_flex_basis(style, &len1, &unit1);
switch (val) {
-----------------------------------------------------------------------
Summary of changes:
docs/Bytecode | 20 +-
include/libcss/computed.h | 8 +
include/libcss/properties.h | 12 +
src/bytecode/opcodes.h | 9 +
src/parse/important.c | 10 +
src/parse/properties/Makefile | 2 +
src/parse/properties/{opacity.c => fill_opacity.c} | 9 +-
src/parse/properties/properties.c | 4 +
src/parse/properties/properties.h | 8 +
.../properties/{opacity.c => stroke_opacity.c} | 9 +-
src/parse/propstrings.c | 2 +
src/parse/propstrings.h | 33 +--
src/select/autogenerated_computed.h | 20 +-
src/select/autogenerated_propget.h | 106 ++++++--
src/select/autogenerated_propset.h | 88 +++++--
src/select/computed.c | 12 +
src/select/dispatch.c | 8 +
src/select/properties/Makefile | 2 +
src/select/properties/fill_opacity.c | 73 ++++++
src/select/properties/properties.h | 2 +
src/select/properties/stroke_opacity.c | 73 ++++++
src/select/select_config.py | 2 +
test/data/parse2/INDEX | 1 +
test/data/parse2/svg.dat | 79 ++++++
test/data/select/defaulting.dat | 26 ++
test/data/select/tests1.dat | 254 ++++++++++++++++++++
test/dump.h | 24 ++
test/dump_computed.h | 48 ++++
28 files changed, 863 insertions(+), 81 deletions(-)
copy src/parse/properties/{opacity.c => fill_opacity.c} (89%)
copy src/parse/properties/{opacity.c => stroke_opacity.c} (89%)
create mode 100644 src/select/properties/fill_opacity.c
create mode 100644 src/select/properties/stroke_opacity.c
create mode 100644 test/data/parse2/svg.dat
diff --git a/docs/Bytecode b/docs/Bytecode
index 67450cd..272fd07 100644
--- a/docs/Bytecode
+++ b/docs/Bytecode
@@ -1383,4 +1383,22 @@ Opcodes
bit 7 clear => Reserved for future expansion
bits 0-6: MBZ
-7c-3ff - Reserved for future expansion.
+7c - fill-opacity
+ <value> (14bits) :
+ bits 8-13: MBZ
+ bits 0-7 :
+ bit 7 set => number follows
+ bits 0-6: MBZ
+ bit 7 clear => Reserved for future expansion
+ bits 0-6: MBZ
+
+7d - stroke-opacity
+ <value> (14bits) :
+ bits 8-13: MBZ
+ bits 0-7 :
+ bit 7 set => number follows
+ bits 0-6: MBZ
+ bit 7 clear => Reserved for future expansion
+ bits 0-6: MBZ
+
+7e-3ff - Reserved for future expansion.
diff --git a/include/libcss/computed.h b/include/libcss/computed.h
index 30e369b..5d9cc7e 100644
--- a/include/libcss/computed.h
+++ b/include/libcss/computed.h
@@ -338,6 +338,14 @@ uint8_t css_computed_opacity(
const css_computed_style *style,
css_fixed *opacity);
+uint8_t css_computed_fill_opacity(
+ const css_computed_style *style,
+ css_fixed *fill_opacity);
+
+uint8_t css_computed_stroke_opacity(
+ const css_computed_style *style,
+ css_fixed *stroke_opacity);
+
uint8_t css_computed_text_transform(
const css_computed_style *style);
diff --git a/include/libcss/properties.h b/include/libcss/properties.h
index af0a1f5..cb1f0ff 100644
--- a/include/libcss/properties.h
+++ b/include/libcss/properties.h
@@ -138,6 +138,8 @@ enum css_properties_e {
CSS_PROP_FLEX_WRAP = 0x079,
CSS_PROP_JUSTIFY_CONTENT = 0x07a,
CSS_PROP_ORDER = 0x07b,
+ CSS_PROP_FILL_OPACITY = 0x07c,
+ CSS_PROP_STROKE_OPACITY = 0x07d,
CSS_N_PROPERTIES
};
@@ -451,6 +453,11 @@ enum css_empty_cells_e {
CSS_EMPTY_CELLS_HIDE = 0x2
};
+enum css_fill_opacity_e {
+ CSS_FILL_OPACITY_INHERIT = 0x0,
+ CSS_FILL_OPACITY_SET = 0x1
+};
+
enum css_flex_basis_e {
CSS_FLEX_BASIS_INHERIT = 0x0,
CSS_FLEX_BASIS_SET = 0x1,
@@ -780,6 +787,11 @@ enum css_right_e {
CSS_RIGHT_AUTO = 0x2
};
+enum css_stroke_opacity_e {
+ CSS_STROKE_OPACITY_INHERIT = 0x0,
+ CSS_STROKE_OPACITY_SET = 0x1
+};
+
enum css_table_layout_e {
CSS_TABLE_LAYOUT_INHERIT = 0x0,
CSS_TABLE_LAYOUT_AUTO = 0x1,
diff --git a/src/bytecode/opcodes.h b/src/bytecode/opcodes.h
index 8bc05b4..7a1377b 100644
--- a/src/bytecode/opcodes.h
+++ b/src/bytecode/opcodes.h
@@ -351,6 +351,11 @@ enum op_empty_cells {
EMPTY_CELLS_HIDE = 0x0001
};
+enum op_fill_opacity {
+ FILL_OPACITY_SET = 0x0080
+};
+
+
enum op_flex_basis {
FLEX_BASIS_AUTO = 0x0000,
FLEX_BASIS_CONTENT = 0x0001,
@@ -721,6 +726,10 @@ enum op_stress {
STRESS_SET = 0x0080
};
+enum op_stroke_opacity {
+ STROKE_OPACITY_SET = 0x0080
+};
+
enum op_table_layout {
TABLE_LAYOUT_AUTO = 0x0000,
TABLE_LAYOUT_FIXED = 0x0001
diff --git a/src/parse/important.c b/src/parse/important.c
index f4aef00..02aafc4 100644
--- a/src/parse/important.c
+++ b/src/parse/important.c
@@ -346,6 +346,16 @@ void css__make_style_important(css_style *style)
offset++; /* value */
break;
+ case CSS_PROP_FILL_OPACITY:
+ if (value == FILL_OPACITY_SET)
+ offset++; /* value */
+ break;
+
+ case CSS_PROP_STROKE_OPACITY:
+ if (value == STROKE_OPACITY_SET)
+ offset++; /* value */
+ break;
+
case CSS_PROP_ORDER:
if (value == ORDER_SET)
offset++; /* value */
diff --git a/src/parse/properties/Makefile b/src/parse/properties/Makefile
index 6461dda..df84d49 100644
--- a/src/parse/properties/Makefile
+++ b/src/parse/properties/Makefile
@@ -45,6 +45,7 @@ DIR_SOURCES := \
cue.c \
cursor.c \
elevation.c \
+ fill_opacity.c \
flex.c \
flex_flow.c \
font.c \
@@ -61,6 +62,7 @@ DIR_SOURCES := \
play_during.c \
properties.c \
quotes.c \
+ stroke_opacity.c \
text_decoration.c \
utils.c \
voice_family.c
diff --git a/src/parse/properties/opacity.c b/src/parse/properties/fill_opacity.c
similarity index 89%
copy from src/parse/properties/opacity.c
copy to src/parse/properties/fill_opacity.c
index 22acd76..caed86f 100644
--- a/src/parse/properties/opacity.c
+++ b/src/parse/properties/fill_opacity.c
@@ -1,7 +1,6 @@
/*
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2010 The NetSurf Browser Project.
*/
#include <assert.h>
@@ -13,7 +12,7 @@
#include "parse/properties/utils.h"
/**
- * Parse opacity
+ * Parse fill-opacity
*
* \param c Parsing context
* \param vector Vector of tokens to process
@@ -26,7 +25,7 @@
* Post condition: \a *ctx is updated with the next token to process
* If the input is invalid, then \a *ctx remains unchanged.
*/
-css_error css__parse_opacity(css_language *c,
+css_error css__parse_fill_opacity(css_language *c,
const parserutils_vector *vector, int32_t *ctx,
css_style *result)
{
@@ -45,7 +44,7 @@ css_error css__parse_opacity(css_language *c,
if (flag_value != FLAG_VALUE__NONE) {
error = css_stylesheet_style_flag_value(result, flag_value,
- CSS_PROP_OPACITY);
+ CSS_PROP_FILL_OPACITY);
} else if (token->type == CSS_TOKEN_NUMBER) {
css_fixed num = 0;
@@ -64,7 +63,7 @@ css_error css__parse_opacity(css_language *c,
if (num > INTTOFIX(1))
num = INTTOFIX(1);
- error = css__stylesheet_style_appendOPV(result, CSS_PROP_OPACITY, 0, OPACITY_SET);
+ error = css__stylesheet_style_appendOPV(result, CSS_PROP_FILL_OPACITY, 0, FILL_OPACITY_SET);
if (error != CSS_OK) {
*ctx = orig_ctx;
return error;
diff --git a/src/parse/properties/properties.c b/src/parse/properties/properties.c
index 06524da..2cc849c 100644
--- a/src/parse/properties/properties.c
+++ b/src/parse/properties/properties.c
@@ -74,6 +74,7 @@ const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP] =
css__parse_display,
css__parse_elevation,
css__parse_empty_cells,
+ css__parse_fill_opacity,
css__parse_flex,
css__parse_flex_basis,
css__parse_flex_direction,
@@ -140,6 +141,7 @@ const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP] =
css__parse_speak,
css__parse_speech_rate,
css__parse_stress,
+ css__parse_stroke_opacity,
css__parse_table_layout,
css__parse_text_align,
css__parse_text_decoration,
@@ -261,6 +263,8 @@ const uint32_t property_unit_mask[CSS_N_PROPERTIES] = {
[CSS_PROP_WORD_SPACING] = UNIT_MASK_WORD_SPACING,
[CSS_PROP_Z_INDEX] = UNIT_MASK_Z_INDEX,
[CSS_PROP_OPACITY] = UNIT_MASK_OPACITY,
+ [CSS_PROP_FILL_OPACITY] = UNIT_MASK_FILL_OPACITY,
+ [CSS_PROP_STROKE_OPACITY] = UNIT_MASK_STROKE_OPACITY,
[CSS_PROP_BREAK_AFTER] = UNIT_MASK_BREAK_AFTER,
[CSS_PROP_BREAK_BEFORE] = UNIT_MASK_BREAK_BEFORE,
[CSS_PROP_BREAK_INSIDE] = UNIT_MASK_BREAK_INSIDE,
diff --git a/src/parse/properties/properties.h b/src/parse/properties/properties.h
index 83aa32b..17b7f41 100644
--- a/src/parse/properties/properties.h
+++ b/src/parse/properties/properties.h
@@ -208,6 +208,9 @@ css_error css__parse_elevation(css_language *c,
css_error css__parse_empty_cells(css_language *c,
const parserutils_vector *vector, int32_t *ctx,
css_style *result);
+css_error css__parse_fill_opacity(css_language *c,
+ const parserutils_vector *vector, int32_t *ctx,
+ css_style *result);
css_error css__parse_flex(css_language *c,
const parserutils_vector *vector, int32_t *ctx,
css_style *result);
@@ -406,6 +409,9 @@ css_error css__parse_speech_rate(css_language *c,
css_error css__parse_stress(css_language *c,
const parserutils_vector *vector, int32_t *ctx,
css_style *result);
+css_error css__parse_stroke_opacity(css_language *c,
+ const parserutils_vector *vector, int32_t *ctx,
+ css_style *result);
css_error css__parse_table_layout(css_language *c,
const parserutils_vector *vector, int32_t *ctx,
css_style *result);
@@ -546,6 +552,8 @@ extern const uint32_t property_unit_mask[CSS_N_PROPERTIES];
#define UNIT_MASK_WORD_SPACING (UNIT_LENGTH)
#define UNIT_MASK_Z_INDEX (0)
#define UNIT_MASK_OPACITY (0)
+#define UNIT_MASK_FILL_OPACITY (0)
+#define UNIT_MASK_STROKE_OPACITY (0)
#define UNIT_MASK_BREAK_AFTER (0)
#define UNIT_MASK_BREAK_BEFORE (0)
#define UNIT_MASK_BREAK_INSIDE (0)
diff --git a/src/parse/properties/opacity.c b/src/parse/properties/stroke_opacity.c
similarity index 89%
copy from src/parse/properties/opacity.c
copy to src/parse/properties/stroke_opacity.c
index 22acd76..7c10998 100644
--- a/src/parse/properties/opacity.c
+++ b/src/parse/properties/stroke_opacity.c
@@ -1,7 +1,6 @@
/*
* Licensed under the MIT License,
* http://www.opensource.org/licenses/mit-license.php
- * Copyright 2010 The NetSurf Browser Project.
*/
#include <assert.h>
@@ -13,7 +12,7 @@
#include "parse/properties/utils.h"
/**
- * Parse opacity
+ * Parse stroke-opacity
*
* \param c Parsing context
* \param vector Vector of tokens to process
@@ -26,7 +25,7 @@
* Post condition: \a *ctx is updated with the next token to process
* If the input is invalid, then \a *ctx remains unchanged.
*/
-css_error css__parse_opacity(css_language *c,
+css_error css__parse_stroke_opacity(css_language *c,
const parserutils_vector *vector, int32_t *ctx,
css_style *result)
{
@@ -45,7 +44,7 @@ css_error css__parse_opacity(css_language *c,
if (flag_value != FLAG_VALUE__NONE) {
error = css_stylesheet_style_flag_value(result, flag_value,
- CSS_PROP_OPACITY);
+ CSS_PROP_STROKE_OPACITY);
} else if (token->type == CSS_TOKEN_NUMBER) {
css_fixed num = 0;
@@ -64,7 +63,7 @@ css_error css__parse_opacity(css_language *c,
if (num > INTTOFIX(1))
num = INTTOFIX(1);
- error = css__stylesheet_style_appendOPV(result, CSS_PROP_OPACITY, 0, OPACITY_SET);
+ error = css__stylesheet_style_appendOPV(result, CSS_PROP_STROKE_OPACITY, 0, STROKE_OPACITY_SET);
if (error != CSS_OK) {
*ctx = orig_ctx;
return error;
diff --git a/src/parse/propstrings.c b/src/parse/propstrings.c
index 786a3b7..c57bc1b 100644
--- a/src/parse/propstrings.c
+++ b/src/parse/propstrings.c
@@ -148,6 +148,7 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
SMAP("display"),
SMAP("elevation"),
SMAP("empty-cells"),
+ SMAP("fill-opacity"),
SMAP("flex"),
SMAP("flex-basis"),
SMAP("flex-direction"),
@@ -214,6 +215,7 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
SMAP("speak"),
SMAP("speech-rate"),
SMAP("stress"),
+ SMAP("stroke-opacity"),
SMAP("table-layout"),
SMAP("text-align"),
SMAP("text-decoration"),
diff --git a/src/parse/propstrings.h b/src/parse/propstrings.h
index 6d6dd49..8491e72 100644
--- a/src/parse/propstrings.h
+++ b/src/parse/propstrings.h
@@ -51,22 +51,23 @@ enum {
COLUMN_COUNT, COLUMN_FILL, COLUMN_GAP, COLUMN_RULE, COLUMN_RULE_COLOR,
COLUMN_RULE_STYLE, COLUMN_RULE_WIDTH, COLUMN_SPAN, COLUMN_WIDTH,
CONTENT, COUNTER_INCREMENT, COUNTER_RESET, CUE, CUE_AFTER, CUE_BEFORE,
- CURSOR, DIRECTION, DISPLAY, ELEVATION, EMPTY_CELLS, FLEX, FLEX_BASIS,
- FLEX_DIRECTION, FLEX_FLOW, FLEX_GROW, FLEX_SHRINK, FLEX_WRAP,
- LIBCSS_FLOAT, FONT, FONT_FAMILY, FONT_SIZE, FONT_STYLE, FONT_VARIANT,
- FONT_WEIGHT, HEIGHT, JUSTIFY_CONTENT, LEFT, LETTER_SPACING, LINE_HEIGHT,
- LIST_STYLE, LIST_STYLE_IMAGE, LIST_STYLE_POSITION, LIST_STYLE_TYPE,
- MARGIN, MARGIN_BOTTOM, MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP,
- MAX_HEIGHT, MAX_WIDTH, MIN_HEIGHT, MIN_WIDTH, OPACITY, ORDER, ORPHANS,
- OUTLINE, OUTLINE_COLOR, OUTLINE_STYLE, OUTLINE_WIDTH, OVERFLOW,
- OVERFLOW_X, OVERFLOW_Y, PADDING, PADDING_BOTTOM, PADDING_LEFT,
- PADDING_RIGHT, PADDING_TOP, PAGE_BREAK_AFTER, PAGE_BREAK_BEFORE,
- PAGE_BREAK_INSIDE, PAUSE, PAUSE_AFTER, PAUSE_BEFORE, PITCH_RANGE, PITCH,
- PLAY_DURING, POSITION, QUOTES, RICHNESS, RIGHT, SPEAK_HEADER,
- SPEAK_NUMERAL, SPEAK_PUNCTUATION, SPEAK, SPEECH_RATE, STRESS,
- TABLE_LAYOUT, TEXT_ALIGN, TEXT_DECORATION, TEXT_INDENT, TEXT_TRANSFORM,
- TOP, UNICODE_BIDI, VERTICAL_ALIGN, VISIBILITY, VOICE_FAMILY, VOLUME,
- WHITE_SPACE, WIDOWS, WIDTH, WORD_SPACING, WRITING_MODE, Z_INDEX,
+ CURSOR, DIRECTION, DISPLAY, ELEVATION, EMPTY_CELLS, FILL_OPACITY, FLEX,
+ FLEX_BASIS, FLEX_DIRECTION, FLEX_FLOW, FLEX_GROW, FLEX_SHRINK,
+ FLEX_WRAP, LIBCSS_FLOAT, FONT, FONT_FAMILY, FONT_SIZE, FONT_STYLE,
+ FONT_VARIANT, FONT_WEIGHT, HEIGHT, JUSTIFY_CONTENT, LEFT,
+ LETTER_SPACING, LINE_HEIGHT, LIST_STYLE, LIST_STYLE_IMAGE,
+ LIST_STYLE_POSITION, LIST_STYLE_TYPE, MARGIN, MARGIN_BOTTOM,
+ MARGIN_LEFT, MARGIN_RIGHT, MARGIN_TOP, MAX_HEIGHT, MAX_WIDTH,
+ MIN_HEIGHT, MIN_WIDTH, OPACITY, ORDER, ORPHANS, OUTLINE, OUTLINE_COLOR,
+ OUTLINE_STYLE, OUTLINE_WIDTH, OVERFLOW, OVERFLOW_X, OVERFLOW_Y, PADDING,
+ PADDING_BOTTOM, PADDING_LEFT, PADDING_RIGHT, PADDING_TOP,
+ PAGE_BREAK_AFTER, PAGE_BREAK_BEFORE, PAGE_BREAK_INSIDE, PAUSE,
+ PAUSE_AFTER, PAUSE_BEFORE, PITCH_RANGE, PITCH, PLAY_DURING, POSITION,
+ QUOTES, RICHNESS, RIGHT, SPEAK_HEADER, SPEAK_NUMERAL, SPEAK_PUNCTUATION,
+ SPEAK, SPEECH_RATE, STRESS, STROKE_OPACITY, TABLE_LAYOUT, TEXT_ALIGN,
+ TEXT_DECORATION, TEXT_INDENT, TEXT_TRANSFORM, TOP, UNICODE_BIDI,
+ VERTICAL_ALIGN, VISIBILITY, VOICE_FAMILY, VOLUME, WHITE_SPACE, WIDOWS,
+ WIDTH, WORD_SPACING, WRITING_MODE, Z_INDEX,
LAST_PROP = Z_INDEX,
diff --git a/src/select/autogenerated_computed.h b/src/select/autogenerated_computed.h
index c65cf98..40005c1 100644
--- a/src/select/autogenerated_computed.h
+++ b/src/select/autogenerated_computed.h
@@ -52,6 +52,7 @@ struct css_computed_style_i {
* direction 2
* display 5
* empty_cells 2
+ * fill_opacity 1 4
* flex_basis 2 + 5 4
* flex_direction 3
* flex_grow 1 4
@@ -95,6 +96,7 @@ struct css_computed_style_i {
* page_break_inside 2
* position 3
* right 2 + 5 4
+ * stroke_opacity 1 4
* table_layout 2
* text_align 4
* text_decoration 5
@@ -140,9 +142,9 @@ struct css_computed_style_i {
* quotes 1 sizeof(ptr)
*
* --- --- ---
- * 462 bits 228 + 8sizeof(ptr) bytes
+ * 464 bits 236 + 8sizeof(ptr) bytes
* ===================
- * 286 + 8sizeof(ptr) bytes
+ * 294 + 8sizeof(ptr) bytes
*
* Bit allocations:
*
@@ -192,15 +194,15 @@ struct css_computed_style_i {
* 12 bbbbbbbbbbbaaaaaaaaaaavvvvvvvvvw
* border_spacing; background_position; vertical_align; widows
*
- * 13 bbbbpppaaagggooovvvjjjffflllcccq
+ * 13 bbbbpppaaagggooovvvjjjffflllcccs
* border_bottom_style; position; page_break_before; page_break_after;
* overflow_y; overflow_x; justify_content; font_family; flex_direction; clear;
- * quotes
+ * stroke_opacity
*
- * 14 bbaaorplfecuCk..................
- * background_color; background_attachment; orphans; order; opacity;
- * list_style_image; flex_shrink; flex_grow; counter_reset; counter_increment;
- * color; background_image
+ * 14 bbaaqorplfeicuCk................
+ * background_color; background_attachment; quotes; orphans; order; opacity;
+ * list_style_image; flex_shrink; flex_grow; fill_opacity; counter_reset;
+ * counter_increment; color; background_image
*/
uint32_t bits[15];
@@ -229,6 +231,7 @@ struct css_computed_style_i {
css_color column_rule_color;
css_fixed column_rule_width;
css_fixed column_width;
+ css_fixed fill_opacity;
css_fixed flex_basis;
css_fixed flex_grow;
css_fixed flex_shrink;
@@ -256,6 +259,7 @@ struct css_computed_style_i {
css_fixed padding_right;
css_fixed padding_top;
css_fixed right;
+ css_fixed stroke_opacity;
css_fixed text_indent;
css_fixed top;
css_fixed vertical_align;
diff --git a/src/select/autogenerated_propget.h b/src/select/autogenerated_propget.h
index 6c958aa..d1f7ffb 100644
--- a/src/select/autogenerated_propget.h
+++ b/src/select/autogenerated_propget.h
@@ -140,8 +140,8 @@ static inline uint8_t get_background_color(const css_computed_style *style,
#undef BACKGROUND_COLOR_MASK
#define BACKGROUND_IMAGE_INDEX 14
-#define BACKGROUND_IMAGE_SHIFT 18
-#define BACKGROUND_IMAGE_MASK 0x40000
+#define BACKGROUND_IMAGE_SHIFT 16
+#define BACKGROUND_IMAGE_MASK 0x10000
static inline uint8_t get_background_image_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[BACKGROUND_IMAGE_INDEX];
@@ -878,8 +878,8 @@ static inline uint8_t get_clip(
#undef CLIP_MASK
#define COLOR_INDEX 14
-#define COLOR_SHIFT 19
-#define COLOR_MASK 0x80000
+#define COLOR_SHIFT 17
+#define COLOR_MASK 0x20000
static inline uint8_t get_color_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[COLOR_INDEX];
@@ -1166,8 +1166,8 @@ static inline uint8_t get_content(const css_computed_style *style, const
#undef CONTENT_MASK
#define COUNTER_INCREMENT_INDEX 14
-#define COUNTER_INCREMENT_SHIFT 20
-#define COUNTER_INCREMENT_MASK 0x100000
+#define COUNTER_INCREMENT_SHIFT 18
+#define COUNTER_INCREMENT_MASK 0x40000
static inline uint8_t get_counter_increment_bits(const css_computed_style
*style)
{
@@ -1195,8 +1195,8 @@ static inline uint8_t get_counter_increment(const css_computed_style *style,
#undef COUNTER_INCREMENT_MASK
#define COUNTER_RESET_INDEX 14
-#define COUNTER_RESET_SHIFT 21
-#define COUNTER_RESET_MASK 0x200000
+#define COUNTER_RESET_SHIFT 19
+#define COUNTER_RESET_MASK 0x80000
static inline uint8_t get_counter_reset_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[COUNTER_RESET_INDEX];
@@ -1328,6 +1328,36 @@ static inline uint8_t get_empty_cells(const css_computed_style *style)
#undef EMPTY_CELLS_SHIFT
#undef EMPTY_CELLS_MASK
+#define FILL_OPACITY_INDEX 14
+#define FILL_OPACITY_SHIFT 20
+#define FILL_OPACITY_MASK 0x100000
+static inline uint8_t get_fill_opacity_bits(const css_computed_style *style)
+{
+ uint32_t bits = style->i.bits[FILL_OPACITY_INDEX];
+ bits &= FILL_OPACITY_MASK;
+ bits >>= FILL_OPACITY_SHIFT;
+
+ /* 1bit: t : type */
+ return (bits & 0x1);
+}
+static inline uint8_t get_fill_opacity(const css_computed_style *style,
+ css_fixed *fixed)
+{
+ uint32_t bits = style->i.bits[FILL_OPACITY_INDEX];
+ bits &= FILL_OPACITY_MASK;
+ bits >>= FILL_OPACITY_SHIFT;
+
+ /* 1bit: t : type */
+ if ((bits & 0x1) == CSS_FILL_OPACITY_SET) {
+ *fixed = style->i.fill_opacity;
+ }
+
+ return (bits & 0x1);
+}
+#undef FILL_OPACITY_INDEX
+#undef FILL_OPACITY_SHIFT
+#undef FILL_OPACITY_MASK
+
#define FLEX_BASIS_INDEX 7
#define FLEX_BASIS_SHIFT 4
#define FLEX_BASIS_MASK 0x7f0
@@ -1386,8 +1416,8 @@ static inline uint8_t get_flex_direction(const css_computed_style *style)
#undef FLEX_DIRECTION_MASK
#define FLEX_GROW_INDEX 14
-#define FLEX_GROW_SHIFT 22
-#define FLEX_GROW_MASK 0x400000
+#define FLEX_GROW_SHIFT 21
+#define FLEX_GROW_MASK 0x200000
static inline uint8_t get_flex_grow_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[FLEX_GROW_INDEX];
@@ -1416,8 +1446,8 @@ static inline uint8_t get_flex_grow(const css_computed_style *style, css_fixed
#undef FLEX_GROW_MASK
#define FLEX_SHRINK_INDEX 14
-#define FLEX_SHRINK_SHIFT 23
-#define FLEX_SHRINK_MASK 0x800000
+#define FLEX_SHRINK_SHIFT 22
+#define FLEX_SHRINK_MASK 0x400000
static inline uint8_t get_flex_shrink_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[FLEX_SHRINK_INDEX];
@@ -1790,8 +1820,8 @@ static inline uint8_t get_line_height(
#undef LINE_HEIGHT_MASK
#define LIST_STYLE_IMAGE_INDEX 14
-#define LIST_STYLE_IMAGE_SHIFT 24
-#define LIST_STYLE_IMAGE_MASK 0x1000000
+#define LIST_STYLE_IMAGE_SHIFT 23
+#define LIST_STYLE_IMAGE_MASK 0x800000
static inline uint8_t get_list_style_image_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[LIST_STYLE_IMAGE_INDEX];
@@ -2119,8 +2149,8 @@ static inline uint8_t get_min_width(const css_computed_style *style, css_fixed
#undef MIN_WIDTH_MASK
#define OPACITY_INDEX 14
-#define OPACITY_SHIFT 25
-#define OPACITY_MASK 0x2000000
+#define OPACITY_SHIFT 24
+#define OPACITY_MASK 0x1000000
static inline uint8_t get_opacity_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[OPACITY_INDEX];
@@ -2149,8 +2179,8 @@ static inline uint8_t get_opacity(const css_computed_style *style, css_fixed
#undef OPACITY_MASK
#define ORDER_INDEX 14
-#define ORDER_SHIFT 26
-#define ORDER_MASK 0x4000000
+#define ORDER_SHIFT 25
+#define ORDER_MASK 0x2000000
static inline uint8_t get_order_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[ORDER_INDEX];
@@ -2179,8 +2209,8 @@ static inline uint8_t get_order(const css_computed_style *style, int32_t
#undef ORDER_MASK
#define ORPHANS_INDEX 14
-#define ORPHANS_SHIFT 27
-#define ORPHANS_MASK 0x8000000
+#define ORPHANS_SHIFT 26
+#define ORPHANS_MASK 0x4000000
static inline uint8_t get_orphans_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[ORPHANS_INDEX];
@@ -2575,9 +2605,9 @@ static inline uint8_t get_position(const css_computed_style *style)
#undef POSITION_SHIFT
#undef POSITION_MASK
-#define QUOTES_INDEX 13
-#define QUOTES_SHIFT 0
-#define QUOTES_MASK 0x1
+#define QUOTES_INDEX 14
+#define QUOTES_SHIFT 27
+#define QUOTES_MASK 0x8000000
static inline uint8_t get_quotes_bits(const css_computed_style *style)
{
uint32_t bits = style->i.bits[QUOTES_INDEX];
@@ -2634,6 +2664,36 @@ static inline uint8_t get_right(const css_computed_style *style, css_fixed
#undef RIGHT_SHIFT
#undef RIGHT_MASK
+#define STROKE_OPACITY_INDEX 13
+#define STROKE_OPACITY_SHIFT 0
+#define STROKE_OPACITY_MASK 0x1
+static inline uint8_t get_stroke_opacity_bits(const css_computed_style *style)
+{
+ uint32_t bits = style->i.bits[STROKE_OPACITY_INDEX];
+ bits &= STROKE_OPACITY_MASK;
+ bits >>= STROKE_OPACITY_SHIFT;
+
+ /* 1bit: t : type */
+ return (bits & 0x1);
+}
+static inline uint8_t get_stroke_opacity(const css_computed_style *style,
+ css_fixed *fixed)
+{
+ uint32_t bits = style->i.bits[STROKE_OPACITY_INDEX];
+ bits &= STROKE_OPACITY_MASK;
+ bits >>= STROKE_OPACITY_SHIFT;
+
+ /* 1bit: t : type */
+ if ((bits & 0x1) == CSS_STROKE_OPACITY_SET) {
+ *fixed = style->i.stroke_opacity;
+ }
+
+ return (bits & 0x1);
+}
+#undef STROKE_OPACITY_INDEX
+#undef STROKE_OPACITY_SHIFT
+#undef STROKE_OPACITY_MASK
+
#define TABLE_LAYOUT_INDEX 10
#define TABLE_LAYOUT_SHIFT 10
#define TABLE_LAYOUT_MASK 0xc00
diff --git a/src/select/autogenerated_propset.h b/src/select/autogenerated_propset.h
index 71d1596..198bc1e 100644
--- a/src/select/autogenerated_propset.h
+++ b/src/select/autogenerated_propset.h
@@ -104,8 +104,8 @@ static inline css_error set_background_color(css_computed_style *style, uint8_t
#undef BACKGROUND_COLOR_MASK
#define BACKGROUND_IMAGE_INDEX 14
-#define BACKGROUND_IMAGE_SHIFT 18
-#define BACKGROUND_IMAGE_MASK 0x40000
+#define BACKGROUND_IMAGE_SHIFT 16
+#define BACKGROUND_IMAGE_MASK 0x10000
static inline css_error set_background_image(css_computed_style *style, uint8_t
type, lwc_string *string)
@@ -639,8 +639,8 @@ static inline css_error set_clip(
#undef CLIP_MASK
#define COLOR_INDEX 14
-#define COLOR_SHIFT 19
-#define COLOR_MASK 0x80000
+#define COLOR_SHIFT 17
+#define COLOR_MASK 0x20000
static inline css_error set_color(css_computed_style *style, uint8_t type,
css_color color)
@@ -902,8 +902,8 @@ static inline css_error set_content(
#undef CONTENT_MASK
#define COUNTER_INCREMENT_INDEX 14
-#define COUNTER_INCREMENT_SHIFT 20
-#define COUNTER_INCREMENT_MASK 0x100000
+#define COUNTER_INCREMENT_SHIFT 18
+#define COUNTER_INCREMENT_MASK 0x40000
static inline css_error set_counter_increment(css_computed_style *style,
uint8_t type, css_computed_counter *counter_arr)
@@ -938,8 +938,8 @@ static inline css_error set_counter_increment(css_computed_style *style,
#undef COUNTER_INCREMENT_MASK
#define COUNTER_RESET_INDEX 14
-#define COUNTER_RESET_SHIFT 21
-#define COUNTER_RESET_MASK 0x200000
+#define COUNTER_RESET_SHIFT 19
+#define COUNTER_RESET_MASK 0x80000
static inline css_error set_counter_reset(css_computed_style *style, uint8_t
type, css_computed_counter *counter_arr)
@@ -1063,6 +1063,27 @@ static inline css_error set_empty_cells(css_computed_style *style, uint8_t type)
#undef EMPTY_CELLS_SHIFT
#undef EMPTY_CELLS_MASK
+#define FILL_OPACITY_INDEX 14
+#define FILL_OPACITY_SHIFT 20
+#define FILL_OPACITY_MASK 0x100000
+
+static inline css_error set_fill_opacity(css_computed_style *style, uint8_t
+ type, css_fixed fixed)
+{
+ uint32_t *bits = &style->i.bits[FILL_OPACITY_INDEX];
+
+ /* 1bit: t : type */
+ *bits = (*bits & ~FILL_OPACITY_MASK) | (((uint32_t)type & 0x1) <<
+ FILL_OPACITY_SHIFT);
+
+ style->i.fill_opacity = fixed;
+
+ return CSS_OK;
+}
+#undef FILL_OPACITY_INDEX
+#undef FILL_OPACITY_SHIFT
+#undef FILL_OPACITY_MASK
+
#define FLEX_BASIS_INDEX 7
#define FLEX_BASIS_SHIFT 4
#define FLEX_BASIS_MASK 0x7f0
@@ -1104,8 +1125,8 @@ static inline css_error set_flex_direction(css_computed_style *style, uint8_t
#undef FLEX_DIRECTION_MASK
#define FLEX_GROW_INDEX 14
-#define FLEX_GROW_SHIFT 22
-#define FLEX_GROW_MASK 0x400000
+#define FLEX_GROW_SHIFT 21
+#define FLEX_GROW_MASK 0x200000
static inline css_error set_flex_grow(css_computed_style *style, uint8_t type,
css_fixed fixed)
@@ -1125,8 +1146,8 @@ static inline css_error set_flex_grow(css_computed_style *style, uint8_t type,
#undef FLEX_GROW_MASK
#define FLEX_SHRINK_INDEX 14
-#define FLEX_SHRINK_SHIFT 23
-#define FLEX_SHRINK_MASK 0x800000
+#define FLEX_SHRINK_SHIFT 22
+#define FLEX_SHRINK_MASK 0x400000
static inline css_error set_flex_shrink(css_computed_style *style, uint8_t
type, css_fixed fixed)
@@ -1396,8 +1417,8 @@ static inline css_error set_line_height(css_computed_style *style, uint8_t
#undef LINE_HEIGHT_MASK
#define LIST_STYLE_IMAGE_INDEX 14
-#define LIST_STYLE_IMAGE_SHIFT 24
-#define LIST_STYLE_IMAGE_MASK 0x1000000
+#define LIST_STYLE_IMAGE_SHIFT 23
+#define LIST_STYLE_IMAGE_MASK 0x800000
static inline css_error set_list_style_image(css_computed_style *style, uint8_t
type, lwc_string *string)
@@ -1632,8 +1653,8 @@ static inline css_error set_min_width(css_computed_style *style, uint8_t type,
#undef MIN_WIDTH_MASK
#define OPACITY_INDEX 14
-#define OPACITY_SHIFT 25
-#define OPACITY_MASK 0x2000000
+#define OPACITY_SHIFT 24
+#define OPACITY_MASK 0x1000000
static inline css_error set_opacity(css_computed_style *style, uint8_t type,
css_fixed fixed)
@@ -1653,8 +1674,8 @@ static inline css_error set_opacity(css_computed_style *style, uint8_t type,
#undef OPACITY_MASK
#define ORDER_INDEX 14
-#define ORDER_SHIFT 26
-#define ORDER_MASK 0x4000000
+#define ORDER_SHIFT 25
+#define ORDER_MASK 0x2000000
static inline css_error set_order(css_computed_style *style, uint8_t type,
int32_t integer)
@@ -1673,8 +1694,8 @@ static inline css_error set_order(css_computed_style *style, uint8_t type,
#undef ORDER_MASK
#define ORPHANS_INDEX 14
-#define ORPHANS_SHIFT 27
-#define ORPHANS_MASK 0x8000000
+#define ORPHANS_SHIFT 26
+#define ORPHANS_MASK 0x4000000
static inline css_error set_orphans(css_computed_style *style, uint8_t type,
int32_t integer)
@@ -1949,9 +1970,9 @@ static inline css_error set_position(css_computed_style *style, uint8_t type)
#undef POSITION_SHIFT
#undef POSITION_MASK
-#define QUOTES_INDEX 13
-#define QUOTES_SHIFT 0
-#define QUOTES_MASK 0x1
+#define QUOTES_INDEX 14
+#define QUOTES_SHIFT 27
+#define QUOTES_MASK 0x8000000
static inline css_error set_quotes(css_computed_style *style, uint8_t type,
lwc_string **string_arr)
@@ -2006,6 +2027,27 @@ static inline css_error set_right(css_computed_style *style, uint8_t type,
#undef RIGHT_SHIFT
#undef RIGHT_MASK
+#define STROKE_OPACITY_INDEX 13
+#define STROKE_OPACITY_SHIFT 0
+#define STROKE_OPACITY_MASK 0x1
+
+static inline css_error set_stroke_opacity(css_computed_style *style, uint8_t
+ type, css_fixed fixed)
+{
+ uint32_t *bits = &style->i.bits[STROKE_OPACITY_INDEX];
+
+ /* 1bit: t : type */
+ *bits = (*bits & ~STROKE_OPACITY_MASK) | (((uint32_t)type & 0x1) <<
+ STROKE_OPACITY_SHIFT);
+
+ style->i.stroke_opacity = fixed;
+
+ return CSS_OK;
+}
+#undef STROKE_OPACITY_INDEX
+#undef STROKE_OPACITY_SHIFT
+#undef STROKE_OPACITY_MASK
+
#define TABLE_LAYOUT_INDEX 10
#define TABLE_LAYOUT_SHIFT 10
#define TABLE_LAYOUT_MASK 0xc00
diff --git a/src/select/computed.c b/src/select/computed.c
index c257f17..78f3b80 100644
--- a/src/select/computed.c
+++ b/src/select/computed.c
@@ -810,6 +810,18 @@ uint8_t css_computed_opacity(const css_computed_style *style,
return get_opacity(style, opacity);
}
+uint8_t css_computed_fill_opacity(const css_computed_style *style,
+ css_fixed *fill_opacity)
+{
+ return get_fill_opacity(style, fill_opacity);
+}
+
+uint8_t css_computed_stroke_opacity(const css_computed_style *style,
+ css_fixed *stroke_opacity)
+{
+ return get_stroke_opacity(style, stroke_opacity);
+}
+
uint8_t css_computed_text_transform(const css_computed_style *style)
{
return get_text_transform(style);
diff --git a/src/select/dispatch.c b/src/select/dispatch.c
index a6c868d..74bc6ed 100644
--- a/src/select/dispatch.c
+++ b/src/select/dispatch.c
@@ -514,5 +514,13 @@ struct prop_table prop_dispatch[CSS_N_PROPERTIES] = {
{
PROPERTY_FUNCS(order),
0,
+ },
+ {
+ PROPERTY_FUNCS(fill_opacity),
+ 0,
+ },
+ {
+ PROPERTY_FUNCS(stroke_opacity),
+ 0,
}
};
diff --git a/src/select/properties/Makefile b/src/select/properties/Makefile
index 6c6cf84..eee6cc3 100644
--- a/src/select/properties/Makefile
+++ b/src/select/properties/Makefile
@@ -50,6 +50,7 @@ direction.c \
display.c \
elevation.c \
empty_cells.c \
+fill_opacity.c \
flex_basis.c \
flex_direction.c \
flex_grow.c \
@@ -107,6 +108,7 @@ speak_header.c \
speak_numeral.c \
speak_punctuation.c \
stress.c \
+stroke_opacity.c \
table_layout.c \
text_align.c \
text_decoration.c \
diff --git a/src/select/properties/fill_opacity.c b/src/select/properties/fill_opacity.c
new file mode 100644
index 0000000..af0b52b
--- /dev/null
+++ b/src/select/properties/fill_opacity.c
@@ -0,0 +1,73 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_fill_opacity(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_FILL_OPACITY_INHERIT;
+ css_fixed fill_opacity = 0;
+
+ if (hasFlagValue(opv) == false) {
+ value = CSS_FILL_OPACITY_SET;
+
+ fill_opacity = *((css_fixed *) style->bytecode);
+ advance_bytecode(style, sizeof(fill_opacity));
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ getFlagValue(opv))) {
+ return set_fill_opacity(state->computed, value, fill_opacity);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_fill_opacity_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_fill_opacity(style, hint->status, hint->data.fixed);
+}
+
+css_error css__initial_fill_opacity(css_select_state *state)
+{
+ return set_fill_opacity(state->computed, CSS_FILL_OPACITY_SET, INTTOFIX(1));
+}
+
+css_error css__copy_fill_opacity(
+ const css_computed_style *from,
+ css_computed_style *to)
+{
+ css_fixed fill_opacity = 0;
+ uint8_t type = get_fill_opacity(from, &fill_opacity);
+
+ if (from == to) {
+ return CSS_OK;
+ }
+
+ return set_fill_opacity(to, type, fill_opacity);
+}
+
+css_error css__compose_fill_opacity(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ css_fixed fill_opacity = 0;
+ uint8_t type = get_fill_opacity(child, &fill_opacity);
+
+ return css__copy_fill_opacity(
+ type == CSS_FILL_OPACITY_INHERIT ? parent : child,
+ result);
+}
+
diff --git a/src/select/properties/properties.h b/src/select/properties/properties.h
index be31d0b..cb0b213 100644
--- a/src/select/properties/properties.h
+++ b/src/select/properties/properties.h
@@ -72,6 +72,7 @@ PROPERTY_FUNCS(direction);
PROPERTY_FUNCS(display);
PROPERTY_FUNCS(elevation);
PROPERTY_FUNCS(empty_cells);
+PROPERTY_FUNCS(fill_opacity);
PROPERTY_FUNCS(flex_basis);
PROPERTY_FUNCS(flex_direction);
PROPERTY_FUNCS(flex_grow);
@@ -129,6 +130,7 @@ PROPERTY_FUNCS(speak_punctuation);
PROPERTY_FUNCS(speak);
PROPERTY_FUNCS(speech_rate);
PROPERTY_FUNCS(stress);
+PROPERTY_FUNCS(stroke_opacity);
PROPERTY_FUNCS(table_layout);
PROPERTY_FUNCS(text_align);
PROPERTY_FUNCS(text_decoration);
diff --git a/src/select/properties/stroke_opacity.c b/src/select/properties/stroke_opacity.c
new file mode 100644
index 0000000..c27e127
--- /dev/null
+++ b/src/select/properties/stroke_opacity.c
@@ -0,0 +1,73 @@
+/*
+ * This file is part of LibCSS
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+#include "bytecode/bytecode.h"
+#include "bytecode/opcodes.h"
+#include "select/propset.h"
+#include "select/propget.h"
+#include "utils/utils.h"
+
+#include "select/properties/properties.h"
+#include "select/properties/helpers.h"
+
+css_error css__cascade_stroke_opacity(uint32_t opv, css_style *style,
+ css_select_state *state)
+{
+ uint16_t value = CSS_STROKE_OPACITY_INHERIT;
+ css_fixed stroke_opacity = 0;
+
+ if (hasFlagValue(opv) == false) {
+ value = CSS_STROKE_OPACITY_SET;
+
+ stroke_opacity = *((css_fixed *) style->bytecode);
+ advance_bytecode(style, sizeof(stroke_opacity));
+ }
+
+ if (css__outranks_existing(getOpcode(opv), isImportant(opv), state,
+ getFlagValue(opv))) {
+ return set_stroke_opacity(state->computed, value, stroke_opacity);
+ }
+
+ return CSS_OK;
+}
+
+css_error css__set_stroke_opacity_from_hint(const css_hint *hint,
+ css_computed_style *style)
+{
+ return set_stroke_opacity(style, hint->status, hint->data.fixed);
+}
+
+css_error css__initial_stroke_opacity(css_select_state *state)
+{
+ return set_stroke_opacity(state->computed, CSS_STROKE_OPACITY_SET, INTTOFIX(1));
+}
+
+css_error css__copy_stroke_opacity(
+ const css_computed_style *from,
+ css_computed_style *to)
+{
+ css_fixed stroke_opacity = 0;
+ uint8_t type = get_stroke_opacity(from, &stroke_opacity);
+
+ if (from == to) {
+ return CSS_OK;
+ }
+
+ return set_stroke_opacity(to, type, stroke_opacity);
+}
+
+css_error css__compose_stroke_opacity(const css_computed_style *parent,
+ const css_computed_style *child,
+ css_computed_style *result)
+{
+ css_fixed stroke_opacity = 0;
+ uint8_t type = get_stroke_opacity(child, &stroke_opacity);
+
+ return css__copy_stroke_opacity(
+ type == CSS_STROKE_OPACITY_INHERIT ? parent : child,
+ result);
+}
+
diff --git a/src/select/select_config.py b/src/select/select_config.py
index fd9e765..1cfe05c 100644
--- a/src/select/select_config.py
+++ b/src/select/select_config.py
@@ -95,6 +95,8 @@ style = {
('min_height', 2, 'length', 'CSS_MIN_HEIGHT_SET'),
('min_width', 2, 'length', 'CSS_MIN_WIDTH_SET'),
('opacity', 1, 'fixed', 'CSS_OPACITY_SET'),
+ ('fill_opacity', 1, 'fixed', 'CSS_FILL_OPACITY_SET'),
+ ('stroke_opacity', 1, 'fixed', 'CSS_STROKE_OPACITY_SET'),
('order', 1, 'integer', 'CSS_ORDER_SET'),
('padding_top', 1, 'length', 'CSS_PADDING_SET'),
('padding_right', 1, 'length', 'CSS_PADDING_SET'),
diff --git a/test/data/parse2/INDEX b/test/data/parse2/INDEX
index e4a369c..95534f6 100644
--- a/test/data/parse2/INDEX
+++ b/test/data/parse2/INDEX
@@ -24,3 +24,4 @@ multicol.dat Multi-column layout property tests
flexbox.dat Flexbox properties and shorthands tests
units.dat Length unit tests
dodgy-media-block.dat Media block with incomplete ruleset
+svg.dat SVG property tests
diff --git a/test/data/parse2/svg.dat b/test/data/parse2/svg.dat
new file mode 100644
index 0000000..e5ee2a3
--- /dev/null
+++ b/test/data/parse2/svg.dat
@@ -0,0 +1,79 @@
+#data
+* { fill-opacity: inherit; }
+#errors
+#expected
+| *
+| fill-opacity: inherit
+#reset
+
+#data
+* { fill-opacity: revert; }
+#errors
+#expected
+| *
+| fill-opacity: revert
+#reset
+
+#data
+* { fill-opacity: 0.867; }
+#errors
+#expected
+| *
+| fill-opacity: 0.867
+#reset
+
+#data
+* { fill-opacity: -0.5; }
+#errors
+#expected
+| *
+| fill-opacity: 0
+#reset
+
+#data
+* { fill-opacity: 5; }
+#errors
+#expected
+| *
+| fill-opacity: 1
+#reset
+
+#data
+* { stroke-opacity: inherit; }
+#errors
+#expected
+| *
+| stroke-opacity: inherit
+#reset
+
+#data
+* { stroke-opacity: revert; }
+#errors
+#expected
+| *
+| stroke-opacity: revert
+#reset
+
+#data
+* { stroke-opacity: 0.00000; }
+#errors
+#expected
+| *
+| stroke-opacity: 0
+#reset
+
+#data
+* { stroke-opacity: -0.5; }
+#errors
+#expected
+| *
+| stroke-opacity: 0
+#reset
+
+#data
+* { stroke-opacity: 5; }
+#errors
+#expected
+| *
+| stroke-opacity: 1
+#reset
diff --git a/test/data/select/defaulting.dat b/test/data/select/defaulting.dat
index 4242e30..9548ae8 100644
--- a/test/data/select/defaulting.dat
+++ b/test/data/select/defaulting.dat
@@ -50,6 +50,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -91,6 +92,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -161,6 +163,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -202,6 +205,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -273,6 +277,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -314,6 +319,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -386,6 +392,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -427,6 +434,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -495,6 +503,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -536,6 +545,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -608,6 +618,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -649,6 +660,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -720,6 +732,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -761,6 +774,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -832,6 +846,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -873,6 +888,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -944,6 +960,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -985,6 +1002,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1053,6 +1071,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1094,6 +1113,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1165,6 +1185,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1206,6 +1227,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1279,6 +1301,7 @@ cursor: auto
direction: ltr
display: inline-block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1320,6 +1343,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1393,6 +1417,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1434,6 +1459,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
diff --git a/test/data/select/tests1.dat b/test/data/select/tests1.dat
index 997e88e..9240ed6 100644
--- a/test/data/select/tests1.dat
+++ b/test/data/select/tests1.dat
@@ -52,6 +52,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -93,6 +94,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -163,6 +165,7 @@ cursor: auto
direction: ltr
display: inline-grid
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -204,6 +207,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -277,6 +281,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -318,6 +323,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -395,6 +401,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -436,6 +443,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -514,6 +522,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -555,6 +564,7 @@ padding-left: 0px
position: absolute
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -633,6 +643,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -674,6 +685,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -752,6 +764,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -793,6 +806,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -861,6 +875,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -902,6 +917,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -971,6 +987,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1012,6 +1029,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1081,6 +1099,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1122,6 +1141,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1190,6 +1210,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1231,6 +1252,7 @@ padding-left: 0px
position: static
quotes: "a" "b"
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1304,6 +1326,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1345,6 +1368,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1418,6 +1442,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1459,6 +1484,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1533,6 +1559,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1574,6 +1601,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1651,6 +1679,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1692,6 +1721,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1768,6 +1798,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1809,6 +1840,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -1891,6 +1923,7 @@ cursor: auto
direction: ltr
display: table-row
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -1932,6 +1965,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2014,6 +2048,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2055,6 +2090,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2137,6 +2173,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2178,6 +2215,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2264,6 +2302,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2305,6 +2344,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2390,6 +2430,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2431,6 +2472,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2514,6 +2556,7 @@ cursor: auto
direction: ltr
display: table-cell
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2555,6 +2598,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2637,6 +2681,7 @@ cursor: auto
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2678,6 +2723,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2760,6 +2806,7 @@ cursor: auto
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2801,6 +2848,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -2883,6 +2931,7 @@ cursor: auto
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -2924,6 +2973,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3006,6 +3056,7 @@ cursor: crosshair
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3047,6 +3098,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3129,6 +3181,7 @@ cursor: default
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3170,6 +3223,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3252,6 +3306,7 @@ cursor: pointer
direction: ltr
display: table
empty-cells: hide
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3293,6 +3348,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3375,6 +3431,7 @@ cursor: move
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3416,6 +3473,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3498,6 +3556,7 @@ cursor: e-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3539,6 +3598,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3621,6 +3681,7 @@ cursor: ne-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3662,6 +3723,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3744,6 +3806,7 @@ cursor: nw-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3785,6 +3848,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3867,6 +3931,7 @@ cursor: n-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -3908,6 +3973,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -3990,6 +4056,7 @@ cursor: se-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4031,6 +4098,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4113,6 +4181,7 @@ cursor: sw-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4154,6 +4223,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4236,6 +4306,7 @@ cursor: s-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4277,6 +4348,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4359,6 +4431,7 @@ cursor: w-resize
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4400,6 +4473,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4482,6 +4556,7 @@ cursor: text
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4523,6 +4598,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4605,6 +4681,7 @@ cursor: wait
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4646,6 +4723,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4728,6 +4806,7 @@ cursor: help
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4769,6 +4848,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4851,6 +4931,7 @@ cursor: progress
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -4892,6 +4973,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -4974,6 +5056,7 @@ cursor: url('sonic-team.png') pointer
direction: ltr
display: table
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5015,6 +5098,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5090,6 +5174,7 @@ cursor: auto
direction: ltr
display: none
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5131,6 +5216,7 @@ padding-left: 0px
position: absolute
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5206,6 +5292,7 @@ cursor: auto
direction: ltr
display: none
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5247,6 +5334,7 @@ padding-left: 0px
position: absolute
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5322,6 +5410,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5363,6 +5452,7 @@ padding-left: 0px
position: absolute
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5435,6 +5525,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5476,6 +5567,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5549,6 +5641,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5590,6 +5683,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5663,6 +5757,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5704,6 +5799,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5777,6 +5873,7 @@ cursor: auto
direction: ltr
display: block
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5818,6 +5915,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5887,6 +5985,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -5928,6 +6027,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -5998,6 +6098,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6039,6 +6140,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6108,6 +6210,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6149,6 +6252,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6218,6 +6322,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6259,6 +6364,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6328,6 +6434,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6369,6 +6476,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6438,6 +6546,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6479,6 +6588,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6548,6 +6658,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6589,6 +6700,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6660,6 +6772,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6701,6 +6814,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6770,6 +6884,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6811,6 +6926,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6880,6 +6996,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -6921,6 +7038,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -6991,6 +7109,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -7032,6 +7151,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7101,6 +7221,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 10px
flex-direction: row
flex-grow: 2.000
@@ -7142,6 +7263,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7211,6 +7333,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 1.000
@@ -7252,6 +7375,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7321,6 +7445,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -7362,6 +7487,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7431,6 +7557,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 0.000
@@ -7472,6 +7599,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7541,6 +7669,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 0.000
@@ -7582,6 +7711,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7651,6 +7781,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 0.000
@@ -7692,6 +7823,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7761,6 +7893,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 3.000
@@ -7802,6 +7935,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7870,6 +8004,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 3px
flex-direction: row
flex-grow: 0.000
@@ -7911,6 +8046,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -7979,6 +8115,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 3em
flex-direction: row
flex-grow: 2.000
@@ -8020,6 +8157,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8088,6 +8226,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 20.000
@@ -8129,6 +8268,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8199,6 +8339,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 3.000
@@ -8240,6 +8381,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8310,6 +8452,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 3px
flex-direction: row
flex-grow: 3.000
@@ -8351,6 +8494,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8419,6 +8563,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 0px
flex-direction: row
flex-grow: 0.000
@@ -8460,6 +8605,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8530,6 +8676,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -8571,6 +8718,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8641,6 +8789,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 3%
flex-direction: row
flex-grow: 3.000
@@ -8682,6 +8831,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8752,6 +8902,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 3%
flex-direction: row
flex-grow: 3.000
@@ -8793,6 +8944,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8861,6 +9013,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -8902,6 +9055,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -8970,6 +9124,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -9011,6 +9166,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9079,6 +9235,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -9120,6 +9277,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9188,6 +9346,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -9229,6 +9388,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9297,6 +9457,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: column
flex-grow: 0.000
@@ -9338,6 +9499,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9406,6 +9568,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row-reverse
flex-grow: 0.000
@@ -9447,6 +9610,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9515,6 +9679,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: column-reverse
flex-grow: 0.000
@@ -9556,6 +9721,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9624,6 +9790,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: column-reverse
flex-grow: 0.000
@@ -9665,6 +9832,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9735,6 +9903,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: column
flex-grow: 0.000
@@ -9776,6 +9945,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9846,6 +10016,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row-reverse
flex-grow: 0.000
@@ -9887,6 +10058,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -9955,6 +10127,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 4.500em
flex-direction: row
flex-grow: 2.370
@@ -9996,6 +10169,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10064,6 +10238,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10105,6 +10280,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10173,6 +10349,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10214,6 +10391,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10282,6 +10460,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10323,6 +10502,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10391,6 +10571,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10432,6 +10613,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10500,6 +10682,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10541,6 +10724,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10609,6 +10793,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10650,6 +10835,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10720,6 +10906,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10761,6 +10948,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10831,6 +11019,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10872,6 +11061,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -10940,6 +11130,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -10981,6 +11172,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11049,6 +11241,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11090,6 +11283,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11158,6 +11352,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11199,6 +11394,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11269,6 +11465,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11310,6 +11507,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11378,6 +11576,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 4.500em
flex-direction: column
flex-grow: 2.300
@@ -11419,6 +11618,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11489,6 +11689,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: 4.500em
flex-direction: column
flex-grow: 2.300
@@ -11530,6 +11731,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11598,6 +11800,7 @@ cursor: auto
direction: ltr
display: flex
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11639,6 +11842,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11707,6 +11911,7 @@ cursor: auto
direction: ltr
display: inline-flex
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11748,6 +11953,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11816,6 +12022,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11857,6 +12064,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -11925,6 +12133,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -11966,6 +12175,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12034,6 +12244,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12075,6 +12286,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12143,6 +12355,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12184,6 +12397,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12252,6 +12466,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12293,6 +12508,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12361,6 +12577,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12402,6 +12619,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12470,6 +12688,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12511,6 +12730,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12579,6 +12799,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12620,6 +12841,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12688,6 +12910,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12729,6 +12952,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12797,6 +13021,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12838,6 +13063,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -12906,6 +13132,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -12947,6 +13174,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13015,6 +13243,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13056,6 +13285,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13124,6 +13354,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13165,6 +13396,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13233,6 +13465,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13274,6 +13507,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13342,6 +13576,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13383,6 +13618,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13451,6 +13687,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13492,6 +13729,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13560,6 +13798,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13601,6 +13840,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13669,6 +13909,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13710,6 +13951,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13778,6 +14020,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13819,6 +14062,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13887,6 +14131,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -13928,6 +14173,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -13996,6 +14242,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -14037,6 +14284,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -14124,6 +14372,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -14165,6 +14414,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -14233,6 +14483,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -14274,6 +14525,7 @@ padding-left: 0px
position: static
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
@@ -14342,6 +14594,7 @@ cursor: auto
direction: ltr
display: inline
empty-cells: show
+fill-opacity: 1.000
flex-basis: auto
flex-direction: row
flex-grow: 0.000
@@ -14383,6 +14636,7 @@ padding-left: 0px
position: sticky
quotes: none
right: auto
+stroke-opacity: 1.000
table-layout: auto
text-align: default
text-decoration: none
diff --git a/test/dump.h b/test/dump.h
index f585788..09a35b0 100644
--- a/test/dump.h
+++ b/test/dump.h
@@ -491,6 +491,8 @@ static const char *opcode_names[] = {
"flex-wrap",
"justify-content",
"order",
+ "fill-opacity",
+ "stroke-opacity",
};
static void dump_css_fixed(css_fixed f, char **ptr)
@@ -1819,6 +1821,28 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth)
break;
}
break;
+ case CSS_PROP_FILL_OPACITY:
+ switch (value) {
+ case FILL_OPACITY_SET:
+ {
+ css_fixed val = *((css_fixed *) bytecode);
+ ADVANCE(sizeof(val));
+ dump_number(val, ptr);
+ }
+ break;
+ }
+ break;
+ case CSS_PROP_STROKE_OPACITY:
+ switch (value) {
+ case STROKE_OPACITY_SET:
+ {
+ css_fixed val = *((css_fixed *) bytecode);
+ ADVANCE(sizeof(val));
+ dump_number(val, ptr);
+ }
+ break;
+ }
+ break;
case CSS_PROP_FLEX_BASIS:
switch (value) {
case FLEX_BASIS_AUTO:
diff --git a/test/dump_computed.h b/test/dump_computed.h
index 2ce7849..f769075 100644
--- a/test/dump_computed.h
+++ b/test/dump_computed.h
@@ -1635,6 +1635,30 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
ptr += wrote;
*len -= wrote;
+ /* fill-opacity */
+ val = css_computed_fill_opacity(style, &len1);
+ switch (val) {
+ case CSS_FILL_OPACITY_INHERIT:
+ wrote = snprintf(ptr, *len, "fill-opacity: inherit\n");
+ break;
+ case CSS_FILL_OPACITY_SET:
+ wrote = snprintf(ptr, *len, "fill-opacity: ");
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = dump_css_fixed(len1, ptr, *len);
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = snprintf(ptr, *len, "\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
/* flex-basis */
val = css_computed_flex_basis(style, &len1, &unit1);
switch (val) {
@@ -2796,6 +2820,30 @@ static void dump_computed_style(const css_computed_style *style, char *buf,
ptr += wrote;
*len -= wrote;
+ /* stroke-opacity */
+ val = css_computed_stroke_opacity(style, &len1);
+ switch (val) {
+ case CSS_STROKE_OPACITY_INHERIT:
+ wrote = snprintf(ptr, *len, "stroke-opacity: inherit\n");
+ break;
+ case CSS_STROKE_OPACITY_SET:
+ wrote = snprintf(ptr, *len, "stroke-opacity: ");
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = dump_css_fixed(len1, ptr, *len);
+ ptr += wrote;
+ *len -= wrote;
+
+ wrote = snprintf(ptr, *len, "\n");
+ break;
+ default:
+ wrote = 0;
+ break;
+ }
+ ptr += wrote;
+ *len -= wrote;
+
/* table-layout */
val = css_computed_table_layout(style);
switch (val) {
--
Cascading Style Sheets library
1 month, 4 weeks
libcss: branch master updated. release/0.9.1-89-g20de921
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/libcss.git/shortlog/20de9212123bd14efa8f1f...
...commit http://git.netsurf-browser.org/libcss.git/commit/20de9212123bd14efa8f1fd5...
...tree http://git.netsurf-browser.org/libcss.git/tree/20de9212123bd14efa8f1fd500...
The branch, master has been updated
via 20de9212123bd14efa8f1fd500765038be3851bf (commit)
from 5a1cc92ccead685d464b99723eac795885366955 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/libcss.git/commit/?id=20de9212123bd14efa8f...
commit 20de9212123bd14efa8f1fd500765038be3851bf
Author: John-Mark Bell <jmb(a)netsurf-browser.org>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
select: opacity: correct value
diff --git a/src/select/properties/opacity.c b/src/select/properties/opacity.c
index 818af62..3e875f9 100644
--- a/src/select/properties/opacity.c
+++ b/src/select/properties/opacity.c
@@ -21,7 +21,7 @@ css_error css__cascade_opacity(uint32_t opv, css_style *style,
css_fixed opacity = 0;
if (hasFlagValue(opv) == false) {
- value = CSS_Z_INDEX_SET;
+ value = CSS_OPACITY_SET;
opacity = *((css_fixed *) style->bytecode);
advance_bytecode(style, sizeof(opacity));
-----------------------------------------------------------------------
Summary of changes:
src/select/properties/opacity.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/select/properties/opacity.c b/src/select/properties/opacity.c
index 818af62..3e875f9 100644
--- a/src/select/properties/opacity.c
+++ b/src/select/properties/opacity.c
@@ -21,7 +21,7 @@ css_error css__cascade_opacity(uint32_t opv, css_style *style,
css_fixed opacity = 0;
if (hasFlagValue(opv) == false) {
- value = CSS_Z_INDEX_SET;
+ value = CSS_OPACITY_SET;
opacity = *((css_fixed *) style->bytecode);
advance_bytecode(style, sizeof(opacity));
--
Cascading Style Sheets library
1 month, 4 weeks
toolchains: branch master updated. b4fd4dd4ba8abaca4e984b1af5892607483a46d7
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/toolchains.git/shortlog/b4fd4dd4ba8abaca4e...
...commit http://git.netsurf-browser.org/toolchains.git/commit/b4fd4dd4ba8abaca4e98...
...tree http://git.netsurf-browser.org/toolchains.git/tree/b4fd4dd4ba8abaca4e984b...
The branch, master has been updated
via b4fd4dd4ba8abaca4e984b1af5892607483a46d7 (commit)
from 0ebd00ccd1d58e0ebadb145a82d92af0ce98086e (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/toolchains.git/commit/?id=b4fd4dd4ba8abaca...
commit b4fd4dd4ba8abaca4e984b1af5892607483a46d7
Author: John-Mark Bell <jmb(a)netsurf-browser.org>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
m5475-atari-mint: fix SDK
diff --git a/sdk/recipes/patches/libcares/m5475-atari-mint/config.sub.p b/sdk/recipes/patches/libcares/m5475-atari-mint/config.sub.p
new file mode 100644
index 0000000..a681d0a
--- /dev/null
+++ b/sdk/recipes/patches/libcares/m5475-atari-mint/config.sub.p
@@ -0,0 +1,11 @@
+--- config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/libcurl/m5475-atari-mint/config.sub.p b/sdk/recipes/patches/libcurl/m5475-atari-mint/config.sub.p
new file mode 100644
index 0000000..a681d0a
--- /dev/null
+++ b/sdk/recipes/patches/libcurl/m5475-atari-mint/config.sub.p
@@ -0,0 +1,11 @@
+--- config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/libexpat/m5475-atari-mint/conftools.config.sub.p b/sdk/recipes/patches/libexpat/m5475-atari-mint/conftools.config.sub.p
new file mode 100644
index 0000000..90e61b1
--- /dev/null
+++ b/sdk/recipes/patches/libexpat/m5475-atari-mint/conftools.config.sub.p
@@ -0,0 +1,11 @@
+--- conftools/config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ conftools/config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/libiconv/m5475-atari-mint/build-aux.config.sub.p b/sdk/recipes/patches/libiconv/m5475-atari-mint/build-aux.config.sub.p
new file mode 100644
index 0000000..9bacbb8
--- /dev/null
+++ b/sdk/recipes/patches/libiconv/m5475-atari-mint/build-aux.config.sub.p
@@ -0,0 +1,11 @@
+--- build-aux/config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ build-aux/config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/libiconv/m5475-atari-mint/libcharset.build-aux.config.sub.p b/sdk/recipes/patches/libiconv/m5475-atari-mint/libcharset.build-aux.config.sub.p
new file mode 100644
index 0000000..d615e13
--- /dev/null
+++ b/sdk/recipes/patches/libiconv/m5475-atari-mint/libcharset.build-aux.config.sub.p
@@ -0,0 +1,11 @@
+--- libcharset/build-aux/config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ libcharset/build-aux/config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/libpng/m5475-atari-mint/config.sub.p b/sdk/recipes/patches/libpng/m5475-atari-mint/config.sub.p
new file mode 100644
index 0000000..a681d0a
--- /dev/null
+++ b/sdk/recipes/patches/libpng/m5475-atari-mint/config.sub.p
@@ -0,0 +1,11 @@
+--- config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/openssl/m5475-atari-mint/apps.lib.s_socket.c.p b/sdk/recipes/patches/openssl/m5475-atari-mint/apps.lib.s_socket.c.p
new file mode 100644
index 0000000..d659de7
--- /dev/null
+++ b/sdk/recipes/patches/openssl/m5475-atari-mint/apps.lib.s_socket.c.p
@@ -0,0 +1,12 @@
+--- apps/lib/s_socket.c.orig 2018-06-03 03:19:29.000000000 +0200
++++ apps/lib/s_socket.c 2018-06-03 03:19:36.000000000 +0200
+@@ -179,7 +179,9 @@
+ BIO_ADDRINFO_family(res) == AF_INET6 ? "IPv6 " :
+ #endif
+ BIO_ADDRINFO_family(res) == AF_INET ? "IPv4 " :
++#ifdef AF_UNIX
+ BIO_ADDRINFO_family(res) == AF_UNIX ? "unix " : "",
++#endif
+ bindhost != NULL ? bindhost : "",
+ bindport != NULL ? ":" : "",
+ bindport != NULL ? bindport : "");
diff --git a/sdk/recipes/patches/openssl/m5475-atari-mint/e_os.h.p b/sdk/recipes/patches/openssl/m5475-atari-mint/e_os.h.p
deleted file mode 100644
index ede1edc..0000000
--- a/sdk/recipes/patches/openssl/m5475-atari-mint/e_os.h.p
+++ /dev/null
@@ -1,18 +0,0 @@
---- e_os.h.orig 2018-06-03 03:19:29.000000000 +0200
-+++ e_os.h 2018-06-03 03:19:36.000000000 +0200
-@@ -462,6 +462,15 @@
- # define OPENSSL_USE_IPV6 0
- # endif
- # endif
-+/*
-+ * We mean it
-+ */
-+# if (OPENSSL_USE_IPV6 == 0)
-+# undef AF_INET6
-+# warning undef AF_INET6
-+# undef AF_UNIX
-+# warning undef AF_UNIX
-+# endif
-
- # endif
-
diff --git a/sdk/recipes/patches/openssl/m5475-atari-mint/include.internal.sockets.h.p b/sdk/recipes/patches/openssl/m5475-atari-mint/include.internal.sockets.h.p
new file mode 100644
index 0000000..5ad3a7b
--- /dev/null
+++ b/sdk/recipes/patches/openssl/m5475-atari-mint/include.internal.sockets.h.p
@@ -0,0 +1,19 @@
+--- include/internal/sockets.h.orig 2018-06-03 03:19:29.000000000 +0200
++++ include/internal/sockets.h 2018-06-03 03:19:36.000000000 +0200
+@@ -124,6 +124,16 @@
+ # define OPENSSL_USE_IPV6 0
+ # endif
+ # endif
++/*
++ * We mean it
++ */
++# if (OPENSSL_USE_IPV6 == 0)
++# undef AF_INET6
++# warning undef AF_INET6
++# undef AF_UNIX
++# warning undef AF_UNIX
++# undef IPV6_V6ONLY
++# endif
+
+ # define get_last_socket_error() errno
+ # define clear_socket_error() errno=0
-----------------------------------------------------------------------
Summary of changes:
.../patches/libcares/m5475-atari-mint/config.sub.p | 11 +++++++++++
.../patches/libcurl/m5475-atari-mint/config.sub.p | 11 +++++++++++
.../libexpat/m5475-atari-mint/conftools.config.sub.p | 11 +++++++++++
.../libiconv/m5475-atari-mint/build-aux.config.sub.p | 11 +++++++++++
.../libcharset.build-aux.config.sub.p | 11 +++++++++++
.../patches/libpng/m5475-atari-mint/config.sub.p | 11 +++++++++++
.../apps.lib.s_socket.c.p | 0
.../patches/openssl/m5475-atari-mint/e_os.h.p | 18 ------------------
.../include.internal.sockets.h.p | 0
9 files changed, 66 insertions(+), 18 deletions(-)
create mode 100644 sdk/recipes/patches/libcares/m5475-atari-mint/config.sub.p
create mode 100644 sdk/recipes/patches/libcurl/m5475-atari-mint/config.sub.p
create mode 100644 sdk/recipes/patches/libexpat/m5475-atari-mint/conftools.config.sub.p
create mode 100644 sdk/recipes/patches/libiconv/m5475-atari-mint/build-aux.config.sub.p
create mode 100644 sdk/recipes/patches/libiconv/m5475-atari-mint/libcharset.build-aux.config.sub.p
create mode 100644 sdk/recipes/patches/libpng/m5475-atari-mint/config.sub.p
copy sdk/recipes/patches/openssl/{m68k-atari-mint => m5475-atari-mint}/apps.lib.s_socket.c.p (100%)
delete mode 100644 sdk/recipes/patches/openssl/m5475-atari-mint/e_os.h.p
copy sdk/recipes/patches/openssl/{m68k-atari-mint => m5475-atari-mint}/include.internal.sockets.h.p (100%)
diff --git a/sdk/recipes/patches/libcares/m5475-atari-mint/config.sub.p b/sdk/recipes/patches/libcares/m5475-atari-mint/config.sub.p
new file mode 100644
index 0000000..a681d0a
--- /dev/null
+++ b/sdk/recipes/patches/libcares/m5475-atari-mint/config.sub.p
@@ -0,0 +1,11 @@
+--- config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/libcurl/m5475-atari-mint/config.sub.p b/sdk/recipes/patches/libcurl/m5475-atari-mint/config.sub.p
new file mode 100644
index 0000000..a681d0a
--- /dev/null
+++ b/sdk/recipes/patches/libcurl/m5475-atari-mint/config.sub.p
@@ -0,0 +1,11 @@
+--- config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/libexpat/m5475-atari-mint/conftools.config.sub.p b/sdk/recipes/patches/libexpat/m5475-atari-mint/conftools.config.sub.p
new file mode 100644
index 0000000..90e61b1
--- /dev/null
+++ b/sdk/recipes/patches/libexpat/m5475-atari-mint/conftools.config.sub.p
@@ -0,0 +1,11 @@
+--- conftools/config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ conftools/config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/libiconv/m5475-atari-mint/build-aux.config.sub.p b/sdk/recipes/patches/libiconv/m5475-atari-mint/build-aux.config.sub.p
new file mode 100644
index 0000000..9bacbb8
--- /dev/null
+++ b/sdk/recipes/patches/libiconv/m5475-atari-mint/build-aux.config.sub.p
@@ -0,0 +1,11 @@
+--- build-aux/config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ build-aux/config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/libiconv/m5475-atari-mint/libcharset.build-aux.config.sub.p b/sdk/recipes/patches/libiconv/m5475-atari-mint/libcharset.build-aux.config.sub.p
new file mode 100644
index 0000000..d615e13
--- /dev/null
+++ b/sdk/recipes/patches/libiconv/m5475-atari-mint/libcharset.build-aux.config.sub.p
@@ -0,0 +1,11 @@
+--- libcharset/build-aux/config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ libcharset/build-aux/config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/libpng/m5475-atari-mint/config.sub.p b/sdk/recipes/patches/libpng/m5475-atari-mint/config.sub.p
new file mode 100644
index 0000000..a681d0a
--- /dev/null
+++ b/sdk/recipes/patches/libpng/m5475-atari-mint/config.sub.p
@@ -0,0 +1,11 @@
+--- config.sub.orig 2023-10-01 08:53:00.740777146 +0100
++++ config.sub 2023-10-01 08:59:22.657161841 +0100
+@@ -1209,7 +1209,7 @@
+ | lm32 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | m32c | m32r | m32rle \
+- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
++ | m5200 | m5475 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
+ | m88110 | m88k | maxq | mb | mcore | mep | metag \
+ | microblaze | microblazeel \
diff --git a/sdk/recipes/patches/openssl/m68k-atari-mint/apps.lib.s_socket.c.p b/sdk/recipes/patches/openssl/m5475-atari-mint/apps.lib.s_socket.c.p
similarity index 100%
copy from sdk/recipes/patches/openssl/m68k-atari-mint/apps.lib.s_socket.c.p
copy to sdk/recipes/patches/openssl/m5475-atari-mint/apps.lib.s_socket.c.p
diff --git a/sdk/recipes/patches/openssl/m5475-atari-mint/e_os.h.p b/sdk/recipes/patches/openssl/m5475-atari-mint/e_os.h.p
deleted file mode 100644
index ede1edc..0000000
--- a/sdk/recipes/patches/openssl/m5475-atari-mint/e_os.h.p
+++ /dev/null
@@ -1,18 +0,0 @@
---- e_os.h.orig 2018-06-03 03:19:29.000000000 +0200
-+++ e_os.h 2018-06-03 03:19:36.000000000 +0200
-@@ -462,6 +462,15 @@
- # define OPENSSL_USE_IPV6 0
- # endif
- # endif
-+/*
-+ * We mean it
-+ */
-+# if (OPENSSL_USE_IPV6 == 0)
-+# undef AF_INET6
-+# warning undef AF_INET6
-+# undef AF_UNIX
-+# warning undef AF_UNIX
-+# endif
-
- # endif
-
diff --git a/sdk/recipes/patches/openssl/m68k-atari-mint/include.internal.sockets.h.p b/sdk/recipes/patches/openssl/m5475-atari-mint/include.internal.sockets.h.p
similarity index 100%
copy from sdk/recipes/patches/openssl/m68k-atari-mint/include.internal.sockets.h.p
copy to sdk/recipes/patches/openssl/m5475-atari-mint/include.internal.sockets.h.p
--
Cross-compilation toolchains and environments
1 month, 4 weeks
toolchains: branch master updated. 0ebd00ccd1d58e0ebadb145a82d92af0ce98086e
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/toolchains.git/shortlog/0ebd00ccd1d58e0eba...
...commit http://git.netsurf-browser.org/toolchains.git/commit/0ebd00ccd1d58e0ebadb...
...tree http://git.netsurf-browser.org/toolchains.git/tree/0ebd00ccd1d58e0ebadb14...
The branch, master has been updated
via 0ebd00ccd1d58e0ebadb145a82d92af0ce98086e (commit)
via 3145e74c94e280faa2e533af46fbb7724dbfdee4 (commit)
via c4a587b443513ea404e6d2ba9f59d85a3af56467 (commit)
from 4bcfe801d5a685f146d9d77e2029667f50c9e4c7 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/toolchains.git/commit/?id=0ebd00ccd1d58e0e...
commit 0ebd00ccd1d58e0ebadb145a82d92af0ce98086e
Author: John-Mark Bell <jmb(a)netsurf-browser.org>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
SDK: update zlib URI
diff --git a/sdk/Makefile b/sdk/Makefile
index 5559037..960e1af 100644
--- a/sdk/Makefile
+++ b/sdk/Makefile
@@ -247,7 +247,7 @@ endif
touch $@
$(SOURCEDIR)/zlib-$(VERSION_ZLIB).tar.gz:
- $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) "https://zlib.net/$(subst $(SOURCEDIR)/,,$@)" $@
+ $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) "https://zlib.net/fossils/$(subst $(SOURCEDIR)/,,$@)" $@
# libiconv
$(BUILDSTEPS)/libiconv.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libiconv-src.d
commitdiff http://git.netsurf-browser.org/toolchains.git/commit/?id=3145e74c94e280fa...
commit 3145e74c94e280faa2e533af46fbb7724dbfdee4
Author: John-Mark Bell <jmb(a)netsurf-browser.org>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
m68k-atari-mint: fix mintlib patch
diff --git a/m68k-atari-mint/recipes/patches/mintlib/configvars.p b/m68k-atari-mint/recipes/patches/mintlib/configvars.p
index 2c00bec..a3acd90 100644
--- a/m68k-atari-mint/recipes/patches/mintlib/configvars.p
+++ b/m68k-atari-mint/recipes/patches/mintlib/configvars.p
@@ -18,12 +18,12 @@
# This is where include files get installed.
includedir=${prefix}/include
-@@ -124,7 +124,7 @@
- CFLAGS=-O2 -fomit-frame-pointer
+@@ -141,7 +141,7 @@
+ LDFLAGS=
# Additional defines.
-DEFS=
+DEFS=-DREGEX_MALLOC
# Define this to the warning level you want.
- WARN=-Wall
+ WARN=-Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wold-style-declaration -Wold-style-definition
commitdiff http://git.netsurf-browser.org/toolchains.git/commit/?id=c4a587b443513ea4...
commit c4a587b443513ea404e6d2ba9f59d85a3af56467
Author: John-Mark Bell <jmb(a)netsurf-browser.org>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
m5475-atari-mint: fix toolchain build
diff --git a/m5475-atari-mint/Makefile b/m5475-atari-mint/Makefile
index a59c304..6ed3b4c 100644
--- a/m5475-atari-mint/Makefile
+++ b/m5475-atari-mint/Makefile
@@ -5,7 +5,7 @@
UPSTREAM_GCC_VERSION := 4.6.4
UPSTREAM_GCC_TARBALL := gcc-$(UPSTREAM_GCC_VERSION).tar.bz2
UPSTREAM_GCC_URI := http://ftp.gnu.org/gnu/gcc/gcc-$(UPSTREAM_GCC_VERSION)/$(UPSTREAM_GCC_TAR...
-UPSTREAM_GCC_PATCH := gcc-4.6.4-mint-20130415.patch.bz2
+UPSTREAM_GCC_PATCH := gcc-4.6.4-mint-20200504.patch.bz2
UPSTREAM_GCC_PATCH_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_G...
UPSTREAM_BINUTILS_VERSION := 2.30
@@ -27,21 +27,21 @@ UPSTREAM_MPC_VERSION := 0.8.2
UPSTREAM_MPC_TARBALL := mpc-$(UPSTREAM_MPC_VERSION).tar.gz
UPSTREAM_MPC_URI := http://www.multiprecision.org/mpc/download/$(UPSTREAM_MPC_TARBALL)
-UPSTREAM_MINTBIN_VERSION := CVS-20110527
+UPSTREAM_MINTBIN_VERSION := Git-20201129
UPSTREAM_MINTBIN_TARBALL := mintbin-$(UPSTREAM_MINTBIN_VERSION).tar.gz
UPSTREAM_MINTBIN_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_M...
-UPSTREAM_MINTLIB_VERSION := Git-20170304
+UPSTREAM_MINTLIB_VERSION := Git-20220821
UPSTREAM_MINTLIB_TARBALL := mintlib-$(UPSTREAM_MINTLIB_VERSION).tar.gz
UPSTREAM_MINTLIB_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_M...
UPSTREAM_PML_VERSION := 2.03
UPSTREAM_PML_TARBALL := pml-$(UPSTREAM_PML_VERSION).tar.bz2
UPSTREAM_PML_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_P...
-UPSTREAM_PML_PATCH := pml-2.03-mint-20110207.patch.bz2
+UPSTREAM_PML_PATCH := pml-2.03-mint-20191013.patch.bz2
UPSTREAM_PML_PATCH_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_P...
-UPSTREAM_GEMLIB_VERSION := CVS-20130415
+UPSTREAM_GEMLIB_VERSION := Git-20230112
UPSTREAM_GEMLIB_TARBALL := gemlib-$(UPSTREAM_GEMLIB_VERSION).tar.bz2
UPSTREAM_GEMLIB_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_G...
@@ -86,8 +86,8 @@ $(BUILDSTEPS)/gemlib.d: $(BUILDSTEPS)/stage2.d $(SOURCESDIR)/$(UPSTREAM_GEMLIB_T
tar xjf $(SOURCESDIR)/$(UPSTREAM_GEMLIB_TARBALL)
mv gemlib-$(UPSTREAM_GEMLIB_VERSION) $(BUILDDIR)/gemlib
for p in `ls $(RECIPES)/patches/gemlib/*.p` ; do patch -d $(BUILDDIR)/gemlib -p0 <$$p ; done
- cd $(BUILDDIR)/gemlib/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make
- cd $(BUILDDIR)/gemlib/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make install
+ cd $(BUILDDIR)/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make
+ cd $(BUILDDIR)/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make install
touch $@
###
@@ -191,9 +191,6 @@ $(BUILDSTEPS)/mintbin.d: $(BUILDSTEPS)/mintbin-srcdir.d
cd $(BUILDDIR)/mintbin && $(MINTBIN_SRCDIR)/configure --prefix=$(PREFIX) --target=$(TARGET_NAME) --disable-nls
cd $(BUILDDIR)/mintbin && make
cd $(BUILDDIR)/mintbin && make install
- #mv $(PREFIX)/{$(TARGET_NAME)/bin/$(TARGET_NAME)-* $(PREFIX)/bin/
- #HACK: mintbin install traget looks broken
- mv $(PREFIX)/*-atari-mint/bin/$(TARGET_NAME)-* $(PREFIX)/bin/
touch $@
$(BUILDSTEPS)/mintbin-srcdir.d: $(SOURCESDIR)/$(UPSTREAM_MINTBIN_TARBALL)
diff --git a/m5475-atari-mint/recipes/patches/gemlib/CONFIGVARS.p b/m5475-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
index 5692a21..f65dc89 100644
--- a/m5475-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
+++ b/m5475-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
@@ -1,29 +1,28 @@
---- CONFIGVARS.orig 2012-10-11 17:55:52.000000000 +0100
-+++ CONFIGVARS 2012-10-11 17:56:37.000000000 +0100
-@@ -1,8 +1,8 @@
- #
- #
+--- CONFIGVARS 2011-05-13 23:38:45.000000000 +0100
++++ CONFIGVARS 2011-05-13 23:40:11.000000000 +0100
+@@ -3,6 +3,7 @@
# cross compiling
--#CROSS = yes
--CROSS = no
+ #CROSS = yes
+ #CROSS = no
+CROSS = yes
-+#CROSS = no
- #
- # build alternate libraries for processor variants
-@@ -15,13 +15,13 @@
#
+ # cross compiling
+@@ -33,7 +34,7 @@
+ CROSS := yes
+ else
ifeq ($(CROSS),yes)
-
--CROSSPREFIX=m68k-atari-mint-
-+CROSSPREFIX=m5475-atari-mint-
-
- NATIVECC = gcc
+- CROSS_TOOL=m68k-atari-mint
++ CROSS_TOOL=m5475-atari-mint
+ CROSSPREFIX=$(CROSS_TOOL)-
+ else
+ CROSSPREFIX=
+@@ -46,7 +47,7 @@
NATIVECFLAGS = -O
CRLF = echo crlf -s
--PREFIX=/usr/m68k-atari-mint
+-PREFIX=$(shell $(CROSSPREFIX)gcc -print-sysroot)/usr
+PREFIX=/opt/netsurf/m5475-atari-mint/cross/m5475-atari-mint
-
- else
-
+ ifeq ($(PREFIX),)
+ PREFIX=/usr/$(CROSS_TOOL)
+ endif
diff --git a/m5475-atari-mint/recipes/patches/mintlib/configvars.p b/m5475-atari-mint/recipes/patches/mintlib/configvars.p
index f72d6f4..803272a 100644
--- a/m5475-atari-mint/recipes/patches/mintlib/configvars.p
+++ b/m5475-atari-mint/recipes/patches/mintlib/configvars.p
@@ -1,6 +1,6 @@
--- ./configvars.orig 2012-05-03 19:26:10.000000000 +0200
-+++ ./configvars 2012-11-05 23:03:52.000000000 +0100
-@@ -12,14 +12,14 @@
++++ ./configvars 2012-11-05 22:34:07.000000000 +0100
+@@ -12,7 +12,7 @@
# get installed. You have to take car yourself that the libraries
# and include files and so on will get installed in the right place
# The easiest way to do this is to change "prefix", see below.
@@ -9,29 +9,30 @@
# Silent build or verbose
AM_DEFAULT_VERBOSITY = 1
-
- # Define this to "m68k-atari-mint-" if you cross compile.
+@@ -35,7 +35,7 @@
+ CROSS := yes
+ else
ifeq ($(CROSS),yes)
-- toolprefix=m68k-atari-mint-
-+ toolprefix=m5475-atari-mint-
+- CROSS_TOOL=m68k-atari-mint
++ CROSS_TOOL=m5475-atari-mint
+ toolprefix=$(CROSS_TOOL)-
else
toolprefix=
- endif
-@@ -47,7 +47,7 @@
+@@ -64,7 +64,7 @@
+ # This variable is used for various others. Change its value if
# need be. When cross-compiling you will usually want to set this
# to "/usr/m68k-atari-mint".
- ifeq ($(CROSS),yes)
-- prefix=/usr/m68k-atari-mint
-+ prefix=/opt/netsurf/m5475-atari-mint/cross/m5475-atari-mint
- else
- prefix=/usr
- endif
-@@ -124,7 +124,7 @@
- CFLAGS=-O2 -fomit-frame-pointer
+-prefix=/usr
++prefix=/opt/netsurf/m5475-atari-mint/cross/m5475-atari-mint
+
+ # This is where include files get installed.
+ includedir=${prefix}/include
+@@ -141,7 +141,7 @@
+ LDFLAGS=
# Additional defines.
-DEFS=
+DEFS=-DREGEX_MALLOC
# Define this to the warning level you want.
- WARN=-Wall
+ WARN=-Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wold-style-declaration -Wold-style-definition
diff --git a/m5475-atari-mint/recipes/patches/mintlib/posix_regex.p b/m5475-atari-mint/recipes/patches/mintlib/posix_regex.p
new file mode 100644
index 0000000..6a42a40
--- /dev/null
+++ b/m5475-atari-mint/recipes/patches/mintlib/posix_regex.p
@@ -0,0 +1,11 @@
+--- ./posix/regex.c.orig 2012-05-03 19:26:10.000000000 +0200
++++ ./posix/regex.c 2012-11-05 22:34:07.000000000 +0100
+@@ -1364,6 +1364,7 @@
+ \
+ DEBUG_PRINT2 (" Pushing failure id: %u\n", failure_id); \
+ DEBUG_PUSH (failure_id); \
++ (void) destination; \
+ } while (0)
+
+ /* This is the number of items that are pushed and popped on the stack
+
-----------------------------------------------------------------------
Summary of changes:
m5475-atari-mint/Makefile | 17 ++++-----
.../recipes/patches/gemlib/CONFIGVARS.p | 39 ++++++++++----------
.../recipes/patches/mintlib/configvars.p | 35 +++++++++---------
.../recipes/patches/mintlib/posix_regex.p | 0
.../recipes/patches/mintlib/configvars.p | 6 +--
sdk/Makefile | 2 +-
6 files changed, 48 insertions(+), 51 deletions(-)
copy {m68k-atari-mint => m5475-atari-mint}/recipes/patches/mintlib/posix_regex.p (100%)
diff --git a/m5475-atari-mint/Makefile b/m5475-atari-mint/Makefile
index a59c304..6ed3b4c 100644
--- a/m5475-atari-mint/Makefile
+++ b/m5475-atari-mint/Makefile
@@ -5,7 +5,7 @@
UPSTREAM_GCC_VERSION := 4.6.4
UPSTREAM_GCC_TARBALL := gcc-$(UPSTREAM_GCC_VERSION).tar.bz2
UPSTREAM_GCC_URI := http://ftp.gnu.org/gnu/gcc/gcc-$(UPSTREAM_GCC_VERSION)/$(UPSTREAM_GCC_TAR...
-UPSTREAM_GCC_PATCH := gcc-4.6.4-mint-20130415.patch.bz2
+UPSTREAM_GCC_PATCH := gcc-4.6.4-mint-20200504.patch.bz2
UPSTREAM_GCC_PATCH_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_G...
UPSTREAM_BINUTILS_VERSION := 2.30
@@ -27,21 +27,21 @@ UPSTREAM_MPC_VERSION := 0.8.2
UPSTREAM_MPC_TARBALL := mpc-$(UPSTREAM_MPC_VERSION).tar.gz
UPSTREAM_MPC_URI := http://www.multiprecision.org/mpc/download/$(UPSTREAM_MPC_TARBALL)
-UPSTREAM_MINTBIN_VERSION := CVS-20110527
+UPSTREAM_MINTBIN_VERSION := Git-20201129
UPSTREAM_MINTBIN_TARBALL := mintbin-$(UPSTREAM_MINTBIN_VERSION).tar.gz
UPSTREAM_MINTBIN_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_M...
-UPSTREAM_MINTLIB_VERSION := Git-20170304
+UPSTREAM_MINTLIB_VERSION := Git-20220821
UPSTREAM_MINTLIB_TARBALL := mintlib-$(UPSTREAM_MINTLIB_VERSION).tar.gz
UPSTREAM_MINTLIB_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_M...
UPSTREAM_PML_VERSION := 2.03
UPSTREAM_PML_TARBALL := pml-$(UPSTREAM_PML_VERSION).tar.bz2
UPSTREAM_PML_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_P...
-UPSTREAM_PML_PATCH := pml-2.03-mint-20110207.patch.bz2
+UPSTREAM_PML_PATCH := pml-2.03-mint-20191013.patch.bz2
UPSTREAM_PML_PATCH_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_P...
-UPSTREAM_GEMLIB_VERSION := CVS-20130415
+UPSTREAM_GEMLIB_VERSION := Git-20230112
UPSTREAM_GEMLIB_TARBALL := gemlib-$(UPSTREAM_GEMLIB_VERSION).tar.bz2
UPSTREAM_GEMLIB_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_G...
@@ -86,8 +86,8 @@ $(BUILDSTEPS)/gemlib.d: $(BUILDSTEPS)/stage2.d $(SOURCESDIR)/$(UPSTREAM_GEMLIB_T
tar xjf $(SOURCESDIR)/$(UPSTREAM_GEMLIB_TARBALL)
mv gemlib-$(UPSTREAM_GEMLIB_VERSION) $(BUILDDIR)/gemlib
for p in `ls $(RECIPES)/patches/gemlib/*.p` ; do patch -d $(BUILDDIR)/gemlib -p0 <$$p ; done
- cd $(BUILDDIR)/gemlib/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make
- cd $(BUILDDIR)/gemlib/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make install
+ cd $(BUILDDIR)/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make
+ cd $(BUILDDIR)/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make install
touch $@
###
@@ -191,9 +191,6 @@ $(BUILDSTEPS)/mintbin.d: $(BUILDSTEPS)/mintbin-srcdir.d
cd $(BUILDDIR)/mintbin && $(MINTBIN_SRCDIR)/configure --prefix=$(PREFIX) --target=$(TARGET_NAME) --disable-nls
cd $(BUILDDIR)/mintbin && make
cd $(BUILDDIR)/mintbin && make install
- #mv $(PREFIX)/{$(TARGET_NAME)/bin/$(TARGET_NAME)-* $(PREFIX)/bin/
- #HACK: mintbin install traget looks broken
- mv $(PREFIX)/*-atari-mint/bin/$(TARGET_NAME)-* $(PREFIX)/bin/
touch $@
$(BUILDSTEPS)/mintbin-srcdir.d: $(SOURCESDIR)/$(UPSTREAM_MINTBIN_TARBALL)
diff --git a/m5475-atari-mint/recipes/patches/gemlib/CONFIGVARS.p b/m5475-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
index 5692a21..f65dc89 100644
--- a/m5475-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
+++ b/m5475-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
@@ -1,29 +1,28 @@
---- CONFIGVARS.orig 2012-10-11 17:55:52.000000000 +0100
-+++ CONFIGVARS 2012-10-11 17:56:37.000000000 +0100
-@@ -1,8 +1,8 @@
- #
- #
+--- CONFIGVARS 2011-05-13 23:38:45.000000000 +0100
++++ CONFIGVARS 2011-05-13 23:40:11.000000000 +0100
+@@ -3,6 +3,7 @@
# cross compiling
--#CROSS = yes
--CROSS = no
+ #CROSS = yes
+ #CROSS = no
+CROSS = yes
-+#CROSS = no
- #
- # build alternate libraries for processor variants
-@@ -15,13 +15,13 @@
#
+ # cross compiling
+@@ -33,7 +34,7 @@
+ CROSS := yes
+ else
ifeq ($(CROSS),yes)
-
--CROSSPREFIX=m68k-atari-mint-
-+CROSSPREFIX=m5475-atari-mint-
-
- NATIVECC = gcc
+- CROSS_TOOL=m68k-atari-mint
++ CROSS_TOOL=m5475-atari-mint
+ CROSSPREFIX=$(CROSS_TOOL)-
+ else
+ CROSSPREFIX=
+@@ -46,7 +47,7 @@
NATIVECFLAGS = -O
CRLF = echo crlf -s
--PREFIX=/usr/m68k-atari-mint
+-PREFIX=$(shell $(CROSSPREFIX)gcc -print-sysroot)/usr
+PREFIX=/opt/netsurf/m5475-atari-mint/cross/m5475-atari-mint
-
- else
-
+ ifeq ($(PREFIX),)
+ PREFIX=/usr/$(CROSS_TOOL)
+ endif
diff --git a/m5475-atari-mint/recipes/patches/mintlib/configvars.p b/m5475-atari-mint/recipes/patches/mintlib/configvars.p
index f72d6f4..803272a 100644
--- a/m5475-atari-mint/recipes/patches/mintlib/configvars.p
+++ b/m5475-atari-mint/recipes/patches/mintlib/configvars.p
@@ -1,6 +1,6 @@
--- ./configvars.orig 2012-05-03 19:26:10.000000000 +0200
-+++ ./configvars 2012-11-05 23:03:52.000000000 +0100
-@@ -12,14 +12,14 @@
++++ ./configvars 2012-11-05 22:34:07.000000000 +0100
+@@ -12,7 +12,7 @@
# get installed. You have to take car yourself that the libraries
# and include files and so on will get installed in the right place
# The easiest way to do this is to change "prefix", see below.
@@ -9,29 +9,30 @@
# Silent build or verbose
AM_DEFAULT_VERBOSITY = 1
-
- # Define this to "m68k-atari-mint-" if you cross compile.
+@@ -35,7 +35,7 @@
+ CROSS := yes
+ else
ifeq ($(CROSS),yes)
-- toolprefix=m68k-atari-mint-
-+ toolprefix=m5475-atari-mint-
+- CROSS_TOOL=m68k-atari-mint
++ CROSS_TOOL=m5475-atari-mint
+ toolprefix=$(CROSS_TOOL)-
else
toolprefix=
- endif
-@@ -47,7 +47,7 @@
+@@ -64,7 +64,7 @@
+ # This variable is used for various others. Change its value if
# need be. When cross-compiling you will usually want to set this
# to "/usr/m68k-atari-mint".
- ifeq ($(CROSS),yes)
-- prefix=/usr/m68k-atari-mint
-+ prefix=/opt/netsurf/m5475-atari-mint/cross/m5475-atari-mint
- else
- prefix=/usr
- endif
-@@ -124,7 +124,7 @@
- CFLAGS=-O2 -fomit-frame-pointer
+-prefix=/usr
++prefix=/opt/netsurf/m5475-atari-mint/cross/m5475-atari-mint
+
+ # This is where include files get installed.
+ includedir=${prefix}/include
+@@ -141,7 +141,7 @@
+ LDFLAGS=
# Additional defines.
-DEFS=
+DEFS=-DREGEX_MALLOC
# Define this to the warning level you want.
- WARN=-Wall
+ WARN=-Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wold-style-declaration -Wold-style-definition
diff --git a/m68k-atari-mint/recipes/patches/mintlib/posix_regex.p b/m5475-atari-mint/recipes/patches/mintlib/posix_regex.p
similarity index 100%
copy from m68k-atari-mint/recipes/patches/mintlib/posix_regex.p
copy to m5475-atari-mint/recipes/patches/mintlib/posix_regex.p
diff --git a/m68k-atari-mint/recipes/patches/mintlib/configvars.p b/m68k-atari-mint/recipes/patches/mintlib/configvars.p
index 2c00bec..a3acd90 100644
--- a/m68k-atari-mint/recipes/patches/mintlib/configvars.p
+++ b/m68k-atari-mint/recipes/patches/mintlib/configvars.p
@@ -18,12 +18,12 @@
# This is where include files get installed.
includedir=${prefix}/include
-@@ -124,7 +124,7 @@
- CFLAGS=-O2 -fomit-frame-pointer
+@@ -141,7 +141,7 @@
+ LDFLAGS=
# Additional defines.
-DEFS=
+DEFS=-DREGEX_MALLOC
# Define this to the warning level you want.
- WARN=-Wall
+ WARN=-Wall -Werror -Wstrict-prototypes -Wmissing-prototypes -Wold-style-declaration -Wold-style-definition
diff --git a/sdk/Makefile b/sdk/Makefile
index 5559037..960e1af 100644
--- a/sdk/Makefile
+++ b/sdk/Makefile
@@ -247,7 +247,7 @@ endif
touch $@
$(SOURCEDIR)/zlib-$(VERSION_ZLIB).tar.gz:
- $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) "https://zlib.net/$(subst $(SOURCEDIR)/,,$@)" $@
+ $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) "https://zlib.net/fossils/$(subst $(SOURCEDIR)/,,$@)" $@
# libiconv
$(BUILDSTEPS)/libiconv.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/libiconv-src.d
--
Cross-compilation toolchains and environments
1 month, 4 weeks
toolchains: branch master updated. 4bcfe801d5a685f146d9d77e2029667f50c9e4c7
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/toolchains.git/shortlog/4bcfe801d5a685f146...
...commit http://git.netsurf-browser.org/toolchains.git/commit/4bcfe801d5a685f146d9...
...tree http://git.netsurf-browser.org/toolchains.git/tree/4bcfe801d5a685f146d9d7...
The branch, master has been updated
via 4bcfe801d5a685f146d9d77e2029667f50c9e4c7 (commit)
from 133e614f2ed1bcd33e44d69058cbbe7058cd78a6 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/toolchains.git/commit/?id=4bcfe801d5a685f1...
commit 4bcfe801d5a685f146d9d77e2029667f50c9e4c7
Author: John-Mark Bell <jmb(a)netsurf-browser.org>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
m68k-atari-mint: update SDK patches and LDG version
diff --git a/sdk/Makefile b/sdk/Makefile
index eed736f..5559037 100644
--- a/sdk/Makefile
+++ b/sdk/Makefile
@@ -53,7 +53,7 @@ VERSION_LIBPBL := 1_04
VERSION_LIBCF := CVS-20130415
# https://github.com/libexpat/libexpat
VERSION_LIBEXPAT := 2.5.0
-VERSION_LDG := 2.35
+VERSION_LDG := SVN-20150827
VERSION_WINDOM := 2.0.1
# https://github.com/berkus/hermes-pixel-format/archive/refs/tags/v1.3.3.ta...
VERSION_HERMES := 1.3.3
@@ -326,7 +326,7 @@ $(SOURCEDIR)/windom-$(VERSION_WINDOM).zip:
# atari ldg library
$(BUILDSTEPS)/ldg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/ldg-src.d
mkdir -p $(BUILDDIR)/ldg
- cd $(BUILDDIR)/ldg && unzip $(SOURCEDIR)/ldg-$(VERSION_LDG).zip
+ cd $(BUILDDIR)/ldg && tar xjf $(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2
$(env) make -C $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/src/devel -f gcc.mak CROSS=yes PREFIX=$(GCCSDK_INSTALL_ENV) CC=${TARGET}-gcc AR=${TARGET}-ar
cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/lib/gcc/libldg.a $(GCCSDK_INSTALL_ENV)/lib/
cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/include/ldg.h $(GCCSDK_INSTALL_ENV)/include/ldg.h
@@ -334,11 +334,11 @@ $(BUILDSTEPS)/ldg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/ldg-src.d
cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/include/ldg/mem.h $(GCCSDK_INSTALL_ENV)/include/ldg/
touch $@
-$(BUILDSTEPS)/ldg-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/ldg-$(VERSION_LDG).zip
+$(BUILDSTEPS)/ldg-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2
touch $@
-$(SOURCEDIR)/ldg-$(VERSION_LDG).zip:
- $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) "https://downloads.sourceforge.net/project/ldg/ldg-$(VERSION_LDG).zip" $@
+$(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2:
+ $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) "http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/ldg-$(VERSIO..." $@
# hermes bitmap lib
$(BUILDSTEPS)/hermes.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/hermes-src.d
diff --git a/sdk/recipes/patches/libcares/m68k-atari-mint/configure.p b/sdk/recipes/patches/libcares/m68k-atari-mint/configure.p
deleted file mode 100644
index 254a483..0000000
--- a/sdk/recipes/patches/libcares/m68k-atari-mint/configure.p
+++ /dev/null
@@ -1,11 +0,0 @@
---- configure.orig 2011-03-08 23:18:37.000000000 +0000
-+++ configure 2011-03-08 23:18:59.000000000 +0000
-@@ -18503,8 +18503,6 @@
- stdbool.h \
- time.h \
- limits.h \
-- arpa/nameser.h \
-- arpa/nameser_compat.h \
- arpa/inet.h
- do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
diff --git a/sdk/recipes/patches/openssl/m68k-atari-mint/apps.lib.s_socket.c.p b/sdk/recipes/patches/openssl/m68k-atari-mint/apps.lib.s_socket.c.p
new file mode 100644
index 0000000..d659de7
--- /dev/null
+++ b/sdk/recipes/patches/openssl/m68k-atari-mint/apps.lib.s_socket.c.p
@@ -0,0 +1,12 @@
+--- apps/lib/s_socket.c.orig 2018-06-03 03:19:29.000000000 +0200
++++ apps/lib/s_socket.c 2018-06-03 03:19:36.000000000 +0200
+@@ -179,7 +179,9 @@
+ BIO_ADDRINFO_family(res) == AF_INET6 ? "IPv6 " :
+ #endif
+ BIO_ADDRINFO_family(res) == AF_INET ? "IPv4 " :
++#ifdef AF_UNIX
+ BIO_ADDRINFO_family(res) == AF_UNIX ? "unix " : "",
++#endif
+ bindhost != NULL ? bindhost : "",
+ bindport != NULL ? ":" : "",
+ bindport != NULL ? bindport : "");
diff --git a/sdk/recipes/patches/openssl/m68k-atari-mint/e_os.h.p b/sdk/recipes/patches/openssl/m68k-atari-mint/e_os.h.p
deleted file mode 100644
index ede1edc..0000000
--- a/sdk/recipes/patches/openssl/m68k-atari-mint/e_os.h.p
+++ /dev/null
@@ -1,18 +0,0 @@
---- e_os.h.orig 2018-06-03 03:19:29.000000000 +0200
-+++ e_os.h 2018-06-03 03:19:36.000000000 +0200
-@@ -462,6 +462,15 @@
- # define OPENSSL_USE_IPV6 0
- # endif
- # endif
-+/*
-+ * We mean it
-+ */
-+# if (OPENSSL_USE_IPV6 == 0)
-+# undef AF_INET6
-+# warning undef AF_INET6
-+# undef AF_UNIX
-+# warning undef AF_UNIX
-+# endif
-
- # endif
-
diff --git a/sdk/recipes/patches/openssl/m68k-atari-mint/include.internal.sockets.h.p b/sdk/recipes/patches/openssl/m68k-atari-mint/include.internal.sockets.h.p
new file mode 100644
index 0000000..5ad3a7b
--- /dev/null
+++ b/sdk/recipes/patches/openssl/m68k-atari-mint/include.internal.sockets.h.p
@@ -0,0 +1,19 @@
+--- include/internal/sockets.h.orig 2018-06-03 03:19:29.000000000 +0200
++++ include/internal/sockets.h 2018-06-03 03:19:36.000000000 +0200
+@@ -124,6 +124,16 @@
+ # define OPENSSL_USE_IPV6 0
+ # endif
+ # endif
++/*
++ * We mean it
++ */
++# if (OPENSSL_USE_IPV6 == 0)
++# undef AF_INET6
++# warning undef AF_INET6
++# undef AF_UNIX
++# warning undef AF_UNIX
++# undef IPV6_V6ONLY
++# endif
+
+ # define get_last_socket_error() errno
+ # define clear_socket_error() errno=0
diff --git a/sdk/recipes/patches/windom/src.globals.h.p b/sdk/recipes/patches/windom/src.globals.h.p
new file mode 100644
index 0000000..34a7901
--- /dev/null
+++ b/sdk/recipes/patches/windom/src.globals.h.p
@@ -0,0 +1,19 @@
+--- src/globals.h.orig 2023-10-01 03:02:16.247962097 +0100
++++ src/globals.h 2023-10-01 03:03:20.403979699 +0100
+@@ -806,6 +806,8 @@
+ RSC header and support struct
+ *******************************************************************************/
+
++#ifndef __RSXHDR
++#define __RSXHDR
+ typedef struct { /* fichier ressource tendu */
+ UWORD rsh_vrsn; /* should be 3 */
+ UWORD rsh_extvrsn; /* not used, initialised to 'IN' for Interface */
+@@ -827,6 +829,7 @@
+ ULONG rsh_nimages;
+ ULONG rsh_rssize; /* total bytes in resource */
+ } RSXHDR;
++#endif
+
+ typedef struct {
+ unsigned long rlen;
-----------------------------------------------------------------------
Summary of changes:
sdk/Makefile | 10 +++++-----
.../patches/libcares/m68k-atari-mint/configure.p | 11 -----------
.../openssl/m68k-atari-mint/apps.lib.s_socket.c.p | 12 ++++++++++++
.../patches/openssl/m68k-atari-mint/e_os.h.p | 18 ------------------
.../m68k-atari-mint/include.internal.sockets.h.p | 19 +++++++++++++++++++
sdk/recipes/patches/windom/src.globals.h.p | 19 +++++++++++++++++++
6 files changed, 55 insertions(+), 34 deletions(-)
delete mode 100644 sdk/recipes/patches/libcares/m68k-atari-mint/configure.p
create mode 100644 sdk/recipes/patches/openssl/m68k-atari-mint/apps.lib.s_socket.c.p
delete mode 100644 sdk/recipes/patches/openssl/m68k-atari-mint/e_os.h.p
create mode 100644 sdk/recipes/patches/openssl/m68k-atari-mint/include.internal.sockets.h.p
create mode 100644 sdk/recipes/patches/windom/src.globals.h.p
diff --git a/sdk/Makefile b/sdk/Makefile
index eed736f..5559037 100644
--- a/sdk/Makefile
+++ b/sdk/Makefile
@@ -53,7 +53,7 @@ VERSION_LIBPBL := 1_04
VERSION_LIBCF := CVS-20130415
# https://github.com/libexpat/libexpat
VERSION_LIBEXPAT := 2.5.0
-VERSION_LDG := 2.35
+VERSION_LDG := SVN-20150827
VERSION_WINDOM := 2.0.1
# https://github.com/berkus/hermes-pixel-format/archive/refs/tags/v1.3.3.ta...
VERSION_HERMES := 1.3.3
@@ -326,7 +326,7 @@ $(SOURCEDIR)/windom-$(VERSION_WINDOM).zip:
# atari ldg library
$(BUILDSTEPS)/ldg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/ldg-src.d
mkdir -p $(BUILDDIR)/ldg
- cd $(BUILDDIR)/ldg && unzip $(SOURCEDIR)/ldg-$(VERSION_LDG).zip
+ cd $(BUILDDIR)/ldg && tar xjf $(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2
$(env) make -C $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/src/devel -f gcc.mak CROSS=yes PREFIX=$(GCCSDK_INSTALL_ENV) CC=${TARGET}-gcc AR=${TARGET}-ar
cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/lib/gcc/libldg.a $(GCCSDK_INSTALL_ENV)/lib/
cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/include/ldg.h $(GCCSDK_INSTALL_ENV)/include/ldg.h
@@ -334,11 +334,11 @@ $(BUILDSTEPS)/ldg.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/ldg-src.d
cp $(BUILDDIR)/ldg/ldg-$(VERSION_LDG)/include/ldg/mem.h $(GCCSDK_INSTALL_ENV)/include/ldg/
touch $@
-$(BUILDSTEPS)/ldg-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/ldg-$(VERSION_LDG).zip
+$(BUILDSTEPS)/ldg-src.d: $(BUILDSTEPS)/sourcedir.d $(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2
touch $@
-$(SOURCEDIR)/ldg-$(VERSION_LDG).zip:
- $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) "https://downloads.sourceforge.net/project/ldg/ldg-$(VERSION_LDG).zip" $@
+$(SOURCEDIR)/ldg-$(VERSION_LDG).tar.bz2:
+ $(FETCHSRC) sdk $(subst $(SOURCEDIR)/,,$@) "http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/ldg-$(VERSIO..." $@
# hermes bitmap lib
$(BUILDSTEPS)/hermes.d: $(BUILDSTEPS)/builddir.d $(BUILDSTEPS)/hermes-src.d
diff --git a/sdk/recipes/patches/libcares/m68k-atari-mint/configure.p b/sdk/recipes/patches/libcares/m68k-atari-mint/configure.p
deleted file mode 100644
index 254a483..0000000
--- a/sdk/recipes/patches/libcares/m68k-atari-mint/configure.p
+++ /dev/null
@@ -1,11 +0,0 @@
---- configure.orig 2011-03-08 23:18:37.000000000 +0000
-+++ configure 2011-03-08 23:18:59.000000000 +0000
-@@ -18503,8 +18503,6 @@
- stdbool.h \
- time.h \
- limits.h \
-- arpa/nameser.h \
-- arpa/nameser_compat.h \
- arpa/inet.h
- do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
diff --git a/sdk/recipes/patches/openssl/m68k-atari-mint/apps.lib.s_socket.c.p b/sdk/recipes/patches/openssl/m68k-atari-mint/apps.lib.s_socket.c.p
new file mode 100644
index 0000000..d659de7
--- /dev/null
+++ b/sdk/recipes/patches/openssl/m68k-atari-mint/apps.lib.s_socket.c.p
@@ -0,0 +1,12 @@
+--- apps/lib/s_socket.c.orig 2018-06-03 03:19:29.000000000 +0200
++++ apps/lib/s_socket.c 2018-06-03 03:19:36.000000000 +0200
+@@ -179,7 +179,9 @@
+ BIO_ADDRINFO_family(res) == AF_INET6 ? "IPv6 " :
+ #endif
+ BIO_ADDRINFO_family(res) == AF_INET ? "IPv4 " :
++#ifdef AF_UNIX
+ BIO_ADDRINFO_family(res) == AF_UNIX ? "unix " : "",
++#endif
+ bindhost != NULL ? bindhost : "",
+ bindport != NULL ? ":" : "",
+ bindport != NULL ? bindport : "");
diff --git a/sdk/recipes/patches/openssl/m68k-atari-mint/e_os.h.p b/sdk/recipes/patches/openssl/m68k-atari-mint/e_os.h.p
deleted file mode 100644
index ede1edc..0000000
--- a/sdk/recipes/patches/openssl/m68k-atari-mint/e_os.h.p
+++ /dev/null
@@ -1,18 +0,0 @@
---- e_os.h.orig 2018-06-03 03:19:29.000000000 +0200
-+++ e_os.h 2018-06-03 03:19:36.000000000 +0200
-@@ -462,6 +462,15 @@
- # define OPENSSL_USE_IPV6 0
- # endif
- # endif
-+/*
-+ * We mean it
-+ */
-+# if (OPENSSL_USE_IPV6 == 0)
-+# undef AF_INET6
-+# warning undef AF_INET6
-+# undef AF_UNIX
-+# warning undef AF_UNIX
-+# endif
-
- # endif
-
diff --git a/sdk/recipes/patches/openssl/m68k-atari-mint/include.internal.sockets.h.p b/sdk/recipes/patches/openssl/m68k-atari-mint/include.internal.sockets.h.p
new file mode 100644
index 0000000..5ad3a7b
--- /dev/null
+++ b/sdk/recipes/patches/openssl/m68k-atari-mint/include.internal.sockets.h.p
@@ -0,0 +1,19 @@
+--- include/internal/sockets.h.orig 2018-06-03 03:19:29.000000000 +0200
++++ include/internal/sockets.h 2018-06-03 03:19:36.000000000 +0200
+@@ -124,6 +124,16 @@
+ # define OPENSSL_USE_IPV6 0
+ # endif
+ # endif
++/*
++ * We mean it
++ */
++# if (OPENSSL_USE_IPV6 == 0)
++# undef AF_INET6
++# warning undef AF_INET6
++# undef AF_UNIX
++# warning undef AF_UNIX
++# undef IPV6_V6ONLY
++# endif
+
+ # define get_last_socket_error() errno
+ # define clear_socket_error() errno=0
diff --git a/sdk/recipes/patches/windom/src.globals.h.p b/sdk/recipes/patches/windom/src.globals.h.p
new file mode 100644
index 0000000..34a7901
--- /dev/null
+++ b/sdk/recipes/patches/windom/src.globals.h.p
@@ -0,0 +1,19 @@
+--- src/globals.h.orig 2023-10-01 03:02:16.247962097 +0100
++++ src/globals.h 2023-10-01 03:03:20.403979699 +0100
+@@ -806,6 +806,8 @@
+ RSC header and support struct
+ *******************************************************************************/
+
++#ifndef __RSXHDR
++#define __RSXHDR
+ typedef struct { /* fichier ressource tendu */
+ UWORD rsh_vrsn; /* should be 3 */
+ UWORD rsh_extvrsn; /* not used, initialised to 'IN' for Interface */
+@@ -827,6 +829,7 @@
+ ULONG rsh_nimages;
+ ULONG rsh_rssize; /* total bytes in resource */
+ } RSXHDR;
++#endif
+
+ typedef struct {
+ unsigned long rlen;
--
Cross-compilation toolchains and environments
1 month, 4 weeks
toolchains: branch master updated. 133e614f2ed1bcd33e44d69058cbbe7058cd78a6
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/toolchains.git/shortlog/133e614f2ed1bcd33e...
...commit http://git.netsurf-browser.org/toolchains.git/commit/133e614f2ed1bcd33e44...
...tree http://git.netsurf-browser.org/toolchains.git/tree/133e614f2ed1bcd33e44d6...
The branch, master has been updated
via 133e614f2ed1bcd33e44d69058cbbe7058cd78a6 (commit)
from 55dc8d2ce9910f50bab09e66ff1cc38001503d19 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/toolchains.git/commit/?id=133e614f2ed1bcd3...
commit 133e614f2ed1bcd33e44d69058cbbe7058cd78a6
Author: John-Mark Bell <jmb(a)netsurf-browser.org>
Commit: John-Mark Bell <jmb(a)netsurf-browser.org>
m68k-atari-mint: fix toolchain build
diff --git a/m68k-atari-mint/Makefile b/m68k-atari-mint/Makefile
index 90addd1..f05fb8e 100644
--- a/m68k-atari-mint/Makefile
+++ b/m68k-atari-mint/Makefile
@@ -41,7 +41,7 @@ UPSTREAM_PML_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives
UPSTREAM_PML_PATCH := pml-2.03-mint-20191013.patch.bz2
UPSTREAM_PML_PATCH_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_P...
-UPSTREAM_GEMLIB_VERSION := CVS-20230112
+UPSTREAM_GEMLIB_VERSION := Git-20230112
UPSTREAM_GEMLIB_TARBALL := gemlib-$(UPSTREAM_GEMLIB_VERSION).tar.bz2
UPSTREAM_GEMLIB_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_G...
@@ -86,8 +86,8 @@ $(BUILDSTEPS)/gemlib.d: $(BUILDSTEPS)/stage2.d $(SOURCESDIR)/$(UPSTREAM_GEMLIB_T
tar xjf $(SOURCESDIR)/$(UPSTREAM_GEMLIB_TARBALL)
mv gemlib-$(UPSTREAM_GEMLIB_VERSION) $(BUILDDIR)/gemlib
for p in `ls $(RECIPES)/patches/gemlib/*.p` ; do patch -d $(BUILDDIR)/gemlib -p0 <$$p ; done
- cd $(BUILDDIR)/gemlib/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make
- cd $(BUILDDIR)/gemlib/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make install
+ cd $(BUILDDIR)/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make
+ cd $(BUILDDIR)/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make install
touch $@
###
diff --git a/m68k-atari-mint/recipes/patches/gemlib/CONFIGVARS.p b/m68k-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
index 6f774db..c865542 100644
--- a/m68k-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
+++ b/m68k-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
@@ -1,20 +1,19 @@
--- CONFIGVARS 2011-05-13 23:38:45.000000000 +0100
+++ CONFIGVARS 2011-05-13 23:40:11.000000000 +0100
-@@ -2,7 +2,7 @@
- #
+@@ -3,6 +3,7 @@
# cross compiling
#CROSS = yes
--CROSS = no
+ #CROSS = no
+CROSS = yes
- #
- # build alternate libraries for processor variants
-@@ -21,7 +21,7 @@
+ #
+ # cross compiling
+@@ -46,7 +47,7 @@
NATIVECFLAGS = -O
CRLF = echo crlf -s
--PREFIX=/usr/m68k-atari-mint
+-PREFIX=$(shell $(CROSSPREFIX)gcc -print-sysroot)/usr
+PREFIX=/opt/netsurf/m68k-atari-mint/cross/m68k-atari-mint
-
- else
-
+ ifeq ($(PREFIX),)
+ PREFIX=/usr/$(CROSS_TOOL)
+ endif
diff --git a/m68k-atari-mint/recipes/patches/mintlib/configvars.p b/m68k-atari-mint/recipes/patches/mintlib/configvars.p
index 1df9fae..2c00bec 100644
--- a/m68k-atari-mint/recipes/patches/mintlib/configvars.p
+++ b/m68k-atari-mint/recipes/patches/mintlib/configvars.p
@@ -9,15 +9,15 @@
# Silent build or verbose
AM_DEFAULT_VERBOSITY = 1
-@@ -47,7 +47,7 @@
+@@ -64,7 +64,7 @@
+ # This variable is used for various others. Change its value if
# need be. When cross-compiling you will usually want to set this
# to "/usr/m68k-atari-mint".
- ifeq ($(CROSS),yes)
-- prefix=/usr/m68k-atari-mint
-+ prefix=/opt/netsurf/m68k-atari-mint/cross/m68k-atari-mint
- else
- prefix=/usr
- endif
+-prefix=/usr
++prefix=/opt/netsurf/m68k-atari-mint/cross/m68k-atari-mint
+
+ # This is where include files get installed.
+ includedir=${prefix}/include
@@ -124,7 +124,7 @@
CFLAGS=-O2 -fomit-frame-pointer
diff --git a/m68k-atari-mint/recipes/patches/mintlib/posix_regex.p b/m68k-atari-mint/recipes/patches/mintlib/posix_regex.p
new file mode 100644
index 0000000..6a42a40
--- /dev/null
+++ b/m68k-atari-mint/recipes/patches/mintlib/posix_regex.p
@@ -0,0 +1,11 @@
+--- ./posix/regex.c.orig 2012-05-03 19:26:10.000000000 +0200
++++ ./posix/regex.c 2012-11-05 22:34:07.000000000 +0100
+@@ -1364,6 +1364,7 @@
+ \
+ DEBUG_PRINT2 (" Pushing failure id: %u\n", failure_id); \
+ DEBUG_PUSH (failure_id); \
++ (void) destination; \
+ } while (0)
+
+ /* This is the number of items that are pushed and popped on the stack
+
-----------------------------------------------------------------------
Summary of changes:
m68k-atari-mint/Makefile | 6 +++---
m68k-atari-mint/recipes/patches/gemlib/CONFIGVARS.p | 19 +++++++++----------
.../recipes/patches/mintlib/configvars.p | 14 +++++++-------
.../recipes/patches/mintlib/posix_regex.p | 11 +++++++++++
4 files changed, 30 insertions(+), 20 deletions(-)
create mode 100644 m68k-atari-mint/recipes/patches/mintlib/posix_regex.p
diff --git a/m68k-atari-mint/Makefile b/m68k-atari-mint/Makefile
index 90addd1..f05fb8e 100644
--- a/m68k-atari-mint/Makefile
+++ b/m68k-atari-mint/Makefile
@@ -41,7 +41,7 @@ UPSTREAM_PML_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives
UPSTREAM_PML_PATCH := pml-2.03-mint-20191013.patch.bz2
UPSTREAM_PML_PATCH_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_P...
-UPSTREAM_GEMLIB_VERSION := CVS-20230112
+UPSTREAM_GEMLIB_VERSION := Git-20230112
UPSTREAM_GEMLIB_TARBALL := gemlib-$(UPSTREAM_GEMLIB_VERSION).tar.bz2
UPSTREAM_GEMLIB_URI := http://vincent.riviere.free.fr/soft/m68k-atari-mint/archives/$(UPSTREAM_G...
@@ -86,8 +86,8 @@ $(BUILDSTEPS)/gemlib.d: $(BUILDSTEPS)/stage2.d $(SOURCESDIR)/$(UPSTREAM_GEMLIB_T
tar xjf $(SOURCESDIR)/$(UPSTREAM_GEMLIB_TARBALL)
mv gemlib-$(UPSTREAM_GEMLIB_VERSION) $(BUILDDIR)/gemlib
for p in `ls $(RECIPES)/patches/gemlib/*.p` ; do patch -d $(BUILDDIR)/gemlib -p0 <$$p ; done
- cd $(BUILDDIR)/gemlib/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make
- cd $(BUILDDIR)/gemlib/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make install
+ cd $(BUILDDIR)/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make
+ cd $(BUILDDIR)/gemlib && PATH="$(PREFIX)/bin:$(PATH)" make install
touch $@
###
diff --git a/m68k-atari-mint/recipes/patches/gemlib/CONFIGVARS.p b/m68k-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
index 6f774db..c865542 100644
--- a/m68k-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
+++ b/m68k-atari-mint/recipes/patches/gemlib/CONFIGVARS.p
@@ -1,20 +1,19 @@
--- CONFIGVARS 2011-05-13 23:38:45.000000000 +0100
+++ CONFIGVARS 2011-05-13 23:40:11.000000000 +0100
-@@ -2,7 +2,7 @@
- #
+@@ -3,6 +3,7 @@
# cross compiling
#CROSS = yes
--CROSS = no
+ #CROSS = no
+CROSS = yes
- #
- # build alternate libraries for processor variants
-@@ -21,7 +21,7 @@
+ #
+ # cross compiling
+@@ -46,7 +47,7 @@
NATIVECFLAGS = -O
CRLF = echo crlf -s
--PREFIX=/usr/m68k-atari-mint
+-PREFIX=$(shell $(CROSSPREFIX)gcc -print-sysroot)/usr
+PREFIX=/opt/netsurf/m68k-atari-mint/cross/m68k-atari-mint
-
- else
-
+ ifeq ($(PREFIX),)
+ PREFIX=/usr/$(CROSS_TOOL)
+ endif
diff --git a/m68k-atari-mint/recipes/patches/mintlib/configvars.p b/m68k-atari-mint/recipes/patches/mintlib/configvars.p
index 1df9fae..2c00bec 100644
--- a/m68k-atari-mint/recipes/patches/mintlib/configvars.p
+++ b/m68k-atari-mint/recipes/patches/mintlib/configvars.p
@@ -9,15 +9,15 @@
# Silent build or verbose
AM_DEFAULT_VERBOSITY = 1
-@@ -47,7 +47,7 @@
+@@ -64,7 +64,7 @@
+ # This variable is used for various others. Change its value if
# need be. When cross-compiling you will usually want to set this
# to "/usr/m68k-atari-mint".
- ifeq ($(CROSS),yes)
-- prefix=/usr/m68k-atari-mint
-+ prefix=/opt/netsurf/m68k-atari-mint/cross/m68k-atari-mint
- else
- prefix=/usr
- endif
+-prefix=/usr
++prefix=/opt/netsurf/m68k-atari-mint/cross/m68k-atari-mint
+
+ # This is where include files get installed.
+ includedir=${prefix}/include
@@ -124,7 +124,7 @@
CFLAGS=-O2 -fomit-frame-pointer
diff --git a/m68k-atari-mint/recipes/patches/mintlib/posix_regex.p b/m68k-atari-mint/recipes/patches/mintlib/posix_regex.p
new file mode 100644
index 0000000..6a42a40
--- /dev/null
+++ b/m68k-atari-mint/recipes/patches/mintlib/posix_regex.p
@@ -0,0 +1,11 @@
+--- ./posix/regex.c.orig 2012-05-03 19:26:10.000000000 +0200
++++ ./posix/regex.c 2012-11-05 22:34:07.000000000 +0100
+@@ -1364,6 +1364,7 @@
+ \
+ DEBUG_PRINT2 (" Pushing failure id: %u\n", failure_id); \
+ DEBUG_PUSH (failure_id); \
++ (void) destination; \
+ } while (0)
+
+ /* This is the number of items that are pushed and popped on the stack
+
--
Cross-compilation toolchains and environments
1 month, 4 weeks