summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2009-02-10 17:54:04 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2009-02-10 17:54:04 +0000
commitc5e6ed5429156f34a51434581e1639e5ebf182db (patch)
tree44b0f3b440bf5f154cec953ab12fe0d860128b74
parent3caf569a9db0c852d7f149cf796d77ce3858cf32 (diff)
downloadlibcss-c5e6ed5429156f34a51434581e1639e5ebf182db.tar.gz
libcss-c5e6ed5429156f34a51434581e1639e5ebf182db.tar.bz2
Purge side bits. These cause more trouble than they're worth, and it's not as if there's a dearth of opcode space.
svn path=/trunk/libcss/; revision=6410
-rw-r--r--docs/Bytecode212
-rw-r--r--src/bytecode/bytecode.h169
-rw-r--r--src/bytecode/opcodes.h8
-rw-r--r--src/parse/properties.c122
-rw-r--r--src/select/properties.c290
-rw-r--r--src/select/select.c43
-rw-r--r--test/data/parse/colours.dat18
-rw-r--r--test/data/parse/properties.dat907
-rw-r--r--test/data/parse/tests1.dat6
-rw-r--r--test/dump.h81
10 files changed, 1070 insertions, 786 deletions
diff --git a/docs/Bytecode b/docs/Bytecode
index 7e06fa6..d99ac7c 100644
--- a/docs/Bytecode
+++ b/docs/Bytecode
@@ -205,28 +205,24 @@ Opcodes
clear => Reserved for future expansion.
bits 0-6: MBZ
-08 - border-{top,right,bottom,left}-color
- <value> (14bits) :
- bits 10-13: MBZ
- bits 8-9 :
- 00 => top
- 01 => right
- 10 => bottom
- 11 => left
+08 - border-top-color
+09 - border-right-color
+0a - border-bottom-color
+0b - border-left-color
+ <value> (14bits) :
+ bits 8-13: MBZ
bit 7 set => colour follows.
bits 0-6: MBZ
bit 7 clear => keyword colour:
bits 1-6: MBZ
bit 0 : clear => transparent, set => rffe.
-09 - border-{top,right,bottom,left}-style
+0c - border-top-style
+0d - border-right-style
+0e - border-bottom-style
+0f - border-left-style
<value> (14bits) :
- bits 10-13: MBZ
- bits 8-9 :
- 00 => top
- 01 => right
- 10 => bottom
- 11 => left
+ bits 8-13: MBZ
bits 0-7 :
00000000 => none,
00000001 => hidden,
@@ -240,14 +236,12 @@ Opcodes
00001001 => outset,
other => Reserved for future expansion.
-0a - border-{top,right,bottom,left}-width
+10 - border-top-width
+11 - border-right-width
+12 - border-bottom-width
+13 - border-left-width
<value> (14bits) :
- bits 10-13: MBZ
- bits 8-9 :
- 00 => top
- 01 => right
- 10 => bottom
- 11 => left
+ bits 8-13: MBZ
bits 0-7 :
bit 7 set => length follows
bits 0-6: MBZ
@@ -257,7 +251,7 @@ Opcodes
0000010 => thick,
other => rffe.
-0b - bottom
+14 - bottom
<value> (14bits) :
bits 8-13: MBZ
bits 0-7:
@@ -267,13 +261,13 @@ Opcodes
bits 0-6: 0000000 => auto,
other => rffe.
-0c - caption-side
+15 - caption-side
<value> (14bits) :
0 => top
1 => bottom
other => Reserved for future expansion.
-0d - clear
+16 - clear
<value> (14bits) :
0 => none
1 => left
@@ -281,7 +275,7 @@ Opcodes
3 => both
other => Reserved for future expansion.
-0e - clip
+17 - clip
<value> (14bits) :
bits 8-13: MBZ
bits 0-7:
@@ -308,9 +302,9 @@ Opcodes
clip: rect(10px, auto, auto, 10px)
would produce the following bytecode:
- <02c0000e> <00002800> <00000000> <00002800> <00000000>
+ <02c00017> <00002800> <00000000> <00002800> <00000000>
-0f - color
+18 - color
<value> (14bits) :
bits 8-13: MBZ
bits 0-7:
@@ -319,7 +313,7 @@ Opcodes
clear => Reserved for future expansion.
bits 0-6: MBZ.
-10 - content
+19 - content
<value> (14bits) :
bits 8-13: MBZ (except counter & counters, see below)
bits 0-7 :
@@ -354,7 +348,7 @@ Opcodes
close-quote;"
would result in the following bytecode:
- <00080010>
+ <00080019>
<00000081> <ptr to "http://example.com">
<00000080> <ptr to " : ">
<00000084> <ptr to "name">
@@ -364,7 +358,7 @@ Opcodes
<00000383> <ptr to "y"> <ptr to ".">
<00000003> <00000000>
-11 - counter-increment
+1a - counter-increment
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -380,7 +374,7 @@ Opcodes
of the next item. The list is terminated by a word with all bits set to
zero (the encoding for "none").
-12 - counter-reset
+1b - counter-reset
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -396,7 +390,7 @@ Opcodes
of the next item. The list is terminated by a word with all bits set to
zero (the encoding for "none").
-13 - cue-after
+1c - cue-after
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -406,7 +400,7 @@ Opcodes
bits 0-6: 0000000 => none,
other => rffe.
-14 - cue-before
+1d - cue-before
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -416,7 +410,7 @@ Opcodes
bits 0-6: 0000000 => none,
other => rffe.
-15 - cursor
+1e - cursor
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -447,13 +441,13 @@ Opcodes
the type of the next item. The list is terminated by a word with
bit 7 clear.
-16 - direction
+1f - direction
<value> (14bits) :
0 => ltr,
1 => rtl,
other => Reserved for future expansion.
-17 - display
+20 - display
<value> (14bits) :
0 => inline,
1 => block,
@@ -473,7 +467,7 @@ Opcodes
f => none,
other => Reserved for future expansion.
-18 - elevation
+21 - elevation
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -487,20 +481,20 @@ Opcodes
0000100 => lower,
other => rffe.
-19 - empty-cells
+22 - empty-cells
<value> (14bits) :
0 => show,
1 => hide,
other => Reserved for future expansion.
-1a - float
+23 - float
<value> (14bits) :
0 => left,
1 => right,
2 => none,
other => Reserved for future expansion.
-1b - font-family
+24 - font-family
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -521,7 +515,7 @@ Opcodes
<value> word which declares the type of the next item. The list is
terminated by a word with all bits clear.
-1c - font-size
+25 - font-size
<value> (14bits) :
bits 8-13: MBZ
bits 0-7:
@@ -539,20 +533,20 @@ Opcodes
0001000 => smaller,
other => rffe.
-1d - font-style
+26 - font-style
<value> (14bits) :
0 => normal,
1 => italic,
2 => oblique,
other => Reserved for future expansion.
-1e - font-variant
+27 - font-variant
<value> (14bits) :
0 => normal,
1 => small-caps,
other => Reserved for future expansion.
-1f - font-weight
+28 - font-weight
<value> (14bits) :
0 => normal,
1 => bold,
@@ -569,7 +563,7 @@ Opcodes
c => 900,
other => Reserved for future expansion.
-20 - height
+29 - height
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -579,7 +573,7 @@ Opcodes
bits 0-6: 0000000 => auto,
other => rffe.
-21 - left
+2a - left
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -589,7 +583,7 @@ Opcodes
bits 0-6: 0000000 => auto,
other => rffe.
-22 - letter-spacing
+2b - letter-spacing
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -599,7 +593,7 @@ Opcodes
bits 0-6: 0000000 => normal,
other => rffe.
-23 - line-height
+2c - line-height
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -611,7 +605,7 @@ Opcodes
bits 0-6: 0000000 => normal,
other => rffe.
-24 - list-style-image
+2d - list-style-image
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -621,13 +615,13 @@ Opcodes
bits 0-6: 0000000 => none,
other => rffe.
-25 - list-style-position
+2e - list-style-position
<value> (14bits) :
0 => inside,
1 => outside,
other => Reserved for future expansion.
-26 - list-style-type
+2f - list-style-type
<value> (14bits) :
0 => disc,
1 => circle,
@@ -646,22 +640,20 @@ Opcodes
e => none,
other => Reserved for future expansion.
-27 - margin-{top,right,bottom,left}
+30 - margin-top
+31 - margin-right
+32 - margin-bottom
+33 - margin-left
<value> (14bits) :
- bits 10-13: MBZ
- bits 8-9 :
- 00 => top,
- 01 => right,
- 10 => bottom,
- 11 => left
- bits 0-7 :
+ bits 8-13: MBZ
+ bits 0-7 :
bit 7 set => length or percentage follows
bits 0-6: MBZ
bit 7 clear => keywords:
bits 0-6: 0000000 => auto,
other => rffe.
-28 - max-height
+34 - max-height
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -671,7 +663,7 @@ Opcodes
bits 0-6: 0000000 => none,
other => rffe.
-29 - max-width
+35 - max-width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -681,7 +673,7 @@ Opcodes
bits 0-6: 0000000 => none,
other => rffe.
-2a - min-height
+36 - min-height
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -690,7 +682,7 @@ Opcodes
clear => Reserved for future expansion
bits 0-6: MBZ
-2b - min-width
+37 - min-width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -699,7 +691,7 @@ Opcodes
clear => Reserved for future expansion
bits 0-6: MBZ
-2c - orphans
+38 - orphans
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -708,7 +700,7 @@ Opcodes
clear => Reserved for future expansion
bits 0-6: MBZ
-2d - outline-color
+39 - outline-color
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -718,7 +710,7 @@ Opcodes
bits 0-6: 0000000 => invert,
other => rffe.
-2e - outline-style
+3a - outline-style
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -734,7 +726,7 @@ Opcodes
00001001 => outset,
other => Reserved for future expansion.
-2f - outline-width
+3b - outline-width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -746,7 +738,7 @@ Opcodes
0000010 => thick,
other => rffe.
-30 - overflow
+3c - overflow
<value> (14bits) :
0 => visible,
1 => hidden,
@@ -754,21 +746,19 @@ Opcodes
3 => auto,
other => Reserved for future expansion.
-31 - padding-{top,right,bottom,left}
+3d - padding-top
+3e - padding-right
+3f - padding-bottom
+40 - padding-left
<value> (14bits) :
- bits 10-13: MBZ
- bits 8-9 :
- 00 => top,
- 01 => right,
- 10 => bottom,
- 11 => left
+ bits 8-13: MBZ
bits 0-7 :
bit 7: set => length or percentage follows
bits 0-6: MBZ
clear => Reserved for future expansion
bits 0-6: MBZ
-32 - page-break-after
+41 - page-break-after
<value> (14bits) :
0 => auto,
1 => always,
@@ -777,7 +767,7 @@ Opcodes
4 => right,
other => Reserved for future expansion.
-33 - page-break-before
+42 - page-break-before
<value> (14bits) :
0 => auto,
1 => always,
@@ -786,13 +776,13 @@ Opcodes
4 => right,
other => Reserved for future expansion.
-34 - page-break-inside
+43 - page-break-inside
<value> (14bits) :
0 => auto,
1 => avoid,
other => Reserved for future expansion.
-35 - pause-after
+44 - pause-after
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -801,7 +791,7 @@ Opcodes
clear => Reserved for future expansion
bits 0-6: MBZ
-36 - pause-before
+45 - pause-before
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -810,7 +800,7 @@ Opcodes
clear => Reserved for future expansion
bits 0-6: MBZ
-37 - pitch-range
+46 - pitch-range
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -819,7 +809,7 @@ Opcodes
clear => Reserved for future expansion
bits 0-6: MBZ
-38 - pitch
+47 - pitch
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -833,7 +823,7 @@ Opcodes
0000100 => x-high,
other => rffe.
-39 - play-during
+48 - play-during
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -846,7 +836,7 @@ Opcodes
0000001 => none,
other => rffe.
-3a - position
+49 - position
<value> (14bits) :
0 => static,
1 => relative,
@@ -854,7 +844,7 @@ Opcodes
3 => fixed,
other => Reserved for future expansion.
-3b - quotes
+4a - quotes
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -869,7 +859,7 @@ Opcodes
the type of the next item. The list is terminated by a word with
all bits clear (the encoding for "none").
-3c - richness
+4b - richness
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -878,7 +868,7 @@ Opcodes
clear => Reserved for future expansion
bits 0-6: MBZ
-3d - right
+4c - right
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -888,32 +878,32 @@ Opcodes
bits 0-6: 0000000 => auto,
other => rffe.
-3e - speak-header
+4d - speak-header
<value> (14bits) :
0 => once,
1 => always,
other => Reserved for future expansion.
-3f - speak-numeral
+4e - speak-numeral
<value> (14bits) :
0 => digits,
1 => continuous,
other => Reserved for future expansion.
-40 - speak-punctuation
+4f - speak-punctuation
<value> (14bits) :
0 => code,
1 => none,
other => Reserved for future expansion.
-41 - speak
+50 - speak
<value> (14bits) :
0 => normal,
1 => none,
2 => spell-out,
other => Reserved for future expansion.
-42 - speech-rate
+51 - speech-rate
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -929,7 +919,7 @@ Opcodes
0000110 => slower,
other => rffe.
-43 - stress
+52 - stress
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -938,13 +928,13 @@ Opcodes
clear => Reserved for future expansion
bits 0-6: MBZ
-44 - table-layout
+53 - table-layout
<value> (14bits) :
0 => auto,
1 => fixed,
other => Reserved for future expansion.
-45 - text-align
+54 - text-align
<value> (14bits) :
0 => left,
1 => right,
@@ -952,7 +942,7 @@ Opcodes
3 => justify,
other => Reserved for future expansion.
-46 - text-decoration
+55 - text-decoration
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -965,7 +955,7 @@ Opcodes
bit 1: set => overline, clear => no overline
bit 0: set => underline, clear => no underline
-47 - text-indent
+56 - text-indent
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -974,7 +964,7 @@ Opcodes
clear => Reserved for future expansion
bits 0-6: MBZ
-48 - text-transform
+57 - text-transform
<value> (14bits) :
0 => capitalize,
1 => uppercase,
@@ -982,7 +972,7 @@ Opcodes
3 => none,
other => Reserved for future expansion.
-49 - top
+58 - top
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -992,14 +982,14 @@ Opcodes
bits 0-6: 0000000 => auto,
other => rffe.
-4a - unicode-bidi
+59 - unicode-bidi
<value> (14bits) :
0 => normal,
1 => embed,
2 => bidi-override,
other => Reserved for future expansion.
-4b - vertical-align
+5a - vertical-align
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -1016,14 +1006,14 @@ Opcodes
0000111 => text-bottom,
other => rffe.
-4c - visibility
+5b - visibility
<value> (14bits) :
0 => visible,
1 => hidden,
2 => collapse,
other => Reserved for future expansion.
-4d - voice-family
+5c - voice-family
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -1042,7 +1032,7 @@ Opcodes
<value> word which declares the type of the next item. The list is
terminated by a word with all bits clear.
-4e - volume
+5d - volume
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -1059,7 +1049,7 @@ Opcodes
0000101 => x-loud,
other => rffe.
-4f - white-space
+5e - white-space
<value> (14bits) :
0 => normal,
1 => pre,
@@ -1068,7 +1058,7 @@ Opcodes
4 => pre-line,
other => Reserved for future expansion.
-50 - widows
+5f - widows
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -1077,7 +1067,7 @@ Opcodes
clear => Reserved for future expansion
bits 0-6: MBZ
-51 - width
+60 - width
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -1087,7 +1077,7 @@ Opcodes
bits 0-6: 0000000 => auto,
other => rffe.
-52 - word-spacing
+61 - word-spacing
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -1097,7 +1087,7 @@ Opcodes
bits 0-6: 0000000 => normal,
other => rffe.
-53 - z-index
+62 - z-index
<value> (14bits) :
bits 8-13: MBZ
bits 0-7 :
@@ -1107,5 +1097,5 @@ Opcodes
bits 0-6: 0000000 => auto,
other => rffe.
-54-3ff - Reserved for future expansion.
+63-3ff - Reserved for future expansion.
diff --git a/src/bytecode/bytecode.h b/src/bytecode/bytecode.h
index e773613..a0810e2 100644
--- a/src/bytecode/bytecode.h
+++ b/src/bytecode/bytecode.h
@@ -22,82 +22,99 @@ typedef enum opcode {
OP_BACKGROUND_REPEAT = 0x005,
OP_BORDER_COLLAPSE = 0x006,
OP_BORDER_SPACING = 0x007,
- OP_BORDER_TRBL_COLOR = 0x008,
- OP_BORDER_TRBL_STYLE = 0x009,
- OP_BORDER_TRBL_WIDTH = 0x00a,
- OP_BOTTOM = 0x00b,
- OP_CAPTION_SIDE = 0x00c,
- OP_CLEAR = 0x00d,
- OP_CLIP = 0x00e,
- OP_COLOR = 0x00f,
- OP_CONTENT = 0x010,
- OP_COUNTER_INCREMENT = 0x011,
- OP_COUNTER_RESET = 0x012,
- OP_CUE_AFTER = 0x013,
- OP_CUE_BEFORE = 0x014,
- OP_CURSOR = 0x015,
- OP_DIRECTION = 0x016,
- OP_DISPLAY = 0x017,
- OP_ELEVATION = 0x018,
- OP_EMPTY_CELLS = 0x019,
- OP_FLOAT = 0x01a,
- OP_FONT_FAMILY = 0x01b,
- OP_FONT_SIZE = 0x01c,
- OP_FONT_STYLE = 0x01d,
- OP_FONT_VARIANT = 0x01e,
- OP_FONT_WEIGHT = 0x01f,
- OP_HEIGHT = 0x020,
- OP_LEFT = 0x021,
- OP_LETTER_SPACING = 0x022,
- OP_LINE_HEIGHT = 0x023,
- OP_LIST_STYLE_IMAGE = 0x024,
- OP_LIST_STYLE_POSITION = 0x025,
- OP_LIST_STYLE_TYPE = 0x026,
- OP_MARGIN_TRBL = 0x027,
- OP_MAX_HEIGHT = 0x028,
- OP_MAX_WIDTH = 0x029,
- OP_MIN_HEIGHT = 0x02a,
- OP_MIN_WIDTH = 0x02b,
- OP_ORPHANS = 0x02c,
- OP_OUTLINE_COLOR = 0x02d,
- OP_OUTLINE_STYLE = 0x02e,
- OP_OUTLINE_WIDTH = 0x02f,
- OP_OVERFLOW = 0x030,
- OP_PADDING_TRBL = 0x031,
- OP_PAGE_BREAK_AFTER = 0x032,
- OP_PAGE_BREAK_BEFORE = 0x033,
- OP_PAGE_BREAK_INSIDE = 0x034,
- OP_PAUSE_AFTER = 0x035,
- OP_PAUSE_BEFORE = 0x036,
- OP_PITCH_RANGE = 0x037,
- OP_PITCH = 0x038,
- OP_PLAY_DURING = 0x039,
- OP_POSITION = 0x03a,
- OP_QUOTES = 0x03b,
- OP_RICHNESS = 0x03c,
- OP_RIGHT = 0x03d,
- OP_SPEAK_HEADER = 0x03e,
- OP_SPEAK_NUMERAL = 0x03f,
- OP_SPEAK_PUNCTUATION = 0x040,
- OP_SPEAK = 0x041,
- OP_SPEECH_RATE = 0x042,
- OP_STRESS = 0x043,
- OP_TABLE_LAYOUT = 0x044,
- OP_TEXT_ALIGN = 0x045,
- OP_TEXT_DECORATION = 0x046,
- OP_TEXT_INDENT = 0x047,
- OP_TEXT_TRANSFORM = 0x048,
- OP_TOP = 0x049,
- OP_UNICODE_BIDI = 0x04a,
- OP_VERTICAL_ALIGN = 0x04b,
- OP_VISIBILITY = 0x04c,
- OP_VOICE_FAMILY = 0x04d,
- OP_VOLUME = 0x04e,
- OP_WHITE_SPACE = 0x04f,
- OP_WIDOWS = 0x050,
- OP_WIDTH = 0x051,
- OP_WORD_SPACING = 0x052,
- OP_Z_INDEX = 0x053,
+ OP_BORDER_TOP_COLOR = 0x008,
+ OP_BORDER_RIGHT_COLOR = 0x009,
+ OP_BORDER_BOTTOM_COLOR = 0x00a,
+ OP_BORDER_LEFT_COLOR = 0x00b,
+ OP_BORDER_TOP_STYLE = 0x00c,
+ OP_BORDER_RIGHT_STYLE = 0x00d,
+ OP_BORDER_BOTTOM_STYLE = 0x00e,
+ OP_BORDER_LEFT_STYLE = 0x00f,
+ OP_BORDER_TOP_WIDTH = 0x010,
+ OP_BORDER_RIGHT_WIDTH = 0x011,
+ OP_BORDER_BOTTOM_WIDTH = 0x012,
+ OP_BORDER_LEFT_WIDTH = 0x013,
+ OP_BOTTOM = 0x014,
+ OP_CAPTION_SIDE = 0x015,
+ OP_CLEAR = 0x016,
+ OP_CLIP = 0x017,
+ OP_COLOR = 0x018,
+ OP_CONTENT = 0x019,
+ OP_COUNTER_INCREMENT = 0x01a,
+ OP_COUNTER_RESET = 0x01b,
+ OP_CUE_AFTER = 0x01c,
+ OP_CUE_BEFORE = 0x01d,
+ OP_CURSOR = 0x01e,
+ OP_DIRECTION = 0x01f,
+ OP_DISPLAY = 0x020,
+ OP_ELEVATION = 0x021,
+ OP_EMPTY_CELLS = 0x022,
+ OP_FLOAT = 0x023,
+ OP_FONT_FAMILY = 0x024,
+ OP_FONT_SIZE = 0x025,
+ OP_FONT_STYLE = 0x026,
+ OP_FONT_VARIANT = 0x027,
+ OP_FONT_WEIGHT = 0x028,
+ OP_HEIGHT = 0x029,
+ OP_LEFT = 0x02a,
+ OP_LETTER_SPACING = 0x02b,
+ OP_LINE_HEIGHT = 0x02c,
+ OP_LIST_STYLE_IMAGE = 0x02d,
+ OP_LIST_STYLE_POSITION = 0x02e,
+ OP_LIST_STYLE_TYPE = 0x02f,
+ OP_MARGIN_TOP = 0x030,
+ OP_MARGIN_RIGHT = 0x031,
+ OP_MARGIN_BOTTOM = 0x032,
+ OP_MARGIN_LEFT = 0x033,
+ OP_MAX_HEIGHT = 0x034,
+ OP_MAX_WIDTH = 0x035,
+ OP_MIN_HEIGHT = 0x036,
+ OP_MIN_WIDTH = 0x037,
+ OP_ORPHANS = 0x038,
+ OP_OUTLINE_COLOR = 0x039,
+ OP_OUTLINE_STYLE = 0x03a,
+ OP_OUTLINE_WIDTH = 0x03b,
+ OP_OVERFLOW = 0x03c,
+ OP_PADDING_TOP = 0x03d,
+ OP_PADDING_RIGHT = 0x03e,
+ OP_PADDING_BOTTOM = 0x03f,
+ OP_PADDING_LEFT = 0x040,
+ OP_PAGE_BREAK_AFTER = 0x041,
+ OP_PAGE_BREAK_BEFORE = 0x042,
+ OP_PAGE_BREAK_INSIDE = 0x043,
+ OP_PAUSE_AFTER = 0x044,
+ OP_PAUSE_BEFORE = 0x045,
+ OP_PITCH_RANGE = 0x046,
+ OP_PITCH = 0x047,
+ OP_PLAY_DURING = 0x048,
+ OP_POSITION = 0x049,
+ OP_QUOTES = 0x04a,
+ OP_RICHNESS = 0x04b,
+ OP_RIGHT = 0x04c,
+ OP_SPEAK_HEADER = 0x04d,
+ OP_SPEAK_NUMERAL = 0x04e,
+ OP_SPEAK_PUNCTUATION = 0x04f,
+ OP_SPEAK = 0x050,
+ OP_SPEECH_RATE = 0x051,
+ OP_STRESS = 0x052,
+ OP_TABLE_LAYOUT = 0x053,
+ OP_TEXT_ALIGN = 0x054,
+ OP_TEXT_DECORATION = 0x055,
+ OP_TEXT_INDENT = 0x056,
+ OP_TEXT_TRANSFORM = 0x057,
+ OP_TOP = 0x058,
+ OP_UNICODE_BIDI = 0x059,
+ OP_VERTICAL_ALIGN = 0x05a,
+ OP_VISIBILITY = 0x05b,
+ OP_VOICE_FAMILY = 0x05c,
+ OP_VOLUME = 0x05d,
+ OP_WHITE_SPACE = 0x05e,
+ OP_WIDOWS = 0x05f,
+ OP_WIDTH = 0x060,
+ OP_WORD_SPACING = 0x061,
+ OP_Z_INDEX = 0x062,
+
+ N_OPCODES = OP_Z_INDEX + 1
} opcode;
enum flag {
diff --git a/src/bytecode/opcodes.h b/src/bytecode/opcodes.h
index f82d129..eb68c48 100644
--- a/src/bytecode/opcodes.h
+++ b/src/bytecode/opcodes.h
@@ -10,13 +10,6 @@
#include <inttypes.h>
-enum side {
- SIDE_TOP = 0x0000,
- SIDE_RIGHT = 0x0100,
- SIDE_BOTTOM = 0x0200,
- SIDE_LEFT = 0x0300,
-};
-
enum op_azimuth {
AZIMUTH_ANGLE = 0x0080,
@@ -103,7 +96,6 @@ enum op_border_width {
BORDER_WIDTH_THICK = 0x0002,
};
-/** \todo merge top, right, left, bottom into one opcode and use side bits? */
enum op_bottom {
BOTTOM_SET = 0x0080,
BOTTOM_AUTO = 0x0000,
diff --git a/src/parse/properties.c b/src/parse/properties.c
index 67479dc..c333a17 100644
--- a/src/parse/properties.c
+++ b/src/parse/properties.c
@@ -322,19 +322,19 @@ static inline css_error parse_unit_specifier(css_language *c,
static inline css_error parse_border_side_color(css_language *c,
const parserutils_vector *vector, int *ctx,
- uint16_t side, css_style **result);
+ uint16_t op, css_style **result);
static inline css_error parse_border_side_style(css_language *c,
const parserutils_vector *vector, int *ctx,
- uint16_t side, css_style **result);
+ uint16_t op, css_style **result);
static inline css_error parse_border_side_width(css_language *c,
const parserutils_vector *vector, int *ctx,
- uint16_t side, css_style **result);
+ uint16_t op, css_style **result);
static inline css_error parse_margin_side(css_language *c,
const parserutils_vector *vector, int *ctx,
- uint16_t side, css_style **result);
+ uint16_t op, css_style **result);
static inline css_error parse_padding_side(css_language *c,
const parserutils_vector *vector, int *ctx,
- uint16_t side, css_style **result);
+ uint16_t op, css_style **result);
static inline css_error parse_list_style_type_value(css_language *c,
const css_token *token, uint16_t *value);
static inline css_error parse_content_list(css_language *c,
@@ -973,21 +973,24 @@ css_error parse_border_bottom_color(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_color(c, vector, ctx, SIDE_BOTTOM, result);
+ return parse_border_side_color(c, vector, ctx,
+ OP_BORDER_BOTTOM_COLOR, result);
}
css_error parse_border_bottom_style(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_style(c, vector, ctx, SIDE_BOTTOM, result);
+ return parse_border_side_style(c, vector, ctx,
+ OP_BORDER_BOTTOM_STYLE, result);
}
css_error parse_border_bottom_width(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_width(c, vector, ctx, SIDE_BOTTOM, result);
+ return parse_border_side_width(c, vector, ctx,
+ OP_BORDER_BOTTOM_WIDTH, result);
}
css_error parse_border_collapse(css_language *c,
@@ -1035,42 +1038,48 @@ css_error parse_border_left_color(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_color(c, vector, ctx, SIDE_LEFT, result);
+ return parse_border_side_color(c, vector, ctx,
+ OP_BORDER_LEFT_COLOR, result);
}
css_error parse_border_left_style(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_style(c, vector, ctx, SIDE_LEFT, result);
+ return parse_border_side_style(c, vector, ctx,
+ OP_BORDER_LEFT_STYLE, result);
}
css_error parse_border_left_width(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_width(c, vector, ctx, SIDE_LEFT, result);
+ return parse_border_side_width(c, vector, ctx,
+ OP_BORDER_LEFT_WIDTH, result);
}
css_error parse_border_right_color(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_color(c, vector, ctx, SIDE_RIGHT, result);
+ return parse_border_side_color(c, vector, ctx,
+ OP_BORDER_RIGHT_COLOR, result);
}
css_error parse_border_right_style(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_style(c, vector, ctx, SIDE_RIGHT, result);
+ return parse_border_side_style(c, vector, ctx,
+ OP_BORDER_RIGHT_STYLE, result);
}
css_error parse_border_right_width(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_width(c, vector, ctx, SIDE_RIGHT, result);
+ return parse_border_side_width(c, vector, ctx,
+ OP_BORDER_RIGHT_WIDTH, result);
}
css_error parse_border_spacing(css_language *c,
@@ -1175,21 +1184,24 @@ css_error parse_border_top_color(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_color(c, vector, ctx, SIDE_TOP, result);
+ return parse_border_side_color(c, vector, ctx,
+ OP_BORDER_TOP_COLOR, result);
}
css_error parse_border_top_style(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_style(c, vector, ctx, SIDE_TOP, result);
+ return parse_border_side_style(c, vector, ctx,
+ OP_BORDER_TOP_STYLE, result);
}
css_error parse_border_top_width(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_border_side_width(c, vector, ctx, SIDE_TOP, result);
+ return parse_border_side_width(c, vector, ctx,
+ OP_BORDER_TOP_WIDTH, result);
}
css_error parse_bottom(css_language *c,
@@ -3644,28 +3656,28 @@ css_error parse_margin_bottom(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_margin_side(c, vector, ctx, SIDE_BOTTOM, result);
+ return parse_margin_side(c, vector, ctx, OP_MARGIN_BOTTOM, result);
}
css_error parse_margin_left(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_margin_side(c, vector, ctx, SIDE_LEFT, result);
+ return parse_margin_side(c, vector, ctx, OP_MARGIN_LEFT, result);
}
css_error parse_margin_right(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_margin_side(c, vector, ctx, SIDE_RIGHT, result);
+ return parse_margin_side(c, vector, ctx, OP_MARGIN_RIGHT, result);
}
css_error parse_margin_top(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_margin_side(c, vector, ctx, SIDE_TOP, result);
+ return parse_margin_side(c, vector, ctx, OP_MARGIN_TOP, result);
}
css_error parse_max_height(css_language *c,
@@ -4062,28 +4074,22 @@ css_error parse_outline_style(css_language *c,
{
css_error error;
uint32_t opv;
- uint8_t flags;
uint16_t value;
- /* Fake as border-left-style */
- error = parse_border_side_style(c, vector, ctx, SIDE_LEFT, result);
+ /* Parse as a border style */
+ error = parse_border_side_style(c, vector, ctx,
+ OP_OUTLINE_STYLE, result);
if (error != CSS_OK)
return error;
- /* Then change the opcode to outline-style, and clear the side bits */
opv = *((uint32_t *) (*result)->bytecode);
- flags = getFlags(opv);
- value = getValue(opv) & ~SIDE_LEFT;
+ value = getValue(opv);
/* Hidden is invalid */
if (value == BORDER_STYLE_HIDDEN)
return CSS_INVALID;
- opv = buildOPV(OP_OUTLINE_STYLE, flags, value);
-
- *((uint32_t *) (*result)->bytecode) = opv;
-
return CSS_OK;
}
@@ -4091,27 +4097,9 @@ css_error parse_outline_width(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- css_error error;
- uint32_t opv;
- uint8_t flags;
- uint16_t value;
-
- /* Fake as border-left-width */
- error = parse_border_side_width(c, vector, ctx, SIDE_LEFT, result);
- if (error != CSS_OK)
- return error;
-
- /* Then change the opcode to outline-width, and clear the side bits */
- opv = *((uint32_t *) (*result)->bytecode);
-
- flags = getFlags(opv);
- value = getValue(opv) & ~SIDE_LEFT;
-
- opv = buildOPV(OP_OUTLINE_WIDTH, flags, value);
-
- *((uint32_t *) (*result)->bytecode) = opv;
-
- return CSS_OK;
+ /* Parse as border width */
+ return parse_border_side_width(c, vector, ctx,
+ OP_OUTLINE_WIDTH, result);
}
css_error parse_overflow(css_language *c,
@@ -4163,28 +4151,28 @@ css_error parse_padding_bottom(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_padding_side(c, vector, ctx, SIDE_BOTTOM, result);
+ return parse_padding_side(c, vector, ctx, OP_PADDING_BOTTOM, result);
}
css_error parse_padding_left(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_padding_side(c, vector, ctx, SIDE_LEFT, result);
+ return parse_padding_side(c, vector, ctx, OP_PADDING_LEFT, result);
}
css_error parse_padding_right(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_padding_side(c, vector, ctx, SIDE_RIGHT, result);
+ return parse_padding_side(c, vector, ctx, OP_PADDING_RIGHT, result);
}
css_error parse_padding_top(css_language *c,
const parserutils_vector *vector, int *ctx,
css_style **result)
{
- return parse_padding_side(c, vector, ctx, SIDE_TOP, result);
+ return parse_padding_side(c, vector, ctx, OP_PADDING_TOP, result);
}
css_error parse_page_break_after(css_language *c,
@@ -6827,13 +6815,13 @@ css_error parse_unit_specifier(css_language *c,
css_error parse_border_side_color(css_language *c,
const parserutils_vector *vector, int *ctx,
- uint16_t side, css_style **result)
+ uint16_t op, css_style **result)
{
css_error error;
const css_token *token;
+ uint32_t opv;
uint8_t flags = 0;
uint16_t value = 0;
- uint32_t opv;
uint32_t colour = 0;
uint32_t required_size;
@@ -6862,7 +6850,7 @@ css_error parse_border_side_color(css_language *c,
if (error != CSS_OK)
return error;
- opv = buildOPV(OP_BORDER_TRBL_COLOR, flags, value | side);
+ opv = buildOPV(op, flags, value);
required_size = sizeof(opv);
if ((flags & FLAG_INHERIT) == false && value == BORDER_COLOR_SET)
@@ -6885,7 +6873,7 @@ css_error parse_border_side_color(css_language *c,
css_error parse_border_side_style(css_language *c,
const parserutils_vector *vector, int *ctx,
- uint16_t side, css_style **result)
+ uint16_t op, css_style **result)
{
css_error error;
const css_token *ident;
@@ -6928,7 +6916,7 @@ css_error parse_border_side_style(css_language *c,
} else
return CSS_INVALID;
- opv = buildOPV(OP_BORDER_TRBL_STYLE, flags, value | side);
+ opv = buildOPV(op, flags, value);
/* Allocate result */
error = css_stylesheet_style_create(c->sheet, sizeof(opv), result);
@@ -6943,7 +6931,7 @@ css_error parse_border_side_style(css_language *c,
css_error parse_border_side_width(css_language *c,
const parserutils_vector *vector, int *ctx,
- uint16_t side, css_style **result)
+ uint16_t op, css_style **result)
{
css_error error;
const css_token *token;
@@ -6996,7 +6984,7 @@ css_error parse_border_side_width(css_language *c,
if (error != CSS_OK)
return error;
- opv = buildOPV(OP_BORDER_TRBL_WIDTH, flags, value | side);
+ opv = buildOPV(op, flags, value);
required_size = sizeof(opv);
if ((flags & FLAG_INHERIT) == false && value == BORDER_WIDTH_SET)
@@ -7021,7 +7009,7 @@ css_error parse_border_side_width(css_language *c,
css_error parse_margin_side(css_language *c,
const parserutils_vector *vector, int *ctx,
- uint16_t side, css_style **result)
+ uint16_t op, css_style **result)
{
css_error error;
const css_token *token;
@@ -7061,7 +7049,7 @@ css_error parse_margin_side(css_language *c,
if (error != CSS_OK)
return error;
- opv = buildOPV(OP_MARGIN_TRBL, flags, value | side);
+ opv = buildOPV(op, flags, value);
required_size = sizeof(opv);
if ((flags & FLAG_INHERIT) == false && value == MARGIN_SET)
@@ -7086,7 +7074,7 @@ css_error parse_margin_side(css_language *c,
css_error parse_padding_side(css_language *c,
const parserutils_vector *vector, int *ctx,
- uint16_t side, css_style **result)
+ uint16_t op, css_style **result)
{
css_error error;
const css_token *token;
@@ -7126,7 +7114,7 @@ css_error parse_padding_side(css_language *c,
if (error != CSS_OK)
return error;
- opv = buildOPV(OP_PADDING_TRBL, flags, value | side);
+ opv = buildOPV(op, flags, value);
required_size = sizeof(opv);
if ((flags & FLAG_INHERIT) == false && value == PADDING_SET)
diff --git a/src/select/properties.c b/src/select/properties.c
index 658f668..db3fca9 100644
--- a/src/select/properties.c
+++ b/src/select/properties.c
@@ -149,7 +149,7 @@ static css_error initial_border_spacing(css_computed_style *style)
return CSS_OK;
}
-static css_error cascade_border_color(css_select_ctx *ctx,
+static css_error cascade_border_top_color(css_select_ctx *ctx,
uint32_t opv, css_style *style, css_select_state *state)
{
UNUSED(ctx);
@@ -160,14 +160,14 @@ static css_error cascade_border_color(css_select_ctx *ctx,
return CSS_OK;
}
-static css_error initial_border_color(css_computed_style *style)
+static css_error initial_border_top_color(css_computed_style *style)
{
UNUSED(style);
return CSS_OK;
}
-static css_error cascade_border_style(css_select_ctx *ctx,
+static css_error cascade_border_right_color(css_select_ctx *ctx,
uint32_t opv, css_style *style, css_select_state *state)
{
UNUSED(ctx);
@@ -178,14 +178,14 @@ static css_error cascade_border_style(css_select_ctx *ctx,
return CSS_OK;
}
-static css_error initial_border_style(css_computed_style *style)
+static css_error initial_border_right_color(css_computed_style *style)
{
UNUSED(style);
return CSS_OK;
}
-static css_error cascade_border_width(css_select_ctx *ctx,
+static css_error cascade_border_bottom_color(css_select_ctx *ctx,
uint32_t opv, css_style *style, css_select_state *state)
{
UNUSED(ctx);
@@ -196,7 +196,169 @@ static css_error cascade_border_width(css_select_ctx *ctx,
return CSS_OK;
}
-static css_error initial_border_width(css_computed_style *style)
+static css_error initial_border_bottom_color(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_border_left_color(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_border_left_color(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_border_top_style(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_border_top_style(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_border_right_style(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_border_right_style(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_border_bottom_style(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_border_bottom_style(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_border_left_style(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_border_left_style(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_border_top_width(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_border_top_width(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_border_right_width(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_border_right_width(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_border_bottom_width(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_border_bottom_width(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_border_left_width(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_border_left_width(css_computed_style *style)
{
UNUSED(style);
@@ -707,7 +869,61 @@ static css_error initial_list_style_type(css_computed_style *style)
return CSS_OK;
}
-static css_error cascade_margin(css_select_ctx *ctx,
+static css_error cascade_margin_top(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_margin_top(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_margin_right(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_margin_right(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_margin_bottom(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_margin_bottom(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_margin_left(css_select_ctx *ctx,
uint32_t opv, css_style *style, css_select_state *state)
{
UNUSED(ctx);
@@ -718,7 +934,7 @@ static css_error cascade_margin(css_select_ctx *ctx,
return CSS_OK;
}
-static css_error initial_margin(css_computed_style *style)
+static css_error initial_margin_left(css_computed_style *style)
{
UNUSED(style);
@@ -887,7 +1103,61 @@ static css_error initial_overflow(css_computed_style *style)
return CSS_OK;
}
-static css_error cascade_padding(css_select_ctx *ctx,
+static css_error cascade_padding_top(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_padding_top(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_padding_right(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_padding_right(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_padding_bottom(css_select_ctx *ctx,
+ uint32_t opv, css_style *style, css_select_state *state)
+{
+ UNUSED(ctx);
+ UNUSED(opv);
+ UNUSED(style);
+ UNUSED(state);
+
+ return CSS_OK;
+}
+
+static css_error initial_padding_bottom(css_computed_style *style)
+{
+ UNUSED(style);
+
+ return CSS_OK;
+}
+
+static css_error cascade_padding_left(css_select_ctx *ctx,
uint32_t opv, css_style *style, css_select_state *state)
{
UNUSED(ctx);
@@ -898,7 +1168,7 @@ static css_error cascade_padding(css_select_ctx *ctx,
return CSS_OK;
}
-static css_error initial_padding(css_computed_style *style)
+static css_error initial_padding_left(css_computed_style *style)
{
UNUSED(style);
diff --git a/src/select/select.c b/src/select/select.c
index 21f3770..74db52f 100644
--- a/src/select/select.c
+++ b/src/select/select.c
@@ -50,14 +50,11 @@ typedef struct css_select_state {
uint32_t current_rule_index; /* Index of current rule */
uint32_t current_specificity; /* Specificity of current rule */
-/** \todo We need a better way of knowing the number of properties
- * Bytecode opcodes cover 84 properties, then there's a
- * further 15 generated from the side bits */
-/* Stylesheet identity is a monotonically increasing number based at 1 and
- * increasing by 1 for every applicable stylesheet encountered, including
- * imports. Imported sheets' identities are below that of the sheet that
- * imported them. */
-#define N_PROPS (99)
+ /* Stylesheet identity is a monotonically increasing number based at 1
+ * and increasing by 1 for every applicable stylesheet encountered,
+ * including imports. Imported sheets' identities are below that of
+ * the sheet that imported them.
+ */
struct {
uint32_t specificity; /* Specificity of property in result */
uint32_t sheet; /* Identity of applicable stylesheet */
@@ -65,8 +62,7 @@ typedef struct css_select_state {
origin : 2, /* Origin of property in result */
important : 1, /* Importance of property in result */
index : 16;/* Index of corresponding rule */
- } props[N_PROPS];
-#undef N_PROPS
+ } props[N_OPCODES];
} css_select_state;
static css_error select_from_sheet(css_select_ctx *ctx,
@@ -104,7 +100,7 @@ static struct prop_table {
css_error (*initial)(css_computed_style *style);
uint32_t inherited : 1;
-} properties[] = {
+} properties[N_OPCODES] = {
{ cascade_azimuth, initial_azimuth, 1 },
{ cascade_background_attachment, initial_background_attachment, 0 },
{ cascade_background_color, initial_background_color, 0 },
@@ -113,9 +109,18 @@ static struct prop_table {
{ cascade_background_repeat, initial_background_repeat, 0 },
{ cascade_border_collapse, initial_border_collapse, 1 },
{ cascade_border_spacing, initial_border_spacing, 1 },
- { cascade_border_color, initial_border_color, 0 },
- { cascade_border_style, initial_border_style, 0 },
- { cascade_border_width, initial_border_width, 0 },
+ { cascade_border_top_color, initial_border_top_color, 0 },
+ { cascade_border_right_color, initial_border_right_color, 0 },
+ { cascade_border_bottom_color, initial_border_bottom_color, 0 },
+ { cascade_border_left_color, initial_border_left_color, 0 },
+ { cascade_border_top_style, initial_border_top_style, 0 },
+ { cascade_border_right_style, initial_border_right_style, 0 },
+ { cascade_border_bottom_style, initial_border_bottom_style, 0 },
+ { cascade_border_left_style, initial_border_left_style, 0 },
+ { cascade_border_top_width, initial_border_top_width, 0 },
+ { cascade_border_right_width, initial_border_right_width, 0 },
+ { cascade_border_bottom_width, initial_border_bottom_width, 0 },
+ { cascade_border_left_width, initial_border_left_width, 0 },
{ cascade_bottom, initial_bottom, 0 },
{ cascade_caption_side, initial_caption_side, 1 },
{ cascade_clear, initial_clear, 0 },
@@ -144,7 +149,10 @@ static struct prop_table {
{ cascade_list_style_image, initial_list_style_image, 1 },
{ cascade_list_style_position, initial_list_style_position, 1 },
{ cascade_list_style_type, initial_list_style_type, 1 },
- { cascade_margin, initial_margin, 0 },
+ { cascade_margin_top, initial_margin_top, 0 },
+ { cascade_margin_right, initial_margin_right, 0 },
+ { cascade_margin_bottom, initial_margin_bottom, 0 },
+ { cascade_margin_left, initial_margin_left, 0 },
{ cascade_max_height, initial_max_height, 0 },
{ cascade_max_width, initial_max_width, 0 },
{ cascade_min_height, initial_min_height, 0 },
@@ -154,7 +162,10 @@ static struct prop_table {
{ cascade_outline_style, initial_outline_style, 0 },
{ cascade_outline_width, initial_outline_width, 0 },
{ cascade_overflow, initial_overflow, 0 },
- { cascade_padding, initial_padding, 0 },
+ { cascade_padding_top, initial_padding_top, 0 },
+ { cascade_padding_right, initial_padding_right, 0 },
+ { cascade_padding_bottom, initial_padding_bottom, 0 },
+ { cascade_padding_left, initial_padding_left, 0 },
{ cascade_page_break_after, initial_page_break_after, 0 },
{ cascade_page_break_before, initial_page_break_before, 0 },
{ cascade_page_break_inside, initial_page_break_inside, 1 },
diff --git a/test/data/parse/colours.dat b/test/data/parse/colours.dat
index 6a66205..a5d158c 100644
--- a/test/data/parse/colours.dat
+++ b/test/data/parse/colours.dat
@@ -5,7 +5,7 @@
##errors
##expected
#| 1 *
-#| 0x0200000f 0xff000000
+#| 0x02000018 0xff000000
##reset
#data
@@ -13,7 +13,7 @@
#errors
#expected
| 1 *
-| 0x0200000f 0xff000000
+| 0x02000018 0xff000000
#reset
#data
@@ -21,7 +21,7 @@
#errors
#expected
| 1 *
-| 0x0200000f 0xff000000
+| 0x02000018 0xff000000
#reset
#data
@@ -29,7 +29,7 @@
#errors
#expected
| 1 *
-| 0x0200000f 0xff000000
+| 0x02000018 0xff000000
#reset
#data
@@ -37,7 +37,7 @@
#errors
#expected
| 1 *
-| 0x0200000f 0xff000000
+| 0x02000018 0xff000000
#reset
## Out-of-range rgb() parameters
@@ -47,7 +47,7 @@
#errors
#expected
| 1 *
-| 0x0200000f 0xff000000
+| 0x02000018 0xff000000
#reset
#data
@@ -55,7 +55,7 @@
#errors
#expected
| 1 *
-| 0x0200000f 0x00000000
+| 0x02000018 0x00000000
#reset
#data
@@ -63,7 +63,7 @@
#errors
#expected
| 1 *
-| 0x0200000f 0xff000000
+| 0x02000018 0xff000000
#reset
#data
@@ -71,6 +71,6 @@
#errors
#expected
| 1 *
-| 0x0200000f 0x00000000
+| 0x02000018 0x00000000
#reset
diff --git a/test/data/parse/properties.dat b/test/data/parse/properties.dat
index 52befc2..8869aba 100644
--- a/test/data/parse/properties.dat
+++ b/test/data/parse/properties.dat
@@ -392,7 +392,10 @@
#reset
##
-## 08 - border-{top,right,bottom,left}-color
+## 08 - border-top-color
+## 09 - border-right-color
+## 0a - border-bottom-color
+## 0b - border-left-color
##
#data
@@ -408,7 +411,7 @@
#errors
#expected
| 1 *
-| 0x06000008 0x8822bb00
+| 0x02000009 0x8822bb00
#reset
#data
@@ -416,7 +419,7 @@
#errors
#expected
| 1 *
-| 0x0a000008 0xbbbbcc00
+| 0x0200000a 0xbbbbcc00
#reset
#data
@@ -424,11 +427,14 @@
#errors
#expected
| 1 *
-| 0x0c000008
+| 0x0000000b
#reset
##
-## 09 - border-{top,right,bottom,left}-style
+## 0c - border-top-style
+## 0d - border-right-style
+## 0e - border-bottom-style
+## 0f - border-left-style
##
#data
@@ -436,7 +442,7 @@
#errors
#expected
| 1 *
-| 0x00000009
+| 0x0000000c
#reset
#data
@@ -444,7 +450,7 @@
#errors
#expected
| 1 *
-| 0x00040009
+| 0x0004000c
#reset
#data
@@ -452,7 +458,7 @@
#errors
#expected
| 1 *
-| 0x04080009
+| 0x0008000d
#reset
#data
@@ -460,7 +466,7 @@
#errors
#expected
| 1 *
-| 0x040c0009
+| 0x000c000d
#reset
#data
@@ -468,7 +474,7 @@
#errors
#expected
| 1 *
-| 0x08100009
+| 0x0010000e
#reset
#data
@@ -476,7 +482,7 @@
#errors
#expected
| 1 *
-| 0x08140009
+| 0x0014000e
#reset
#data
@@ -484,7 +490,7 @@
#errors
#expected
| 1 *
-| 0x0c180009
+| 0x0018000f
#reset
#data
@@ -492,7 +498,7 @@
#errors
#expected
| 1 *
-| 0x0c1c0009
+| 0x001c000f
#reset
#data
@@ -500,7 +506,7 @@
#errors
#expected
| 1 *
-| 0x00200009
+| 0x0020000c
#reset
#data
@@ -508,11 +514,14 @@
#errors
#expected
| 1 *
-| 0x00240009
+| 0x0024000c
#reset
##
-## 0a - border-{top,right,bottom,left}-width
+## 10 - border-top-width
+## 11 - border-right-width
+## 12 - border-bottom-width
+## 13 - border-left-width
##
#data
@@ -520,7 +529,7 @@
#errors
#expected
| 1 *
-| 0x0000000a
+| 0x00000010
#reset
#data
@@ -528,7 +537,7 @@
#errors
#expected
| 1 *
-| 0x0404000a
+| 0x00040011
#reset
#data
@@ -536,7 +545,7 @@
#errors
#expected
| 1 *
-| 0x0808000a
+| 0x00080012
#reset
#data
@@ -544,7 +553,7 @@
#errors
#expected
| 1 *
-| 0x0e00000a 0x00000000 0x00000000
+| 0x02000013 0x00000000 0x00000000
#reset
#data
@@ -552,11 +561,11 @@
#errors
#expected
| 1 *
-| 0x0200000a 0x00000800 0x00000000
+| 0x02000010 0x00000800 0x00000000
#reset
##
-## 0b - bottom
+## 14 - bottom
##
#data
@@ -564,7 +573,7 @@
#errors
#expected
| 1 *
-| 0x0000000b
+| 0x00000014
#reset
#data
@@ -572,7 +581,7 @@
#errors
#expected
| 1 *
-| 0x0200000b 0x00000300 0x00000002
+| 0x02000014 0x00000300 0x00000002
#reset
#data
@@ -580,11 +589,11 @@
#errors
#expected
| 1 *
-| 0x0200000b 0x00010aab 0x00000100
+| 0x02000014 0x00010aab 0x00000100
#reset
##
-## 0c - caption-side
+## 15 - caption-side
##
#data
@@ -592,7 +601,7 @@
#errors
#expected
| 1 *
-| 0x0000000c
+| 0x00000015
#reset
#data
@@ -600,11 +609,11 @@
#errors
#expected
| 1 *
-| 0x0004000c
+| 0x00040015
#reset
##
-## 0d - clear
+## 16 - clear
##
#data
@@ -612,7 +621,7 @@
#errors
#expected
| 1 *
-| 0x0000000d
+| 0x00000016
#reset
#data
@@ -620,7 +629,7 @@
#errors
#expected
| 1 *
-| 0x0004000d
+| 0x00040016
#reset
#data
@@ -628,7 +637,7 @@
#errors
#expected
| 1 *
-| 0x0008000d
+| 0x00080016
#reset
#data
@@ -636,11 +645,11 @@
#errors
#expected
| 1 *
-| 0x000c000d
+| 0x000c0016
#reset
##
-## 0e - clip
+## 17 - clip
##
#data
@@ -648,7 +657,7 @@
#errors
#expected
| 1 *
-| 0x0000000e
+| 0x00000017
#reset
#data
@@ -656,7 +665,7 @@
#errors
#expected
| 1 *
-| 0x02c0000e 0x00002800 0x00000000 0x00002800 0x00000000
+| 0x02c00017 0x00002800 0x00000000 0x00002800 0x00000000
#reset
#data
@@ -664,7 +673,7 @@
#errors
#expected
| 1 *
-| 0x03e0000e
+| 0x03e00017
#reset
#data
@@ -672,7 +681,7 @@
#errors
#expected
| 1 *
-| 0x0200000e 0x00000400 0x00000000 0x00000800 0x00000000 0x00000c00 0x00000000 0x00001000 0x00000000
+| 0x02000017 0x00000400 0x00000000 0x00000800 0x00000000 0x00000c00 0x00000000 0x00001000 0x00000000
#reset
#data
@@ -680,11 +689,11 @@
#errors
#expected
| 1 *
-| 0x0320000e 0x00000400 0x00000002 0x00000400 0x00000002
+| 0x03200017 0x00000400 0x00000002 0x00000400 0x00000002
#reset
##
-## 0f - color
+## 18 - color
##
## more fully tested in colours.dat
@@ -694,11 +703,11 @@
#errors
#expected
| 1 *
-| 0x0200000f 0xbbbbcc00
+| 0x02000018 0xbbbbcc00
#reset
##
-##10 - content
+## 19 - content
##
#data
@@ -706,7 +715,7 @@ p:after { content: normal; }
#errors
#expected
| 1 p:after
-| 0x00000010
+| 0x00000019
#reset
#data
@@ -714,7 +723,7 @@ p:after { content: none; }
#errors
#expected
| 1 p:after
-| 0x00040010
+| 0x00040019
#reset
#data
@@ -722,7 +731,7 @@ p:before { content: open-quote; }
#errors
#expected
| 1 p:before
-| 0x00080010 0x00000000
+| 0x00080019 0x00000000
#reset
#data
@@ -730,7 +739,7 @@ p:after { content: close-quote; }
#errors
#expected
| 1 p:after
-| 0x000c0010 0x00000000
+| 0x000c0019 0x00000000
#reset
#data
@@ -738,7 +747,7 @@ p:before { content: no-open-quote; }
#errors
#expected
| 1 p:before
-| 0x00100010 0x00000000
+| 0x00100019 0x00000000
#reset
#data
@@ -746,7 +755,7 @@ p:after { content: no-close-quote; }
#errors
#expected
| 1 p:after
-| 0x00140010 0x00000000
+| 0x00140019 0x00000000
#reset
#data
@@ -754,7 +763,7 @@ a:after { content: " a"; }
#errors
#expected
| 1 a:after
-| 0x02000010 PTR( a) 0x00000000
+| 0x02000019 PTR( a) 0x00000000
#reset
#data
@@ -762,7 +771,7 @@ p:after { content: url("http://www.netsurf-browser.org/"); }
#errors
#expected
| 1 p:after
-| 0x02040010 PTR(http://www.netsurf-browser.org/) 0x00000000
+| 0x02040019 PTR(http://www.netsurf-browser.org/) 0x00000000
#reset
#data
@@ -770,7 +779,7 @@ p:after { content: counter(n); }
#errors
#expected
| 1 p:after
-| 0x0e080010 PTR(n) 0x00000000
+| 0x0e080019 PTR(n) 0x00000000
#reset
#data
@@ -778,7 +787,7 @@ p:after { content: counter(n, upper-roman); }
#errors
#expected
| 1 p:after
-| 0x1a080010 PTR(n) 0x00000000
+| 0x1a080019 PTR(n) 0x00000000
#reset
#data
@@ -786,7 +795,7 @@ p:after { content: counters(n, "."); }
#errors
#expected
| 1 p:after
-| 0x0e0c0010 PTR(n) PTR(.) 0x00000000
+| 0x0e0c0019 PTR(n) PTR(.) 0x00000000
#reset
#data
@@ -794,7 +803,7 @@ p:after { content: counters(n, '.', disc); }
#errors
#expected
| 1 p:after
-| 0x020c0010 PTR(n) PTR(.) 0x00000000
+| 0x020c0019 PTR(n) PTR(.) 0x00000000
#reset
#data
@@ -802,7 +811,7 @@ p:after { content: attr(name); }
#errors
#expected
| 1 p:after
-| 0x02100010 PTR(name) 0x00000000
+| 0x02100019 PTR(name) 0x00000000
#reset
#data
@@ -810,7 +819,7 @@ h2:before { content: "Chapter " counter(chapters) ': \''; }
#errors
#expected
| 1 h2:before
-| 0x02000010 PTR(Chapter ) 0x00000382 PTR(chapters) 0x00000080 PTR(: ') 0x00000000
+| 0x02000019 PTR(Chapter ) 0x00000382 PTR(chapters) 0x00000080 PTR(: ') 0x00000000
#reset
#data
@@ -818,11 +827,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 p:before
-| 00080010 0x00000081 PTR(http://picodrive.acornarcade.com/) 0x00000080 PTR( : ) 0x00000084 PTR(name) 0x00000080 PTR( ) 0x00000382 PTR(x) 0x00000080 PTR(.) 0x00000383 PTR(y) PTR(.) 0x00000003 0x00000000
+| 0x00080019 0x00000081 PTR(http://picodrive.acornarcade.com/) 0x00000080 PTR( : ) 0x00000084 PTR(name) 0x00000080 PTR( ) 0x00000382 PTR(x) 0x00000080 PTR(.) 0x00000383 PTR(y) PTR(.) 0x00000003 0x00000000
#reset
##
-## 11 - counter-increment
+## 1a - counter-increment
##
#data
@@ -830,7 +839,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000011
+| 0x0000001a
#reset
#data
@@ -838,7 +847,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000011 PTR(a) 0x00000400 0x00000000
+| 0x0200001a PTR(a) 0x00000400 0x00000000
#reset
#data
@@ -846,7 +855,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000011 PTR(moose) 0x00002800 0x00000000
+| 0x0200001a PTR(moose) 0x00002800 0x00000000
#reset
#data
@@ -854,7 +863,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000011 PTR(a) 0x00000400 0x00000080 PTR(moose) 0x00002800 0x00000000
+| 0x0200001a PTR(a) 0x00000400 0x00000080 PTR(moose) 0x00002800 0x00000000
#reset
#data
@@ -862,7 +871,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000011 PTR(a) 0x00000800 0x00000080 PTR(moose) 0x00000400 0x00000000
+| 0x0200001a PTR(a) 0x00000800 0x00000080 PTR(moose) 0x00000400 0x00000000
#reset
#data
@@ -870,11 +879,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000011 PTR(moose) 0x00000400 0x00000080 PTR(a) 0x00000400 0x00000000
+| 0x0200001a PTR(moose) 0x00000400 0x00000080 PTR(a) 0x00000400 0x00000000
#reset
##
-## 12 - counter-reset
+## 1b - counter-reset
##
#data
@@ -882,7 +891,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000012
+| 0x0000001b
#reset
#data
@@ -890,7 +899,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000012 PTR(a) 0x00000000 0x00000000
+| 0x0200001b PTR(a) 0x00000000 0x00000000
#reset
#data
@@ -898,7 +907,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000012 PTR(moose) 0x00002800 0x00000000
+| 0x0200001b PTR(moose) 0x00002800 0x00000000
#reset
#data
@@ -906,7 +915,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000012 PTR(a) 0x00000000 0x00000080 PTR(moose) 0x00002800 0x00000000
+| 0x0200001b PTR(a) 0x00000000 0x00000080 PTR(moose) 0x00002800 0x00000000
#reset
#data
@@ -914,7 +923,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000012 PTR(a) 0x00000800 0x00000080 PTR(moose) 0x00000000 0x00000000
+| 0x0200001b PTR(a) 0x00000800 0x00000080 PTR(moose) 0x00000000 0x00000000
#reset
#data
@@ -922,11 +931,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000012 PTR(moose) 0x00000000 0x00000080 PTR(a) 0x00000000 0x00000000
+| 0x0200001b PTR(moose) 0x00000000 0x00000080 PTR(a) 0x00000000 0x00000000
#reset
##
-## 13 - cue-after
+## 1c - cue-after
##
#data
@@ -934,7 +943,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000013
+| 0x0000001c
#reset
#data
@@ -942,11 +951,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000013 PTR(sonic_boom.wav)
+| 0x0200001c PTR(sonic_boom.wav)
#reset
##
-## 14 - cue-before
+## 1d - cue-before
##
#data
@@ -954,7 +963,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000014
+| 0x0000001d
#reset
#data
@@ -962,11 +971,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000014 PTR(sonic_boom.wav)
+| 0x0200001d PTR(sonic_boom.wav)
#reset
##
-## 15 - cursor
+## 1e - cursor
##
#data
@@ -974,7 +983,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000015
+| 0x0000001e
#reset
#data
@@ -982,7 +991,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040015
+| 0x0004001e
#reset
#data
@@ -990,7 +999,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080015
+| 0x0008001e
#reset
#data
@@ -998,7 +1007,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0015
+| 0x000c001e
#reset
#data
@@ -1006,7 +1015,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00100015
+| 0x0010001e
#reset
#data
@@ -1014,7 +1023,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00140015
+| 0x0014001e
#reset
#data
@@ -1022,7 +1031,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00180015
+| 0x0018001e
#reset
#data
@@ -1030,7 +1039,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x001c0015
+| 0x001c001e
#reset
#data
@@ -1038,7 +1047,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00200015
+| 0x0020001e
#reset
#data
@@ -1046,7 +1055,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00240015
+| 0x0024001e
#reset
#data
@@ -1054,7 +1063,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00280015
+| 0x0028001e
#reset
#data
@@ -1062,7 +1071,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x002c0015
+| 0x002c001e
#reset
#data
@@ -1070,7 +1079,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00300015
+| 0x0030001e
#reset
#data
@@ -1078,7 +1087,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00340015
+| 0x0034001e
#reset
#data
@@ -1086,7 +1095,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00380015
+| 0x0038001e
#reset
#data
@@ -1094,7 +1103,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x003c0015
+| 0x003c001e
#reset
#data
@@ -1102,7 +1111,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00400015
+| 0x0040001e
#reset
#data
@@ -1110,7 +1119,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000015 PTR(cursor.png) 0x00000003
+| 0x0200001e PTR(cursor.png) 0x00000003
#reset
#data
@@ -1118,11 +1127,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000015 PTR(cursor.svg) 0x00000080 PTR(cursor.png) 0x00000003
+| 0x0200001e PTR(cursor.svg) 0x00000080 PTR(cursor.png) 0x00000003
#reset
##
-## 16 - direction
+## 1f - direction
##
#data
@@ -1130,7 +1139,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000016
+| 0x0000001f
#reset
#data
@@ -1138,11 +1147,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040016
+| 0x0004001f
#reset
##
-## 17 - display
+## 20 - display
##
#data
@@ -1150,7 +1159,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000017
+| 0x00000020
#reset
#data
@@ -1158,7 +1167,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040017
+| 0x00040020
#reset
#data
@@ -1166,7 +1175,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080017
+| 0x00080020
#reset
#data
@@ -1174,7 +1183,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0017
+| 0x000c0020
#reset
#data
@@ -1182,7 +1191,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00100017
+| 0x00100020
#reset
#data
@@ -1190,7 +1199,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00140017
+| 0x00140020
#reset
#data
@@ -1198,7 +1207,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00180017
+| 0x00180020
#reset
#data
@@ -1206,7 +1215,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x001c0017
+| 0x001c0020
#reset
#data
@@ -1214,7 +1223,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00200017
+| 0x00200020
#reset
#data
@@ -1222,7 +1231,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00240017
+| 0x00240020
#reset
#data
@@ -1230,7 +1239,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00280017
+| 0x00280020
#reset
#data
@@ -1238,7 +1247,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x002c0017
+| 0x002c0020
#reset
#data
@@ -1246,7 +1255,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00300017
+| 0x00300020
#reset
#data
@@ -1254,7 +1263,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00340017
+| 0x00340020
#reset
#data
@@ -1262,7 +1271,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00380017
+| 0x00380020
#reset
#data
@@ -1270,11 +1279,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x003c0017
+| 0x003c0020
#reset
##
-## 18 - elevation
+## 21 - elevation
##
#data
@@ -1282,7 +1291,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000018
+| 0x00000021
#reset
#data
@@ -1290,7 +1299,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040018
+| 0x00040021
#reset
#data
@@ -1298,7 +1307,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080018
+| 0x00080021
#reset
#data
@@ -1306,7 +1315,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0018
+| 0x000c0021
#reset
#data
@@ -1314,7 +1323,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00100018
+| 0x00100021
#reset
#data
@@ -1322,7 +1331,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000018 0x0000b400 0x00000200
+| 0x02000021 0x0000b400 0x00000200
#reset
#data
@@ -1330,7 +1339,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000018 0xffff4c00 0x00000200
+| 0x02000021 0xffff4c00 0x00000200
#reset
#data
@@ -1338,7 +1347,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000018 0x0000c800 0x00000201
+| 0x02000021 0x0000c800 0x00000201
#reset
#data
@@ -1346,11 +1355,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000018 0x00000324 0x00000202
+| 0x02000021 0x00000324 0x00000202
#reset
##
-## 19 - empty-cells
+## 22 - empty-cells
##
#data
@@ -1358,7 +1367,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000019
+| 0x00000022
#reset
#data
@@ -1366,11 +1375,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040019
+| 0x00040022
#reset
##
-## 1a - float
+## 23 - float
##
#data
@@ -1378,7 +1387,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000001a
+| 0x00000023
#reset
#data
@@ -1386,7 +1395,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004001a
+| 0x00040023
#reset
#data
@@ -1394,11 +1403,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008001a
+| 0x00080023
#reset
##
-## 1b - font-family
+## 24 - font-family
##
#data
@@ -1406,7 +1415,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004001b 0x00000000
+| 0x00040024 0x00000000
#reset
#data
@@ -1414,7 +1423,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008001b 0x00000000
+| 0x00080024 0x00000000
#reset
#data
@@ -1422,7 +1431,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c001b 0x00000000
+| 0x000c0024 0x00000000
#reset
#data
@@ -1430,7 +1439,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0010001b 0x00000000
+| 0x00100024 0x00000000
#reset
#data
@@ -1438,7 +1447,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0014001b 0x00000000
+| 0x00140024 0x00000000
#reset
#data
@@ -1446,7 +1455,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204001b PTR(Homerton) 0x00000000
+| 0x02040024 PTR(Homerton) 0x00000000
#reset
#data
@@ -1454,7 +1463,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200001b PTR(Oxford) 0x00000000
+| 0x02000024 PTR(Oxford) 0x00000000
#reset
#data
@@ -1462,7 +1471,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200001b PTR(Oxford) 0x00000080 PTR(Optima) 0x00000080 PTR(Zapf Humanist) 0x00000002 0x00000000
+| 0x02000024 PTR(Oxford) 0x00000080 PTR(Optima) 0x00000080 PTR(Zapf Humanist) 0x00000002 0x00000000
#reset
#data
@@ -1470,11 +1479,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200001b PTR(Trinity) 0x00000001 0x00000080 PTR(Homerton) 0x00000002 0x00000000
+| 0x02000024 PTR(Trinity) 0x00000001 0x00000080 PTR(Homerton) 0x00000002 0x00000000
#reset
##
-## 1c - font-size
+## 25 - font-size
##
#data
@@ -1482,7 +1491,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000001c
+| 0x00000025
#reset
#data
@@ -1490,7 +1499,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004001c
+| 0x00040025
#reset
#data
@@ -1498,7 +1507,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008001c
+| 0x00080025
#reset
#data
@@ -1506,7 +1515,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c001c
+| 0x000c0025
#reset
#data
@@ -1514,7 +1523,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0010001c
+| 0x00100025
#reset
#data
@@ -1522,7 +1531,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0014001c
+| 0x00140025
#reset
#data
@@ -1530,7 +1539,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0018001c
+| 0x00180025
#reset
#data
@@ -1538,7 +1547,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x001c001c
+| 0x001c0025
#reset
#data
@@ -1546,7 +1555,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0020001c
+| 0x00200025
#reset
#data
@@ -1554,7 +1563,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200001c 0x00003000 0x00000006
+| 0x02000025 0x00003000 0x00000006
#reset
#data
@@ -1562,7 +1571,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200001c 0x00019000 0x00000000
+| 0x02000025 0x00019000 0x00000000
#reset
#data
@@ -1570,11 +1579,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200001c 0x0001e000 0x00000100
+| 0x02000025 0x0001e000 0x00000100
#reset
##
-## 1d - font-style
+## 26 - font-style
##
#data
@@ -1582,7 +1591,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000001d
+| 0x00000026
#reset
#data
@@ -1590,7 +1599,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004001d
+| 0x00040026
#reset
#data
@@ -1598,11 +1607,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008001d
+| 0x00080026
#reset
##
-## 1e - font-variant
+## 27 - font-variant
##
#data
@@ -1610,7 +1619,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000001e
+| 0x00000027
#reset
#data
@@ -1618,11 +1627,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004001e
+| 0x00040027
#reset
##
-## 1f - font-weight
+## 28 - font-weight
##
#data
@@ -1630,7 +1639,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000001f
+| 0x00000028
#reset
#data
@@ -1638,7 +1647,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004001f
+| 0x00040028
#reset
#data
@@ -1646,7 +1655,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008001f
+| 0x00080028
#reset
#data
@@ -1654,7 +1663,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c001f
+| 0x000c0028
#reset
#data
@@ -1662,7 +1671,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0010001f
+| 0x00100028
#reset
#data
@@ -1670,7 +1679,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0014001f
+| 0x00140028
#reset
#data
@@ -1678,7 +1687,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0018001f
+| 0x00180028
#reset
#data
@@ -1686,7 +1695,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x001c001f
+| 0x001c0028
#reset
#data
@@ -1694,7 +1703,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0020001f
+| 0x00200028
#reset
#data
@@ -1702,7 +1711,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0024001f
+| 0x00240028
#reset
#data
@@ -1710,7 +1719,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0028001f
+| 0x00280028
#reset
#data
@@ -1718,7 +1727,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x002c001f
+| 0x002c0028
#reset
#data
@@ -1726,11 +1735,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0030001f
+| 0x00300028
#reset
##
-## 20 - height
+## 29 - height
##
#data
@@ -1738,7 +1747,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000020
+| 0x00000029
#reset
#data
@@ -1746,7 +1755,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000020 0x061a7fff 0x00000001
+| 0x02000029 0x061a7fff 0x00000001
#reset
#data
@@ -1754,11 +1763,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000020 0x00010aab 0x00000100
+| 0x02000029 0x00010aab 0x00000100
#reset
##
-## 21 - left
+## 2a - left
##
#data
@@ -1766,7 +1775,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000021
+| 0x0000002a
#reset
#data
@@ -1774,7 +1783,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000021 0x00000200 0x00000003
+| 0x0200002a 0x00000200 0x00000003
#reset
#data
@@ -1782,11 +1791,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000021 0x00001000 0x00000100
+| 0x0200002a 0x00001000 0x00000100
#reset
##
-## 22 - letter-spacing
+## 2b - letter-spacing
##
#data
@@ -1794,7 +1803,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000022
+| 0x0000002b
#reset
#data
@@ -1802,11 +1811,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000022 0x00000152 0x00000004
+| 0x0200002b 0x00000152 0x00000004
#reset
##
-## 23 - line-height
+## 2c - line-height
##
#data
@@ -1814,7 +1823,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000023
+| 0x0000002c
#reset
#data
@@ -1822,7 +1831,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000023 0x000004cd
+| 0x0200002c 0x000004cd
#reset
#data
@@ -1830,7 +1839,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02040023 0x00003000 0x00000005
+| 0x0204002c 0x00003000 0x00000005
#reset
#data
@@ -1838,11 +1847,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02040023 0x00008552 0x00000100
+| 0x0204002c 0x00008552 0x00000100
#reset
##
-## 24 - list-style-image
+## 2d - list-style-image
##
#data
@@ -1850,7 +1859,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000024
+| 0x0000002d
#reset
#data
@@ -1858,11 +1867,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000024 PTR(http://www.netsurf-browser.org/bullet.png)
+| 0x0200002d PTR(http://www.netsurf-browser.org/bullet.png)
#reset
##
-## 25 - list-style-position
+## 2e - list-style-position
##
#data
@@ -1870,7 +1879,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000025
+| 0x0000002e
#reset
#data
@@ -1878,11 +1887,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040025
+| 0x0004002e
#reset
##
-## 26 - list-style-type
+## 2f - list-style-type
##
#data
@@ -1890,7 +1899,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000026
+| 0x0000002f
#reset
#data
@@ -1898,7 +1907,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040026
+| 0x0004002f
#reset
#data
@@ -1906,7 +1915,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080026
+| 0x0008002f
#reset
#data
@@ -1914,7 +1923,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0026
+| 0x000c002f
#reset
#data
@@ -1922,7 +1931,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00100026
+| 0x0010002f
#reset
#data
@@ -1930,7 +1939,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00140026
+| 0x0014002f
#reset
#data
@@ -1938,7 +1947,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00180026
+| 0x0018002f
#reset
#data
@@ -1946,7 +1955,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x001c0026
+| 0x001c002f
#reset
#data
@@ -1954,7 +1963,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00200026
+| 0x0020002f
#reset
#data
@@ -1962,7 +1971,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00240026
+| 0x0024002f
#reset
#data
@@ -1970,7 +1979,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00280026
+| 0x0028002f
#reset
#data
@@ -1978,7 +1987,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x002c0026
+| 0x002c002f
#reset
#data
@@ -1986,7 +1995,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00300026
+| 0x0030002f
#reset
#data
@@ -1994,7 +2003,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00340026
+| 0x0034002f
#reset
#data
@@ -2002,11 +2011,14 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00380026
+| 0x0038002f
#reset
##
-## 27 - margin-{top,right,bottom,left}
+## 30 - margin-top
+## 31 - margin-right
+## 32 - margin-bottom
+## 33 - margin-left
##
#data
@@ -2014,7 +2026,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000027
+| 0x00000030
#reset
#data
@@ -2022,7 +2034,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x04000027
+| 0x00000031
#reset
#data
@@ -2030,7 +2042,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x08000027
+| 0x00000032
#reset
#data
@@ -2038,7 +2050,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0c000027
+| 0x00000033
#reset
#data
@@ -2046,7 +2058,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000027 0x00002800 0x00000007
+| 0x02000030 0x00002800 0x00000007
#reset
#data
@@ -2054,7 +2066,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x06000027 0x00000400 0x00000000
+| 0x02000031 0x00000400 0x00000000
#reset
#data
@@ -2062,7 +2074,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0a000027 0x00000800 0x00000002
+| 0x02000032 0x00000800 0x00000002
#reset
#data
@@ -2070,11 +2082,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0e000027 0x00001400 0x00000100
+| 0x02000033 0x00001400 0x00000100
#reset
##
-## 28 - max-height
+## 34 - max-height
##
#data
@@ -2082,7 +2094,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000028
+| 0x00000034
#reset
#data
@@ -2090,7 +2102,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000028 0x00019000 0x00000000
+| 0x02000034 0x00019000 0x00000000
#reset
#data
@@ -2098,11 +2110,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000028 0x0000c800 0x00000100
+| 0x02000034 0x0000c800 0x00000100
#reset
##
-## 29 - max-width
+## 35 - max-width
##
#data
@@ -2110,7 +2122,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000029
+| 0x00000035
#reset
#data
@@ -2118,7 +2130,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000029 0x00019000 0x00000000
+| 0x02000035 0x00019000 0x00000000
#reset
#data
@@ -2126,11 +2138,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000029 0x0000c800 0x00000100
+| 0x02000035 0x0000c800 0x00000100
#reset
##
-## 2a - min-height
+## 36 - min-height
##
#data
@@ -2138,7 +2150,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002a 0x00019000 0x00000000
+| 0x02000036 0x00019000 0x00000000
#reset
#data
@@ -2146,11 +2158,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002a 0x0000c800 0x00000100
+| 0x02000036 0x0000c800 0x00000100
#reset
##
-## 2b - min-width
+## 37 - min-width
##
#data
@@ -2158,7 +2170,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002b 0x00019000 0x00000000
+| 0x02000037 0x00019000 0x00000000
#reset
#data
@@ -2166,11 +2178,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002b 0x0000c800 0x00000100
+| 0x02000037 0x0000c800 0x00000100
#reset
##
-## 2c - orphans
+## 38 - orphans
##
#data
@@ -2178,11 +2190,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002c 0x00000c00
+| 0x02000038 0x00000c00
#reset
##
-## 2d - outline-color
+## 39 - outline-color
##
#data
@@ -2190,7 +2202,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000002d
+| 0x00000039
#reset
#data
@@ -2198,11 +2210,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002d 0xbbbbcc00
+| 0x02000039 0xbbbbcc00
#reset
##
-## 2e - outline-style
+## 3a - outline-style
##
#data
@@ -2210,7 +2222,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000002e
+| 0x0000003a
#reset
#data
@@ -2218,7 +2230,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008002e
+| 0x0008003a
#reset
#data
@@ -2226,7 +2238,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c002e
+| 0x000c003a
#reset
#data
@@ -2234,7 +2246,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0010002e
+| 0x0010003a
#reset
#data
@@ -2242,7 +2254,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0014002e
+| 0x0014003a
#reset
#data
@@ -2250,7 +2262,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0018002e
+| 0x0018003a
#reset
#data
@@ -2258,7 +2270,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x001c002e
+| 0x001c003a
#reset
#data
@@ -2266,7 +2278,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0020002e
+| 0x0020003a
#reset
#data
@@ -2274,11 +2286,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0024002e
+| 0x0024003a
#reset
##
-## 2f - outline-width
+## 3b - outline-width
##
#data
@@ -2286,7 +2298,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000002f
+| 0x0000003b
#reset
#data
@@ -2294,7 +2306,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004002f
+| 0x0004003b
#reset
#data
@@ -2302,7 +2314,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008002f
+| 0x0008003b
#reset
#data
@@ -2310,7 +2322,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002f 0x00000c00 0x00000000
+| 0x0200003b 0x00000c00 0x00000000
#reset
#data
@@ -2318,11 +2330,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200002f 0x00000000 0x00000000
+| 0x0200003b 0x00000000 0x00000000
#reset
##
-## 30 - overflow
+## 3c - overflow
##
#data
@@ -2330,7 +2342,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000030
+| 0x0000003c
#reset
#data
@@ -2338,7 +2350,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040030
+| 0x0004003c
#reset
#data
@@ -2346,7 +2358,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080030
+| 0x0008003c
#reset
#data
@@ -2354,11 +2366,14 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0030
+| 0x000c003c
#reset
##
-## 31 - padding-{top,right,bottom,left}
+## 3d - padding-top
+## 3e - padding-right
+## 3f - padding-bottom
+## 40 - padding-left
##
#data
@@ -2366,7 +2381,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000031 0x00002800 0x00000007
+| 0x0200003d 0x00002800 0x00000007
#reset
#data
@@ -2374,7 +2389,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x06000031 0x00000400 0x00000000
+| 0x0200003e 0x00000400 0x00000000
#reset
#data
@@ -2382,7 +2397,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0a000031 0x00000800 0x00000002
+| 0x0200003f 0x00000800 0x00000002
#reset
#data
@@ -2390,11 +2405,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0e000031 0x00001400 0x00000100
+| 0x02000040 0x00001400 0x00000100
#reset
##
-## 32 - page-break-after
+## 41 - page-break-after
##
#data
@@ -2402,7 +2417,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000032
+| 0x00000041
#reset
#data
@@ -2410,7 +2425,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040032
+| 0x00040041
#reset
#data
@@ -2418,7 +2433,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080032
+| 0x00080041
#reset
#data
@@ -2426,7 +2441,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0032
+| 0x000c0041
#reset
#data
@@ -2434,11 +2449,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00100032
+| 0x00100041
#reset
##
-## 33 - page-break-before
+## 42 - page-break-before
##
#data
@@ -2446,7 +2461,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000033
+| 0x00000042
#reset
#data
@@ -2454,7 +2469,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040033
+| 0x00040042
#reset
#data
@@ -2462,7 +2477,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080033
+| 0x00080042
#reset
#data
@@ -2470,7 +2485,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0033
+| 0x000c0042
#reset
#data
@@ -2478,11 +2493,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00100033
+| 0x00100042
#reset
##
-## 34 - page-break-inside
+## 43 - page-break-inside
##
#data
@@ -2490,7 +2505,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000034
+| 0x00000043
#reset
#data
@@ -2498,11 +2513,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040034
+| 0x00040043
#reset
##
-## 35 - pause-after
+## 44 - pause-after
##
#data
@@ -2510,7 +2525,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000035 0x00000000 0x00000401
+| 0x02000044 0x00000000 0x00000401
#reset
#data
@@ -2518,7 +2533,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000035 0x00019000 0x00000400
+| 0x02000044 0x00019000 0x00000400
#reset
#data
@@ -2526,7 +2541,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000035 0x000002cd 0x00000401
+| 0x02000044 0x000002cd 0x00000401
#reset
#data
@@ -2534,11 +2549,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000035 0x0001e000 0x00000100
+| 0x02000044 0x0001e000 0x00000100
#reset
##
-## 36 - pause-before
+## 45 - pause-before
##
#data
@@ -2546,7 +2561,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000036 0x00000000 0x00000401
+| 0x02000045 0x00000000 0x00000401
#reset
#data
@@ -2554,7 +2569,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000036 0x00019000 0x00000400
+| 0x02000045 0x00019000 0x00000400
#reset
#data
@@ -2562,7 +2577,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000036 0x000002cd 0x00000401
+| 0x02000045 0x000002cd 0x00000401
#reset
#data
@@ -2570,11 +2585,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000036 0x0001e000 0x00000100
+| 0x02000045 0x0001e000 0x00000100
#reset
##
-## 37 - pitch-range
+## 46 - pitch-range
##
#data
@@ -2582,7 +2597,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000037 0x00000000
+| 0x02000046 0x00000000
#reset
#data
@@ -2590,7 +2605,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000037 0x0000c800
+| 0x02000046 0x0000c800
#reset
#data
@@ -2598,11 +2613,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000037 0x00019000
+| 0x02000046 0x00019000
#reset
##
-## 38 - pitch
+## 47 - pitch
##
#data
@@ -2610,7 +2625,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000038
+| 0x00000047
#reset
#data
@@ -2618,7 +2633,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040038
+| 0x00040047
#reset
#data
@@ -2626,7 +2641,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080038
+| 0x00080047
#reset
#data
@@ -2634,7 +2649,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0038
+| 0x000c0047
#reset
#data
@@ -2642,7 +2657,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00100038
+| 0x00100047
#reset
#data
@@ -2650,7 +2665,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000038 0x00000000 0x00000800
+| 0x02000047 0x00000000 0x00000800
#reset
#data
@@ -2658,7 +2673,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000038 0x00064000 0x00000800
+| 0x02000047 0x00064000 0x00000800
#reset
#data
@@ -2666,11 +2681,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000038 0x00000466 0x00000801
+| 0x02000047 0x00000466 0x00000801
#reset
##
-## 39 - play-during
+## 48 - play-during
##
#data
@@ -2678,7 +2693,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000039
+| 0x00000048
#reset
#data
@@ -2686,7 +2701,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040039
+| 0x00040048
#reset
#data
@@ -2694,7 +2709,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000039 PTR(death_rattle.wav)
+| 0x02000048 PTR(death_rattle.wav)
#reset
#data
@@ -2702,7 +2717,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x03000039 PTR(death_rattle.wav)
+| 0x03000048 PTR(death_rattle.wav)
#reset
#data
@@ -2710,7 +2725,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x03800039 PTR(death_rattle.wav)
+| 0x03800048 PTR(death_rattle.wav)
#reset
#data
@@ -2718,7 +2733,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x03800039 PTR(death_rattle.wav)
+| 0x03800048 PTR(death_rattle.wav)
#reset
#data
@@ -2726,11 +2741,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02800039 PTR(death_rattle.wav)
+| 0x02800048 PTR(death_rattle.wav)
#reset
##
-## 3a - position
+## 49 - position
##
#data
@@ -2738,7 +2753,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000003a
+| 0x00000049
#reset
#data
@@ -2746,7 +2761,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004003a
+| 0x00040049
#reset
#data
@@ -2754,7 +2769,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008003a
+| 0x00080049
#reset
#data
@@ -2762,11 +2777,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c003a
+| 0x000c0049
#reset
##
-## 3b - quotes
+## 4a - quotes
##
#data
@@ -2774,7 +2789,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000003b
+| 0x0000004a
#reset
#data
@@ -2782,7 +2797,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003b PTR(") PTR(") 0x00000000
+| 0x0200004a PTR(") PTR(") 0x00000000
#reset
#data
@@ -2790,11 +2805,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003b PTR(') PTR(') 0x00000080 PTR(") PTR(") 0x00000000
+| 0x0200004a PTR(') PTR(') 0x00000080 PTR(") PTR(") 0x00000000
#reset
##
-## 3c - richness
+## 4b - richness
##
#data
@@ -2802,7 +2817,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003c 0x00000000
+| 0x0200004b 0x00000000
#reset
#data
@@ -2810,7 +2825,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003c 0x0000c800
+| 0x0200004b 0x0000c800
#reset
#data
@@ -2818,11 +2833,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003c 0x00019000
+| 0x0200004b 0x00019000
#reset
##
-## 3d - right
+## 4c - right
##
#data
@@ -2830,7 +2845,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000003d
+| 0x0000004c
#reset
#data
@@ -2838,7 +2853,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003d 0x00000200 0x00000003
+| 0x0200004c 0x00000200 0x00000003
#reset
#data
@@ -2846,11 +2861,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200003d 0x00001000 0x00000100
+| 0x0200004c 0x00001000 0x00000100
#reset
##
-## 3e - speak-header
+## 4d - speak-header
##
#data
@@ -2858,7 +2873,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000003e
+| 0x0000004d
#reset
#data
@@ -2866,11 +2881,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004003e
+| 0x0004004d
#reset
##
-## 3f - speak-numeral
+## 4e - speak-numeral
##
#data
@@ -2878,7 +2893,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000003f
+| 0x0000004e
#reset
#data
@@ -2886,11 +2901,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004003f
+| 0x0004004e
#reset
##
-## 40 - speak-punctuation
+## 4f - speak-punctuation
##
#data
@@ -2898,7 +2913,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000040
+| 0x0000004f
#reset
#data
@@ -2906,11 +2921,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040040
+| 0x0004004f
#reset
##
-## 41 - speak
+## 50 - speak
##
#data
@@ -2918,7 +2933,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000041
+| 0x00000050
#reset
#data
@@ -2926,7 +2941,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040041
+| 0x00040050
#reset
#data
@@ -2934,11 +2949,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080041
+| 0x00080050
#reset
##
-## 42 - speech-rate
+## 51 - speech-rate
##
#data
@@ -2946,7 +2961,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000042
+| 0x00000051
#reset
#data
@@ -2954,7 +2969,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040042
+| 0x00040051
#reset
#data
@@ -2962,7 +2977,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080042
+| 0x00080051
#reset
#data
@@ -2970,7 +2985,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0042
+| 0x000c0051
#reset
#data
@@ -2978,7 +2993,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00100042
+| 0x00100051
#reset
#data
@@ -2986,7 +3001,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00140042
+| 0x00140051
#reset
#data
@@ -2994,7 +3009,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00180042
+| 0x00180051
#reset
#data
@@ -3002,11 +3017,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000042 0x0002f800
+| 0x02000051 0x0002f800
#reset
##
-## 43 - stress
+## 52 - stress
##
#data
@@ -3014,7 +3029,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000043 0x00000000
+| 0x02000052 0x00000000
#reset
#data
@@ -3022,7 +3037,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000043 0x0000c800
+| 0x02000052 0x0000c800
#reset
#data
@@ -3030,11 +3045,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000043 0x00019000
+| 0x02000052 0x00019000
#reset
##
-## 44 - table-layout
+## 53 - table-layout
##
#data
@@ -3042,7 +3057,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000044
+| 0x00000053
#reset
#data
@@ -3050,11 +3065,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040044
+| 0x00040053
#reset
##
-## 45 - text-align
+## 54 - text-align
##
#data
@@ -3062,7 +3077,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000045
+| 0x00000054
#reset
#data
@@ -3070,7 +3085,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040045
+| 0x00040054
#reset
#data
@@ -3078,7 +3093,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080045
+| 0x00080054
#reset
#data
@@ -3086,11 +3101,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0045
+| 0x000c0054
#reset
##
-## 46 - text-decoration
+## 55 - text-decoration
##
#data
@@ -3098,7 +3113,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000046
+| 0x00000055
#reset
#data
@@ -3106,7 +3121,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040046
+| 0x00040055
#reset
#data
@@ -3114,7 +3129,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080046
+| 0x00080055
#reset
#data
@@ -3122,7 +3137,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00100046
+| 0x00100055
#reset
#data
@@ -3130,7 +3145,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00200046
+| 0x00200055
#reset
#data
@@ -3138,7 +3153,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0046
+| 0x000c0055
#reset
#data
@@ -3146,7 +3161,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0046
+| 0x000c0055
#reset
#data
@@ -3154,11 +3169,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00240046
+| 0x00240055
#reset
##
-## 47 - text-indent
+## 56 - text-indent
##
#data
@@ -3166,7 +3181,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000047 0x00000000 0x00000000
+| 0x02000056 0x00000000 0x00000000
#reset
#data
@@ -3174,7 +3189,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000047 0x00003000 0x00000005
+| 0x02000056 0x00003000 0x00000005
#reset
#data
@@ -3182,11 +3197,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000047 0x00008552 0x00000100
+| 0x02000056 0x00008552 0x00000100
#reset
##
-## 48 - text-transform
+## 57 - text-transform
##
#data
@@ -3194,7 +3209,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000048
+| 0x00000057
#reset
#data
@@ -3202,7 +3217,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00040048
+| 0x00040057
#reset
#data
@@ -3210,7 +3225,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00080048
+| 0x00080057
#reset
#data
@@ -3218,11 +3233,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c0048
+| 0x000c0057
#reset
##
-## 49 - top
+## 58 - top
##
#data
@@ -3230,7 +3245,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000049
+| 0x00000058
#reset
#data
@@ -3238,7 +3253,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000049 0x00000200 0x00000003
+| 0x02000058 0x00000200 0x00000003
#reset
#data
@@ -3246,11 +3261,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000049 0x00001000 0x00000100
+| 0x02000058 0x00001000 0x00000100
#reset
##
-## 4a - unicode-bidi
+## 59 - unicode-bidi
##
#data
@@ -3258,7 +3273,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000004a
+| 0x00000059
#reset
#data
@@ -3266,7 +3281,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004004a
+| 0x00040059
#reset
#data
@@ -3274,11 +3289,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008004a
+| 0x00080059
#reset
##
-## 4b - vertical-align
+## 5a - vertical-align
##
#data
@@ -3286,7 +3301,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000004b
+| 0x0000005a
#reset
#data
@@ -3294,7 +3309,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004004b
+| 0x0004005a
#reset
#data
@@ -3302,7 +3317,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008004b
+| 0x0008005a
#reset
#data
@@ -3310,7 +3325,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c004b
+| 0x000c005a
#reset
#data
@@ -3318,7 +3333,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0010004b
+| 0x0010005a
#reset
#data
@@ -3326,7 +3341,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0014004b
+| 0x0014005a
#reset
#data
@@ -3334,7 +3349,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0018004b
+| 0x0018005a
#reset
#data
@@ -3342,7 +3357,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x001c004b
+| 0x001c005a
#reset
#data
@@ -3350,7 +3365,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004b 0xffffd800 0x00000100
+| 0x0200005a 0xffffd800 0x00000100
#reset
#data
@@ -3358,7 +3373,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004b 0x00005000 0x00000100
+| 0x0200005a 0x00005000 0x00000100
#reset
#data
@@ -3366,7 +3381,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004b 0x00001000 0x00000000
+| 0x0200005a 0x00001000 0x00000000
#reset
#data
@@ -3374,11 +3389,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004b 0xfffff000 0x00000000
+| 0x0200005a 0xfffff000 0x00000000
#reset
##
-## 4c - visibility
+## 5b - visibility
##
#data
@@ -3386,7 +3401,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000004c
+| 0x0000005b
#reset
#data
@@ -3394,7 +3409,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004004c
+| 0x0004005b
#reset
#data
@@ -3402,11 +3417,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008004c
+| 0x0008005b
#reset
##
-## 4d - voice-family
+## 5c - voice-family
##
#data
@@ -3414,7 +3429,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004004d 0x00000000
+| 0x0004005c 0x00000000
#reset
#data
@@ -3422,7 +3437,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008004d 0x00000000
+| 0x0008005c 0x00000000
#reset
#data
@@ -3430,7 +3445,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c004d 0x00000000
+| 0x000c005c 0x00000000
#reset
#data
@@ -3438,7 +3453,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204004d PTR(romeo) 0x00000000
+| 0x0204005c PTR(romeo) 0x00000000
#reset
#data
@@ -3446,7 +3461,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004d PTR(juliet) 0x00000000
+| 0x0200005c PTR(juliet) 0x00000000
#reset
#data
@@ -3454,7 +3469,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004d PTR(tlsa) 0x00000080 PTR(romeo) 0x00000001 0x00000000
+| 0x0200005c PTR(tlsa) 0x00000080 PTR(romeo) 0x00000001 0x00000000
#reset
#data
@@ -3462,11 +3477,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004d PTR(juliet) 0x00000002 0x00000080 PTR(romeo) 0x00000001 0x00000000
+| 0x0200005c PTR(juliet) 0x00000002 0x00000080 PTR(romeo) 0x00000001 0x00000000
#reset
##
-## 4e - volume
+## 5d - volume
##
#data
@@ -3474,7 +3489,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000004e
+| 0x0000005d
#reset
#data
@@ -3482,7 +3497,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004004e
+| 0x0004005d
#reset
#data
@@ -3490,7 +3505,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008004e
+| 0x0008005d
#reset
#data
@@ -3498,7 +3513,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c004e
+| 0x000c005d
#reset
#data
@@ -3506,7 +3521,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0010004e
+| 0x0010005d
#reset
#data
@@ -3514,7 +3529,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0014004e
+| 0x0014005d
#reset
#data
@@ -3522,7 +3537,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0200004e 0x0000c800
+| 0x0200005d 0x0000c800
#reset
# dunno if % can be tested here, cos it's a percentage of the inherited value
@@ -3531,11 +3546,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0204004e 0x00008552 0x00000100
+| 0x0204005d 0x00008552 0x00000100
#reset
##
-## 4f - white-space
+## 5e - white-space
##
#data
@@ -3543,7 +3558,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0000004f
+| 0x0000005e
#reset
#data
@@ -3551,7 +3566,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0004004f
+| 0x0004005e
#reset
#data
@@ -3559,7 +3574,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0008004f
+| 0x0008005e
#reset
#data
@@ -3567,7 +3582,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x000c004f
+| 0x000c005e
#reset
#data
@@ -3575,11 +3590,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x0010004f
+| 0x0010005e
#reset
##
-## 50 - widows
+## 5f - widows
##
#data
@@ -3587,11 +3602,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000050 0x00000c00
+| 0x0200005f 0x00000c00
#reset
##
-## 51 - width
+## 60 - width
##
#data
@@ -3599,7 +3614,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000051
+| 0x00000060
#reset
#data
@@ -3607,7 +3622,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000051 0x061a7fff 0x00000001
+| 0x02000060 0x061a7fff 0x00000001
#reset
#data
@@ -3615,11 +3630,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000051 0x00010aab 0x00000100
+| 0x02000060 0x00010aab 0x00000100
#reset
##
-## 52 - word-spacing
+## 61 - word-spacing
##
#data
@@ -3627,7 +3642,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000052
+| 0x00000061
#reset
#data
@@ -3635,11 +3650,11 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000052 0x00000066 0x00000002
+| 0x02000061 0x00000066 0x00000002
#reset
##
-## 53 - z-index
+## 62 - z-index
##
#data
@@ -3647,7 +3662,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x00000053
+| 0x00000062
#reset
#data
@@ -3655,7 +3670,7 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000053 0x00000800
+| 0x02000062 0x00000800
#reset
#data
@@ -3663,5 +3678,5 @@ p:before { content: open-quote url('http://picodrive.acornarcade.com/') " : " at
#errors
#expected
| 1 *
-| 0x02000053 0xfffffc00
+| 0x02000062 0xfffffc00
#reset
diff --git a/test/data/parse/tests1.dat b/test/data/parse/tests1.dat
index 2aa6f56..ad63242 100644
--- a/test/data/parse/tests1.dat
+++ b/test/data/parse/tests1.dat
@@ -10,7 +10,7 @@
#errors
#expected
| 1 *
-| 0x0200000f 0xff000000
+| 0x02000018 0xff000000
#reset
#data
@@ -18,7 +18,7 @@
#errors
#expected
| 1 *
-| 0x0000080f
+| 0x00000818
#reset
#data
@@ -26,5 +26,5 @@
#errors
#expected
| 1 *
-| 0x02000003 PTR(foo.png) 0x0000080f
+| 0x02000003 PTR(foo.png) 0x00000818
#reset
diff --git a/test/dump.h b/test/dump.h
index 4ad21c4..b38b0b8 100644
--- a/test/dump.h
+++ b/test/dump.h
@@ -237,9 +237,18 @@ static const char *opcode_names[] = {
"background-repeat",
"border-collapse",
"border-spacing",
- "border-%s-color",
- "border-%s-style",
- "border-%s-width",
+ "border-top-color",
+ "border-right-color",
+ "border-bottom-color",
+ "border-left-color",
+ "border-top-style",
+ "border-right-style",
+ "border-bottom-style",
+ "border-left-style",
+ "border-top-width",
+ "border-right-width",
+ "border-bottom-width",
+ "border-left-width",
"bottom",
"caption-side",
"clear",
@@ -268,7 +277,10 @@ static const char *opcode_names[] = {
"list-style-image",
"list-style-position",
"list-style-type",
- "margin-%s",
+ "margin-top",
+ "margin-right",
+ "margin-bottom",
+ "margin-left",
"max-height",
"max-width",
"min-height",
@@ -278,7 +290,10 @@ static const char *opcode_names[] = {
"outline-style",
"outline-width",
"overflow",
- "padding-%s",
+ "padding-top",
+ "padding-right",
+ "padding-bottom",
+ "padding-left",
"page-break-after",
"page-break-before",
"page-break-inside",
@@ -315,11 +330,6 @@ static const char *opcode_names[] = {
"z-index",
};
-/**
- * Sides, indexed by SIDE_*
- */
-static const char *sides[] = { "top", "right", "bottom", "left" };
-
static void dump_fixed(fixed f, char **ptr)
{
#define ABS(x) (uint32_t)((x) < 0 ? -(x) : (x))
@@ -578,16 +588,7 @@ void dump_bytecode(css_style *style, char **ptr)
op = getOpcode(opv);
- *ptr += sprintf(*ptr, "| ");
-
- if (op == OP_BORDER_TRBL_COLOR || op == OP_BORDER_TRBL_STYLE ||
- op == OP_BORDER_TRBL_WIDTH ||
- op == OP_MARGIN_TRBL || op == OP_PADDING_TRBL) {
- const uint32_t side = (getValue(opv) & SIDE_LEFT) >> 8;
- *ptr += sprintf(*ptr, opcode_names[op], sides[side]);
- *ptr += sprintf(*ptr, ": ");
- } else
- *ptr += sprintf(*ptr, "%s: ", opcode_names[op]);
+ *ptr += sprintf(*ptr, "| %s: ", opcode_names[op]);
if (isInherit(opv)) {
*ptr += sprintf(*ptr, "inherit");
@@ -654,10 +655,10 @@ void dump_bytecode(css_style *style, char **ptr)
break;
}
break;
- case OP_BORDER_TRBL_COLOR:
- /* Clear side bits */
- value &= ~SIDE_LEFT;
- /* Fall through */
+ case OP_BORDER_TOP_COLOR:
+ case OP_BORDER_RIGHT_COLOR:
+ case OP_BORDER_BOTTOM_COLOR:
+ case OP_BORDER_LEFT_COLOR:
case OP_BACKGROUND_COLOR:
assert(BACKGROUND_COLOR_TRANSPARENT ==
BORDER_COLOR_TRANSPARENT);
@@ -799,10 +800,10 @@ void dump_bytecode(css_style *style, char **ptr)
break;
}
break;
- case OP_BORDER_TRBL_STYLE:
- /* Clear side bits */
- value &= ~SIDE_LEFT;
- /* Fall through */
+ case OP_BORDER_TOP_STYLE:
+ case OP_BORDER_RIGHT_STYLE:
+ case OP_BORDER_BOTTOM_STYLE:
+ case OP_BORDER_LEFT_STYLE:
case OP_OUTLINE_STYLE:
assert(BORDER_STYLE_NONE == OUTLINE_STYLE_NONE);
assert(BORDER_STYLE_HIDDEN ==
@@ -857,10 +858,10 @@ void dump_bytecode(css_style *style, char **ptr)
break;
}
break;
- case OP_BORDER_TRBL_WIDTH:
- /* Clear side bits */
- value &= ~SIDE_LEFT;
- /* Fall through */
+ case OP_BORDER_TOP_WIDTH:
+ case OP_BORDER_RIGHT_WIDTH:
+ case OP_BORDER_BOTTOM_WIDTH:
+ case OP_BORDER_LEFT_WIDTH:
case OP_OUTLINE_WIDTH:
assert(BORDER_WIDTH_SET == OUTLINE_WIDTH_SET);
assert(BORDER_WIDTH_THIN == OUTLINE_WIDTH_THIN);
@@ -891,10 +892,10 @@ void dump_bytecode(css_style *style, char **ptr)
break;
}
break;
- case OP_MARGIN_TRBL:
- /* Clear side bits */
- value &= ~SIDE_LEFT;
- /* Fall through */
+ case OP_MARGIN_TOP:
+ case OP_MARGIN_RIGHT:
+ case OP_MARGIN_BOTTOM:
+ case OP_MARGIN_LEFT:
case OP_BOTTOM:
case OP_LEFT:
case OP_RIGHT:
@@ -1582,10 +1583,10 @@ void dump_bytecode(css_style *style, char **ptr)
break;
}
break;
- case OP_PADDING_TRBL:
- /* Clear side bits */
- value &= ~SIDE_LEFT;
- /* Fall through */
+ case OP_PADDING_TOP:
+ case OP_PADDING_RIGHT:
+ case OP_PADDING_BOTTOM:
+ case OP_PADDING_LEFT:
case OP_MIN_HEIGHT:
case OP_MIN_WIDTH:
case OP_PAUSE_AFTER: