Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 Copyright (C) 2005 Apple Computer, Inc. | 2 Copyright (C) 2005 Apple Computer, Inc. |
| 3 Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> | 3 Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> |
| 4 2004, 2005, 2008 Rob Buis <buis@kde.org> | 4 2004, 2005, 2008 Rob Buis <buis@kde.org> |
| 5 Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 5 Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
| 6 | 6 |
| 7 Based on khtml css code by: | 7 Based on khtml css code by: |
| 8 Copyright(C) 1999-2003 Lars Knoll(knoll@kde.org) | 8 Copyright(C) 1999-2003 Lars Knoll(knoll@kde.org) |
| 9 (C) 2003 Apple Computer, Inc. | 9 (C) 2003 Apple Computer, Inc. |
| 10 (C) 2004 Allan Sandfeld Jensen(kde@carewolf.com) | 10 (C) 2004 Allan Sandfeld Jensen(kde@carewolf.com) |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 95 static Color colorFromSVGColorCSSValue(SVGColor* svgColor, const Color& fgColor) | 95 static Color colorFromSVGColorCSSValue(SVGColor* svgColor, const Color& fgColor) |
| 96 { | 96 { |
| 97 Color color; | 97 Color color; |
| 98 if (svgColor->colorType() == SVGColor::SVG_COLORTYPE_CURRENTCOLOR) | 98 if (svgColor->colorType() == SVGColor::SVG_COLORTYPE_CURRENTCOLOR) |
| 99 color = fgColor; | 99 color = fgColor; |
| 100 else | 100 else |
| 101 color = svgColor->color(); | 101 color = svgColor->color(); |
| 102 return color; | 102 return color; |
| 103 } | 103 } |
| 104 | 104 |
| 105 static EPaintOrder paintOrderFlattened(CSSValue* list) | |
| 106 { | |
| 107 EPaintOrder paint_order = PO_NORMAL; | |
| 108 CSSValueListInspector iter(list); | |
| 109 CSSPrimitiveValue* value; | |
| 110 for (size_t i = 0; i < iter.length(); i++) | |
| 111 { | |
| 112 CSSValue* item = iter.item(i); | |
| 113 //if (item->isPrimitiveValue()) | |
|
pdr.
2013/05/03 17:58:29
Oops :)
| |
| 114 value = static_cast<CSSPrimitiveValue*>(item); | |
| 115 | |
| 116 switch (paint_order) | |
| 117 { | |
| 118 case PO_NORMAL: | |
| 119 switch (value->getIdent()) { | |
| 120 case CSSValueFill: | |
| 121 paint_order = PO_FILL; | |
| 122 break; | |
| 123 case CSSValueStroke: | |
| 124 paint_order = PO_STROKE; | |
| 125 break; | |
| 126 case CSSValueMarkers: | |
| 127 paint_order = PO_MARKERS; | |
| 128 break; | |
| 129 } | |
| 130 break; | |
| 131 case PO_FILL: | |
| 132 switch (value->getIdent()) { | |
| 133 case CSSValueStroke: | |
| 134 paint_order = PO_FILL_STROKE; | |
| 135 break; | |
| 136 case CSSValueMarkers: | |
| 137 paint_order = PO_FILL_MARKERS; | |
| 138 break; | |
| 139 } | |
| 140 break; | |
| 141 case PO_STROKE: | |
| 142 switch (value->getIdent()) { | |
| 143 case CSSValueFill: | |
| 144 paint_order = PO_STROKE_FILL; | |
| 145 break; | |
| 146 case CSSValueMarkers: | |
| 147 paint_order = PO_STROKE_MARKERS; | |
| 148 break; | |
| 149 } | |
| 150 break; | |
| 151 case PO_MARKERS: | |
| 152 switch (value->getIdent()) { | |
| 153 case CSSValueFill: | |
| 154 paint_order = PO_MARKERS_FILL; | |
| 155 break; | |
| 156 case CSSValueStroke: | |
| 157 paint_order = PO_MARKERS_STROKE; | |
| 158 break; | |
| 159 } | |
| 160 break; | |
| 161 case PO_FILL_STROKE: | |
| 162 switch (value->getIdent()) { | |
| 163 case CSSValueMarkers: | |
| 164 paint_order = PO_NORMAL; | |
| 165 break; | |
| 166 } | |
| 167 break; | |
| 168 case PO_FILL_MARKERS: | |
| 169 switch (value->getIdent()) { | |
| 170 case CSSValueStroke: | |
| 171 paint_order = PO_FILL_MARKERS_STROKE; | |
| 172 break; | |
| 173 } | |
| 174 break; | |
| 175 case PO_STROKE_MARKERS: | |
| 176 switch (value->getIdent()) { | |
| 177 case CSSValueFill: | |
| 178 paint_order = PO_STROKE_MARKERS_FILL; | |
| 179 break; | |
| 180 } | |
| 181 break; | |
| 182 case PO_STROKE_FILL: | |
| 183 switch (value->getIdent()) { | |
| 184 case CSSValueMarkers: | |
| 185 paint_order = PO_STROKE_FILL_MARKERS; | |
| 186 break; | |
| 187 } | |
| 188 break; | |
| 189 case PO_MARKERS_FILL: | |
| 190 switch (value->getIdent()) { | |
| 191 case CSSValueStroke: | |
| 192 paint_order = PO_MARKERS_FILL_STROKE; | |
| 193 break; | |
| 194 } | |
| 195 break; | |
| 196 case PO_MARKERS_STROKE: | |
| 197 switch (value->getIdent()) { | |
| 198 case CSSValueFill: | |
| 199 paint_order = PO_MARKERS_STROKE_FILL; | |
| 200 break; | |
| 201 } | |
| 202 break; | |
| 203 default: | |
| 204 ASSERT_NOT_REACHED(); | |
| 205 break; | |
| 206 } | |
| 207 } | |
| 208 | |
| 209 return paint_order; | |
| 210 } | |
| 211 | |
| 105 void StyleResolver::applySVGProperty(CSSPropertyID id, CSSValue* value) | 212 void StyleResolver::applySVGProperty(CSSPropertyID id, CSSValue* value) |
| 106 { | 213 { |
| 107 ASSERT(value); | 214 ASSERT(value); |
| 108 CSSPrimitiveValue* primitiveValue = 0; | 215 CSSPrimitiveValue* primitiveValue = 0; |
| 109 if (value->isPrimitiveValue()) | 216 if (value->isPrimitiveValue()) |
| 110 primitiveValue = static_cast<CSSPrimitiveValue*>(value); | 217 primitiveValue = static_cast<CSSPrimitiveValue*>(value); |
| 111 | 218 |
| 112 const State& state = m_state; | 219 const State& state = m_state; |
| 113 SVGRenderStyle* svgstyle = state.style()->accessSVGStyle(); | 220 SVGRenderStyle* svgstyle = state.style()->accessSVGStyle(); |
| 114 | 221 |
| (...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 597 break; | 704 break; |
| 598 } | 705 } |
| 599 case CSSPropertyMaskType: { | 706 case CSSPropertyMaskType: { |
| 600 HANDLE_INHERIT_AND_INITIAL(maskType, MaskType) | 707 HANDLE_INHERIT_AND_INITIAL(maskType, MaskType) |
| 601 if (!primitiveValue) | 708 if (!primitiveValue) |
| 602 break; | 709 break; |
| 603 | 710 |
| 604 svgstyle->setMaskType(*primitiveValue); | 711 svgstyle->setMaskType(*primitiveValue); |
| 605 break; | 712 break; |
| 606 } | 713 } |
| 714 case CSSPropertyPaintOrder: { | |
| 715 HANDLE_INHERIT_AND_INITIAL(paintOrder, PaintOrder) | |
| 716 | |
| 717 if (value->isValueList()) | |
|
pdr.
2013/05/03 17:58:29
Style nit: no braces needed for single-line if/els
| |
| 718 { | |
| 719 svgstyle->setPaintOrder(paintOrderFlattened(value)); | |
| 720 } | |
| 721 else if (primitiveValue) | |
| 722 { | |
| 723 svgstyle->setPaintOrder(*primitiveValue); | |
| 724 } | |
| 725 break; | |
| 726 } | |
| 607 default: | 727 default: |
| 608 // If you crash here, it's because you added a css property and are not handling it | 728 // If you crash here, it's because you added a css property and are not handling it |
| 609 // in either this switch statement or the one in StyleResolver::appl yProperty | 729 // in either this switch statement or the one in StyleResolver::appl yProperty |
| 610 ASSERT_WITH_MESSAGE(0, "unimplemented propertyID: %d", id); | 730 ASSERT_WITH_MESSAGE(0, "unimplemented propertyID: %d", id); |
| 611 return; | 731 return; |
| 612 } | 732 } |
| 613 } | 733 } |
| 614 | 734 |
| 615 } | 735 } |
| 616 | 736 |
| 617 #endif | 737 #endif |
| OLD | NEW |