From c5e6ed5429156f34a51434581e1639e5ebf182db Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Tue, 10 Feb 2009 17:54:04 +0000 Subject: 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 --- docs/Bytecode | 212 +++++----- src/bytecode/bytecode.h | 169 ++++---- src/bytecode/opcodes.h | 8 - src/parse/properties.c | 122 +++--- src/select/properties.c | 290 ++++++++++++- src/select/select.c | 43 +- test/data/parse/colours.dat | 18 +- test/data/parse/properties.dat | 907 +++++++++++++++++++++-------------------- test/data/parse/tests1.dat | 6 +- test/dump.h | 81 ++-- 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 - (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 + (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 (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 (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 (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 (14bits) : 0 => top 1 => bottom other => Reserved for future expansion. -0d - clear +16 - clear (14bits) : 0 => none 1 => left @@ -281,7 +275,7 @@ Opcodes 3 => both other => Reserved for future expansion. -0e - clip +17 - clip (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 (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 (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> <00000080> <00000084> @@ -364,7 +358,7 @@ Opcodes <00000383> <00000003> <00000000> -11 - counter-increment +1a - counter-increment (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 (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 (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 (14bits) : bits 8-13: MBZ bits 0-7 : @@ -416,7 +410,7 @@ Opcodes bits 0-6: 0000000 => none, other => rffe. -15 - cursor +1e - cursor (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 (14bits) : 0 => ltr, 1 => rtl, other => Reserved for future expansion. -17 - display +20 - display (14bits) : 0 => inline, 1 => block, @@ -473,7 +467,7 @@ Opcodes f => none, other => Reserved for future expansion. -18 - elevation +21 - elevation (14bits) : bits 8-13: MBZ bits 0-7 : @@ -487,20 +481,20 @@ Opcodes 0000100 => lower, other => rffe. -19 - empty-cells +22 - empty-cells (14bits) : 0 => show, 1 => hide, other => Reserved for future expansion. -1a - float +23 - float (14bits) : 0 => left, 1 => right, 2 => none, other => Reserved for future expansion. -1b - font-family +24 - font-family (14bits) : bits 8-13: MBZ bits 0-7 : @@ -521,7 +515,7 @@ Opcodes 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 (14bits) : bits 8-13: MBZ bits 0-7: @@ -539,20 +533,20 @@ Opcodes 0001000 => smaller, other => rffe. -1d - font-style +26 - font-style (14bits) : 0 => normal, 1 => italic, 2 => oblique, other => Reserved for future expansion. -1e - font-variant +27 - font-variant (14bits) : 0 => normal, 1 => small-caps, other => Reserved for future expansion. -1f - font-weight +28 - font-weight (14bits) : 0 => normal, 1 => bold, @@ -569,7 +563,7 @@ Opcodes c => 900, other => Reserved for future expansion. -20 - height +29 - height (14bits) : bits 8-13: MBZ bits 0-7 : @@ -579,7 +573,7 @@ Opcodes bits 0-6: 0000000 => auto, other => rffe. -21 - left +2a - left (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 (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 (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 (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 (14bits) : 0 => inside, 1 => outside, other => Reserved for future expansion. -26 - list-style-type +2f - list-style-type (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 (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 (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 (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 (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 (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 (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 (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 (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 (14bits) : bits 8-13: MBZ bits 0-7 : @@ -746,7 +738,7 @@ Opcodes 0000010 => thick, other => rffe. -30 - overflow +3c - overflow (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 (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 (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 (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 (14bits) : 0 => auto, 1 => avoid, other => Reserved for future expansion. -35 - pause-after +44 - pause-after (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 (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 (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 (14bits) : bits 8-13: MBZ bits 0-7 : @@ -833,7 +823,7 @@ Opcodes 0000100 => x-high, other => rffe. -39 - play-during +48 - play-during (14bits) : bits 8-13: MBZ bits 0-7 : @@ -846,7 +836,7 @@ Opcodes 0000001 => none, other => rffe. -3a - position +49 - position (14bits) : 0 => static, 1 => relative, @@ -854,7 +844,7 @@ Opcodes 3 => fixed, other => Reserved for future expansion. -3b - quotes +4a - quotes (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 (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 (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 (14bits) : 0 => once, 1 => always, other => Reserved for future expansion. -3f - speak-numeral +4e - speak-numeral (14bits) : 0 => digits, 1 => continuous, other => Reserved for future expansion. -40 - speak-punctuation +4f - speak-punctuation (14bits) : 0 => code, 1 => none, other => Reserved for future expansion. -41 - speak +50 - speak (14bits) : 0 => normal, 1 => none, 2 => spell-out, other => Reserved for future expansion. -42 - speech-rate +51 - speech-rate (14bits) : bits 8-13: MBZ bits 0-7 : @@ -929,7 +919,7 @@ Opcodes 0000110 => slower, other => rffe. -43 - stress +52 - stress (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 (14bits) : 0 => auto, 1 => fixed, other => Reserved for future expansion. -45 - text-align +54 - text-align (14bits) : 0 => left, 1 => right, @@ -952,7 +942,7 @@ Opcodes 3 => justify, other => Reserved for future expansion. -46 - text-decoration +55 - text-decoration (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 (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 (14bits) : 0 => capitalize, 1 => uppercase, @@ -982,7 +972,7 @@ Opcodes 3 => none, other => Reserved for future expansion. -49 - top +58 - top (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 (14bits) : 0 => normal, 1 => embed, 2 => bidi-override, other => Reserved for future expansion. -4b - vertical-align +5a - vertical-align (14bits) : bits 8-13: MBZ bits 0-7 : @@ -1016,14 +1006,14 @@ Opcodes 0000111 => text-bottom, other => rffe. -4c - visibility +5b - visibility (14bits) : 0 => visible, 1 => hidden, 2 => collapse, other => Reserved for future expansion. -4d - voice-family +5c - voice-family (14bits) : bits 8-13: MBZ bits 0-7 : @@ -1042,7 +1032,7 @@ Opcodes word which declares the type of the next item. The list is terminated by a word with all bits clear. -4e - volume +5d - volume (14bits) : bits 8-13: MBZ bits 0-7 : @@ -1059,7 +1049,7 @@ Opcodes 0000101 => x-loud, other => rffe. -4f - white-space +5e - white-space (14bits) : 0 => normal, 1 => pre, @@ -1068,7 +1058,7 @@ Opcodes 4 => pre-line, other => Reserved for future expansion. -50 - widows +5f - widows (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 (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 (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 (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 -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: -- cgit v1.2.3