Fix for 3678031, implement better flexing for Emerson headers. This involved adding...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 9 Jun 2004 20:19:05 +0000 (20:19 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 9 Jun 2004 20:19:05 +0000 (20:19 +0000)
fixing the box layout algorithm to properly deal with max-widths, and implementing support for baseline alignment
so that boxes can be aligned vertically along their interior baselines.

        Reviewed by kocienda

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        (CSSParser::parseShadow):
        * khtml/css/cssparser.h:
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/misc/khtmllayout.h:
        (khtml::):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::baselinePosition):
        (khtml::RenderBlock::getBaselineOfFirstLineBox):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_box.cpp:
        (RenderBox::RenderBox):
        (RenderBox::overrideWidth):
        (RenderBox::overrideHeight):
        (RenderBox::calcWidth):
        (RenderBox::calcHeight):
        * khtml/rendering/render_box.h:
        (khtml::RenderBox::overrideSize):
        (khtml::RenderBox::setOverrideSize):
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::calcMinMaxWidth):
        (khtml::RenderFlexibleBox::layoutBlock):
        (khtml::RenderFlexibleBox::layoutHorizontalBox):
        (khtml::RenderFlexibleBox::layoutVerticalBox):
        (khtml::RenderFlexibleBox::placeChild):
        (khtml::RenderFlexibleBox::allowedChildFlex):
        * khtml/rendering/render_flexbox.h:
        * khtml/rendering/render_image.cpp:
        (RenderImage::isWidthSpecified):
        (RenderImage::isHeightSpecified):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::getBaselineOfFirstLineBox):
        (khtml::RenderObject::overrideSize):
        (khtml::RenderObject::overrideWidth):
        (khtml::RenderObject::overrideHeight):
        (khtml::RenderObject::setOverrideSize):
        * khtml/rendering/render_style.cpp:
        (StyleFlexibleBoxData::StyleFlexibleBoxData):
        (StyleFlexibleBoxData::operator==):
        (ShadowData::operator==):
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::boxPack):
        (khtml::RenderStyle::setBoxPack):
        * khtml/rendering/table_layout.cpp:
        (AutoTableLayout::layout):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@6802 268f45cc-cd09-0410-ab3c-d52691b4dbfc

22 files changed:
WebCore/ChangeLog-2005-08-23
WebCore/khtml/css/cssparser.cpp
WebCore/khtml/css/cssparser.h
WebCore/khtml/css/cssproperties.c
WebCore/khtml/css/cssproperties.h
WebCore/khtml/css/cssproperties.in
WebCore/khtml/css/cssstyleselector.cpp
WebCore/khtml/css/cssvalues.c
WebCore/khtml/css/cssvalues.h
WebCore/khtml/css/cssvalues.in
WebCore/khtml/misc/khtmllayout.h
WebCore/khtml/rendering/render_block.cpp
WebCore/khtml/rendering/render_block.h
WebCore/khtml/rendering/render_box.cpp
WebCore/khtml/rendering/render_box.h
WebCore/khtml/rendering/render_flexbox.cpp
WebCore/khtml/rendering/render_flexbox.h
WebCore/khtml/rendering/render_image.cpp
WebCore/khtml/rendering/render_object.h
WebCore/khtml/rendering/render_style.cpp
WebCore/khtml/rendering/render_style.h
WebCore/khtml/rendering/table_layout.cpp

index 6f87899..76d9a31 100644 (file)
@@ -1,3 +1,69 @@
+2004-06-09  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3678031, implement better flexing for Emerson headers.  This involved adding support for max-width: intrinsic,
+       fixing the box layout algorithm to properly deal with max-widths, and implementing support for baseline alignment
+       so that boxes can be aligned vertically along their interior baselines.
+       
+        Reviewed by kocienda
+
+        * khtml/css/cssparser.cpp:
+        (CSSParser::parseValue):
+        (CSSParser::parseShadow):
+        * khtml/css/cssparser.h:
+        * khtml/css/cssproperties.c:
+        (hash_prop):
+        (findProp):
+        * khtml/css/cssproperties.h:
+        * khtml/css/cssproperties.in:
+        * khtml/css/cssstyleselector.cpp:
+        (khtml::CSSStyleSelector::applyProperty):
+        * khtml/css/cssvalues.c:
+        (hash_val):
+        (findValue):
+        * khtml/css/cssvalues.h:
+        * khtml/css/cssvalues.in:
+        * khtml/misc/khtmllayout.h:
+        (khtml::):
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::baselinePosition):
+        (khtml::RenderBlock::getBaselineOfFirstLineBox):
+        * khtml/rendering/render_block.h:
+        * khtml/rendering/render_box.cpp:
+        (RenderBox::RenderBox):
+        (RenderBox::overrideWidth):
+        (RenderBox::overrideHeight):
+        (RenderBox::calcWidth):
+        (RenderBox::calcHeight):
+        * khtml/rendering/render_box.h:
+        (khtml::RenderBox::overrideSize):
+        (khtml::RenderBox::setOverrideSize):
+        * khtml/rendering/render_flexbox.cpp:
+        (khtml::RenderFlexibleBox::calcMinMaxWidth):
+        (khtml::RenderFlexibleBox::layoutBlock):
+        (khtml::RenderFlexibleBox::layoutHorizontalBox):
+        (khtml::RenderFlexibleBox::layoutVerticalBox):
+        (khtml::RenderFlexibleBox::placeChild):
+        (khtml::RenderFlexibleBox::allowedChildFlex):
+        * khtml/rendering/render_flexbox.h:
+        * khtml/rendering/render_image.cpp:
+        (RenderImage::isWidthSpecified):
+        (RenderImage::isHeightSpecified):
+        * khtml/rendering/render_object.h:
+        (khtml::RenderObject::getBaselineOfFirstLineBox):
+        (khtml::RenderObject::overrideSize):
+        (khtml::RenderObject::overrideWidth):
+        (khtml::RenderObject::overrideHeight):
+        (khtml::RenderObject::setOverrideSize):
+        * khtml/rendering/render_style.cpp:
+        (StyleFlexibleBoxData::StyleFlexibleBoxData):
+        (StyleFlexibleBoxData::operator==):
+        (ShadowData::operator==):
+        * khtml/rendering/render_style.h:
+        (khtml::RenderStyle::boxPack):
+        (khtml::RenderStyle::setBoxPack):
+        * khtml/rendering/table_layout.cpp:
+        (AutoTableLayout::layout):
+
 2004-06-09  Richard Williamson   <rjw@apple.com>
 
        Added support for drawing un-rasterized transformed PDFs.
index 570030c..723d536 100644 (file)
@@ -825,14 +825,17 @@ bool CSSParser::parseValue( int propId, bool important )
 
     case CSS_PROP_MAX_HEIGHT:           // <length> | <percentage> | none | inherit
     case CSS_PROP_MAX_WIDTH:            // <length> | <percentage> | none | inherit
-       if ( id == CSS_VAL_NONE ) {
+       if (id == CSS_VAL_NONE || id == CSS_VAL_INTRINSIC || id == CSS_VAL_MIN_INTRINSIC) {
            valid_primitive = true;
            break;
        }
        /* nobreak */
     case CSS_PROP_MIN_HEIGHT:           // <length> | <percentage> | inherit
     case CSS_PROP_MIN_WIDTH:            // <length> | <percentage> | inherit
-       valid_primitive = ( !id && validUnit( value, FLength|FPercent|FNonNeg, strict ) );
+        if (id == CSS_VAL_INTRINSIC || id == CSS_VAL_MIN_INTRINSIC)
+            valid_primitive = true;
+        else
+            valid_primitive = ( !id && validUnit( value, FLength|FPercent|FNonNeg, strict ) );
        break;
 
     case CSS_PROP_FONT_SIZE:
@@ -865,7 +868,7 @@ bool CSSParser::parseValue( int propId, bool important )
 
     case CSS_PROP_HEIGHT:               // <length> | <percentage> | auto | inherit
     case CSS_PROP_WIDTH:                // <length> | <percentage> | auto | inherit
-       if ( id == CSS_VAL_AUTO )
+       if (id == CSS_VAL_AUTO || id == CSS_VAL_INTRINSIC || id == CSS_VAL_MIN_INTRINSIC)
            valid_primitive = true;
        else
            // ### handle multilength case where we allow relative units
@@ -1055,8 +1058,6 @@ bool CSSParser::parseValue( int propId, bool important )
     case CSS_PROP__KHTML_BOX_ORDINAL_GROUP:
         valid_primitive = validUnit(value, FInteger|FNonNeg, true);
         break;
-    case CSS_PROP__KHTML_BOX_FLEX_GROUP_TRANSITION:
-        return parseFlexGroupTransition(propId, important);
     case CSS_PROP__KHTML_MARQUEE: {
         const int properties[5] = { CSS_PROP__KHTML_MARQUEE_DIRECTION, CSS_PROP__KHTML_MARQUEE_INCREMENT,
                                     CSS_PROP__KHTML_MARQUEE_REPETITION,
@@ -1932,151 +1933,6 @@ bool CSSParser::parseShadow(int propId, bool important)
     return context.failed();
 }
 
-struct FlexGroupTransitionParseContext {
-    FlexGroupTransitionParseContext()
-    :values(0), allowGroup1(true), allowSlash(false), allowGroup2(false), allowLength(false),
-     allowBreak(true),  autoValue(false), group1(0), group2(0), length(0)
-    {}
-    
-    ~FlexGroupTransitionParseContext() {
-        if (!allowBreak) {
-            delete values;
-            delete length;
-        }        
-    }
-
-    bool failed() { return allowBreak = false; }
-    
-    bool allowGroup() const {
-        return allowGroup1 || allowGroup2;
-    }
-    
-    void commitGroup(Value* val) {
-        if (allowGroup1) {
-            allowGroup1 = allowGroup2 = allowBreak = false;
-            allowSlash = allowLength = true;
-            group1 = (unsigned int)val->fValue;
-        }
-        else if (allowGroup2) {
-            allowGroup1 = allowGroup2 = allowBreak = allowSlash = false;
-            allowLength = true;
-            group2 = (unsigned int)val->fValue;
-        }
-    }
-
-    void commitSlash() {
-        allowSlash = allowLength = allowGroup1 = allowBreak = false;
-        allowGroup2 = true;
-    }
-    
-    void commitLength(Value* v) {
-        length = new CSSPrimitiveValueImpl(v->fValue,
-                                           (CSSPrimitiveValue::UnitTypes)v->unit);
-        allowLength = allowGroup1 = allowGroup2 = allowSlash = false;
-        allowBreak = true;
-    }
-
-    void commitAutoValue() {
-        autoValue = true;
-        allowSlash = allowGroup1 = allowGroup2 = allowLength = false;
-        allowBreak = true;
-    }
-
-    void commitValue() {
-        // Handle the ,, case gracefully by doing nothing.
-        if (autoValue || ((group1 || group2) && length)) {
-            if (!values)
-                values = new CSSValueListImpl();
-            
-            // Construct the current shadow value and add it to the list.
-            values->append(autoValue ? 
-                           new FlexGroupTransitionValueImpl() :
-                           new FlexGroupTransitionValueImpl(group1, group2, length));
-        }
-        
-        // Now reset for the next shadow value.
-        group1 = group2 = 0;
-        length = 0;
-        allowGroup1 = allowBreak = true;
-        allowSlash = allowGroup2 = allowLength = autoValue = false;
-    }
-    
-    CSSValueListImpl* values;
-    bool allowGroup1;
-    bool allowSlash;
-    bool allowGroup2;
-    bool allowLength;
-    bool allowBreak;
-
-    // The current value data
-    bool autoValue;
-    unsigned int group1;
-    unsigned int group2;
-    CSSPrimitiveValueImpl* length;
-};
-
-bool CSSParser::parseFlexGroupTransition(int propId, bool important)
-{
-    FlexGroupTransitionParseContext context;
-    Value* val;
-    while ((val = valueList->current())) {
-        // Check for a comma break first.
-        if (val->unit == Value::Operator) {
-            if (val->iValue == '/') {
-                if (context.allowSlash)
-                    context.commitSlash();
-                else
-                    return context.failed();
-            }    
-            else if (val->iValue != ',' || !context.allowBreak)
-                // Other operators aren't legal or we aren't done with the current flex group transitiion
-                // value.  Treat as invalid.
-                return context.failed();
-            
-            // The value is good.  Commit it.
-            context.commitValue();
-        }
-        // See if an auto value was specified
-        else if (val->id == CSS_VAL_AUTO) {
-            if (context.allowGroup1)
-                context.commitAutoValue();
-            else
-                return context.failed();
-        }
-        // Check to see if we're a non-negative number.
-        else if (validUnit(val, FInteger|FNonNeg, true)) {
-            if (context.allowGroup())
-                context.commitGroup(val);
-            else
-                return context.failed();
-        }
-        // Check to see if we're a length.
-        else if (validUnit(val, FLength, true)) {
-            // We required a length and didn't get one. Invalid.
-            if (!context.allowLength)
-                return context.failed();
-            
-            // A length is allowed here.  Construct the value and add it.
-            context.commitLength(val);
-        }
-        else 
-            return context.failed();
-        
-        valueList->next();
-    }
-    
-    if (context.allowBreak) {
-        context.commitValue();
-        if (context.values->length()) {
-            addProperty(propId, context.values, important);
-            valueList->next();
-            return true;
-        }
-    }
-    
-    return context.failed();    
-}
-
 static inline int yyerror( const char *str ) {
 #ifdef CSS_DEBUG
     kdDebug( 6080 ) << "CSS parse error " << str << endl;
index 56a5146..e2b4b35 100644 (file)
@@ -136,7 +136,6 @@ namespace DOM {
 
         // CSS3 Parsing Routines (for properties specific to CSS3)
         bool parseShadow(int propId, bool important);
-        bool parseFlexGroupTransition(int propId, bool important);
         
        int yyparse( void );
     public:
index b9f9893..315550f 100644 (file)
@@ -7,7 +7,7 @@ struct props {
     const char *name;
     int id;
 };
-/* maximum key range = 917, duplicates = 0 */
+/* maximum key range = 1432, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -21,32 +21,32 @@ hash_prop (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922,   0, 922, 922, 922, 922,
-      922,   0, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922,  65,  55,   0,
-        0,   0,  90, 100,   0,   0,   0,  15,   0,  35,
-        5,   0,  50,  45,   0,  75,   0, 105,   0, 420,
-       60, 160,   0, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
-      922, 922, 922, 922, 922, 922
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437,    0, 1437, 1437, 1437, 1437,
+      1437,    0, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437,   15,   10,    0,
+         0,    0,   15,  170,    0,    0,    0,   10,    0,   85,
+       390,    0,   60,   25,    0,   65,    0,   10,   10,  205,
+        80,  295,   10, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
+      1437, 1437, 1437, 1437, 1437, 1437
     };
   register int hval = len;
 
@@ -130,232 +130,283 @@ findProp (register const char *str, register unsigned int len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 135,
+      TOTAL_KEYWORDS = 134,
       MIN_WORD_LENGTH = 3,
       MAX_WORD_LENGTH = 32,
       MIN_HASH_VALUE = 5,
-      MAX_HASH_VALUE = 921
+      MAX_HASH_VALUE = 1436
     };
 
   static const struct props wordlist_prop[] =
     {
       {"color", CSS_PROP_COLOR},
-      {"direction", CSS_PROP_DIRECTION},
-      {"content", CSS_PROP_CONTENT},
-      {"top", CSS_PROP_TOP},
-      {"clip", CSS_PROP_CLIP},
       {"border", CSS_PROP_BORDER},
-      {"border-color", CSS_PROP_BORDER_COLOR},
+      {"left", CSS_PROP_LEFT},
       {"clear", CSS_PROP_CLEAR},
-      {"z-index", CSS_PROP_Z_INDEX},
+      {"border-color", CSS_PROP_BORDER_COLOR},
+      {"float", CSS_PROP_FLOAT},
+      {"border-left", CSS_PROP_BORDER_LEFT},
+      {"border-left-color", CSS_PROP_BORDER_LEFT_COLOR},
+      {"top", CSS_PROP_TOP},
+      {"clip", CSS_PROP_CLIP},
       {"size", CSS_PROP_SIZE},
-      {"text-indent", CSS_PROP_TEXT_INDENT},
-      {"left", CSS_PROP_LEFT},
-      {"bottom", CSS_PROP_BOTTOM},
-      {"font", CSS_PROP_FONT},
-      {"right", CSS_PROP_RIGHT},
-      {"height", CSS_PROP_HEIGHT},
       {"border-top", CSS_PROP_BORDER_TOP},
-      {"line-height", CSS_PROP_LINE_HEIGHT},
-      {"outline", CSS_PROP_OUTLINE},
+      {"cursor", CSS_PROP_CURSOR},
       {"border-top-color", CSS_PROP_BORDER_TOP_COLOR},
-      {"outline-color", CSS_PROP_OUTLINE_COLOR},
-      {"position", CSS_PROP_POSITION},
-      {"text-decoration", CSS_PROP_TEXT_DECORATION},
-      {"min-height", CSS_PROP_MIN_HEIGHT},
-      {"text-decoration-color", CSS_PROP_TEXT_DECORATION_COLOR},
-      {"border-left", CSS_PROP_BORDER_LEFT},
+      {"bottom", CSS_PROP_BOTTOM},
+      {"quotes", CSS_PROP_QUOTES},
       {"border-bottom", CSS_PROP_BORDER_BOTTOM},
-      {"float", CSS_PROP_FLOAT},
-      {"border-left-color", CSS_PROP_BORDER_LEFT_COLOR},
       {"border-bottom-color", CSS_PROP_BORDER_BOTTOM_COLOR},
+      {"scrollbar-track-color", CSS_PROP_SCROLLBAR_TRACK_COLOR},
+      {"scrollbar-face-color", CSS_PROP_SCROLLBAR_FACE_COLOR},
+      {"border-collapse", CSS_PROP_BORDER_COLLAPSE},
+      {"right", CSS_PROP_RIGHT},
+      {"height", CSS_PROP_HEIGHT},
       {"border-right", CSS_PROP_BORDER_RIGHT},
-      {"counter-increment", CSS_PROP_COUNTER_INCREMENT},
       {"border-right-color", CSS_PROP_BORDER_RIGHT_COLOR},
-      {"unicode-bidi", CSS_PROP_UNICODE_BIDI},
-      {"font-size", CSS_PROP_FONT_SIZE},
-      {"font-stretch", CSS_PROP_FONT_STRETCH},
-      {"cursor", CSS_PROP_CURSOR},
-      {"-khtml-box-orient", CSS_PROP__KHTML_BOX_ORIENT},
-      {"-khtml-box-direction", CSS_PROP__KHTML_BOX_DIRECTION},
-      {"counter-reset", CSS_PROP_COUNTER_RESET},
-      {"orphans", CSS_PROP_ORPHANS},
-      {"caption-side", CSS_PROP_CAPTION_SIDE},
-      {"margin", CSS_PROP_MARGIN},
+      {"width", CSS_PROP_WIDTH},
+      {"border-width", CSS_PROP_BORDER_WIDTH},
+      {"overflow", CSS_PROP_OVERFLOW},
+      {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE},
+      {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
       {"page", CSS_PROP_PAGE},
-      {"padding", CSS_PROP_PADDING},
-      {"-khtml-binding", CSS_PROP__KHTML_BINDING},
-      {"quotes", CSS_PROP_QUOTES},
-      {"text-align", CSS_PROP_TEXT_ALIGN},
-      {"font-variant", CSS_PROP_FONT_VARIANT},
-      {"vertical-align", CSS_PROP_VERTICAL_ALIGN},
-      {"border-collapse", CSS_PROP_BORDER_COLLAPSE},
-      {"-khtml-box-lines", CSS_PROP__KHTML_BOX_LINES},
-      {"margin-top", CSS_PROP_MARGIN_TOP},
+      {"-khtml-user-select", CSS_PROP__KHTML_USER_SELECT},
+      {"scrollbar-3dlight-color", CSS_PROP_SCROLLBAR_3DLIGHT_COLOR},
+      {"-khtml-box-pack", CSS_PROP__KHTML_BOX_PACK},
+      {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
+      {"-khtml-box-flex", CSS_PROP__KHTML_BOX_FLEX},
+      {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
+      {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER},
+      {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
+      {"scrollbar-arrow-color", CSS_PROP_SCROLLBAR_ARROW_COLOR},
+      {"white-space", CSS_PROP_WHITE_SPACE},
+      {"table-layout", CSS_PROP_TABLE_LAYOUT},
       {"max-height", CSS_PROP_MAX_HEIGHT},
-      {"padding-top", CSS_PROP_PADDING_TOP},
+      {"-khtml-user-drag", CSS_PROP__KHTML_USER_DRAG},
+      {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED},
+      {"text-shadow", CSS_PROP_TEXT_SHADOW},
       {"opacity", CSS_PROP_OPACITY},
-      {"scrollbar-track-color", CSS_PROP_SCROLLBAR_TRACK_COLOR},
-      {"visibility", CSS_PROP_VISIBILITY},
       {"border-style", CSS_PROP_BORDER_STYLE},
-      {"margin-left", CSS_PROP_MARGIN_LEFT},
-      {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
-      {"letter-spacing", CSS_PROP_LETTER_SPACING},
-      {"-khtml-box-pack", CSS_PROP__KHTML_BOX_PACK},
-      {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE},
-      {"margin-right", CSS_PROP_MARGIN_RIGHT},
-      {"scrollbar-3dlight-color", CSS_PROP_SCROLLBAR_3DLIGHT_COLOR},
+      {"visibility", CSS_PROP_VISIBILITY},
+      {"max-width", CSS_PROP_MAX_WIDTH},
+      {"scrollbar-shadow-color", CSS_PROP_SCROLLBAR_SHADOW_COLOR},
+      {"direction", CSS_PROP_DIRECTION},
+      {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
+      {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
+      {"outline", CSS_PROP_OUTLINE},
+      {"font", CSS_PROP_FONT},
+      {"outline-color", CSS_PROP_OUTLINE_COLOR},
+      {"-khtml-flow-mode", CSS_PROP__KHTML_FLOW_MODE},
+      {"unicode-bidi", CSS_PROP_UNICODE_BIDI},
+      {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR},
       {"list-style", CSS_PROP_LIST_STYLE},
-      {"padding-left", CSS_PROP_PADDING_LEFT},
-      {"-khtml-user-select", CSS_PROP__KHTML_USER_SELECT},
-      {"padding-bottom", CSS_PROP_PADDING_BOTTOM},
-      {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION},
-      {"-khtml-box-flex", CSS_PROP__KHTML_BOX_FLEX},
-      {"empty-cells", CSS_PROP_EMPTY_CELLS},
-      {"padding-right", CSS_PROP_PADDING_RIGHT},
-      {"-apple-line-clamp", CSS_PROP__APPLE_LINE_CLAMP},
-      {"font-style", CSS_PROP_FONT_STYLE},
-      {"text-transform", CSS_PROP_TEXT_TRANSFORM},
-      {"-khtml-box-align", CSS_PROP__KHTML_BOX_ALIGN},
-      {"background", CSS_PROP_BACKGROUND},
-      {"border-top-style", CSS_PROP_BORDER_TOP_STYLE},
       {"display", CSS_PROP_DISPLAY},
-      {"outline-style", CSS_PROP_OUTLINE_STYLE},
-      {"background-color", CSS_PROP_BACKGROUND_COLOR},
-      {"border-spacing", CSS_PROP_BORDER_SPACING},
-      {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT},
-      {"scrollbar-face-color", CSS_PROP_SCROLLBAR_FACE_COLOR},
-      {"outline-offset", CSS_PROP_OUTLINE_OFFSET},
-      {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION},
-      {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
+      {"border-top-style", CSS_PROP_BORDER_TOP_STYLE},
+      {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR},
+      {"counter-reset", CSS_PROP_COUNTER_RESET},
+      {"widows", CSS_PROP_WIDOWS},
+      {"font-stretch", CSS_PROP_FONT_STRETCH},
       {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE},
+      {"z-index", CSS_PROP_Z_INDEX},
+      {"font-size", CSS_PROP_FONT_SIZE},
+      {"text-decoration", CSS_PROP_TEXT_DECORATION},
+      {"text-decoration-color", CSS_PROP_TEXT_DECORATION_COLOR},
+      {"outline-offset", CSS_PROP_OUTLINE_OFFSET},
+      {"empty-cells", CSS_PROP_EMPTY_CELLS},
+      {"position", CSS_PROP_POSITION},
+      {"orphans", CSS_PROP_ORPHANS},
+      {"-khtml-box-flex-group", CSS_PROP__KHTML_BOX_FLEX_GROUP},
+      {"caption-side", CSS_PROP_CAPTION_SIDE},
       {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE},
-      {"-khtml-user-drag", CSS_PROP__KHTML_USER_DRAG},
-      {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR},
-      {"width", CSS_PROP_WIDTH},
+      {"line-height", CSS_PROP_LINE_HEIGHT},
+      {"-khtml-user-modify", CSS_PROP__KHTML_USER_MODIFY},
       {"font-size-adjust", CSS_PROP_FONT_SIZE_ADJUST},
-      {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED},
-      {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
-      {"font-family", CSS_PROP_FONT_FAMILY},
-      {"list-style-position", CSS_PROP_LIST_STYLE_POSITION},
-      {"table-layout", CSS_PROP_TABLE_LAYOUT},
+      {"-khtml-box-orient", CSS_PROP__KHTML_BOX_ORIENT},
+      {"-khtml-box-direction", CSS_PROP__KHTML_BOX_DIRECTION},
+      {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE},
+      {"vertical-align", CSS_PROP_VERTICAL_ALIGN},
+      {"background", CSS_PROP_BACKGROUND},
+      {"outline-width", CSS_PROP_OUTLINE_WIDTH},
+      {"background-color", CSS_PROP_BACKGROUND_COLOR},
+      {"padding", CSS_PROP_PADDING},
+      {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION},
+      {"min-height", CSS_PROP_MIN_HEIGHT},
+      {"-khtml-box-lines", CSS_PROP__KHTML_BOX_LINES},
+      {"padding-left", CSS_PROP_PADDING_LEFT},
+      {"text-transform", CSS_PROP_TEXT_TRANSFORM},
+      {"text-align", CSS_PROP_TEXT_ALIGN},
+      {"margin", CSS_PROP_MARGIN},
+      {"margin-left", CSS_PROP_MARGIN_LEFT},
       {"min-width", CSS_PROP_MIN_WIDTH},
       {"background-repeat", CSS_PROP_BACKGROUND_REPEAT},
-      {"border-width", CSS_PROP_BORDER_WIDTH},
-      {"background-position", CSS_PROP_BACKGROUND_POSITION},
-      {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING},
-      {"-khtml-border-horizontal-spacing", CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING},
-      {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
-      {"-khtml-box-ordinal-group", CSS_PROP__KHTML_BOX_ORDINAL_GROUP},
-      {"overflow", CSS_PROP_OVERFLOW},
-      {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER},
+      {"-apple-line-clamp", CSS_PROP__APPLE_LINE_CLAMP},
+      {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION},
+      {"padding-top", CSS_PROP_PADDING_TOP},
       {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE},
-      {"-khtml-user-modify", CSS_PROP__KHTML_USER_MODIFY},
+      {"letter-spacing", CSS_PROP_LETTER_SPACING},
+      {"border-spacing", CSS_PROP_BORDER_SPACING},
+      {"margin-top", CSS_PROP_MARGIN_TOP},
+      {"padding-bottom", CSS_PROP_PADDING_BOTTOM},
+      {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
+      {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
+      {"outline-style", CSS_PROP_OUTLINE_STYLE},
+      {"font-style", CSS_PROP_FONT_STYLE},
+      {"-khtml-box-align", CSS_PROP__KHTML_BOX_ALIGN},
+      {"content", CSS_PROP_CONTENT},
+      {"font-weight", CSS_PROP_FONT_WEIGHT},
       {"list-style-type", CSS_PROP_LIST_STYLE_TYPE},
-      {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT},
-      {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
-      {"outline-width", CSS_PROP_OUTLINE_WIDTH},
-      {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE},
-      {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X},
+      {"padding-right", CSS_PROP_PADDING_RIGHT},
+      {"font-family", CSS_PROP_FONT_FAMILY},
+      {"margin-right", CSS_PROP_MARGIN_RIGHT},
+      {"font-variant", CSS_PROP_FONT_VARIANT},
+      {"-khtml-box-ordinal-group", CSS_PROP__KHTML_BOX_ORDINAL_GROUP},
+      {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING},
+      {"text-indent", CSS_PROP_TEXT_INDENT},
       {"background-image", CSS_PROP_BACKGROUND_IMAGE},
-      {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
-      {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
-      {"max-width", CSS_PROP_MAX_WIDTH},
-      {"-khtml-box-flex-group", CSS_PROP__KHTML_BOX_FLEX_GROUP},
-      {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
-      {"-khtml-flow-mode", CSS_PROP__KHTML_FLOW_MODE},
-      {"white-space", CSS_PROP_WHITE_SPACE},
-      {"font-weight", CSS_PROP_FONT_WEIGHT},
-      {"text-shadow", CSS_PROP_TEXT_SHADOW},
-      {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y},
-      {"scrollbar-arrow-color", CSS_PROP_SCROLLBAR_ARROW_COLOR},
       {"word-spacing", CSS_PROP_WORD_SPACING},
-      {"-khtml-box-flex-group-transition", CSS_PROP__KHTML_BOX_FLEX_GROUP_TRANSITION},
-      {"scrollbar-shadow-color", CSS_PROP_SCROLLBAR_SHADOW_COLOR},
-      {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR},
-      {"widows", CSS_PROP_WIDOWS}
+      {"list-style-position", CSS_PROP_LIST_STYLE_POSITION},
+      {"-khtml-binding", CSS_PROP__KHTML_BINDING},
+      {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT},
+      {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT},
+      {"background-position", CSS_PROP_BACKGROUND_POSITION},
+      {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X},
+      {"-khtml-border-horizontal-spacing", CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING},
+      {"counter-increment", CSS_PROP_COUNTER_INCREMENT},
+      {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y}
     };
 
   static const short lookup[] =
     {
        -1,  -1,  -1,  -1,  -1,   0,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,   1,  -1,  -1,   2,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,   3,   4,  -1,  -1,  -1,  -1,  -1,
-       -1,   5,  -1,  -1,  -1,  -1,  -1,   6,  -1,  -1,
-        7,  -1,   8,  -1,  -1,  -1,  -1,  -1,  -1,   9,
-       -1,  10,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  11,  -1,  12,  -1,  -1,  13,
-       -1,  -1,  -1,  -1,  -1,  14,  15,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  16,  17,  18,  -1,  -1,
-       -1,  19,  -1,  20,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  21,  -1,
-       -1,  -1,  -1,  -1,  -1,  22,  -1,  -1,  -1,  -1,
-       23,  24,  -1,  -1,  -1,  -1,  25,  -1,  26,  -1,
-       27,  -1,  28,  -1,  29,  -1,  -1,  30,  -1,  -1,
-       -1,  -1,  31,  32,  -1,  -1,  -1,  33,  -1,  34,
-       -1,  -1,  35,  -1,  -1,  -1,  36,  37,  -1,  -1,
-       38,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  39,  -1,
-       -1,  -1,  40,  -1,  -1,  -1,  -1,  41,  -1,  -1,
-       -1,  42,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  43,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  44,  -1,  45,
-       -1,  46,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       47,  -1,  48,  -1,  -1,  -1,  -1,  -1,  -1,  49,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       50,  51,  -1,  -1,  -1,  52,  -1,  -1,  -1,  -1,
-       53,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  54,  55,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  56,  -1,  -1,  -1,
-       57,  -1,  58,  -1,  -1,  -1,  59,  -1,  60,  61,
-       62,  -1,  -1,  -1,  63,  -1,  -1,  64,  65,  -1,
-       66,  -1,  67,  68,  69,  -1,  -1,  -1,  -1,  70,
-       71,  72,  -1,  73,  -1,  -1,  -1,  74,  -1,  -1,
-       75,  -1,  -1,  -1,  76,  -1,  -1,  -1,  -1,  -1,
-       -1,  77,  -1,  -1,  -1,  78,  79,  80,  81,  -1,
-       -1,  82,  -1,  -1,  83,  -1,  -1,  -1,  -1,  84,
-       85,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  86,
-       87,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  88,  -1,  89,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  90,  -1,
-       -1,  91,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       92,  -1,  -1,  -1,  -1,  93,  -1,  -1,  -1,  -1,
-       -1,  94,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  95,  -1,  96,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,   1,  -1,  -1,   2,
+        3,  -1,   4,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,   5,   6,  -1,  -1,  -1,
+       -1,  -1,   7,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,   8,   9,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  10,
+       11,  12,  -1,  -1,  -1,  -1,  13,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  14,  -1,  -1,  -1,  -1,  15,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  16,  -1,
+       -1,  -1,  -1,  -1,  17,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  18,  -1,  -1,  -1,
+       19,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  20,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  21,  22,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  23,  -1,  -1,  -1,  -1,  -1,  24,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       25,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  26,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  27,  -1,
+       -1,  -1,  -1,  -1,  28,  -1,  -1,  29,  -1,  30,
+       -1,  -1,  -1,  31,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  32,  -1,  33,  -1,  -1,  -1,  -1,
+       -1,  34,  -1,  -1,  -1,  35,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  36,  -1,  -1,  -1,  37,  -1,  -1,  38,
+       -1,  39,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  40,  41,  -1,  -1,
+       42,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  43,  -1,  -1,  -1,  44,  45,  46,  -1,  -1,
+       -1,  -1,  47,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       48,  -1,  -1,  -1,  49,  -1,  -1,  50,  -1,  51,
+       -1,  -1,  52,  53,  -1,  -1,  -1,  54,  -1,  55,
+       -1,  -1,  -1,  56,  -1,  -1,  57,  -1,  -1,  -1,
+       -1,  -1,  58,  -1,  -1,  -1,  59,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  60,  -1,  -1,  -1,  -1,
+       -1,  -1,  61,  -1,  -1,  -1,  62,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  63,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  64,  -1,
+       -1,  65,  66,  -1,  67,  -1,  -1,  68,  -1,  69,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       70,  -1,  -1,  -1,  -1,  -1,  71,  -1,  -1,  72,
+       -1,  -1,  -1,  -1,  -1,  -1,  73,  -1,  -1,  -1,
+       -1,  -1,  -1,  74,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  75,  -1,  -1,
+       -1,  76,  77,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  78,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  79,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  80,  -1,  -1,  81,  -1,  -1,  -1,
+       -1,  -1,  82,  -1,  -1,  83,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       84,  -1,  -1,  -1,  85,  86,  -1,  -1,  87,  -1,
+       -1,  88,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  89,  -1,  90,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  91,  92,  -1,  -1,  -1,
+       -1,  -1,  93,  -1,  94,  95,  96,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  97,  -1,  -1,  98,
-       -1,  -1,  99,  -1,  -1,  -1,  -1,  -1,  -1, 100,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 101,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 102,  -1,  -1,
-       -1,  -1,  -1,  -1, 103, 104,  -1,  -1,  -1,  -1,
-       -1,  -1, 105,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 106,  -1, 107,  -1,  -1,  -1, 108,  -1,
-       -1, 109,  -1,  -1,  -1,  -1, 110,  -1,  -1,  -1,
-       -1,  -1,  -1, 111,  -1, 112, 113,  -1,  -1,  -1,
-       -1, 114,  -1, 115,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 116, 117,  -1,  -1,  -1,
-       -1, 118,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  99,  -1,  -1,
+       -1,  -1, 100,  -1,  -1, 101, 102,  -1,  -1,  -1,
+       -1, 103,  -1,  -1, 104,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1, 105,  -1,  -1,  -1,  -1,  -1,
+      106,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1, 107,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 108,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 109,  -1,
+       -1,  -1,  -1, 110,  -1, 111, 112,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 113,  -1,  -1,
+       -1, 114,  -1,  -1,  -1, 115,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 116,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1, 117,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 118,  -1,  -1,  -1,  -1, 119,  -1,  -1,
+       -1,  -1,  -1,  -1, 120,  -1,  -1,  -1,  -1,  -1,
+      121,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 122,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 123,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 124,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 125,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 119,  -1, 120,  -1,  -1,  -1,  -1, 121,
-       -1, 122,  -1, 123,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 124,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 125,  -1,  -1,  -1,  -1, 126,  -1,  -1,  -1,
-       -1, 127,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 128,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 129,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 130,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 126,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 127,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 128,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 129,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 130,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1, 131,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 132,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 132,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
@@ -364,13 +415,12 @@ findProp (register const char *str, register unsigned int len)
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 133,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 134
+       -1,  -1,  -1,  -1,  -1,  -1, 133
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -423,7 +473,6 @@ static const char * const propertyList[] = {
 "-khtml-box-direction", 
 "-khtml-box-flex", 
 "-khtml-box-flex-group", 
-"-khtml-box-flex-group-transition", 
 "-khtml-box-lines", 
 "-khtml-box-ordinal-group", 
 "-khtml-box-orient", 
index adc8360..6df9757 100644 (file)
 #define CSS_PROP__KHTML_BOX_DIRECTION 27
 #define CSS_PROP__KHTML_BOX_FLEX 28
 #define CSS_PROP__KHTML_BOX_FLEX_GROUP 29
-#define CSS_PROP__KHTML_BOX_FLEX_GROUP_TRANSITION 30
-#define CSS_PROP__KHTML_BOX_LINES 31
-#define CSS_PROP__KHTML_BOX_ORDINAL_GROUP 32
-#define CSS_PROP__KHTML_BOX_ORIENT 33
-#define CSS_PROP__KHTML_BOX_PACK 34
-#define CSS_PROP_CAPTION_SIDE 35
-#define CSS_PROP_CLEAR 36
-#define CSS_PROP_CLIP 37
-#define CSS_PROP_COLOR 38
-#define CSS_PROP_CONTENT 39
-#define CSS_PROP_COUNTER_INCREMENT 40
-#define CSS_PROP_COUNTER_RESET 41
-#define CSS_PROP_CURSOR 42
-#define CSS_PROP_DIRECTION 43
-#define CSS_PROP_DISPLAY 44
-#define CSS_PROP_EMPTY_CELLS 45
-#define CSS_PROP_FLOAT 46
-#define CSS_PROP_FONT_FAMILY 47
-#define CSS_PROP_FONT_SIZE 48
-#define CSS_PROP_FONT_SIZE_ADJUST 49
-#define CSS_PROP_FONT_STRETCH 50
-#define CSS_PROP_FONT_STYLE 51
-#define CSS_PROP_FONT_VARIANT 52
-#define CSS_PROP_FONT_WEIGHT 53
-#define CSS_PROP_HEIGHT 54
-#define CSS_PROP_LEFT 55
-#define CSS_PROP_LETTER_SPACING 56
-#define CSS_PROP__APPLE_LINE_CLAMP 57
-#define CSS_PROP_LINE_HEIGHT 58
-#define CSS_PROP_LIST_STYLE_IMAGE 59
-#define CSS_PROP_LIST_STYLE_POSITION 60
-#define CSS_PROP_LIST_STYLE_TYPE 61
-#define CSS_PROP_MARGIN_TOP 62
-#define CSS_PROP_MARGIN_RIGHT 63
-#define CSS_PROP_MARGIN_BOTTOM 64
-#define CSS_PROP_MARGIN_LEFT 65
-#define CSS_PROP__KHTML_MARQUEE 66
-#define CSS_PROP__KHTML_MARQUEE_DIRECTION 67
-#define CSS_PROP__KHTML_MARQUEE_INCREMENT 68
-#define CSS_PROP__KHTML_MARQUEE_REPETITION 69
-#define CSS_PROP__KHTML_MARQUEE_SPEED 70
-#define CSS_PROP__KHTML_MARQUEE_STYLE 71
-#define CSS_PROP_MAX_HEIGHT 72
-#define CSS_PROP_MAX_WIDTH 73
-#define CSS_PROP_MIN_HEIGHT 74
-#define CSS_PROP_MIN_WIDTH 75
-#define CSS_PROP_OPACITY 76
-#define CSS_PROP_ORPHANS 77
-#define CSS_PROP_OUTLINE_COLOR 78
-#define CSS_PROP_OUTLINE_OFFSET 79
-#define CSS_PROP_OUTLINE_STYLE 80
-#define CSS_PROP_OUTLINE_WIDTH 81
-#define CSS_PROP_OVERFLOW 82
-#define CSS_PROP_PADDING_TOP 83
-#define CSS_PROP_PADDING_RIGHT 84
-#define CSS_PROP_PADDING_BOTTOM 85
-#define CSS_PROP_PADDING_LEFT 86
-#define CSS_PROP_PAGE 87
-#define CSS_PROP_PAGE_BREAK_AFTER 88
-#define CSS_PROP_PAGE_BREAK_BEFORE 89
-#define CSS_PROP_PAGE_BREAK_INSIDE 90
-#define CSS_PROP_POSITION 91
-#define CSS_PROP_QUOTES 92
-#define CSS_PROP_RIGHT 93
-#define CSS_PROP_SIZE 94
-#define CSS_PROP_TABLE_LAYOUT 95
-#define CSS_PROP_TEXT_ALIGN 96
-#define CSS_PROP_TEXT_DECORATION 97
-#define CSS_PROP_TEXT_DECORATION_COLOR 98
-#define CSS_PROP_TEXT_INDENT 99
-#define CSS_PROP_TEXT_SHADOW 100
-#define CSS_PROP_TEXT_TRANSFORM 101
-#define CSS_PROP_TOP 102
-#define CSS_PROP_UNICODE_BIDI 103
-#define CSS_PROP__KHTML_USER_DRAG 104
-#define CSS_PROP__KHTML_USER_MODIFY 105
-#define CSS_PROP__KHTML_USER_SELECT 106
-#define CSS_PROP_VERTICAL_ALIGN 107
-#define CSS_PROP_VISIBILITY 108
-#define CSS_PROP_WHITE_SPACE 109
-#define CSS_PROP_WIDOWS 110
-#define CSS_PROP_WIDTH 111
-#define CSS_PROP_WORD_SPACING 112
-#define CSS_PROP_Z_INDEX 113
-#define CSS_PROP_BACKGROUND 114
-#define CSS_PROP_BORDER 115
-#define CSS_PROP_BORDER_COLOR 116
-#define CSS_PROP_BORDER_STYLE 117
-#define CSS_PROP_BORDER_TOP 118
-#define CSS_PROP_BORDER_RIGHT 119
-#define CSS_PROP_BORDER_BOTTOM 120
-#define CSS_PROP_BORDER_LEFT 121
-#define CSS_PROP_BORDER_WIDTH 122
-#define CSS_PROP_FONT 123
-#define CSS_PROP_LIST_STYLE 124
-#define CSS_PROP_MARGIN 125
-#define CSS_PROP_OUTLINE 126
-#define CSS_PROP_PADDING 127
-#define CSS_PROP_SCROLLBAR_FACE_COLOR 128
-#define CSS_PROP_SCROLLBAR_SHADOW_COLOR 129
-#define CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR 130
-#define CSS_PROP_SCROLLBAR_3DLIGHT_COLOR 131
-#define CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR 132
-#define CSS_PROP_SCROLLBAR_TRACK_COLOR 133
-#define CSS_PROP_SCROLLBAR_ARROW_COLOR 134
-#define CSS_PROP__KHTML_FLOW_MODE 135
+#define CSS_PROP__KHTML_BOX_LINES 30
+#define CSS_PROP__KHTML_BOX_ORDINAL_GROUP 31
+#define CSS_PROP__KHTML_BOX_ORIENT 32
+#define CSS_PROP__KHTML_BOX_PACK 33
+#define CSS_PROP_CAPTION_SIDE 34
+#define CSS_PROP_CLEAR 35
+#define CSS_PROP_CLIP 36
+#define CSS_PROP_COLOR 37
+#define CSS_PROP_CONTENT 38
+#define CSS_PROP_COUNTER_INCREMENT 39
+#define CSS_PROP_COUNTER_RESET 40
+#define CSS_PROP_CURSOR 41
+#define CSS_PROP_DIRECTION 42
+#define CSS_PROP_DISPLAY 43
+#define CSS_PROP_EMPTY_CELLS 44
+#define CSS_PROP_FLOAT 45
+#define CSS_PROP_FONT_FAMILY 46
+#define CSS_PROP_FONT_SIZE 47
+#define CSS_PROP_FONT_SIZE_ADJUST 48
+#define CSS_PROP_FONT_STRETCH 49
+#define CSS_PROP_FONT_STYLE 50
+#define CSS_PROP_FONT_VARIANT 51
+#define CSS_PROP_FONT_WEIGHT 52
+#define CSS_PROP_HEIGHT 53
+#define CSS_PROP_LEFT 54
+#define CSS_PROP_LETTER_SPACING 55
+#define CSS_PROP__APPLE_LINE_CLAMP 56
+#define CSS_PROP_LINE_HEIGHT 57
+#define CSS_PROP_LIST_STYLE_IMAGE 58
+#define CSS_PROP_LIST_STYLE_POSITION 59
+#define CSS_PROP_LIST_STYLE_TYPE 60
+#define CSS_PROP_MARGIN_TOP 61
+#define CSS_PROP_MARGIN_RIGHT 62
+#define CSS_PROP_MARGIN_BOTTOM 63
+#define CSS_PROP_MARGIN_LEFT 64
+#define CSS_PROP__KHTML_MARQUEE 65
+#define CSS_PROP__KHTML_MARQUEE_DIRECTION 66
+#define CSS_PROP__KHTML_MARQUEE_INCREMENT 67
+#define CSS_PROP__KHTML_MARQUEE_REPETITION 68
+#define CSS_PROP__KHTML_MARQUEE_SPEED 69
+#define CSS_PROP__KHTML_MARQUEE_STYLE 70
+#define CSS_PROP_MAX_HEIGHT 71
+#define CSS_PROP_MAX_WIDTH 72
+#define CSS_PROP_MIN_HEIGHT 73
+#define CSS_PROP_MIN_WIDTH 74
+#define CSS_PROP_OPACITY 75
+#define CSS_PROP_ORPHANS 76
+#define CSS_PROP_OUTLINE_COLOR 77
+#define CSS_PROP_OUTLINE_OFFSET 78
+#define CSS_PROP_OUTLINE_STYLE 79
+#define CSS_PROP_OUTLINE_WIDTH 80
+#define CSS_PROP_OVERFLOW 81
+#define CSS_PROP_PADDING_TOP 82
+#define CSS_PROP_PADDING_RIGHT 83
+#define CSS_PROP_PADDING_BOTTOM 84
+#define CSS_PROP_PADDING_LEFT 85
+#define CSS_PROP_PAGE 86
+#define CSS_PROP_PAGE_BREAK_AFTER 87
+#define CSS_PROP_PAGE_BREAK_BEFORE 88
+#define CSS_PROP_PAGE_BREAK_INSIDE 89
+#define CSS_PROP_POSITION 90
+#define CSS_PROP_QUOTES 91
+#define CSS_PROP_RIGHT 92
+#define CSS_PROP_SIZE 93
+#define CSS_PROP_TABLE_LAYOUT 94
+#define CSS_PROP_TEXT_ALIGN 95
+#define CSS_PROP_TEXT_DECORATION 96
+#define CSS_PROP_TEXT_DECORATION_COLOR 97
+#define CSS_PROP_TEXT_INDENT 98
+#define CSS_PROP_TEXT_SHADOW 99
+#define CSS_PROP_TEXT_TRANSFORM 100
+#define CSS_PROP_TOP 101
+#define CSS_PROP_UNICODE_BIDI 102
+#define CSS_PROP__KHTML_USER_DRAG 103
+#define CSS_PROP__KHTML_USER_MODIFY 104
+#define CSS_PROP__KHTML_USER_SELECT 105
+#define CSS_PROP_VERTICAL_ALIGN 106
+#define CSS_PROP_VISIBILITY 107
+#define CSS_PROP_WHITE_SPACE 108
+#define CSS_PROP_WIDOWS 109
+#define CSS_PROP_WIDTH 110
+#define CSS_PROP_WORD_SPACING 111
+#define CSS_PROP_Z_INDEX 112
+#define CSS_PROP_BACKGROUND 113
+#define CSS_PROP_BORDER 114
+#define CSS_PROP_BORDER_COLOR 115
+#define CSS_PROP_BORDER_STYLE 116
+#define CSS_PROP_BORDER_TOP 117
+#define CSS_PROP_BORDER_RIGHT 118
+#define CSS_PROP_BORDER_BOTTOM 119
+#define CSS_PROP_BORDER_LEFT 120
+#define CSS_PROP_BORDER_WIDTH 121
+#define CSS_PROP_FONT 122
+#define CSS_PROP_LIST_STYLE 123
+#define CSS_PROP_MARGIN 124
+#define CSS_PROP_OUTLINE 125
+#define CSS_PROP_PADDING 126
+#define CSS_PROP_SCROLLBAR_FACE_COLOR 127
+#define CSS_PROP_SCROLLBAR_SHADOW_COLOR 128
+#define CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR 129
+#define CSS_PROP_SCROLLBAR_3DLIGHT_COLOR 130
+#define CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR 131
+#define CSS_PROP_SCROLLBAR_TRACK_COLOR 132
+#define CSS_PROP_SCROLLBAR_ARROW_COLOR 133
+#define CSS_PROP__KHTML_FLOW_MODE 134
 
 #define CSS_PROP_MAX CSS_PROP_Z_INDEX
-#define CSS_PROP_TOTAL 136
+#define CSS_PROP_TOTAL 135
 #endif
 
index 12d1d3b..a450648 100644 (file)
@@ -41,7 +41,6 @@ bottom
 -khtml-box-direction
 -khtml-box-flex
 -khtml-box-flex-group
--khtml-box-flex-group-transition
 -khtml-box-lines
 -khtml-box-ordinal-group
 -khtml-box-orient
index 4c59e8c..139d97e 100644 (file)
@@ -2490,7 +2490,17 @@ void CSSStyleSelector::applyProperty( int id, DOM::CSSValueImpl *value )
     case CSS_PROP_MARGIN_BOTTOM:
     case CSS_PROP_MARGIN_LEFT:
         // +inherit +auto
-        if(id != CSS_PROP_MAX_WIDTH && primitiveValue &&
+        if (id == CSS_PROP_WIDTH || id == CSS_PROP_MIN_WIDTH || id == CSS_PROP_MAX_WIDTH) {
+            if (primitiveValue && primitiveValue->getIdent() == CSS_VAL_INTRINSIC) {
+                l = Length(Intrinsic);
+                apply = true;
+            }
+            else if (primitiveValue && primitiveValue->getIdent() == CSS_VAL_MIN_INTRINSIC) {
+                l = Length(MinIntrinsic);
+                apply = true;
+            }
+        }
+        else if (id != CSS_PROP_MAX_WIDTH && primitiveValue &&
            primitiveValue->getIdent() == CSS_VAL_AUTO)
         {
             //kdDebug( 6080 ) << "found value=auto" << endl;
@@ -2606,6 +2616,14 @@ void CSSStyleSelector::applyProperty( int id, DOM::CSSValueImpl *value )
             apply = true;
     case CSS_PROP_HEIGHT:
     case CSS_PROP_MIN_HEIGHT:
+        if (primitiveValue && primitiveValue->getIdent() == CSS_VAL_INTRINSIC) {
+            l = Length(Intrinsic);
+            apply = true;
+        }
+        else if (primitiveValue && primitiveValue->getIdent() == CSS_VAL_MIN_INTRINSIC) {
+            l = Length(MinIntrinsic);
+            apply = true;
+        }
         if(id != CSS_PROP_MAX_HEIGHT && primitiveValue &&
            primitiveValue->getIdent() == CSS_VAL_AUTO)
             apply = true;
@@ -3421,39 +3439,6 @@ void CSSStyleSelector::applyProperty( int id, DOM::CSSValueImpl *value )
             return; // Error case.
         style->setBoxOrdinalGroup((unsigned int)(primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_NUMBER)));
         return;
-    case CSS_PROP__KHTML_BOX_FLEX_GROUP_TRANSITION: {
-        if (isInherit) {
-            style->setBoxFlexGroupTransition(parentStyle->boxFlexGroupTransition() ? 
-                                             new FlexGroupTransitionData(*parentStyle->boxFlexGroupTransition()) : 0);
-            return;
-        }
-        else if (isInitial) {
-            style->setBoxFlexGroupTransition(0);
-            return;
-        }
-
-        if (!value->isValueList()) return;
-        CSSValueListImpl *list = static_cast<CSSValueListImpl *>(value);
-        int len = list->length();
-        for (int i = 0; i < len; i++) {
-            FlexGroupTransitionValueImpl *item = static_cast<FlexGroupTransitionValueImpl*>(list->item(i));
-            FlexGroupTransitionData* transitionData;
-            if (item->isAuto())
-                transitionData = new FlexGroupTransitionData();
-            else {
-                int type = item->length->primitiveType();
-                Length l;
-                if (type > CSSPrimitiveValue::CSS_PERCENTAGE && type < CSSPrimitiveValue::CSS_DEG)
-                    l = Length(primitiveValue->computeLength(style, paintDeviceMetrics), Fixed, false);
-                else if(type == CSSPrimitiveValue::CSS_PERCENTAGE)
-                    l = Length((int)primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_PERCENTAGE), Percent);
-                transitionData = new FlexGroupTransitionData(item->group1, item->group2, l);
-            }
-            style->setBoxFlexGroupTransition(transitionData, i != 0);
-        }
-            
-        return;
-    }
     case CSS_PROP__KHTML_MARQUEE:
         if (value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
         style->setMarqueeDirection(parentStyle->marqueeDirection());
index 8ae895a..677fb78 100644 (file)
@@ -7,7 +7,7 @@ struct css_value {
     const char *name;
     int id;
 };
-/* maximum key range = 3149, duplicates = 1 */
+/* maximum key range = 2829, duplicates = 1 */
 
 #ifdef __GNUC__
 __inline
@@ -21,32 +21,32 @@ hash_val (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149,   15, 3149, 3149,    0,    5,
-        10,   15,   20,   25,   30,   35,   40,    0, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149,    0,  163,  355,
-        60,  215,  510,  315,  270,   35,    0,  505,    0,    3,
-        55,   45,  165,  135,  280,   10,    0,  375,   28,    6,
-       505,  110,  178, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149, 3149,
-      3149, 3149, 3149, 3149, 3149, 3149
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829,   15, 2829, 2829,    0,    5,
+        10,   15,   20,   25,   30,   35,   40,    0, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829,    0,   58,    3,
+       211,  225,   13,  390,   95,   35,    5,  480,    0,  165,
+        55,   50,   53,   10,  290,   10,    0,   65,  153,  435,
+       278,   45,  195, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829, 2829,
+      2829, 2829, 2829, 2829, 2829, 2829
     };
   register int hval = 0;
 
@@ -110,11 +110,11 @@ findValue (register const char *str, register unsigned int len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 258,
+      TOTAL_KEYWORDS = 260,
       MIN_WORD_LENGTH = 2,
       MAX_WORD_LENGTH = 22,
       MIN_HASH_VALUE = 0,
-      MAX_HASH_VALUE = 3148
+      MAX_HASH_VALUE = 2828
     };
 
   static const struct css_value wordlist_value[] =
@@ -122,513 +122,474 @@ findValue (register const char *str, register unsigned int len)
       {"900", CSS_VAL_900},
       {"100", CSS_VAL_100},
       {"200", CSS_VAL_200},
-      {"small", CSS_VAL_SMALL},
       {"300", CSS_VAL_300},
       {"400", CSS_VAL_400},
+      {"fast", CSS_VAL_FAST},
       {"500", CSS_VAL_500},
       {"600", CSS_VAL_600},
       {"700", CSS_VAL_700},
       {"800", CSS_VAL_800},
-      {"wait", CSS_VAL_WAIT},
-      {"slow", CSS_VAL_SLOW},
-      {"always", CSS_VAL_ALWAYS},
-      {"solid", CSS_VAL_SOLID},
-      {"initial", CSS_VAL_INITIAL},
-      {"down", CSS_VAL_DOWN},
-      {"avoid", CSS_VAL_AVOID},
-      {"navy", CSS_VAL_NAVY},
-      {"window", CSS_VAL_WINDOW},
+      {"static", CSS_VAL_STATIC},
+      {"italic", CSS_VAL_ITALIC},
+      {"aqua", CSS_VAL_AQUA},
       {"top", CSS_VAL_TOP},
+      {"auto", CSS_VAL_AUTO},
+      {"up", CSS_VAL_UP},
+      {"fantasy", CSS_VAL_FANTASY},
+      {"sub", CSS_VAL_SUB},
+      {"icon", CSS_VAL_ICON},
+      {"initial", CSS_VAL_INITIAL},
+      {"justify", CSS_VAL_JUSTIFY},
+      {"small", CSS_VAL_SMALL},
+      {"thin", CSS_VAL_THIN},
+      {"caption", CSS_VAL_CAPTION},
+      {"both", CSS_VAL_BOTH},
+      {"fuchsia", CSS_VAL_FUCHSIA},
       {"teal", CSS_VAL_TEAL},
-      {"lime", CSS_VAL_LIME},
-      {"bottom", CSS_VAL_BOTTOM},
-      {"bold", CSS_VAL_BOLD},
+      {"left", CSS_VAL_LEFT},
+      {"navy", CSS_VAL_NAVY},
+      {"small-caps", CSS_VAL_SMALL_CAPS},
+      {"disc", CSS_VAL_DISC},
+      {"compact", CSS_VAL_COMPACT},
+      {"table", CSS_VAL_TABLE},
       {"ltr", CSS_VAL_LTR},
       {"rtl", CSS_VAL_RTL},
       {"start", CSS_VAL_START},
-      {"move", CSS_VAL_MOVE},
-      {"list-item", CSS_VAL_LIST_ITEM},
+      {"solid", CSS_VAL_SOLID},
+      {"bold", CSS_VAL_BOLD},
+      {"bottom", CSS_VAL_BOTTOM},
       {"inset", CSS_VAL_INSET},
-      {"slide", CSS_VAL_SLIDE},
-      {"olive", CSS_VAL_OLIVE},
-      {"end", CSS_VAL_END},
-      {"show", CSS_VAL_SHOW},
-      {"thin", CSS_VAL_THIN},
-      {"none", CSS_VAL_NONE},
-      {"middle", CSS_VAL_MIDDLE},
-      {"yellow", CSS_VAL_YELLOW},
-      {"table", CSS_VAL_TABLE},
-      {"dotted", CSS_VAL_DOTTED},
-      {"normal", CSS_VAL_NORMAL},
+      {"loud", CSS_VAL_LOUD},
+      {"collapse", CSS_VAL_COLLAPSE},
+      {"blue", CSS_VAL_BLUE},
+      {"outset", CSS_VAL_OUTSET},
+      {"scroll", CSS_VAL_SCROLL},
       {"hand", CSS_VAL_HAND},
+      {"cross", CSS_VAL_CROSS},
+      {"help", CSS_VAL_HELP},
+      {"none", CSS_VAL_NONE},
+      {"small-caption", CSS_VAL_SMALL_CAPTION},
+      {"crop", CSS_VAL_CROP},
       {"inline", CSS_VAL_INLINE},
-      {"static", CSS_VAL_STATIC},
-      {"inside", CSS_VAL_INSIDE},
-      {"auto", CSS_VAL_AUTO},
-      {"italic", CSS_VAL_ITALIC},
-      {"maroon", CSS_VAL_MAROON},
-      {"below", CSS_VAL_BELOW},
-      {"above", CSS_VAL_ABOVE},
-      {"level", CSS_VAL_LEVEL},
-      {"disc", CSS_VAL_DISC},
-      {"both", CSS_VAL_BOTH},
-      {"loud", CSS_VAL_LOUD},
-      {"visible", CSS_VAL_VISIBLE},
-      {"icon", CSS_VAL_ICON},
-      {"smaller", CSS_VAL_SMALLER},
-      {"aqua", CSS_VAL_AQUA},
-      {"fast", CSS_VAL_FAST},
-      {"white", CSS_VAL_WHITE},
+      {"absolute", CSS_VAL_ABSOLUTE},
+      {"lime", CSS_VAL_LIME},
+      {"oblique", CSS_VAL_OBLIQUE},
+      {"status-bar", CSS_VAL_STATUS_BAR},
+      {"avoid", CSS_VAL_AVOID},
+      {"infinite", CSS_VAL_INFINITE},
+      {"olive", CSS_VAL_OLIVE},
       {"x-small", CSS_VAL_X_SMALL},
-      {"up", CSS_VAL_UP},
+      {"buttonface", CSS_VAL_BUTTONFACE},
+      {"wait", CSS_VAL_WAIT},
       {"mix", CSS_VAL_MIX},
+      {"slide", CSS_VAL_SLIDE},
+      {"list-item", CSS_VAL_LIST_ITEM},
+      {"above", CSS_VAL_ABOVE},
+      {"unfurl", CSS_VAL_UNFURL},
+      {"always", CSS_VAL_ALWAYS},
+      {"end", CSS_VAL_END},
+      {"table-caption", CSS_VAL_TABLE_CAPTION},
+      {"slow", CSS_VAL_SLOW},
+      {"text", CSS_VAL_TEXT},
+      {"menu", CSS_VAL_MENU},
+      {"default", CSS_VAL_DEFAULT},
+      {"run-in", CSS_VAL_RUN_IN},
+      {"visible", CSS_VAL_VISIBLE},
+      {"intrinsic", CSS_VAL_INTRINSIC},
+      {"table-cell", CSS_VAL_TABLE_CELL},
       {"ahead", CSS_VAL_AHEAD},
-      {"lower", CSS_VAL_LOWER},
-      {"sub", CSS_VAL_SUB},
-      {"nowrap", CSS_VAL_NOWRAP},
-      {"red", CSS_VAL_RED},
-      {"small-caps", CSS_VAL_SMALL_CAPS},
-      {"silver", CSS_VAL_SILVER},
+      {"black", CSS_VAL_BLACK},
+      {"multiple", CSS_VAL_MULTIPLE},
+      {"capitalize", CSS_VAL_CAPITALIZE},
+      {"circle", CSS_VAL_CIRCLE},
+      {"landscape", CSS_VAL_LANDSCAPE},
+      {"normal", CSS_VAL_NORMAL},
       {"hide", CSS_VAL_HIDE},
-      {"wider", CSS_VAL_WIDER},
-      {"invert", CSS_VAL_INVERT},
-      {"dashed", CSS_VAL_DASHED},
-      {"single", CSS_VAL_SINGLE},
-      {"armenian", CSS_VAL_ARMENIAN},
-      {"outset", CSS_VAL_OUTSET},
-      {"menu", CSS_VAL_MENU},
-      {"help", CSS_VAL_HELP},
-      {"lower-latin", CSS_VAL_LOWER_LATIN},
-      {"caption", CSS_VAL_CAPTION},
-      {"embed", CSS_VAL_EMBED},
       {"pre", CSS_VAL_PRE},
-      {"decimal", CSS_VAL_DECIMAL},
-      {"overlay", CSS_VAL_OVERLAY},
-      {"small-caption", CSS_VAL_SMALL_CAPTION},
-      {"fantasy", CSS_VAL_FANTASY},
-      {"scroll", CSS_VAL_SCROLL},
-      {"medium", CSS_VAL_MEDIUM},
-      {"baseline", CSS_VAL_BASELINE},
-      {"hidden", CSS_VAL_HIDDEN},
-      {"cross", CSS_VAL_CROSS},
-      {"element", CSS_VAL_ELEMENT},
-      {"gray", CSS_VAL_GRAY},
-      {"text", CSS_VAL_TEXT},
-      {"table-row", CSS_VAL_TABLE_ROW},
-      {"left", CSS_VAL_LEFT},
+      {"inside", CSS_VAL_INSIDE},
+      {"serif", CSS_VAL_SERIF},
+      {"show", CSS_VAL_SHOW},
+      {"block", CSS_VAL_BLOCK},
+      {"move", CSS_VAL_MOVE},
       {"outside", CSS_VAL_OUTSIDE},
-      {"blue", CSS_VAL_BLUE},
+      {"square", CSS_VAL_SQUARE},
+      {"level", CSS_VAL_LEVEL},
+      {"baseline", CSS_VAL_BASELINE},
+      {"double", CSS_VAL_DOUBLE},
+      {"maroon", CSS_VAL_MAROON},
+      {"monospace", CSS_VAL_MONOSPACE},
+      {"activecaption", CSS_VAL_ACTIVECAPTION},
+      {"thick", CSS_VAL_THICK},
+      {"text-top", CSS_VAL_TEXT_TOP},
+      {"stretch", CSS_VAL_STRETCH},
       {"blink", CSS_VAL_BLINK},
-      {"bolder", CSS_VAL_BOLDER},
-      {"alternate", CSS_VAL_ALTERNATE},
-      {"relative", CSS_VAL_RELATIVE},
-      {"read-only", CSS_VAL_READ_ONLY},
+      {"table-column", CSS_VAL_TABLE_COLUMN},
+      {"decimal", CSS_VAL_DECIMAL},
+      {"super", CSS_VAL_SUPER},
+      {"close-quote", CSS_VAL_CLOSE_QUOTE},
+      {"infotext", CSS_VAL_INFOTEXT},
+      {"sans-serif", CSS_VAL_SANS_SERIF},
+      {"purple", CSS_VAL_PURPLE},
+      {"smaller", CSS_VAL_SMALLER},
+      {"dotted", CSS_VAL_DOTTED},
+      {"captiontext", CSS_VAL_CAPTIONTEXT},
+      {"scrollbar", CSS_VAL_SCROLLBAR},
+      {"inactivecaption", CSS_VAL_INACTIVECAPTION},
       {"inline-table", CSS_VAL_INLINE_TABLE},
-      {"collapse", CSS_VAL_COLLAPSE},
-      {"multiple", CSS_VAL_MULTIPLE},
+      {"vertical", CSS_VAL_VERTICAL},
       {"pointer", CSS_VAL_POINTER},
+      {"silver", CSS_VAL_SILVER},
+      {"single", CSS_VAL_SINGLE},
       {"portrait", CSS_VAL_PORTRAIT},
-      {"absolute", CSS_VAL_ABSOLUTE},
-      {"large", CSS_VAL_LARGE},
-      {"run-in", CSS_VAL_RUN_IN},
-      {"crop", CSS_VAL_CROP},
-      {"status-bar", CSS_VAL_STATUS_BAR},
-      {"double", CSS_VAL_DOUBLE},
-      {"landscape", CSS_VAL_LANDSCAPE},
-      {"overline", CSS_VAL_OVERLINE},
+      {"gray", CSS_VAL_GRAY},
+      {"red", CSS_VAL_RED},
+      {"buttontext", CSS_VAL_BUTTONTEXT},
+      {"inherit", CSS_VAL_INHERIT},
+      {"inline-axis", CSS_VAL_INLINE_AXIS},
+      {"xx-small", CSS_VAL_XX_SMALL},
+      {"open-quote", CSS_VAL_OPEN_QUOTE},
+      {"down", CSS_VAL_DOWN},
+      {"dashed", CSS_VAL_DASHED},
+      {"yellow", CSS_VAL_YELLOW},
+      {"invert", CSS_VAL_INVERT},
+      {"fixed", CSS_VAL_FIXED},
+      {"overlay", CSS_VAL_OVERLAY},
+      {"below", CSS_VAL_BELOW},
+      {"horizontal", CSS_VAL_HORIZONTAL},
+      {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE},
+      {"cursive", CSS_VAL_CURSIVE},
+      {"crosshair", CSS_VAL_CROSSHAIR},
+      {"min-intrinsic", CSS_VAL_MIN_INTRINSIC},
+      {"white", CSS_VAL_WHITE},
+      {"upper-latin", CSS_VAL_UPPER_LATIN},
       {"repeat", CSS_VAL_REPEAT},
+      {"alternate", CSS_VAL_ALTERNATE},
+      {"center", CSS_VAL_CENTER},
       {"separate", CSS_VAL_SEPARATE},
-      {"inherit", CSS_VAL_INHERIT},
-      {"monospace", CSS_VAL_MONOSPACE},
       {"right", CSS_VAL_RIGHT},
-      {"ridge", CSS_VAL_RIDGE},
-      {"horizontal", CSS_VAL_HORIZONTAL},
-      {"orange", CSS_VAL_ORANGE},
-      {"vertical", CSS_VAL_VERTICAL},
-      {"grey", CSS_VAL_GREY},
-      {"compact", CSS_VAL_COMPACT},
-      {"windowtext", CSS_VAL_WINDOWTEXT},
-      {"groove", CSS_VAL_GROOVE},
-      {"infinite", CSS_VAL_INFINITE},
-      {"lower-roman", CSS_VAL_LOWER_ROMAN},
-      {"text-top", CSS_VAL_TEXT_TOP},
-      {"w-resize", CSS_VAL_W_RESIZE},
-      {"hiragana", CSS_VAL_HIRAGANA},
-      {"s-resize", CSS_VAL_S_RESIZE},
-      {"inline-axis", CSS_VAL_INLINE_AXIS},
-      {"table-cell", CSS_VAL_TABLE_CELL},
-      {"sw-resize", CSS_VAL_SW_RESIZE},
-      {"oblique", CSS_VAL_OBLIQUE},
-      {"capitalize", CSS_VAL_CAPITALIZE},
-      {"no-repeat", CSS_VAL_NO_REPEAT},
+      {"armenian", CSS_VAL_ARMENIAN},
+      {"hidden", CSS_VAL_HIDDEN},
+      {"bolder", CSS_VAL_BOLDER},
       {"text-bottom", CSS_VAL_TEXT_BOTTOM},
-      {"lower-alpha", CSS_VAL_LOWER_ALPHA},
+      {"middle", CSS_VAL_MIDDLE},
+      {"upper-alpha", CSS_VAL_UPPER_ALPHA},
       {"repeat-y", CSS_VAL_REPEAT_Y},
-      {"n-resize", CSS_VAL_N_RESIZE},
-      {"nw-resize", CSS_VAL_NW_RESIZE},
-      {"square", CSS_VAL_SQUARE},
-      {"black", CSS_VAL_BLACK},
-      {"buttonshadow", CSS_VAL_BUTTONSHADOW},
-      {"xx-small", CSS_VAL_XX_SMALL},
-      {"justify", CSS_VAL_JUSTIFY},
-      {"super", CSS_VAL_SUPER},
-      {"table-caption", CSS_VAL_TABLE_CAPTION},
-      {"serif", CSS_VAL_SERIF},
+      {"hiragana", CSS_VAL_HIRAGANA},
+      {"medium", CSS_VAL_MEDIUM},
+      {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE},
+      {"nowrap", CSS_VAL_NOWRAP},
+      {"embed", CSS_VAL_EMBED},
+      {"-khtml-auto", CSS_VAL__KHTML_AUTO},
+      {"read-only", CSS_VAL_READ_ONLY},
+      {"element", CSS_VAL_ELEMENT},
+      {"large", CSS_VAL_LARGE},
+      {"no-repeat", CSS_VAL_NO_REPEAT},
+      {"uppercase", CSS_VAL_UPPERCASE},
+      {"relative", CSS_VAL_RELATIVE},
+      {"block-axis", CSS_VAL_BLOCK_AXIS},
+      {"grey", CSS_VAL_GREY},
       {"transparent", CSS_VAL_TRANSPARENT},
+      {"marquee", CSS_VAL_MARQUEE},
+      {"lower", CSS_VAL_LOWER},
+      {"s-resize", CSS_VAL_S_RESIZE},
+      {"-khtml-left", CSS_VAL__KHTML_LEFT},
+      {"orange", CSS_VAL_ORANGE},
+      {"inline-block", CSS_VAL_INLINE_BLOCK},
+      {"menutext", CSS_VAL_MENUTEXT},
       {"katakana", CSS_VAL_KATAKANA},
-      {"block", CSS_VAL_BLOCK},
+      {"buttonshadow", CSS_VAL_BUTTONSHADOW},
+      {"overline", CSS_VAL_OVERLINE},
+      {"lighter", CSS_VAL_LIGHTER},
       {"condensed", CSS_VAL_CONDENSED},
+      {"n-resize", CSS_VAL_N_RESIZE},
+      {"table-row", CSS_VAL_TABLE_ROW},
+      {"repeat-x", CSS_VAL_REPEAT_X},
+      {"lower-latin", CSS_VAL_LOWER_LATIN},
+      {"higher", CSS_VAL_HIGHER},
+      {"-khtml-body", CSS_VAL__KHTML_BODY},
+      {"highlight", CSS_VAL_HIGHLIGHT},
+      {"ridge", CSS_VAL_RIDGE},
+      {"-khtml-box", CSS_VAL__KHTML_BOX},
+      {"groove", CSS_VAL_GROOVE},
+      {"underline", CSS_VAL_UNDERLINE},
+      {"lower-alpha", CSS_VAL_LOWER_ALPHA},
       {"green", CSS_VAL_GREEN},
       {"larger", CSS_VAL_LARGER},
-      {"read-write", CSS_VAL_READ_WRITE},
-      {"lighter", CSS_VAL_LIGHTER},
-      {"center", CSS_VAL_CENTER},
-      {"lowercase", CSS_VAL_LOWERCASE},
-      {"stretch", CSS_VAL_STRETCH},
-      {"scrollbar", CSS_VAL_SCROLLBAR},
-      {"sans-serif", CSS_VAL_SANS_SERIF},
-      {"hebrew", CSS_VAL_HEBREW},
-      {"default", CSS_VAL_DEFAULT},
-      {"narrower", CSS_VAL_NARROWER},
+      {"wider", CSS_VAL_WIDER},
+      {"x-large", CSS_VAL_X_LARGE},
+      {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT},
       {"e-resize", CSS_VAL_E_RESIZE},
-      {"thick", CSS_VAL_THICK},
+      {"window", CSS_VAL_WINDOW},
+      {"graytext", CSS_VAL_GRAYTEXT},
       {"se-resize", CSS_VAL_SE_RESIZE},
-      {"-khtml-body", CSS_VAL__KHTML_BODY},
-      {"forwards", CSS_VAL_FORWARDS},
-      {"purple", CSS_VAL_PURPLE},
-      {"windowframe", CSS_VAL_WINDOWFRAME},
-      {"ne-resize", CSS_VAL_NE_RESIZE},
-      {"marquee", CSS_VAL_MARQUEE},
-      {"table-column", CSS_VAL_TABLE_COLUMN},
-      {"-khtml-auto", CSS_VAL__KHTML_AUTO},
-      {"circle", CSS_VAL_CIRCLE},
-      {"reverse", CSS_VAL_REVERSE},
-      {"georgian", CSS_VAL_GEORGIAN},
-      {"open-quote", CSS_VAL_OPEN_QUOTE},
+      {"lowercase", CSS_VAL_LOWERCASE},
       {"expanded", CSS_VAL_EXPANDED},
-      {"crosshair", CSS_VAL_CROSSHAIR},
-      {"activecaption", CSS_VAL_ACTIVECAPTION},
-      {"underline", CSS_VAL_UNDERLINE},
-      {"cursive", CSS_VAL_CURSIVE},
-      {"upper-latin", CSS_VAL_UPPER_LATIN},
-      {"fixed", CSS_VAL_FIXED},
-      {"x-large", CSS_VAL_X_LARGE},
-      {"semi-condensed", CSS_VAL_SEMI_CONDENSED},
-      {"buttontext", CSS_VAL_BUTTONTEXT},
-      {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP},
-      {"infotext", CSS_VAL_INFOTEXT},
-      {"menutext", CSS_VAL_MENUTEXT},
-      {"captiontext", CSS_VAL_CAPTIONTEXT},
-      {"inactivecaption", CSS_VAL_INACTIVECAPTION},
-      {"backwards", CSS_VAL_BACKWARDS},
-      {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE},
-      {"higher", CSS_VAL_HIGHER},
-      {"repeat-x", CSS_VAL_REPEAT_X},
-      {"-khtml-link", CSS_VAL__KHTML_LINK},
-      {"close-quote", CSS_VAL_CLOSE_QUOTE},
-      {"graytext", CSS_VAL_GRAYTEXT},
-      {"threedshadow", CSS_VAL_THREEDSHADOW},
-      {"bidi-override", CSS_VAL_BIDI_OVERRIDE},
-      {"inline-block", CSS_VAL_INLINE_BLOCK},
-      {"message-box", CSS_VAL_MESSAGE_BOX},
-      {"highlight", CSS_VAL_HIGHLIGHT},
-      {"-khtml-box", CSS_VAL__KHTML_BOX},
-      {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE},
-      {"-khtml-text", CSS_VAL__KHTML_TEXT},
-      {"-khtml-left", CSS_VAL__KHTML_LEFT},
-      {"semi-expanded", CSS_VAL_SEMI_EXPANDED},
-      {"fuchsia", CSS_VAL_FUCHSIA},
-      {"unfurl", CSS_VAL_UNFURL},
       {"upper-roman", CSS_VAL_UPPER_ROMAN},
+      {"-khtml-text", CSS_VAL__KHTML_TEXT},
+      {"ne-resize", CSS_VAL_NE_RESIZE},
+      {"threedface", CSS_VAL_THREEDFACE},
+      {"forwards", CSS_VAL_FORWARDS},
+      {"line-through", CSS_VAL_LINE_THROUGH},
+      {"hebrew", CSS_VAL_HEBREW},
+      {"-khtml-link", CSS_VAL__KHTML_LINK},
       {"hiragana-iroha", CSS_VAL_HIRAGANA_IROHA},
-      {"block-axis", CSS_VAL_BLOCK_AXIS},
-      {"upper-alpha", CSS_VAL_UPPER_ALPHA},
-      {"activeborder", CSS_VAL_ACTIVEBORDER},
-      {"-khtml-right", CSS_VAL__KHTML_RIGHT},
-      {"katakana-iroha", CSS_VAL_KATAKANA_IROHA},
-      {"buttonface", CSS_VAL_BUTTONFACE},
+      {"buttonhighlight", CSS_VAL_BUTTONHIGHLIGHT},
       {"ultra-condensed", CSS_VAL_ULTRA_CONDENSED},
-      {"inactiveborder", CSS_VAL_INACTIVEBORDER},
-      {"uppercase", CSS_VAL_UPPERCASE},
+      {"reverse", CSS_VAL_REVERSE},
+      {"message-box", CSS_VAL_MESSAGE_BOX},
+      {"w-resize", CSS_VAL_W_RESIZE},
+      {"georgian", CSS_VAL_GEORGIAN},
+      {"sw-resize", CSS_VAL_SW_RESIZE},
       {"xx-large", CSS_VAL_XX_LARGE},
-      {"line-through", CSS_VAL_LINE_THROUGH},
-      {"-khtml-baseline-middle", CSS_VAL__KHTML_BASELINE_MIDDLE},
-      {"appworkspace", CSS_VAL_APPWORKSPACE},
-      {"table-row-group", CSS_VAL_TABLE_ROW_GROUP},
+      {"nw-resize", CSS_VAL_NW_RESIZE},
+      {"backwards", CSS_VAL_BACKWARDS},
+      {"semi-condensed", CSS_VAL_SEMI_CONDENSED},
+      {"table-column-group", CSS_VAL_TABLE_COLUMN_GROUP},
+      {"katakana-iroha", CSS_VAL_KATAKANA_IROHA},
+      {"activeborder", CSS_VAL_ACTIVEBORDER},
       {"-khtml-center", CSS_VAL__KHTML_CENTER},
+      {"lower-roman", CSS_VAL_LOWER_ROMAN},
       {"-khtml-inline-box", CSS_VAL__KHTML_INLINE_BOX},
+      {"-khtml-right", CSS_VAL__KHTML_RIGHT},
+      {"background", CSS_VAL_BACKGROUND},
       {"ultra-expanded", CSS_VAL_ULTRA_EXPANDED},
+      {"inactiveborder", CSS_VAL_INACTIVEBORDER},
+      {"narrower", CSS_VAL_NARROWER},
+      {"highlighttext", CSS_VAL_HIGHLIGHTTEXT},
+      {"appworkspace", CSS_VAL_APPWORKSPACE},
+      {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP},
+      {"semi-expanded", CSS_VAL_SEMI_EXPANDED},
+      {"windowtext", CSS_VAL_WINDOWTEXT},
+      {"read-write", CSS_VAL_READ_WRITE},
+      {"infobackground", CSS_VAL_INFOBACKGROUND},
       {"-khtml-activelink", CSS_VAL__KHTML_ACTIVELINK},
-      {"threedlightshadow", CSS_VAL_THREEDLIGHTSHADOW},
+      {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP},
+      {"bidi-override", CSS_VAL_BIDI_OVERRIDE},
+      {"threedshadow", CSS_VAL_THREEDSHADOW},
       {"extra-condensed", CSS_VAL_EXTRA_CONDENSED},
-      {"lower-greek", CSS_VAL_LOWER_GREEK},
-      {"decimal-leading-zero", CSS_VAL_DECIMAL_LEADING_ZERO},
-      {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT},
-      {"threedface", CSS_VAL_THREEDFACE},
-      {"buttonhighlight", CSS_VAL_BUTTONHIGHLIGHT},
-      {"background", CSS_VAL_BACKGROUND},
-      {"highlighttext", CSS_VAL_HIGHLIGHTTEXT},
-      {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW},
+      {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC},
+      {"windowframe", CSS_VAL_WINDOWFRAME},
+      {"table-row-group", CSS_VAL_TABLE_ROW_GROUP},
       {"extra-expanded", CSS_VAL_EXTRA_EXPANDED},
-      {"table-column-group", CSS_VAL_TABLE_COLUMN_GROUP},
       {"threedhighlight", CSS_VAL_THREEDHIGHLIGHT},
       {"table-header-group", CSS_VAL_TABLE_HEADER_GROUP},
-      {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC},
-      {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP},
-      {"infobackground", CSS_VAL_INFOBACKGROUND},
-      {"-khtml-xxx-large", CSS_VAL__KHTML_XXX_LARGE}
+      {"-khtml-baseline-middle", CSS_VAL__KHTML_BASELINE_MIDDLE},
+      {"decimal-leading-zero", CSS_VAL_DECIMAL_LEADING_ZERO},
+      {"threedlightshadow", CSS_VAL_THREEDLIGHTSHADOW},
+      {"-khtml-xxx-large", CSS_VAL__KHTML_XXX_LARGE},
+      {"lower-greek", CSS_VAL_LOWER_GREEK},
+      {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW}
     };
 
   static const short lookup[] =
     {
          0,   -1,   -1,   -1,   -1,    1,   -1,   -1,
-        -1,   -1,    2,   -1,   -1,    3,   -1,    4,
-        -1,   -1,   -1,   -1,    5,   -1,   -1,   -1,
+        -1,   -1,    2,   -1,   -1,   -1,   -1,    3,
+        -1,   -1,   -1,   -1,    4,   -1,   -1,    5,
         -1,    6,   -1,   -1,   -1,   -1,    7,   -1,
         -1,   -1,   -1,    8,   -1,   -1,   -1,   -1,
-         9,   10,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   11,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+         9,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        10,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   11,   -1,   12,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   13,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   12,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   13,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        14,   -1,   -1,   -1,   -1,   -1,   15,   -1,
-        16,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   17,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   14,   -1,   -1,   15,   -1,
+        -1,   -1,   -1,   16,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   17,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   18,
-        -1,   -1,   19,   -1,   -1,   -1,   -1,   20,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        19,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   20,   -1,   21,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   21,   -1,   -1,
-        22,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   22,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   23,   -1,   -1,   -1,
+        -1,   -1,   -1,   24,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   25,   -1,   -1,
+        -1,   26,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   27,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   28,   -1,   -1,
+        29,   -1,   -1,   30,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   31,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   32,   -1,   -1,   -1,   -1,
+        -1,   -1, -552, -227,   -2,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   35,   -1,   -1,   -1,
+        -1,   -1,   36,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   37,
+        -1,   -1,   -1,   38,   -1,   39,   40,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   41,   -1,   -1,
+        -1,   -1,   -1,   -1,   42,   -1,   43,   -1,
+        -1,   44,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   45,   -1,   46,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   47,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   48,   49,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   50,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   51,   -1,   -1,
+        52,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   53,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   54,   -1,   -1,   -1,   -1,
+        55,   56,   -1,   -1,   -1,   57,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   58,
+        -1,   -1,   -1,   -1,   59,   60,   61,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   62,   -1,
+        -1,   63,   -1,   -1,   -1,   64,   65,   -1,
+        66,   -1,   67,   68,   -1,   -1,   69,   70,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   71,
+        -1,   -1,   -1,   -1,   -1,   -1,   72,   -1,
+        -1,   -1,   73,   74,   75,   -1,   76,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   77,   -1,
+        -1,   -1,   -1,   78,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   79,   -1,   80,
+        -1,   -1,   81,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   82,   83,   -1,   -1,
+        84,   -1,   -1,   -1,   -1,   -1,   85,   -1,
+        86,   -1,   -1,   87,   -1,   88,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   89,   90,
+        -1,   91,   -1,   -1,   92,   -1,   -1,   -1,
+        93,   -1,   -1,   94,   -1,   -1,   -1,   -1,
+        95,   96,   97,   98,   99,  100,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  101,   -1,  102,
+        -1,   -1,   -1,   -1,  103,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  104,   -1,   -1,  105,
+        -1,   -1,   -1,  106,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  107,   -1,   -1,
+       108,   -1,   -1,   -1,   -1,   -1,   -1,  109,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -540, -234,   -2,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   26,   27,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   28,   -1,   29,   -1,   -1,   -1,   -1,
-        30,   -1,   -1,   31,   -1,   -1,   -1,   -1,
-        -1,   -1,   32,   33,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  110,   -1,
+        -1,   -1,  111,   -1,   -1,   -1,   -1,   -1,
+        -1,  112,   -1,  113,   -1,  114,  115,  116,
+        -1,   -1,  117,   -1,  118,   -1,   -1,   -1,
+        -1,  119,   -1,  120,   -1,   -1,  121,   -1,
+        -1,   -1,   -1,   -1,   -1,  122,  123,   -1,
+        -1,   -1,   -1,  124,   -1,   -1,   -1,  125,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  126,
+        -1,   -1,  127,   -1,  128,   -1,   -1,  129,
+       130,   -1,   -1,  131,   -1,   -1,  132,   -1,
+        -1,   -1,  133,  134,   -1,   -1,   -1,   -1,
+       135,   -1,  136,   -1,   -1,  137,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  138,   -1,  139,
+        -1,   -1,   -1,   -1,  140,   -1,  141,  142,
+        -1,  143,   -1,  144,   -1,   -1,  145,   -1,
+        -1,   -1,   -1,  146,   -1,   -1,   -1,   -1,
+        -1,   -1,  147,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  148,   -1,   -1,   -1,   -1,   -1,   -1,
+       149,   -1,  150,   -1,   -1,   -1,   -1,   -1,
+        -1,  151,   -1,   -1,   -1,   -1,   -1,  152,
+        -1,  153,   -1,   -1,   -1,  154,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        34,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   35,   -1,   -1,   36,   -1,   -1,
-        37,   -1,   38,   -1,   39,   -1,   -1,   40,
-        -1,   41,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   42,   -1,   -1,   -1,   -1,
-        43,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   44,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   45,   -1,   -1,   -1,
-        -1,   46,   -1,   -1,   47,   48,   -1,   -1,
+        -1,  155,  156,   -1,  157,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  158,  159,  160,   -1,   -1,
+        -1,   -1,   -1,  161,   -1,   -1,   -1,  162,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   49,   -1,   -1,   -1,   -1,
-        -1,   -1,   50,   -1,   51,   -1,   -1,   -1,
+        -1,  163,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  164,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  165,   -1,   -1,   -1,
+       166,  167,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   52,   -1,
-        53,   -1,   -1,   -1,   -1,   -1,   54,   -1,
-        -1,   -1,   55,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  168,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   56,   -1,   57,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        58,   -1,   -1,   -1,   -1,   -1,   59,   -1,
-        -1,   -1,   -1,   -1,   -1,   60,   -1,   -1,
-        -1,   -1,   -1,   -1,   61,   -1,   -1,   62,
-        -1,   63,   64,   -1,   65,   -1,   -1,   66,
-        -1,   -1,   -1,   67,   -1,   -1,   68,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        69,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   70,   -1,   -1,   -1,
+        -1,   -1,  169,   -1,  170,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   71,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   72,   -1,   73,
+       171,   -1,   -1,   -1,   -1,  172,   -1,   -1,
+       173,   -1,  174,  175,   -1,  176,   -1,  177,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   74,   -1,
+        -1,   -1,   -1,   -1,   -1,  178,   -1,   -1,
+        -1,  179,   -1,  180,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  181,   -1,   -1,
+        -1,   -1,  182,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   75,   -1,   76,   -1,   -1,
-        77,   -1,   78,   79,   -1,   -1,   -1,   80,
-        81,   -1,   -1,   -1,   82,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   83,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   84,   -1,
-        -1,   -1,   -1,   85,   -1,   86,   -1,   -1,
-        -1,   -1,   87,   88,   -1,   89,   -1,   90,
-        -1,   -1,   -1,   -1,   91,   -1,   -1,   92,
-        -1,   93,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        94,   -1,   -1,   -1,   95,   96,   -1,   -1,
+        -1,  183,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  184,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   97,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   98,   -1,   -1,   -1,   -1,   99,   -1,
-        -1,   -1,   -1,  100,   -1,  101,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  102,   -1,   -1,
-        -1,   -1,   -1,   -1,  103,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  104,   -1,  105,   -1,
-        -1,  106,   -1,  107,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  108,   -1,   -1,
-       109,   -1,  110,   -1,   -1,   -1,   -1,  111,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  112,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  113,   -1,   -1,
-        -1,   -1,  114,   -1,  115,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  116,   -1,  117,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  118,   -1,   -1,
-        -1,   -1,  119,   -1,   -1,  120,   -1,   -1,
-        -1,   -1,   -1,   -1,  121,   -1,   -1,   -1,
-        -1,  122,   -1,   -1,  123,   -1,  124,   -1,
-        -1,  125,   -1,   -1,   -1,   -1,   -1,   -1,
-       126,   -1,   -1,  127,   -1,   -1,   -1,  128,
-       129,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  130,   -1,   -1,   -1,
-       131,  132,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  133,  134,   -1,   -1,  135,   -1,
-       136,   -1,   -1,  137,  138,   -1,   -1,   -1,
-       139,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  140,
-        -1,   -1,   -1,   -1,   -1,   -1,  141,  142,
-        -1,   -1,   -1,   -1,  143,   -1,   -1,   -1,
-       144,   -1,   -1,  145,   -1,   -1,   -1,   -1,
-        -1,  146,   -1,   -1,   -1,   -1,   -1,  147,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  148,
-        -1,   -1,   -1,   -1,   -1,  149,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  150,   -1,
-       151,   -1,   -1,   -1,   -1,  152,   -1,   -1,
-       153,   -1,  154,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  155,   -1,   -1,   -1,
-        -1,  156,   -1,   -1,  157,   -1,  158,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       159,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  160,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  161,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  162,   -1,   -1,   -1,   -1,
-       163,   -1,   -1,   -1,   -1,   -1,  164,   -1,
-        -1,   -1,  165,   -1,   -1,  166,   -1,   -1,
-        -1,   -1,   -1,   -1,  167,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  168,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       169,  170,   -1,  171,   -1,  172,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  173,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  174,   -1,   -1,   -1,   -1,  175,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       176,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  177,
-        -1,   -1,  178,   -1,   -1,   -1,   -1,  179,
-        -1,   -1,  180,   -1,  181,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       182,   -1,   -1,  183,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  184,   -1,   -1,   -1,
         -1,  185,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  186,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  187,   -1,   -1,
-       188,   -1,  189,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  190,   -1,   -1,   -1,   -1,   -1,
-        -1,  191,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  192,   -1,   -1,
-        -1,   -1,  193,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  194,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  195,  196,
-        -1,   -1,   -1,   -1,   -1,  197,   -1,   -1,
-       198,   -1,   -1,   -1,   -1,   -1,   -1,  199,
-        -1,   -1,  200,  201,  202,   -1,   -1,   -1,
-        -1,  203,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  204,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  205,   -1,   -1,   -1,   -1,
-        -1,   -1,  206,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  207,   -1,   -1,   -1,   -1,   -1,  208,
+        -1,   -1,  186,   -1,   -1,   -1,  187,  188,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  189,
+        -1,   -1,   -1,   -1,  190,   -1,  191,   -1,
+        -1,  192,   -1,  193,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  194,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  195,  196,   -1,  197,   -1,
+        -1,   -1,   -1,   -1,   -1,  198,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  209,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  210,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       211,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  212,   -1,
+        -1,   -1,   -1,   -1,  199,  200,   -1,   -1,
+        -1,   -1,   -1,   -1,  201,   -1,  202,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  203,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  213,   -1,   -1,   -1,  214,   -1,   -1,
-       215,   -1,   -1,   -1,   -1,  216,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  204,   -1,   -1,  205,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  217,   -1,  218,   -1,   -1,   -1,   -1,
+        -1,  206,   -1,  207,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  208,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  209,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  210,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       211,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  212,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  213,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  219,   -1,   -1,  220,   -1,
-       221,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  222,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  223,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  224,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  225,   -1,  226,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  227,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  228,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  214,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  229,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  230,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  215,
+        -1,   -1,  216,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  217,   -1,   -1,   -1,  218,   -1,
+        -1,   -1,   -1,  219,   -1,   -1,   -1,   -1,
+       220,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  231,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  221,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  222,   -1,  223,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  224,
+        -1,   -1,   -1,  225,  226,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  232,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  227,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  233,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  234,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  235,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       236,   -1,   -1,  237,   -1,   -1,   -1,   -1,
+       228,   -1,   -1,   -1,   -1,   -1,   -1,  229,
+       230,   -1,   -1,   -1,  231,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  238,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  232,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  233,   -1,  234,   -1,
+        -1,   -1,   -1,  235,   -1,   -1,  236,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  237,  238,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -637,37 +598,36 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,  239,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  240,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  240,   -1,  241,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  241,   -1,   -1,
-        -1,   -1,   -1,  242,   -1,   -1,   -1,   -1,
-       243,   -1,  244,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  242,  243,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       245,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  244,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  246,   -1,   -1,   -1,
-        -1,  247,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  245,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  246,
+        -1,   -1,   -1,   -1,   -1,  247,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  248,   -1,
+        -1,   -1,  248,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  249,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       250,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  249,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  250,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -681,9 +641,9 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  251,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  251,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -695,13 +655,15 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  252,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  253,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  252,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       254,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -709,15 +671,14 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  253,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  254,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  255,   -1,   -1,   -1,   -1,
+        -1,  255,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -730,7 +691,6 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  256,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -738,6 +698,7 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  257,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -750,6 +711,7 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  258,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -774,7 +736,7 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  257
+        -1,   -1,   -1,   -1,  259
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -1071,6 +1033,8 @@ static const char * const valueList[] = {
 "read-only", 
 "read-write", 
 "element", 
+"intrinsic", 
+"min-intrinsic", 
     0
 };
 DOMString getValueName(unsigned short id)
index 4dbd5c9..1dd849f 100644 (file)
@@ -267,7 +267,9 @@ DOM::DOMString getValueName(unsigned short id);
 #define CSS_VAL_READ_ONLY 256
 #define CSS_VAL_READ_WRITE 257
 #define CSS_VAL_ELEMENT 258
+#define CSS_VAL_INTRINSIC 259
+#define CSS_VAL_MIN_INTRINSIC 260
 
-#define CSS_VAL_TOTAL 259
+#define CSS_VAL_TOTAL 261
 #endif
 
index b3746f2..e53b96c 100644 (file)
@@ -381,3 +381,9 @@ read-write
 # CSS_PROP__KHTML_USER_DRAG
 #
 element
+
+#
+# CSS_PROP_WIDTH/MIN_WIDTH/MAX_WIDTH
+#
+intrinsic
+min-intrinsic
index c0891b7..c3a81f1 100644 (file)
@@ -41,7 +41,7 @@ namespace khtml
     /*
      * %multiLength and %Length
      */
-    enum LengthType { Variable = 0, Relative, Percent, Fixed, Static };
+    enum LengthType { Variable = 0, Relative, Percent, Fixed, Static, Intrinsic, MinIntrinsic };
     struct Length
     {
        Length() { *((Q_UINT32 *)this) = 0; }
index 7416319..4e9b504 100644 (file)
@@ -2661,42 +2661,32 @@ short RenderBlock::baselinePosition(bool b, bool isRootLineBox) const
     // box, then the fact that we're an inline-block is irrelevant, and we behave
     // just like a block.
     if (isReplaced() && !isRootLineBox)
-        return height()+marginTop()+marginBottom();
+        return height() + marginTop() + marginBottom();
     return RenderFlow::baselinePosition(b, isRootLineBox);
 }
 
-int RenderBlock::getBaselineOfFirstLineBox()
+int RenderBlock::getBaselineOfFirstLineBox() const
 {
-    if (m_firstLineBox)
-        return m_firstLineBox->yPos() + m_firstLineBox->baseline();
-
-    if (isInline())
-        return -1; // We're inline and had no line box, so we have no baseline we can return.
+    if (!isBlockFlow())
+        return RenderFlow::getBaselineOfFirstLineBox();
 
-    for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling()) {
-        int result = curr->getBaselineOfFirstLineBox();
-        if (result != -1)
-            return curr->yPos() + result; // Translate to our coordinate space.
+    if (childrenInline()) {
+        if (m_firstLineBox)
+            return m_firstLineBox->yPos() + m_firstLineBox->baseline();
+        else
+            return -1;
     }
-
-    return -1;
-}
-
-InlineFlowBox* RenderBlock::getFirstLineBox()
-{
-    if (m_firstLineBox)
-        return m_firstLineBox;
-
-    if (isInline())
-        return 0; // We're inline and had no line box, so we have no baseline we can return.
-
-    for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling()) {
-        InlineFlowBox* result = curr->getFirstLineBox();
-        if (result)
-            return result;
+    else {
+        for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling()) {
+            if (!curr->isFloatingOrPositioned()) {
+                int result = curr->getBaselineOfFirstLineBox();
+                if (result != -1)
+                    return curr->yPos() + result; // Translate to our coordinate space.
+            }
+        }
     }
 
-    return 0;    
+    return -1;
 }
 
 RenderBlock* RenderBlock::firstLineBlock() const
index 19bc9fb..92f274a 100644 (file)
@@ -179,9 +179,8 @@ public:
     void calcInlineMinMaxWidth();
     void calcBlockMinMaxWidth();
 
-    virtual int getBaselineOfFirstLineBox();
-    virtual InlineFlowBox* getFirstLineBox();
-    
+    virtual int getBaselineOfFirstLineBox() const;
+
     RootInlineBox* firstRootBox() { return static_cast<RootInlineBox*>(m_firstLineBox); }
     RootInlineBox* lastRootBox() { return static_cast<RootInlineBox*>(m_lastLineBox); }
 
index f57718a..155596c 100644 (file)
@@ -31,6 +31,7 @@
 #include "rendering/render_replaced.h"
 #include "rendering/render_canvas.h"
 #include "rendering/render_table.h"
+#include "render_flexbox.h"
 #include "render_arena.h"
 
 #include "misc/htmlhashes.h"
@@ -53,6 +54,7 @@ RenderBox::RenderBox(DOM::NodeImpl* node)
 {
     m_minWidth = -1;
     m_maxWidth = -1;
+    m_overrideSize = -1;
     m_width = m_height = 0;
     m_x = 0;
     m_y = 0;
@@ -167,6 +169,16 @@ int RenderBox::contentHeight() const
     return h;
 }
 
+int RenderBox::overrideWidth() const
+{
+    return m_overrideSize == -1 ? m_width : m_overrideSize;
+}
+
+int RenderBox::overrideHeight() const
+{
+    return m_overrideSize == -1 ? m_height : m_overrideSize;
+}
+
 void RenderBox::setPos( int xPos, int yPos )
 {
     if (xPos == m_x && yPos == m_y)
@@ -712,11 +724,13 @@ void RenderBox::calcWidth()
     }
     else
     {
-        // The parent box is flexing us, so it has increased or decreased our width.  We just bail
-        // and leave our width unchanged in this case.
-        if (parent()->isFlexibleBox() && parent()->style()->boxOrient() == HORIZONTAL
-            && parent()->isFlexingChildren())
+        // The parent box is flexing us, so it has increased or decreased our width.  Use the width
+        // from the style context.
+        if (m_overrideSize != -1 && parent()->isFlexibleBox() && parent()->style()->boxOrient() == HORIZONTAL
+            && parent()->isFlexingChildren()) {
+            m_width = m_overrideSize;
             return;
+        }
 
         bool inVerticalBox = parent()->isFlexibleBox() && parent()->style()->boxOrient() == VERTICAL;
         bool stretching = parent()->style()->boxAlign() == BSTRETCH;
@@ -905,10 +919,9 @@ void RenderBox::calcHeight()
         
         // The parent box is flexing us, so it has increased or decreased our height.  We have to
         // grab our cached flexible height.
-        if (parent()->isFlexibleBox() && parent()->style()->boxOrient() == VERTICAL
-            && parent()->isFlexingChildren() && style()->boxFlexedHeight() != -1)
-            h = Length(style()->boxFlexedHeight() - borderTop() - borderBottom() -
-                       paddingTop() - paddingBottom(), Fixed);
+        if (m_overrideSize != -1 && parent()->isFlexibleBox() && parent()->style()->boxOrient() == VERTICAL
+            && parent()->isFlexingChildren())
+            h = Length(m_overrideSize - borderTop() - borderBottom() - paddingTop() - paddingBottom(), Fixed);
         else if (treatAsReplaced)
             h = Length(calcReplacedHeight(), Fixed);
         else {
index ad12e56..79c7cb9 100644 (file)
@@ -58,6 +58,11 @@ public:
     virtual int contentWidth() const;
     virtual int contentHeight() const;
 
+    virtual int overrideSize() const { return m_overrideSize; }
+    virtual int overrideWidth() const;
+    virtual int overrideHeight() const;
+    virtual void setOverrideSize(int s) { m_overrideSize = s; }
+    
     virtual bool absolutePosition(int &xPos, int &yPos, bool f = false);
 
     virtual void setPos( int xPos, int yPos );
@@ -174,6 +179,9 @@ protected:
      */
     int m_maxWidth;
 
+    // Used by flexible boxes when flexing this element.
+    int m_overrideSize;
+
     // Cached normal flow values for absolute positioned elements with static left/top values.
     int m_staticX;
     int m_staticY;
index efc4de3..57d9762 100644 (file)
@@ -222,13 +222,13 @@ void RenderFlexibleBox::calcMinMaxWidth()
         m_minWidth = m_maxWidth = style()->width().value;
    
     if (style()->minWidth().isFixed() && style()->minWidth().value > 0) {
-        m_maxWidth = KMAX(m_maxWidth, style()->minWidth().value);
-        m_minWidth = KMAX(m_minWidth, style()->minWidth().value);
+        m_maxWidth = kMax(m_maxWidth, style()->minWidth().value);
+        m_minWidth = kMax(m_minWidth, style()->minWidth().value);
     }
     
     if (style()->maxWidth().isFixed() && style()->maxWidth().value != UNDEFINED) {
-        m_maxWidth = KMIN(m_maxWidth, style()->maxWidth().value);
-        m_minWidth = KMIN(m_minWidth, style()->maxWidth().value);
+        m_maxWidth = kMin(m_maxWidth, style()->maxWidth().value);
+        m_minWidth = kMin(m_minWidth, style()->maxWidth().value);
     }
 
     int toAdd = borderLeft() + borderRight() + paddingLeft() + paddingRight();
@@ -264,7 +264,9 @@ void RenderFlexibleBox::layoutBlock(bool relayoutChildren)
     calcHeight();
     m_overflowWidth = m_width;
 
-    if (oldWidth != m_width || oldHeight != m_height || parent()->isFlexingChildren())
+    if (oldWidth != m_width || oldHeight != m_height ||
+        (parent()->isFlexibleBox() && parent()->style()->boxOrient() == HORIZONTAL &&
+         parent()->style()->boxAlign() == BSTRETCH))
         relayoutChildren = true;
 
     m_height = 0;
@@ -359,8 +361,9 @@ void RenderFlexibleBox::layoutHorizontalBox(bool relayoutChildren)
         if (!child->isPositioned() && child->style()->boxFlex() > 0.0f) {
             // We always have to lay out flexible objects again, since the flex distribution
             // may have changed, and we need to reallocate space.
+            child->setOverrideSize(-1);
             if (!relayoutChildren)
-                child->setChildNeedsLayout(true);
+                child->setChildNeedsLayout(true, false);
             haveFlex = true;
             unsigned int flexGroup = child->style()->boxFlexGroup();
             if (lowestFlexGroup == 0)
@@ -371,7 +374,6 @@ void RenderFlexibleBox::layoutHorizontalBox(bool relayoutChildren)
                 highestFlexGroup = flexGroup;
         }
         child = iterator.next();
-        continue;
     }
     
     // We do 2 passes.  The first pass is simply to lay everyone out at
@@ -385,11 +387,12 @@ void RenderFlexibleBox::layoutHorizontalBox(bool relayoutChildren)
         // Our first pass is done without flexing.  We simply lay the children
         // out within the box.  We have to do a layout first in order to determine
         // our box's intrinsic height.
+        int maxAscent = 0, maxDescent = 0;
         child = iterator.first();
         while (child) {
             // make sure we relayout children if we need it.
-            if ( relayoutChildren || (child->isReplaced() && (child->style()->width().isPercent() || child->style()->height().isPercent())))
-                child->setChildNeedsLayout(true);
+            if (relayoutChildren || (child->isReplaced() && (child->style()->width().isPercent() || child->style()->height().isPercent())))
+                child->setChildNeedsLayout(true, false);
             
             if (child->isPositioned()) {
                 child = iterator.next();
@@ -403,8 +406,23 @@ void RenderFlexibleBox::layoutHorizontalBox(bool relayoutChildren)
             child->layoutIfNeeded();
     
             // Update our height and overflow height.
-            m_height = QMAX(m_height, yPos+child->marginTop()+child->height()+child->marginBottom());
-            m_overflowHeight = QMAX(m_overflowHeight, yPos+child->marginTop()+child->overflowHeight());
+            if (style()->boxAlign() == BBASELINE) {
+                int ascent = child->marginTop() + child->getBaselineOfFirstLineBox();
+                if (ascent == -1)
+                    ascent = child->marginTop() + child->height() + child->marginBottom();
+                int descent = (child->marginTop() + child->height() + child->marginBottom()) - ascent;
+                
+                // Update our maximum ascent.
+                maxAscent = kMax(maxAscent, ascent);
+                
+                // Update our maximum descent.
+                maxDescent = kMax(maxDescent, descent);
+                
+                // Now update our height.
+                m_height = kMax(yPos + maxAscent + maxDescent, m_height);
+            }
+            else
+                m_height = kMax(m_height, yPos + child->marginTop() + child->height() + child->marginBottom());
 
             child = iterator.next();
         }
@@ -431,10 +449,8 @@ void RenderFlexibleBox::layoutHorizontalBox(bool relayoutChildren)
         // Now that our height is actually known, we can place our boxes.
         m_stretchingChildren = (style()->boxAlign() == BSTRETCH);
         child = iterator.first();
-        while (child)
-        {
-            if (child->isPositioned())
-            {
+        while (child) {
+            if (child->isPositioned()) {
                 child->containingBlock()->insertPositionedObject(child);
                 if (child->hasStaticX()) {
                     if (style()->direction() == LTR)
@@ -453,7 +469,7 @@ void RenderFlexibleBox::layoutHorizontalBox(bool relayoutChildren)
             int oldChildHeight = child->height();
             static_cast<RenderBox*>(child)->calcHeight();
             if (oldChildHeight != child->height())
-                child->setChildNeedsLayout(true);
+                child->setChildNeedsLayout(true, false);
             child->layoutIfNeeded();
     
             // We can place the child now, using our value of box-align.
@@ -461,9 +477,15 @@ void RenderFlexibleBox::layoutHorizontalBox(bool relayoutChildren)
             int childY = yPos;
             switch (style()->boxAlign()) {
                 case BCENTER:
-                case BBASELINE: // FIXME: Implement support for baseline
-                    childY += (contentHeight() - (child->height() + child->marginTop() + child->marginBottom()))/2;
+                    childY += child->marginTop() + (contentHeight() - (child->height() + child->marginTop() + child->marginBottom()))/2;
                     break;
+                case BBASELINE: {
+                    int ascent = child->marginTop() + child->getBaselineOfFirstLineBox();
+                    if (ascent == -1)
+                        ascent = child->marginTop() + child->height() + child->marginBottom();
+                    childY += child->marginTop() + (maxAscent - ascent);
+                    break;
+                }
                 case BEND:
                     childY += contentHeight() - child->marginBottom() - child->height();
                     break;
@@ -473,6 +495,7 @@ void RenderFlexibleBox::layoutHorizontalBox(bool relayoutChildren)
             }
 
             placeChild(child, xPos, childY);
+            m_overflowHeight = kMax(m_overflowHeight, childY + child->overflowHeight(false));
             
             xPos += child->width() + child->marginRight();
     
@@ -492,69 +515,62 @@ void RenderFlexibleBox::layoutHorizontalBox(bool relayoutChildren)
             // Allocate the remaining space among the flexible objects.  If we are trying to
             // grow, then we go from the lowest flex group to the highest flex group.  For shrinking,
             // we go from the highest flex group to the lowest group.
-            unsigned int start = remainingSpace > 0 ? lowestFlexGroup : highestFlexGroup;
-            unsigned int end = remainingSpace > 0 ? highestFlexGroup : lowestFlexGroup;
-            for (unsigned int i = start; i <= end; i++) {
-                float totalFlex = 0.0f;
-                child = iterator.first();
-                while (child) {
-                    if (child->isPositioned() || child->style()->boxFlex() == 0.0f ||
-                        child->style()->boxFlexGroup() != i) {
+            bool expanding = remainingSpace > 0;
+            unsigned int start = expanding ? lowestFlexGroup : highestFlexGroup;
+            unsigned int end = expanding? highestFlexGroup : lowestFlexGroup;
+            for (unsigned int i = start; i <= end && remainingSpace; i++) {
+                // Always start off by assuming the group can get all the remaining space.
+                int groupRemainingSpace = remainingSpace;
+                do {
+                    // Flexing consists of multiple passes, since we have to change ratios every time an object hits its max/min-width
+                    // For a given pass, we always start off by computing the totalFlex of all objects that can grow/shrink at all, and
+                    // computing the allowed growth before an object hits its min/max width (and thus
+                    // forces a totalFlex recomputation).
+                    float totalFlex = 0.0f;
+                    child = iterator.first();
+                    while (child) {
+                        if (allowedChildFlex(child, expanding, i))
+                            totalFlex += child->style()->boxFlex();
                         child = iterator.next();
-                        continue;
                     }
-
-                    // Add together the flexes so we can normalize.
-                    totalFlex += child->style()->boxFlex();
-                    
-                    child = iterator.next();
-                    continue;
-                }
-
-                // The flex group may not have any flexible objects. 
-                if (totalFlex == 0.0f)
-                    continue;
-
-                // Now distribute the space to objects.
-                child = iterator.first();
-                while (child && remainingSpace && totalFlex) {
-                    if (child->isPositioned() || child->style()->boxFlex() == 0.0f ||
-                        child->style()->boxFlexGroup() != i) {
+                    child = iterator.first();
+                    int spaceAvailableThisPass = groupRemainingSpace;
+                    while (child) {
+                        int allowedFlex = allowedChildFlex(child, expanding, i);
+                        if (allowedFlex) {
+                            int projectedFlex = (allowedFlex == INT_MAX) ? allowedFlex : (int)(allowedFlex * (totalFlex / child->style()->boxFlex()));
+                            spaceAvailableThisPass = expanding ? kMin(spaceAvailableThisPass, projectedFlex) : kMax(spaceAvailableThisPass, projectedFlex);
+                        }
                         child = iterator.next();
-                        continue;
                     }
 
-                    int spaceAdd = (int)(remainingSpace * (child->style()->boxFlex()/totalFlex));
-                    if (remainingSpace > 0) {
-                        // FIXME: For now just handle fixed values.
-                        if (child->style()->maxWidth().value != UNDEFINED &&
-                            child->style()->maxWidth().isFixed()) {
-                            int maxW = child->style()->maxWidth().value;
-                            int w = child->contentWidth();
-                            int allowedGrowth = QMAX(0, maxW - w);
-                            spaceAdd = QMIN(spaceAdd, allowedGrowth);
-                        }
-                    } else {
-                        // FIXME: For now just handle fixed values.
-                        if (child->style()->minWidth().isFixed()) {
-                            int minW = child->style()->minWidth().value;
-                            int w = child->contentWidth();
-                            int allowedShrinkage = QMIN(0, minW - w);
-                            spaceAdd = QMAX(spaceAdd, allowedShrinkage);
-                        }
+                    // The flex groups may not have any flexible objects this time around. 
+                    if (!spaceAvailableThisPass || totalFlex == 0.0f) {
+                        // If we just couldn't grow/shrink any more, then it's time to transition to the next flex group.
+                        groupRemainingSpace = 0;
+                        continue;
                     }
 
-                    if (spaceAdd) {
-                        child->setWidth(child->width()+spaceAdd);
-                        m_flexingChildren = true;
-                        relayoutChildren = true;
+                    // Now distribute the space to objects.
+                    child = iterator.first();
+                    while (child && spaceAvailableThisPass && totalFlex) {
+                        if (allowedChildFlex(child, expanding, i)) {
+                            int spaceAdd = (int)(spaceAvailableThisPass * (child->style()->boxFlex()/totalFlex));
+                            if (spaceAdd) {
+                                child->setOverrideSize(child->overrideWidth() + spaceAdd);
+                                m_flexingChildren = true;
+                                relayoutChildren = true;
+                            }
+
+                            spaceAvailableThisPass -= spaceAdd;
+                            remainingSpace -= spaceAdd;
+                            groupRemainingSpace -= spaceAdd;
+                            
+                            totalFlex -= child->style()->boxFlex();
+                        }
+                        child = iterator.next();
                     }
-
-                    remainingSpace -= spaceAdd;
-                    totalFlex -= child->style()->boxFlex();
-                    
-                    child = iterator.next();
-                }
+                } while (groupRemainingSpace);
             }
 
             // We didn't find any children that could grow.
@@ -658,6 +674,7 @@ void RenderFlexibleBox::layoutVerticalBox(bool relayoutChildren)
         if (!child->isPositioned() && child->style()->boxFlex() > 0.0f) {
             // We always have to lay out flexible objects again, since the flex distribution
             // may have changed, and we need to reallocate space.
+            child->setOverrideSize(-1);
             if (!relayoutChildren)
                 child->setChildNeedsLayout(true);
             haveFlex = true;
@@ -670,7 +687,6 @@ void RenderFlexibleBox::layoutVerticalBox(bool relayoutChildren)
                 highestFlexGroup = flexGroup;
         }
         child = iterator.next();
-        continue;
     }
 
 #if APPLE_CHANGES
@@ -708,11 +724,11 @@ void RenderFlexibleBox::layoutVerticalBox(bool relayoutChildren)
                     int newHeight = static_cast<RenderBlock*>(child)->heightForLineCount(numLines);
                     if (newHeight != child->height()) {
                         child->setChildNeedsLayout(true);
-                        child->style()->setBoxFlexedHeight(newHeight);
+                        child->setOverrideSize(newHeight);
                         m_flexingChildren = true;
                         child->layoutIfNeeded();
                         m_flexingChildren = false;
-                        child->style()->setBoxFlexedHeight(-1);
+                        child->setOverrideSize(-1);
                     }
                 }
                 child = iterator.next();
@@ -765,7 +781,7 @@ void RenderFlexibleBox::layoutVerticalBox(bool relayoutChildren)
             switch (style()->boxAlign()) {
                 case BCENTER:
                 case BBASELINE: // Baseline just maps to center for vertical boxes
-                    childX += (contentWidth() - (child->width() + child->marginLeft() + child->marginRight()))/2;
+                    childX += child->marginLeft() + (contentWidth() - (child->width() + child->marginLeft() + child->marginRight()))/2;
                     break;
                 case BEND:
                     if (style()->direction() == RTL)
@@ -787,7 +803,7 @@ void RenderFlexibleBox::layoutVerticalBox(bool relayoutChildren)
     
             // See if this child has made our overflow need to grow.
             // XXXdwh Work with left overflow as well as right overflow.
-            int rightChildPos = child->xPos() + QMAX(child->overflowWidth(false), child->width());
+            int rightChildPos = child->xPos() + kMax(child->overflowWidth(false), child->width());
             if (rightChildPos > m_overflowWidth)
                 m_overflowWidth = rightChildPos;
             
@@ -824,68 +840,62 @@ void RenderFlexibleBox::layoutVerticalBox(bool relayoutChildren)
             // Allocate the remaining space among the flexible objects.  If we are trying to
             // grow, then we go from the lowest flex group to the highest flex group.  For shrinking,
             // we go from the highest flex group to the lowest group.
-            unsigned int start = remainingSpace > 0 ? lowestFlexGroup : highestFlexGroup;
-            unsigned int end = remainingSpace > 0 ? highestFlexGroup : lowestFlexGroup;
-            for (unsigned int i = start; i <= end; i++) {
-                float totalFlex = 0.0f;
-                child = iterator.first();
-                while (child) {
-                    if (child->isPositioned() || child->style()->boxFlex() == 0.0f ||
-                        child->style()->boxFlexGroup() != i) {
+            bool expanding = remainingSpace > 0;
+            unsigned int start = expanding ? lowestFlexGroup : highestFlexGroup;
+            unsigned int end = expanding? highestFlexGroup : lowestFlexGroup;
+            for (unsigned int i = start; i <= end && remainingSpace; i++) {
+                // Always start off by assuming the group can get all the remaining space.
+                int groupRemainingSpace = remainingSpace;
+                do {
+                    // Flexing consists of multiple passes, since we have to change ratios every time an object hits its max/min-width
+                    // For a given pass, we always start off by computing the totalFlex of all objects that can grow/shrink at all, and
+                    // computing the allowed growth before an object hits its min/max width (and thus
+                    // forces a totalFlex recomputation).
+                    float totalFlex = 0.0f;
+                    child = iterator.first();
+                    while (child) {
+                        if (allowedChildFlex(child, expanding, i))
+                            totalFlex += child->style()->boxFlex();
                         child = iterator.next();
-                        continue;
                     }
-
-                    // Add together the flexes so we can normalize.
-                    totalFlex += child->style()->boxFlex();
-
-                    child = iterator.next();
-                }
-
-                // The flex group may not have any flexible objects.
-                if (totalFlex == 0.0f)
-                    continue;
-
-                // Now distribute the space to objects.
-                child = iterator.first();
-                while (child && remainingSpace && totalFlex) {
-                    if (child->isPositioned() || child->style()->boxFlex() == 0.0f ||
-                        child->style()->boxFlexGroup() != i) {
+                    child = iterator.first();
+                    int spaceAvailableThisPass = groupRemainingSpace;
+                    while (child) {
+                        int allowedFlex = allowedChildFlex(child, expanding, i);
+                        if (allowedFlex) {
+                            int projectedFlex = (allowedFlex == INT_MAX) ? allowedFlex : (int)(allowedFlex * (totalFlex / child->style()->boxFlex()));
+                            spaceAvailableThisPass = expanding ? kMin(spaceAvailableThisPass, projectedFlex) : kMax(spaceAvailableThisPass, projectedFlex);
+                        }
                         child = iterator.next();
-                        continue;
                     }
 
-                    int spaceAdd = (int)(remainingSpace * (child->style()->boxFlex()/totalFlex));
-                    if (remainingSpace > 0) {
-                        // FIXME: For now just handle fixed values.
-                        if (child->style()->maxHeight().value != UNDEFINED &&
-                            child->style()->maxHeight().isFixed()) {
-                            int maxH = child->style()->maxHeight().value;
-                            int h = child->contentHeight();
-                            int allowedGrowth = QMAX(0, maxH - h);
-                            spaceAdd = QMIN(spaceAdd, allowedGrowth);
-                        }
-                    } else {
-                        // FIXME: For now just handle fixed values.
-                        if (child->style()->minHeight().isFixed()) {
-                            int minH = child->style()->minHeight().value;
-                            int h = child->contentHeight();
-                            int allowedShrinkage = QMIN(0, minH - h);
-                            spaceAdd = QMAX(spaceAdd, allowedShrinkage);
-                        }
+                    // The flex groups may not have any flexible objects this time around. 
+                    if (!spaceAvailableThisPass || totalFlex == 0.0f) {
+                        // If we just couldn't grow/shrink any more, then it's time to transition to the next flex group.
+                        groupRemainingSpace = 0;
+                        continue;
                     }
-
-                    if (spaceAdd) {
-                        child->style()->setBoxFlexedHeight(child->height()+spaceAdd);
-                        m_flexingChildren = true;
-                        child->setNeedsLayout(true);
+            
+                    // Now distribute the space to objects.
+                    child = iterator.first();
+                    while (child && spaceAvailableThisPass && totalFlex) {
+                        if (allowedChildFlex(child, expanding, i)) {
+                            int spaceAdd = (int)(spaceAvailableThisPass * (child->style()->boxFlex()/totalFlex));
+                            if (spaceAdd) {
+                                child->setOverrideSize(child->overrideHeight() + spaceAdd);
+                                m_flexingChildren = true;
+                                relayoutChildren = true;
+                            }
+
+                            spaceAvailableThisPass -= spaceAdd;
+                            remainingSpace -= spaceAdd;
+                            groupRemainingSpace -= spaceAdd;
+                            
+                            totalFlex -= child->style()->boxFlex();
+                        }
+                        child = iterator.next();
                     }
-
-                    remainingSpace -= spaceAdd;
-                    totalFlex -= child->style()->boxFlex();
-
-                    child = iterator.next();
-                }
+                } while (groupRemainingSpace);
             }
 
             // We didn't find any children that could grow.
@@ -974,6 +984,64 @@ void RenderFlexibleBox::placeChild(RenderObject* child, int x, int y)
         child->repaintDuringLayoutIfMoved(oldChildX, oldChildY);
 }
 
+int RenderFlexibleBox::allowedChildFlex(RenderObject* child, bool expanding, unsigned int group)
+{
+    if (child->isPositioned() || child->style()->boxFlex() == 0.0f || child->style()->boxFlexGroup() != group)
+        return 0;
+                        
+    if (expanding) {
+        if (isHorizontal()) {
+            // FIXME: For now just handle fixed values.
+            int maxW = INT_MAX;
+            int w = child->overrideWidth() - (child->borderLeft() + child->borderRight() + child->paddingLeft() + child->paddingRight());
+            if (child->style()->maxWidth().value != UNDEFINED &&
+                child->style()->maxWidth().isFixed())
+                maxW = child->style()->maxWidth().value;
+            else if (child->style()->maxWidth().type == Intrinsic)
+                maxW = child->maxWidth();
+            else if (child->style()->maxWidth().type == MinIntrinsic)
+                maxW = child->minWidth();
+            int allowedGrowth = kMax(0, maxW - w);
+            return allowedGrowth;
+        }
+        else {
+            // FIXME: For now just handle fixed values.
+            int maxH = INT_MAX;
+            int h = child->overrideHeight() - (child->borderTop() + child->borderBottom() + child->paddingTop() + child->paddingBottom());
+            if (child->style()->maxHeight().value != UNDEFINED &&
+                child->style()->maxHeight().isFixed())
+                maxH = child->style()->maxHeight().value;
+            int allowedGrowth = kMax(0, maxH - h);
+            return allowedGrowth;
+        }
+    }
+
+    // FIXME: For now just handle fixed values.
+    if (isHorizontal()) {
+        int minW = child->minWidth();
+        int w = child->contentWidth();
+        if (child->style()->minWidth().isFixed())
+            minW = child->style()->minWidth().value;
+        else if (child->style()->minWidth().type == Intrinsic)
+            minW = child->maxWidth();
+        else if (child->style()->minWidth().type == MinIntrinsic)
+            minW = child->minWidth();
+            
+        int allowedShrinkage = kMin(0, minW - w);
+        return allowedShrinkage;
+    }
+    else {
+        if (child->style()->minHeight().isFixed()) {
+            int minH = child->style()->minHeight().value;
+            int h = child->contentHeight();
+            int allowedShrinkage = kMin(0, minH - h);
+            return allowedShrinkage;
+        }
+    }
+    
+    return 0;
+}
+
 const char *RenderFlexibleBox::renderName() const
 {
     if (isFloating())
index 4dd7d6c..6875279 100644 (file)
@@ -49,8 +49,10 @@ public:
     virtual const char *renderName() const;
 
     void placeChild(RenderObject* child, int x, int y);
-    
+
 protected:
+    int allowedChildFlex(RenderObject* child, bool expanding, unsigned int group);
+
     bool hasMultipleLines() { return style()->boxLines() == MULTIPLE; }
     bool isVertical() { return style()->boxOrient() == VERTICAL; }
     bool isHorizontal() { return style()->boxOrient() == HORIZONTAL; }
index b3e5e1d..c89c128 100644 (file)
@@ -581,9 +581,7 @@ bool RenderImage::isWidthSpecified() const
         case Fixed:
         case Percent:
             return true;
-        case Variable:
-        case Relative:
-        case Static:
+        default:
             return false;
     }
     assert(false);
@@ -596,9 +594,7 @@ bool RenderImage::isHeightSpecified() const
         case Fixed:
         case Percent:
             return true;
-        case Variable:
-        case Relative:
-        case Static:
+        default:
             return false;
     }
     assert(false);
index 446fa1e..931cbf5 100644 (file)
@@ -145,9 +145,8 @@ public:
     virtual QRect getClipRect(int tx, int ty) { return QRect(0,0,0,0); }
     bool hasClip() { return isPositioned() &&  style()->hasClip(); }
     
-    virtual int getBaselineOfFirstLineBox() { return -1; } // Tables and blocks implement this.
-    virtual InlineFlowBox* getFirstLineBox() { return 0; } // Tables and blocks implement this.
-
+    virtual int getBaselineOfFirstLineBox() const { return -1; } 
+    
     // Obtains the nearest enclosing block (including this block) that contributes a first-line style to our inline
     // children.
     virtual RenderBlock* firstLineBlock() const;
@@ -507,6 +506,12 @@ public:
     virtual int intrinsicWidth() const { return 0; }
     virtual int intrinsicHeight() const { return 0; }
 
+    // used by flexible boxes to impose a flexed width/height override
+    virtual int overrideSize() const { return 0; }
+    virtual int overrideWidth() const { return 0; }
+    virtual int overrideHeight() const { return 0; }
+    virtual void setOverrideSize(int s) {}
+
     // relative to parent node
     virtual void setPos( int /*xPos*/, int /*yPos*/ ) { }
     virtual void setWidth( int /*width*/ ) { }
index deb2e6e..476bfc7 100644 (file)
@@ -156,8 +156,6 @@ StyleFlexibleBoxData::StyleFlexibleBoxData()
     pack = RenderStyle::initialBoxPack();
     orient = RenderStyle::initialBoxOrient();
     lines = RenderStyle::initialBoxLines();
-    flexed_height = -1;
-    transitions = 0;
 }
 
 StyleFlexibleBoxData::StyleFlexibleBoxData(const StyleFlexibleBoxData& o)
@@ -170,26 +168,13 @@ StyleFlexibleBoxData::StyleFlexibleBoxData(const StyleFlexibleBoxData& o)
     pack = o.pack;
     orient = o.orient;
     lines = o.lines;
-    flexed_height = o.flexed_height;
-    transitions = o.transitions ? new FlexGroupTransitionData(*o.transitions) : 0;
 }
 
 bool StyleFlexibleBoxData::operator==(const StyleFlexibleBoxData& o) const
 {
     return flex == o.flex && flex_group == o.flex_group &&
            ordinal_group == o.ordinal_group && align == o.align &&
-           pack == o.pack && orient == o.orient && lines == o.lines &&
-           flexed_height == o.flexed_height &&
-           transitionDataEquivalent(o);
-}
-
-bool StyleFlexibleBoxData::transitionDataEquivalent(const StyleFlexibleBoxData& o) const
-{
-    if (!transitions && o.transitions || transitions && !o.transitions)
-        return false;
-    if (transitions && o.transitions && (*transitions != *o.transitions))
-        return false;
-    return true;
+           pack == o.pack && orient == o.orient && lines == o.lines;
 }
 
 StyleCSS3NonInheritedData::StyleCSS3NonInheritedData()
@@ -897,32 +882,3 @@ bool ShadowData::operator==(const ShadowData& o) const
     
     return x == o.x && y == o.y && blur == o.blur && color == o.color;
 }
-
-void RenderStyle::setBoxFlexGroupTransition(FlexGroupTransitionData* val, bool add)
-{
-    StyleFlexibleBoxData* boxData = css3NonInheritedData.access()->flexibleBox.access(); 
-    if (!add) {
-        delete boxData->transitions;
-        boxData->transitions = val;
-        return;
-    }
-    
-    FlexGroupTransitionData* last = boxData->transitions;
-    while (last->next) last = last->next;
-    last->next = val;
-}
-
-FlexGroupTransitionData::FlexGroupTransitionData(const FlexGroupTransitionData& o)
-:group1(o.group1), group2(o.group2), length(o.length)
-{
-    next = o.next ? new FlexGroupTransitionData(*o.next) : 0;
-}
-
-bool FlexGroupTransitionData::operator==(const FlexGroupTransitionData& o) const
-{
-    if ((next && !o.next) || (!next && o.next) ||
-        (next && o.next && *next != *o.next))
-        return false;
-    
-    return autoValue == o.autoValue && group1 == o.group1 && group2 == o.group2 && length == o.length;
-}
index 94a2dce..a870421 100644 (file)
@@ -57,7 +57,6 @@ class RenderArena;
 namespace DOM {
     class DOMStringImpl;
     class ShadowValueImpl;
-    class FlexGroupTransitionValueImpl;
 }
 
 namespace khtml {
@@ -451,29 +450,6 @@ public:
 //------------------------------------------------
 // CSS3 Flexible Box Properties
 
-// This struct holds information about flex group transitions for the box-flex-group-transition property.
-struct FlexGroupTransitionData {
-    FlexGroupTransitionData() :autoValue(true), group1(0), group2(0), next(0) {}
-    FlexGroupTransitionData(unsigned int _group1, unsigned int _group2, Length _l)
-    :autoValue(false), group1(_group1), group2(_group2), length(_l), next(0) {}
-    FlexGroupTransitionData(const FlexGroupTransitionData& o);
-    
-    ~FlexGroupTransitionData() { delete next; }
-    
-    bool operator==(const FlexGroupTransitionData& o) const;
-    bool operator!=(const FlexGroupTransitionData &o) const {
-        return !(*this == o);
-    }
-    
-    bool isAuto() const { return autoValue; }
-    
-    bool autoValue;
-    unsigned int group1;
-    unsigned int group2;
-    Length length;
-    FlexGroupTransitionData* next;
-};
-
 enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BJUSTIFY, BBASELINE };
 enum EBoxOrient { HORIZONTAL, VERTICAL };
 enum EBoxLines { SINGLE, MULTIPLE };
@@ -483,7 +459,6 @@ class StyleFlexibleBoxData : public Shared<StyleFlexibleBoxData>
 {
 public:
     StyleFlexibleBoxData();
-    ~StyleFlexibleBoxData() { delete transitions; }
     StyleFlexibleBoxData(const StyleFlexibleBoxData& o);
 
     bool operator==(const StyleFlexibleBoxData& o) const;
@@ -491,13 +466,9 @@ public:
         return !(*this == o);
     }
 
-    bool transitionDataEquivalent(const StyleFlexibleBoxData& o) const;
-    
     float flex;
     unsigned int flex_group;
     unsigned int ordinal_group;
-    int flexed_height; // Not an actual CSS property. Vertical flexing has to use this as a cache.
-    FlexGroupTransitionData* transitions;
 
     EBoxAlignment align : 3;
     EBoxAlignment pack: 3;
@@ -1113,8 +1084,6 @@ public:
     unsigned int boxOrdinalGroup() { return css3NonInheritedData->flexibleBox->ordinal_group; }
     EBoxOrient boxOrient() { return css3NonInheritedData->flexibleBox->orient; }
     EBoxAlignment boxPack() { return css3NonInheritedData->flexibleBox->pack; }
-    int boxFlexedHeight() { return css3NonInheritedData->flexibleBox->flexed_height; }
-    FlexGroupTransitionData* boxFlexGroupTransition() { return css3NonInheritedData->flexibleBox->transitions; }
     Length marqueeIncrement() { return css3NonInheritedData->marquee->increment; }
     int marqueeSpeed() { return css3NonInheritedData->marquee->speed; }
     int marqueeLoopCount() { return css3NonInheritedData->marquee->loops; }
@@ -1293,8 +1262,6 @@ public:
     void setBoxOrdinalGroup(unsigned int og) { SET_VAR(css3NonInheritedData.access()->flexibleBox, ordinal_group, og); }
     void setBoxOrient(EBoxOrient o) { SET_VAR(css3NonInheritedData.access()->flexibleBox, orient, o); }
     void setBoxPack(EBoxAlignment p) { SET_VAR(css3NonInheritedData.access()->flexibleBox, pack, p); }
-    void setBoxFlexedHeight(int h) { SET_VAR(css3NonInheritedData.access()->flexibleBox, flexed_height, h); }
-    void setBoxFlexGroupTransition(FlexGroupTransitionData* transition, bool add = false);
     void setMarqueeIncrement(const Length& f) { SET_VAR(css3NonInheritedData.access()->marquee, increment, f); }
     void setMarqueeSpeed(int f) { SET_VAR(css3NonInheritedData.access()->marquee, speed, f); }
     void setMarqueeDirection(EMarqueeDirection d) { SET_VAR(css3NonInheritedData.access()->marquee, direction, d); }
index 75f8f01..de63e58 100644 (file)
@@ -919,6 +919,8 @@ void AutoTableLayout::layout()
             numVariable++;
             totalVariable += layoutStruct[i].effMaxWidth;
             allocVariable += w;
+        default:
+            break;
         }
     }