| 888 | } |
| 889 | |
| 890 | bool CssParser::parseValue(CssPropertyName prop, |
| 891 | CssValueType type, |
| 892 | CssPropertyValue *val) |
| 893 | { |
| 894 | CssLengthType lentype; |
| 895 | bool found, ret = false; |
| 896 | float fval; |
| 897 | int i, ival, err = 1; |
| 898 | Dstr *dstr; |
| 899 | |
| 900 | switch (type) { |
| 901 | case CSS_TYPE_ENUM: |
| 902 | if (ttype == CSS_TK_SYMBOL) { |
| 903 | for (i = 0; Css_property_info[prop].enum_symbols[i]; i++) |
| 904 | if (dStrAsciiCasecmp(tval, |
| 905 | Css_property_info[prop].enum_symbols[i]) == 0) { |
| 906 | val->intVal = i; |
| 907 | ret = true; |
| 908 | break; |
| 909 | } |
| 910 | nextToken(); |
| 911 | } |
| 912 | break; |
| 913 | |
| 914 | case CSS_TYPE_MULTI_ENUM: |
| 915 | val->intVal = 0; |
| 916 | ret = true; |
| 917 | |
| 918 | while (ttype == CSS_TK_SYMBOL) { |
| 919 | if (dStrAsciiCasecmp(tval, "none") != 0) { |
| 920 | for (i = 0, found = false; |
| 921 | !found && Css_property_info[prop].enum_symbols[i]; i++) { |
| 922 | if (dStrAsciiCasecmp(tval, |
| 923 | Css_property_info[prop].enum_symbols[i]) == 0) |
| 924 | val->intVal |= (1 << i); |
| 925 | } |
| 926 | } |
| 927 | nextToken(); |
| 928 | } |
| 929 | break; |
| 930 | |
| 931 | case CSS_TYPE_LENGTH_PERCENTAGE: |
| 932 | case CSS_TYPE_LENGTH_PERCENTAGE_NUMBER: |
| 933 | case CSS_TYPE_LENGTH: |
| 934 | case CSS_TYPE_SIGNED_LENGTH: |
| 935 | if (ttype == CSS_TK_DECINT || ttype == CSS_TK_FLOAT) { |
| 936 | fval = atof(tval); |
| 937 | lentype = CSS_LENGTH_TYPE_NONE; |
| 938 | |
| 939 | nextToken(); |
| 940 | if (!spaceSeparated && ttype == CSS_TK_SYMBOL) { |
| 941 | ret = true; |
| 942 | |
| 943 | if (dStrAsciiCasecmp(tval, "px") == 0) { |
| 944 | lentype = CSS_LENGTH_TYPE_PX; |
| 945 | nextToken(); |
| 946 | } else if (dStrAsciiCasecmp(tval, "mm") == 0) { |
| 947 | lentype = CSS_LENGTH_TYPE_MM; |
nothing calls this directly
no test coverage detected