summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bytecode/opcodes.h12
-rw-r--r--src/parse/properties/properties.c3
-rw-r--r--src/parse/properties/properties.h3
-rw-r--r--src/parse/properties/text.c96
-rw-r--r--src/parse/propstrings.c4
-rw-r--r--src/parse/propstrings.h6
-rw-r--r--src/select/dispatch.c8
-rw-r--r--src/select/properties.c65
-rw-r--r--src/select/properties.h8
-rw-r--r--src/select/propget.h39
-rw-r--r--src/select/propset.h40
11 files changed, 59 insertions, 225 deletions
diff --git a/src/bytecode/opcodes.h b/src/bytecode/opcodes.h
index f583537..3fad172 100644
--- a/src/bytecode/opcodes.h
+++ b/src/bytecode/opcodes.h
@@ -522,7 +522,10 @@ enum op_text_align {
TEXT_ALIGN_LEFT = 0x0000,
TEXT_ALIGN_RIGHT = 0x0001,
TEXT_ALIGN_CENTER = 0x0002,
- TEXT_ALIGN_JUSTIFY = 0x0003
+ TEXT_ALIGN_JUSTIFY = 0x0003,
+ TEXT_ALIGN_LIBCSS_LEFT = 0x0004,
+ TEXT_ALIGN_LIBCSS_CENTER = 0x0005,
+ TEXT_ALIGN_LIBCSS_RIGHT = 0x0006
};
enum op_text_decoration {
@@ -628,12 +631,5 @@ enum op_z_index {
Z_INDEX_AUTO = 0x0000
};
-enum op_libcss_align {
- LIBCSS_ALIGN_LEFT = 0x0000,
- LIBCSS_ALIGN_RIGHT = 0x0001,
- LIBCSS_ALIGN_CENTER = 0x0002,
- LIBCSS_ALIGN_JUSTIFY = 0x0003
-};
-
#endif
diff --git a/src/parse/properties/properties.c b/src/parse/properties/properties.c
index 0cde6c6..79ad1a5 100644
--- a/src/parse/properties/properties.c
+++ b/src/parse/properties/properties.c
@@ -126,7 +126,6 @@ const css_prop_handler property_handlers[LAST_PROP + 1 - FIRST_PROP] =
parse_widows,
parse_width,
parse_word_spacing,
- parse_z_index,
- parse_libcss_align
+ parse_z_index
};
diff --git a/src/parse/properties/properties.h b/src/parse/properties/properties.h
index dd96ac3..0dc750a 100644
--- a/src/parse/properties/properties.h
+++ b/src/parse/properties/properties.h
@@ -367,9 +367,6 @@ css_error parse_word_spacing(css_language *c,
css_error parse_z_index(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result);
-css_error parse_libcss_align(css_language *c,
- const parserutils_vector *vector, int *ctx,
- css_style **result);
#endif
diff --git a/src/parse/properties/text.c b/src/parse/properties/text.c
index d3c81b5..45b9b5a 100644
--- a/src/parse/properties/text.c
+++ b/src/parse/properties/text.c
@@ -273,7 +273,8 @@ css_error parse_text_align(css_language *c,
uint32_t opv;
bool match;
- /* IDENT (left, right, center, justify, inherit) */
+ /* IDENT (left, right, center, justify, -libcss-left, -libcss-center,
+ * -libcss-right, inherit) */
ident = parserutils_vector_iterate(vector, ctx);
if (ident == NULL || ident->type != CSS_TOKEN_IDENT) {
*ctx = orig_ctx;
@@ -305,6 +306,21 @@ css_error parse_text_align(css_language *c,
ident->idata, c->strings[JUSTIFY],
&match) == lwc_error_ok && match)) {
value = TEXT_ALIGN_JUSTIFY;
+ } else if ((lwc_context_string_caseless_isequal(
+ c->sheet->dictionary,
+ ident->idata, c->strings[LIBCSS_LEFT],
+ &match) == lwc_error_ok && match)) {
+ value = TEXT_ALIGN_LIBCSS_LEFT;
+ } else if ((lwc_context_string_caseless_isequal(
+ c->sheet->dictionary,
+ ident->idata, c->strings[LIBCSS_CENTER],
+ &match) == lwc_error_ok && match)) {
+ value = TEXT_ALIGN_LIBCSS_CENTER;
+ } else if ((lwc_context_string_caseless_isequal(
+ c->sheet->dictionary,
+ ident->idata, c->strings[LIBCSS_RIGHT],
+ &match) == lwc_error_ok && match)) {
+ value = TEXT_ALIGN_LIBCSS_RIGHT;
} else {
*ctx = orig_ctx;
return CSS_INVALID;
@@ -850,81 +866,3 @@ css_error parse_word_spacing(css_language *c,
return CSS_OK;
}
-/**
- * Parse -libcss-align
- *
- * \param c Parsing context
- * \param vector Vector of tokens to process
- * \param ctx Pointer to vector iteration context
- * \param result Pointer to location to receive 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 parse_libcss_align(css_language *c,
- const parserutils_vector *vector, int *ctx,
- css_style **result)
-{
- int orig_ctx = *ctx;
- css_error error;
- const css_token *ident;
- uint8_t flags = 0;
- uint16_t value = 0;
- uint32_t opv;
- bool match;
-
- /* IDENT (left, right, center, justify, inherit) */
- ident = parserutils_vector_iterate(vector, ctx);
- if (ident == NULL || ident->type != CSS_TOKEN_IDENT) {
- *ctx = orig_ctx;
- return CSS_INVALID;
- }
-
- if ((lwc_context_string_caseless_isequal(
- c->sheet->dictionary,
- ident->idata, c->strings[INHERIT],
- &match) == lwc_error_ok && match)) {
- flags |= FLAG_INHERIT;
- } else if ((lwc_context_string_caseless_isequal(
- c->sheet->dictionary,
- ident->idata, c->strings[LEFT],
- &match) == lwc_error_ok && match)) {
- value = LIBCSS_ALIGN_LEFT;
- } else if ((lwc_context_string_caseless_isequal(
- c->sheet->dictionary,
- ident->idata, c->strings[RIGHT],
- &match) == lwc_error_ok && match)) {
- value = LIBCSS_ALIGN_RIGHT;
- } else if ((lwc_context_string_caseless_isequal(
- c->sheet->dictionary,
- ident->idata, c->strings[CENTER],
- &match) == lwc_error_ok && match)) {
- value = LIBCSS_ALIGN_CENTER;
- } else if ((lwc_context_string_caseless_isequal(
- c->sheet->dictionary,
- ident->idata, c->strings[JUSTIFY],
- &match) == lwc_error_ok && match)) {
- value = LIBCSS_ALIGN_JUSTIFY;
- } else {
- *ctx = orig_ctx;
- return CSS_INVALID;
- }
-
- opv = buildOPV(CSS_PROP_LIBCSS_ALIGN, flags, value);
-
- /* Allocate result */
- error = css_stylesheet_style_create(c->sheet, sizeof(opv), result);
- if (error != CSS_OK) {
- *ctx = orig_ctx;
- return error;
- }
-
- /* Copy the bytecode to it */
- memcpy((*result)->bytecode, &opv, sizeof(opv));
-
- return CSS_OK;
-}
-
diff --git a/src/parse/propstrings.c b/src/parse/propstrings.c
index 28a1189..699b750 100644
--- a/src/parse/propstrings.c
+++ b/src/parse/propstrings.c
@@ -157,7 +157,6 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
{ "width", SLEN("width") },
{ "word-spacing", SLEN("word-spacing") },
{ "z-index", SLEN("z-index") },
- { "-libcss-align", SLEN("-libcss-align") },
{ "inherit", SLEN("inherit") },
{ "important", SLEN("important") },
@@ -331,6 +330,9 @@ const stringmap_entry stringmap[LAST_KNOWN] = {
{ "line-through", SLEN("line-through") },
{ "blink", SLEN("blink") },
{ "rgb", SLEN("rgb") },
+ { "-libcss-left", SLEN("-libcss-left") },
+ { "-libcss-center", SLEN("-libcss-center") },
+ { "-libcss-right", SLEN("-libcss-right") },
{ "aliceblue", SLEN("aliceblue") },
{ "antiquewhite", SLEN("antiquewhite") },
diff --git a/src/parse/propstrings.h b/src/parse/propstrings.h
index fe125cc..f33fe78 100644
--- a/src/parse/propstrings.h
+++ b/src/parse/propstrings.h
@@ -55,9 +55,9 @@ enum {
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, Z_INDEX, LIBCSS_ALIGN,
+ WHITE_SPACE, WIDOWS, WIDTH, WORD_SPACING, Z_INDEX,
- LAST_PROP = LIBCSS_ALIGN,
+ LAST_PROP = Z_INDEX,
/* Other keywords */
INHERIT, IMPORTANT, NONE, BOTH, FIXED, SCROLL, TRANSPARENT,
@@ -84,7 +84,7 @@ enum {
NE_RESIZE, NW_RESIZE, N_RESIZE, SE_RESIZE, SW_RESIZE, S_RESIZE,
W_RESIZE, TEXT, WAIT, HELP, PROGRESS, SERIF, SANS_SERIF, CURSIVE,
FANTASY, MONOSPACE, MALE, FEMALE, CHILD, MIX, UNDERLINE, OVERLINE,
- LINE_THROUGH, BLINK, RGB,
+ LINE_THROUGH, BLINK, RGB, LIBCSS_LEFT, LIBCSS_CENTER, LIBCSS_RIGHT,
/* Named colours */
FIRST_COLOUR,
diff --git a/src/select/dispatch.c b/src/select/dispatch.c
index 11345e2..c15465b 100644
--- a/src/select/dispatch.c
+++ b/src/select/dispatch.c
@@ -803,13 +803,5 @@ struct prop_table prop_dispatch[CSS_N_PROPERTIES] = {
compose_z_index,
0,
GROUP_NORMAL
- },
- {
- cascade_libcss_align,
- set_libcss_align_from_hint,
- initial_libcss_align,
- compose_libcss_align,
- 1,
- GROUP_NORMAL
}
};
diff --git a/src/select/properties.c b/src/select/properties.c
index b83a29d..9ca9d9f 100644
--- a/src/select/properties.c
+++ b/src/select/properties.c
@@ -4639,6 +4639,15 @@ css_error cascade_text_align(uint32_t opv, css_style *style,
case TEXT_ALIGN_JUSTIFY:
value = CSS_TEXT_ALIGN_JUSTIFY;
break;
+ case TEXT_ALIGN_LIBCSS_LEFT:
+ value = CSS_TEXT_ALIGN_LIBCSS_LEFT;
+ break;
+ case TEXT_ALIGN_LIBCSS_CENTER:
+ value = CSS_TEXT_ALIGN_LIBCSS_CENTER;
+ break;
+ case TEXT_ALIGN_LIBCSS_RIGHT:
+ value = CSS_TEXT_ALIGN_LIBCSS_RIGHT;
+ break;
}
}
@@ -5452,62 +5461,6 @@ css_error compose_z_index(const css_computed_style *parent,
return set_z_index(result, type, index);
}
-css_error cascade_libcss_align(uint32_t opv, css_style *style,
- css_select_state *state)
-{
- uint16_t value = CSS_LIBCSS_ALIGN_INHERIT;
-
- UNUSED(style);
-
- if (isInherit(opv) == false) {
- switch (getValue(opv)) {
- case LIBCSS_ALIGN_LEFT:
- value = CSS_LIBCSS_ALIGN_LEFT;
- break;
- case LIBCSS_ALIGN_RIGHT:
- value = CSS_LIBCSS_ALIGN_RIGHT;
- break;
- case LIBCSS_ALIGN_CENTER:
- value = CSS_LIBCSS_ALIGN_CENTER;
- break;
- case LIBCSS_ALIGN_JUSTIFY:
- value = CSS_LIBCSS_ALIGN_JUSTIFY;
- break;
- }
- }
-
- if (outranks_existing(getOpcode(opv), isImportant(opv), state,
- isInherit(opv))) {
- return set_libcss_align(state->result, value);
- }
-
- return CSS_OK;
-}
-
-css_error set_libcss_align_from_hint(const css_hint *hint,
- css_computed_style *style)
-{
- return set_libcss_align(style, hint->status);
-}
-
-css_error initial_libcss_align(css_select_state *state)
-{
- return set_libcss_align(state->result, CSS_LIBCSS_ALIGN_DEFAULT);
-}
-
-css_error compose_libcss_align(const css_computed_style *parent,
- const css_computed_style *child,
- css_computed_style *result)
-{
- uint8_t type = get_libcss_align(child);
-
- if (type == CSS_LIBCSS_ALIGN_INHERIT) {
- type = get_libcss_align(parent);
- }
-
- return set_libcss_align(result, type);
-}
-
/******************************************************************************
* Utilities below here *
******************************************************************************/
diff --git a/src/select/properties.h b/src/select/properties.h
index 75b6f8d..9c98e10 100644
--- a/src/select/properties.h
+++ b/src/select/properties.h
@@ -806,14 +806,6 @@ css_error initial_z_index(css_select_state *state);
css_error compose_z_index(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result);
-css_error cascade_libcss_align(uint32_t opv, css_style *style,
- css_select_state *state);
-css_error set_libcss_align_from_hint(const css_hint *hint,
- css_computed_style *style);
-css_error initial_libcss_align(css_select_state *state);
-css_error compose_libcss_align(const css_computed_style *parent,
- const css_computed_style *child,
- css_computed_style *result);
#endif
diff --git a/src/select/propget.h b/src/select/propget.h
index 39f6300..bf59e87 100644
--- a/src/select/propget.h
+++ b/src/select/propget.h
@@ -1310,23 +1310,6 @@ static inline uint8_t get_position(
#undef POSITION_SHIFT
#undef POSITION_INDEX
-#define TEXT_ALIGN_INDEX 23
-#define TEXT_ALIGN_SHIFT 0
-#define TEXT_ALIGN_MASK 0x7
-static inline uint8_t get_text_align(
- const css_computed_style *style)
-{
- uint8_t bits = style->bits[TEXT_ALIGN_INDEX];
- bits &= TEXT_ALIGN_MASK;
- bits >>= TEXT_ALIGN_SHIFT;
-
- /* 3bits: type */
- return bits;
-}
-#undef TEXT_ALIGN_MASK
-#undef TEXT_ALIGN_SHIFT
-#undef TEXT_ALIGN_INDEX
-
#define TEXT_TRANSFORM_INDEX 24
#define TEXT_TRANSFORM_SHIFT 0
#define TEXT_TRANSFORM_MASK 0x7
@@ -1721,21 +1704,21 @@ static inline uint8_t get_list_style_position(
#undef LIST_STYLE_POSITION_SHIFT
#undef LIST_STYLE_POSITION_INDEX
-#define LIBCSS_ALIGN_INDEX 33
-#define LIBCSS_ALIGN_SHIFT 1
-#define LIBCSS_ALIGN_MASK 0xe
-static inline uint8_t get_libcss_align(
+#define TEXT_ALIGN_INDEX 33
+#define TEXT_ALIGN_SHIFT 0
+#define TEXT_ALIGN_MASK 0xf
+static inline uint8_t get_text_align(
const css_computed_style *style)
{
- uint8_t bits = style->bits[LIBCSS_ALIGN_INDEX];
- bits &= LIBCSS_ALIGN_MASK;
- bits >>= LIBCSS_ALIGN_SHIFT;
+ uint8_t bits = style->bits[TEXT_ALIGN_INDEX];
+ bits &= TEXT_ALIGN_MASK;
+ bits >>= TEXT_ALIGN_SHIFT;
- /* 3bits: type */
+ /* 4bits: type */
return bits;
}
-#undef LIBCSS_ALIGN_MASK
-#undef LIBCSS_ALIGN_SHIFT
-#undef LIBCSS_ALIGN_INDEX
+#undef TEXT_ALIGN_MASK
+#undef TEXT_ALIGN_SHIFT
+#undef TEXT_ALIGN_INDEX
#endif
diff --git a/src/select/propset.h b/src/select/propset.h
index cc4121a..69dba45 100644
--- a/src/select/propset.h
+++ b/src/select/propset.h
@@ -1290,24 +1290,6 @@ static inline css_error set_position(
#undef POSITION_SHIFT
#undef POSITION_INDEX
-#define TEXT_ALIGN_INDEX 23
-#define TEXT_ALIGN_SHIFT 0
-#define TEXT_ALIGN_MASK 0x7
-static inline css_error set_text_align(
- css_computed_style *style, uint8_t type)
-{
- uint8_t *bits = &style->bits[TEXT_ALIGN_INDEX];
-
- /* 3bits: type */
- *bits = (*bits & ~TEXT_ALIGN_MASK) |
- ((type & 0x7) << TEXT_ALIGN_SHIFT);
-
- return CSS_OK;
-}
-#undef TEXT_ALIGN_MASK
-#undef TEXT_ALIGN_SHIFT
-#undef TEXT_ALIGN_INDEX
-
#define TEXT_TRANSFORM_INDEX 24
#define TEXT_TRANSFORM_SHIFT 0
#define TEXT_TRANSFORM_MASK 0x7
@@ -1679,22 +1661,22 @@ static inline css_error set_list_style_position(
#undef LIST_STYLE_POSITION_SHIFT
#undef LIST_STYLE_POSITION_INDEX
-#define LIBCSS_ALIGN_INDEX 33
-#define LIBCSS_ALIGN_SHIFT 1
-#define LIBCSS_ALIGN_MASK 0xe
-static inline uint8_t set_libcss_align(
+#define TEXT_ALIGN_INDEX 33
+#define TEXT_ALIGN_SHIFT 0
+#define TEXT_ALIGN_MASK 0xf
+static inline uint8_t set_text_align(
css_computed_style *style, uint8_t type)
{
- uint8_t *bits = &style->bits[LIBCSS_ALIGN_INDEX];
+ uint8_t *bits = &style->bits[TEXT_ALIGN_INDEX];
- /* 3bits: type */
- *bits = (*bits & ~LIBCSS_ALIGN_MASK) |
- ((type & 0x7) << LIBCSS_ALIGN_SHIFT);
+ /* 4bits: type */
+ *bits = (*bits & ~TEXT_ALIGN_MASK) |
+ ((type & 0xf) << TEXT_ALIGN_SHIFT);
return CSS_OK;
}
-#undef LIBCSS_ALIGN_MASK
-#undef LIBCSS_ALIGN_SHIFT
-#undef LIBCSS_ALIGN_INDEX
+#undef TEXT_ALIGN_MASK
+#undef TEXT_ALIGN_SHIFT
+#undef TEXT_ALIGN_INDEX
#endif