From 32ed7d0984f0dd872b4aaac0ac12c18471f291a0 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 28 Jan 2012 20:25:01 +0000 Subject: Add support for parsing CSS3 Multi-column layout properties: + break-after + break-before + break-inside + column-count + column-fill + column-gap + column-rule-color + column-rule-style + column_rule-width + column_span + column_width TODO: Shorthand properties (columns, column-rule) TODO: Selection svn path=/trunk/libcss/; revision=13412 --- test/data/parse/properties.dat | 444 +++++++++++++++++++++++++++ test/data/parse2/INDEX | 3 +- test/data/parse2/multicol.dat | 665 +++++++++++++++++++++++++++++++++++++++++ test/dump.h | 178 +++++++++++ 4 files changed, 1289 insertions(+), 1 deletion(-) create mode 100644 test/data/parse2/multicol.dat (limited to 'test') diff --git a/test/data/parse/properties.dat b/test/data/parse/properties.dat index 29b5eb6..efe06ee 100644 --- a/test/data/parse/properties.dat +++ b/test/data/parse/properties.dat @@ -3818,3 +3818,447 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at | 0x02000062 0xfffffc00 #reset +## +## 64 - break-after +## + +#data +* { break-after: auto; } +#errors +#expected +| 1 * +| 0x00000064 +#reset + +#data +* { break-after: always; } +#errors +#expected +| 1 * +| 0x00040064 +#reset + +#data +* { break-after: avoid; } +#errors +#expected +| 1 * +| 0x00080064 +#reset + +#data +* { break-after: left; } +#errors +#expected +| 1 * +| 0x000c0064 +#reset + +#data +* { break-after: right; } +#errors +#expected +| 1 * +| 0x00100064 +#reset + +#data +* { break-after: page; } +#errors +#expected +| 1 * +| 0x00140064 +#reset + +#data +* { break-after: column; } +#errors +#expected +| 1 * +| 0x00180064 +#reset + +#data +* { break-after: avoid-page; } +#errors +#expected +| 1 * +| 0x001c0064 +#reset + +#data +* { break-after: avoid-column; } +#errors +#expected +| 1 * +| 0x00200064 +#reset + +## +## 65 - break-before +## + +#data +* { break-before: auto; } +#errors +#expected +| 1 * +| 0x00000065 +#reset + +#data +* { break-before: always; } +#errors +#expected +| 1 * +| 0x00040065 +#reset + +#data +* { break-before: avoid; } +#errors +#expected +| 1 * +| 0x00080065 +#reset + +#data +* { break-before: left; } +#errors +#expected +| 1 * +| 0x000c0065 +#reset + +#data +* { break-before: right; } +#errors +#expected +| 1 * +| 0x00100065 +#reset + +#data +* { break-before: page; } +#errors +#expected +| 1 * +| 0x00140065 +#reset + +#data +* { break-before: column; } +#errors +#expected +| 1 * +| 0x00180065 +#reset + +#data +* { break-before: avoid-page; } +#errors +#expected +| 1 * +| 0x001c0065 +#reset + +#data +* { break-before: avoid-column; } +#errors +#expected +| 1 * +| 0x00200065 +#reset + +## +## 66 - break-inside +## + +#data +* { break-inside: auto; } +#errors +#expected +| 1 * +| 0x00000066 +#reset + +#data +* { break-inside: avoid; } +#errors +#expected +| 1 * +| 0x00040066 +#reset + +#data +* { break-inside: avoid-page; } +#errors +#expected +| 1 * +| 0x00080066 +#reset + +#data +* { break-inside: avoid-column; } +#errors +#expected +| 1 * +| 0x000c0066 +#reset + +## +## 67 - column-count +## + +#data +* { column-count: auto; } +#errors +#expected +| 1 * +| 0x00000067 +#reset + +#data +* { column-count: 2; } +#errors +#expected +| 1 * +| 0x02000067 0x00000800 +#reset + +## +## 68 - column-fill +## + +#data +* { column-fill: balance; } +#errors +#expected +| 1 * +| 0x00000068 +#reset + +#data +* { column-fill: auto; } +#errors +#expected +| 1 * +| 0x00040068 +#reset + +## +## 69 - column-gap +## + +#data +* { column-gap: normal; } +#errors +#expected +| 1 * +| 0x00000069 +#reset + +#data +* { column-gap: 0.1em; } +#errors +#expected +| 1 * +| 0x02000069 0x00000066 0x00000002 +#reset + +## +## 6a - column-rule-color +## + +#data +* { column-rule-color: #BBC; } +#errors +#expected +| 1 * +| 0x0200006a 0xffbbbbcc +#reset + +#data +* { column-rule-color: currentColor } +#errors +#expected +| 1 * +| 0x0004006a +#reset + +#data +* { column-rule-color: transparent } +#errors +#expected +| 1 * +| 0x0000006a +#reset + +## +## 6b - column-rule-style +## + +#data +* { column-rule-style: none; } +#errors +#expected +| 1 * +| 0x0000006b +#reset + +#data +* { column-rule-style: hidden; } +#errors +#expected +| 1 * +| 0x0004006b +#reset + +#data +* { column-rule-style: dotted; } +#errors +#expected +| 1 * +| 0x0008006b +#reset + +#data +* { column-rule-style: dashed; } +#errors +#expected +| 1 * +| 0x000c006b +#reset + +#data +* { column-rule-style: solid; } +#errors +#expected +| 1 * +| 0x0010006b +#reset + +#data +* { column-rule-style: double; } +#errors +#expected +| 1 * +| 0x0014006b +#reset + +#data +* { column-rule-style: groove; } +#errors +#expected +| 1 * +| 0x0018006b +#reset + +#data +* { column-rule-style: ridge; } +#errors +#expected +| 1 * +| 0x001c006b +#reset + +#data +* { column-rule-style: inset; } +#errors +#expected +| 1 * +| 0x0020006b +#reset + +#data +* { column-rule-style: outset; } +#errors +#expected +| 1 * +| 0x0024006b +#reset + +## +## 6c - column-rule-width +## + +#data +* { column-rule-width: thin; } +#errors +#expected +| 1 * +| 0x0000006c +#reset + +#data +* { column-rule-width: medium; } +#errors +#expected +| 1 * +| 0x0004006c +#reset + +#data +* { column-rule-width: thick; } +#errors +#expected +| 1 * +| 0x0008006c +#reset + +#data +* { column-rule-width: 3px; } +#errors +#expected +| 1 * +| 0x0200006c 0x00000c00 0x00000000 +#reset + +#data +* { column-rule-width: 0; } +#errors +#expected +| 1 * +| 0x0200006c 0x00000000 0x00000000 +#reset + +## +## 6d - column-span +## + +#data +* { column-span: none; } +#errors +#expected +| 1 * +| 0x0000006d +#reset + +#data +* { column-span: all; } +#errors +#expected +| 1 * +| 0x0004006d +#reset + +## +## 6e - column-width +## + +#data +* { column-width: auto; } +#errors +#expected +| 1 * +| 0x0000006e +#reset + +#data +* { column-width: 0.1em; } +#errors +#expected +| 1 * +| 0x0200006e 0x00000066 0x00000002 +#reset + diff --git a/test/data/parse2/INDEX b/test/data/parse2/INDEX index e51befb..651a87e 100644 --- a/test/data/parse2/INDEX +++ b/test/data/parse2/INDEX @@ -17,4 +17,5 @@ font.dat Font property tests list.dat List property tests margin.dat Margin property tests outline.dat Outline property tests -padding.dat Padding property tests \ No newline at end of file +padding.dat Padding property tests +multicol.dat Multi-column layout property tests \ No newline at end of file diff --git a/test/data/parse2/multicol.dat b/test/data/parse2/multicol.dat new file mode 100644 index 0000000..d9a7650 --- /dev/null +++ b/test/data/parse2/multicol.dat @@ -0,0 +1,665 @@ +#data +* { break-after: #fff inherit; } +#errors +#expected +| * +#reset + +#data +* { break-after: 10; } +#errors +#expected +| * +#reset + +#data +* { break-after: 10em !important; } +#errors +#expected +| * +#reset + +#data +* { break-after: column; } +#errors +#expected +| * +| break-after: column +#reset + +#data +* { break-after: page !important; } +#errors +#expected +| * +| break-after: page !important +#reset + +#data +* { break-after: inherit; } +#errors +#expected +| * +| break-after: inherit +#reset + +#data +* { break-after: normal; } +#errors +#expected +| * +#reset + +#data +* { break-before: #fff inherit; } +#errors +#expected +| * +#reset + +#data +* { break-before: 10; } +#errors +#expected +| * +#reset + +#data +* { break-before: 10em !important; } +#errors +#expected +| * +#reset + +#data +* { break-before: column; } +#errors +#expected +| * +| break-before: column +#reset + +#data +* { break-before: page !important; } +#errors +#expected +| * +| break-before: page !important +#reset + +#data +* { break-before: inherit; } +#errors +#expected +| * +| break-before: inherit +#reset + +#data +* { break-before: normal; } +#errors +#expected +| * +#reset + +#data +* { break-inside: #fff inherit; } +#errors +#expected +| * +#reset + +#data +* { break-inside: 10; } +#errors +#expected +| * +#reset + +#data +* { break-inside: 10em !important; } +#errors +#expected +| * +#reset + +#data +* { break-inside: avoid-column; } +#errors +#expected +| * +| break-inside: avoid-column +#reset + +#data +* { break-inside: avoid-page !important; } +#errors +#expected +| * +| break-inside: avoid-page !important +#reset + +#data +* { break-inside: page !important; } +#errors +#expected +| * +#reset + +#data +* { break-inside: inherit; } +#errors +#expected +| * +| break-inside: inherit +#reset + +#data +* { break-inside: normal; } +#errors +#expected +| * +#reset + + + + +#data +* { column-count: normal; } +#errors +#expected +| * +#reset + +#data +* { column-count: auto; } +#errors +#expected +| * +| column-count: auto +#reset + +#data +* { column-count: 3; } +#errors +#expected +| * +| column-count: 3 +#reset + +#data +* { column-count: 3px; } +#errors +#expected +| * +#reset + +#data +* { column-count: 2 3; } +#errors +#expected +| * +#reset + +#data +* { column-fill: 2; } +#errors +#expected +| * +#reset + +#data +* { column-fill: 2em; } +#errors +#expected +| * +#reset + +#data +* { column-fill: normal; } +#errors +#expected +| * +#reset + +#data +* { column-fill: balance; } +#errors +#expected +| * +| column-fill: balance +#reset + +#data +* { column-fill: auto; } +#errors +#expected +| * +| column-fill: auto +#reset + +#data +* { column-fill: inherit; } +#errors +#expected +| * +| column-fill: inherit +#reset + +#data +* { column-fill: inherit !important; } +#errors +#expected +| * +| column-fill: inherit !important +#reset + +#data +* { column-gap: 2; } +#errors +#expected +| * +#reset + +#data +* { column-gap: ; } +#errors +#expected +| * +#reset + +#data +* { column-gap: auto; } +#errors +#expected +| * +#reset + +#data +* { column-gap: normal; } +#errors +#expected +| * +| column-gap: normal +#reset + +#data +* { column-gap: 2em; } +#errors +#expected +| * +| column-gap: 2em +#reset + +#data +* { column-gap: inherit; } +#errors +#expected +| * +| column-gap: inherit +#reset + +#data +* { column-gap: inherit !important; } +#errors +#expected +| * +| column-gap: inherit !important +#reset + +#data +* { column-gap: !important; } +#errors +#expected +| * +#reset + + + +#data +* { column-rule-color: !important; } +#errors +#expected +| * +#reset + +#data +* { column-rule-color: red green; } +#errors +#expected +| * +#reset + +#data +* { column-rule-color: normal; } +#errors +#expected +| * +#reset + +#data +* { column-rule-color: auto; } +#errors +#expected +| * +#reset + +#data +* { column-rule-color: red; } +#errors +#expected +| * +| column-rule-color: #ffff0000 +#reset + +#data +* { column-rule-color: red !important; } +#errors +#expected +| * +| column-rule-color: #ffff0000 !important +#reset + +#data +* { column-rule-color: #BBC; } +#errors +#expected +| * +| column-rule-color: #ffbbbbcc +#reset + + + +#data +* { column-rule-style: !important; } +#errors +#expected +| * +#reset + +#data +* { column-rule-style: none auto; } +#errors +#expected +| * +#reset + +#data +* { column-rule-style: normal; } +#errors +#expected +| * +#reset + +#data +* { column-rule-style: solid 10px; } +#errors +#expected +| * +#reset + +#data +* { column-rule-style: 10px; } +#errors +#expected +| * +#reset + +#data +* { column-rule-style: dashed; } +#errors +#expected +| * +| column-rule-style: dashed +#reset + +#data +* { column-rule-style: groove; } +#errors +#expected +| * +| column-rule-style: groove +#reset + +#data +* { column-rule-style: none; } +#errors +#expected +| * +| column-rule-style: none +#reset + +#data +* { column-rule-style: dotted; } +#errors +#expected +| * +| column-rule-style: dotted +#reset + +#data +* { column-rule-style: outset; } +#errors +#expected +| * +| column-rule-style: outset +#reset + +#data +* { column-rule-style: solid !important; } +#errors +#expected +| * +| column-rule-style: solid !important +#reset + +#data +* { column-rule-style: inset; } +#errors +#expected +| * +| column-rule-style: inset +#reset + +#data +* { column-rule-style: inherit; } +#errors +#expected +| * +| column-rule-style: inherit +#reset + +#data +* { column-rule-style: hidden; } +#errors +#expected +| * +| column-rule-style: hidden +#reset + + + +#data +* { column-rule-width: !important; } +#errors +#expected +| * +#reset + +#data +* { column-rule-width: red green; } +#errors +#expected +| * +#reset + +#data +* { column-rule-width: normal; } +#errors +#expected +| * +#reset + +#data +* { column-rule-width: auto; } +#errors +#expected +| * +#reset + +#data +* { column-rule-width: thin; } +#errors +#expected +| * +| column-rule-width: thin +#reset + +#data +* { column-rule-width: medium !important; } +#errors +#expected +| * +| column-rule-width: medium !important +#reset + +#data +* { column-rule-width: 3px; } +#errors +#expected +| * +| column-rule-width: 3px +#reset + +#data +* { column-rule-width: 3px !important; } +#errors +#expected +| * +| column-rule-width: 3px !important +#reset + +#data +* { column-rule-width: inherit; } +#errors +#expected +| * +| column-rule-width: inherit +#reset + + + +#data +* { column-span: !important; } +#errors +#expected +| * +#reset + +#data +* { column-span: auto; } +#errors +#expected +| * +#reset + +#data +* { column-span: 4em; } +#errors +#expected +| * +#reset + +#data +* { column-span: 3; } +#errors +#expected +| * +#reset + +#data +* { column-span: 3 !important; } +#errors +#expected +| * +#reset + +#data +* { column-span: all; } +#errors +#expected +| * +| column-span: all +#reset + +#data +* { column-span: none; } +#errors +#expected +| * +| column-span: none +#reset + +#data +* { column-span: none !important; } +#errors +#expected +| * +| column-span: none !important +#reset + + + +#data +* { column-width: !important; } +#errors +#expected +| * +#reset + +#data +* { column-width: red green; } +#errors +#expected +| * +#reset + +#data +* { column-width: normal; } +#errors +#expected +| * +#reset + +#data +* { column-width: auto; } +#errors +#expected +| * +| column-width: auto +#reset + +#data +* { column-width: 30em; } +#errors +#expected +| * +| column-width: 30em +#reset + +#data +* { column-width: 30em !important; } +#errors +#expected +| * +| column-width: 30em !important +#reset + +#data +* { column-width: inherit; } +#errors +#expected +| * +| column-width: inherit +#reset + diff --git a/test/dump.h b/test/dump.h index 8817edf..73b61ea 100644 --- a/test/dump.h +++ b/test/dump.h @@ -465,6 +465,17 @@ static const char *opcode_names[] = { "word-spacing", "z-index", "opacity", + "break-after", + "break-before", + "break-inside", + "column-count", + "column-fill", + "column-gap", + "column-rule-color", + "column-rule-style", + "column-rule-width", + "column-span", + "column-width", }; static void dump_css_fixed(css_fixed f, char **ptr) @@ -801,6 +812,7 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth) case CSS_PROP_BORDER_BOTTOM_COLOR: case CSS_PROP_BORDER_LEFT_COLOR: case CSS_PROP_BACKGROUND_COLOR: + case CSS_PROP_COLUMN_RULE_COLOR: assert(BACKGROUND_COLOR_TRANSPARENT == (enum op_background_color) BORDER_COLOR_TRANSPARENT); @@ -965,37 +977,68 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth) case CSS_PROP_BORDER_RIGHT_STYLE: case CSS_PROP_BORDER_BOTTOM_STYLE: case CSS_PROP_BORDER_LEFT_STYLE: + case CSS_PROP_COLUMN_RULE_STYLE: case CSS_PROP_OUTLINE_STYLE: assert(BORDER_STYLE_NONE == (enum op_border_style) OUTLINE_STYLE_NONE); + assert(BORDER_STYLE_NONE == + (enum op_border_style) + COLUMN_RULE_STYLE_NONE); assert(BORDER_STYLE_HIDDEN == (enum op_border_style) OUTLINE_STYLE_HIDDEN); + assert(BORDER_STYLE_HIDDEN == + (enum op_border_style) + COLUMN_RULE_STYLE_HIDDEN); assert(BORDER_STYLE_DOTTED == (enum op_border_style) OUTLINE_STYLE_DOTTED); + assert(BORDER_STYLE_DOTTED == + (enum op_border_style) + COLUMN_RULE_STYLE_DOTTED); assert(BORDER_STYLE_DASHED == (enum op_border_style) OUTLINE_STYLE_DASHED); + assert(BORDER_STYLE_DASHED == + (enum op_border_style) + COLUMN_RULE_STYLE_DASHED); assert(BORDER_STYLE_SOLID == (enum op_border_style) OUTLINE_STYLE_SOLID); + assert(BORDER_STYLE_SOLID == + (enum op_border_style) + COLUMN_RULE_STYLE_SOLID); assert(BORDER_STYLE_DOUBLE == (enum op_border_style) OUTLINE_STYLE_DOUBLE); + assert(BORDER_STYLE_DOUBLE == + (enum op_border_style) + COLUMN_RULE_STYLE_DOUBLE); assert(BORDER_STYLE_GROOVE == (enum op_border_style) OUTLINE_STYLE_GROOVE); + assert(BORDER_STYLE_GROOVE == + (enum op_border_style) + COLUMN_RULE_STYLE_GROOVE); assert(BORDER_STYLE_RIDGE == (enum op_border_style) OUTLINE_STYLE_RIDGE); + assert(BORDER_STYLE_RIDGE == + (enum op_border_style) + COLUMN_RULE_STYLE_RIDGE); assert(BORDER_STYLE_INSET == (enum op_border_style) OUTLINE_STYLE_INSET); + assert(BORDER_STYLE_INSET == + (enum op_border_style) + COLUMN_RULE_STYLE_INSET); assert(BORDER_STYLE_OUTSET == (enum op_border_style) OUTLINE_STYLE_OUTSET); + assert(BORDER_STYLE_OUTSET == + (enum op_border_style) + COLUMN_RULE_STYLE_OUTSET); switch (value) { case BORDER_STYLE_NONE: @@ -1034,6 +1077,7 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth) case CSS_PROP_BORDER_RIGHT_WIDTH: case CSS_PROP_BORDER_BOTTOM_WIDTH: case CSS_PROP_BORDER_LEFT_WIDTH: + case CSS_PROP_COLUMN_RULE_WIDTH: case CSS_PROP_OUTLINE_WIDTH: assert(BORDER_WIDTH_SET == (enum op_border_width) @@ -1080,6 +1124,7 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth) case CSS_PROP_TOP: case CSS_PROP_HEIGHT: case CSS_PROP_WIDTH: + case CSS_PROP_COLUMN_WIDTH: assert(BOTTOM_SET == (enum op_bottom) LEFT_SET); assert(BOTTOM_AUTO == @@ -1104,6 +1149,12 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth) (enum op_bottom) WIDTH_SET); assert(BOTTOM_AUTO == (enum op_bottom) WIDTH_AUTO); + assert(BOTTOM_SET == + (enum op_bottom) + COLUMN_WIDTH_SET); + assert(BOTTOM_AUTO == + (enum op_bottom) + COLUMN_WIDTH_AUTO); switch (value) { case BOTTOM_SET: @@ -1121,6 +1172,82 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth) break; } break; + case CSS_PROP_BREAK_AFTER: + case CSS_PROP_BREAK_BEFORE: + assert(BREAK_AFTER_AUTO == + (enum op_break_after) + BREAK_BEFORE_AUTO); + assert(BREAK_AFTER_ALWAYS == + (enum op_break_after) + BREAK_BEFORE_ALWAYS); + assert(BREAK_AFTER_AVOID == + (enum op_break_after) + BREAK_BEFORE_AVOID); + assert(BREAK_AFTER_LEFT == + (enum op_break_after) + BREAK_BEFORE_LEFT); + assert(BREAK_AFTER_RIGHT == + (enum op_break_after) + BREAK_BEFORE_RIGHT); + assert(BREAK_AFTER_PAGE == + (enum op_break_after) + BREAK_BEFORE_PAGE); + assert(BREAK_AFTER_COLUMN == + (enum op_break_after) + BREAK_BEFORE_COLUMN); + assert(BREAK_AFTER_AVOID_PAGE == + (enum op_break_after) + BREAK_BEFORE_AVOID_PAGE); + assert(BREAK_AFTER_AVOID_COLUMN == + (enum op_break_after) + BREAK_BEFORE_AVOID_COLUMN); + + switch (value) { + case BREAK_AFTER_AUTO: + *ptr += sprintf(*ptr, "auto"); + break; + case BREAK_AFTER_ALWAYS: + *ptr += sprintf(*ptr, "always"); + break; + case BREAK_AFTER_AVOID: + *ptr += sprintf(*ptr, "avoid"); + break; + case BREAK_AFTER_LEFT: + *ptr += sprintf(*ptr, "left"); + break; + case BREAK_AFTER_RIGHT: + *ptr += sprintf(*ptr, "right"); + break; + case BREAK_AFTER_PAGE: + *ptr += sprintf(*ptr, "page"); + break; + case BREAK_AFTER_COLUMN: + *ptr += sprintf(*ptr, "column"); + break; + case BREAK_AFTER_AVOID_PAGE: + *ptr += sprintf(*ptr, "avoid-page"); + break; + case BREAK_AFTER_AVOID_COLUMN: + *ptr += sprintf(*ptr, "avoid-column"); + break; + } + break; + case CSS_PROP_BREAK_INSIDE: + switch (value) { + case BREAK_INSIDE_AUTO: + *ptr += sprintf(*ptr, "auto"); + break; + case BREAK_INSIDE_AVOID: + *ptr += sprintf(*ptr, "avoid"); + break; + case BREAK_INSIDE_AVOID_PAGE: + *ptr += sprintf(*ptr, "avoid-page"); + break; + case BREAK_INSIDE_AVOID_COLUMN: + *ptr += sprintf(*ptr, "avoid-column"); + break; + } + break; case CSS_PROP_CAPTION_SIDE: switch (value) { case CAPTION_SIDE_TOP: @@ -1220,6 +1347,57 @@ void dump_bytecode(css_style *style, char **ptr, uint32_t depth) break; } break; + case CSS_PROP_COLUMN_COUNT: + switch (value) { + case COLUMN_COUNT_SET: + { + css_fixed val = *((css_fixed *) bytecode); + ADVANCE(sizeof(val)); + dump_number(val, ptr); + } + break; + case COLUMN_COUNT_AUTO: + *ptr += sprintf(*ptr, "auto"); + break; + } + break; + case CSS_PROP_COLUMN_FILL: + switch (value) { + case COLUMN_FILL_BALANCE: + *ptr += sprintf(*ptr, "balance"); + break; + case COLUMN_FILL_AUTO: + *ptr += sprintf(*ptr, "auto"); + break; + } + break; + case CSS_PROP_COLUMN_GAP: + switch (value) { + case COLUMN_GAP_SET: + { + uint32_t unit; + css_fixed val = *((css_fixed *) bytecode); + ADVANCE(sizeof(val)); + unit = *((uint32_t *) bytecode); + ADVANCE(sizeof(unit)); + dump_unit(val, unit, ptr); + } + break; + case COLUMN_GAP_NORMAL: + *ptr += sprintf(*ptr, "normal"); + break; + } + break; + case CSS_PROP_COLUMN_SPAN: + switch (value) { + case COLUMN_SPAN_NONE: + *ptr += sprintf(*ptr, "none"); + break; + case COLUMN_SPAN_ALL: + *ptr += sprintf(*ptr, "all"); + break; + } + break; case CSS_PROP_CONTENT: if (value == CONTENT_NORMAL) { *ptr += sprintf(*ptr, "normal"); -- cgit v1.2.3