| 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 30 matching lines...) Expand all Loading... |
| 41 #include "SVGPaint.h" | 41 #include "SVGPaint.h" |
| 42 #include "SVGRenderStyle.h" | 42 #include "SVGRenderStyle.h" |
| 43 #include "SVGRenderStyleDefs.h" | 43 #include "SVGRenderStyleDefs.h" |
| 44 #include "SVGStyledElement.h" | 44 #include "SVGStyledElement.h" |
| 45 #include "SVGURIReference.h" | 45 #include "SVGURIReference.h" |
| 46 #include <stdlib.h> | 46 #include <stdlib.h> |
| 47 #include <wtf/MathExtras.h> | 47 #include <wtf/MathExtras.h> |
| 48 | 48 |
| 49 #define HANDLE_INHERIT(prop, Prop) \ | 49 #define HANDLE_INHERIT(prop, Prop) \ |
| 50 if (isInherit) \ | 50 if (isInherit) \ |
| 51 {\ | 51 { \ |
| 52 svgstyle->set##Prop(m_parentStyle->svgStyle()->prop());\ | 52 svgstyle->set##Prop(m_parentStyle->svgStyle()->prop()); \ |
| 53 return;\ | 53 return; \ |
| 54 } | 54 } |
| 55 | 55 |
| 56 #define HANDLE_INHERIT_AND_INITIAL(prop, Prop) \ | 56 #define HANDLE_INHERIT_AND_INITIAL(prop, Prop) \ |
| 57 HANDLE_INHERIT(prop, Prop) \ | 57 HANDLE_INHERIT(prop, Prop) \ |
| 58 else if (isInitial) \ | 58 if (isInitial) { \ |
| 59 svgstyle->set##Prop(SVGRenderStyle::initial##Prop()); | 59 svgstyle->set##Prop(SVGRenderStyle::initial##Prop()); \ |
| 60 return; \ |
| 61 } |
| 60 | 62 |
| 61 namespace WebCore { | 63 namespace WebCore { |
| 62 | 64 |
| 63 static float roundToNearestGlyphOrientationAngle(float angle) | 65 static float roundToNearestGlyphOrientationAngle(float angle) |
| 64 { | 66 { |
| 65 angle = fabsf(fmodf(angle, 360.0f)); | 67 angle = fabsf(fmodf(angle, 360.0f)); |
| 66 | 68 |
| 67 if (angle <= 45.0f || angle > 315.0f) | 69 if (angle <= 45.0f || angle > 315.0f) |
| 68 return 0.0f; | 70 return 0.0f; |
| 69 else if (angle > 45.0f && angle <= 135.0f) | 71 else if (angle > 45.0f && angle <= 135.0f) |
| (...skipping 13 matching lines...) Expand all Loading... |
| 83 else if (angle == 90.0f) | 85 else if (angle == 90.0f) |
| 84 return GO_90DEG; | 86 return GO_90DEG; |
| 85 else if (angle == 180.0f) | 87 else if (angle == 180.0f) |
| 86 return GO_180DEG; | 88 return GO_180DEG; |
| 87 else if (angle == 270.0f) | 89 else if (angle == 270.0f) |
| 88 return GO_270DEG; | 90 return GO_270DEG; |
| 89 | 91 |
| 90 return -1; | 92 return -1; |
| 91 } | 93 } |
| 92 | 94 |
| 93 static Color colorFromSVGColorCSSValue(CSSValue* value, const Color& fgColor) | 95 static Color colorFromSVGColorCSSValue(SVGColor* svgColor, const Color& fgColor) |
| 94 { | 96 { |
| 95 ASSERT(value->isSVGColor()); | |
| 96 SVGColor* c = static_cast<SVGColor*>(value); | |
| 97 Color color; | 97 Color color; |
| 98 if (c->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 = c->color(); | 101 color = svgColor->color(); |
| 102 return color; | 102 return color; |
| 103 } | 103 } |
| 104 | 104 |
| 105 void CSSStyleSelector::applySVGProperty(int id, CSSValue* value) | 105 void CSSStyleSelector::applySVGProperty(int id, CSSValue* value) |
| 106 { | 106 { |
| 107 ASSERT(value); | 107 ASSERT(value); |
| 108 CSSPrimitiveValue* primitiveValue = 0; | 108 CSSPrimitiveValue* primitiveValue = 0; |
| 109 if (value->isPrimitiveValue()) | 109 if (value->isPrimitiveValue()) |
| 110 primitiveValue = static_cast<CSSPrimitiveValue*>(value); | 110 primitiveValue = static_cast<CSSPrimitiveValue*>(value); |
| 111 | 111 |
| (...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 461 case CSSPropertyWritingMode: | 461 case CSSPropertyWritingMode: |
| 462 { | 462 { |
| 463 HANDLE_INHERIT_AND_INITIAL(writingMode, WritingMode) | 463 HANDLE_INHERIT_AND_INITIAL(writingMode, WritingMode) |
| 464 if (primitiveValue) | 464 if (primitiveValue) |
| 465 svgstyle->setWritingMode(*primitiveValue); | 465 svgstyle->setWritingMode(*primitiveValue); |
| 466 break; | 466 break; |
| 467 } | 467 } |
| 468 case CSSPropertyStopColor: | 468 case CSSPropertyStopColor: |
| 469 { | 469 { |
| 470 HANDLE_INHERIT_AND_INITIAL(stopColor, StopColor); | 470 HANDLE_INHERIT_AND_INITIAL(stopColor, StopColor); |
| 471 svgstyle->setStopColor(colorFromSVGColorCSSValue(value, m_style->col
or())); | 471 if (value->isSVGColor()) |
| 472 svgstyle->setStopColor(colorFromSVGColorCSSValue(static_cast<SVG
Color*>(value), m_style->color())); |
| 472 break; | 473 break; |
| 473 } | 474 } |
| 474 case CSSPropertyLightingColor: | 475 case CSSPropertyLightingColor: |
| 475 { | 476 { |
| 476 HANDLE_INHERIT_AND_INITIAL(lightingColor, LightingColor); | 477 HANDLE_INHERIT_AND_INITIAL(lightingColor, LightingColor); |
| 477 svgstyle->setLightingColor(colorFromSVGColorCSSValue(value, m_style-
>color())); | 478 if (value->isSVGColor()) |
| 479 svgstyle->setLightingColor(colorFromSVGColorCSSValue(static_cast
<SVGColor*>(value), m_style->color())); |
| 478 break; | 480 break; |
| 479 } | 481 } |
| 480 case CSSPropertyFloodOpacity: | 482 case CSSPropertyFloodOpacity: |
| 481 { | 483 { |
| 482 HANDLE_INHERIT_AND_INITIAL(floodOpacity, FloodOpacity) | 484 HANDLE_INHERIT_AND_INITIAL(floodOpacity, FloodOpacity) |
| 483 if (!primitiveValue) | 485 if (!primitiveValue) |
| 484 return; | 486 return; |
| 485 | 487 |
| 486 float f = 0.0f; | 488 float f = 0.0f; |
| 487 int type = primitiveValue->primitiveType(); | 489 int type = primitiveValue->primitiveType(); |
| 488 if (type == CSSPrimitiveValue::CSS_PERCENTAGE) | 490 if (type == CSSPrimitiveValue::CSS_PERCENTAGE) |
| 489 f = primitiveValue->getFloatValue() / 100.0f; | 491 f = primitiveValue->getFloatValue() / 100.0f; |
| 490 else if (type == CSSPrimitiveValue::CSS_NUMBER) | 492 else if (type == CSSPrimitiveValue::CSS_NUMBER) |
| 491 f = primitiveValue->getFloatValue(); | 493 f = primitiveValue->getFloatValue(); |
| 492 else | 494 else |
| 493 return; | 495 return; |
| 494 | 496 |
| 495 svgstyle->setFloodOpacity(f); | 497 svgstyle->setFloodOpacity(f); |
| 496 break; | 498 break; |
| 497 } | 499 } |
| 498 case CSSPropertyFloodColor: | 500 case CSSPropertyFloodColor: |
| 499 { | 501 { |
| 500 if (isInitial) { | 502 HANDLE_INHERIT_AND_INITIAL(floodColor, FloodColor); |
| 501 svgstyle->setFloodColor(SVGRenderStyle::initialFloodColor()); | 503 if (value->isSVGColor()) |
| 502 return; | 504 svgstyle->setFloodColor(colorFromSVGColorCSSValue(static_cast<SV
GColor*>(value), m_style->color())); |
| 503 } | |
| 504 svgstyle->setFloodColor(colorFromSVGColorCSSValue(value, m_style->co
lor())); | |
| 505 break; | 505 break; |
| 506 } | 506 } |
| 507 case CSSPropertyGlyphOrientationHorizontal: | 507 case CSSPropertyGlyphOrientationHorizontal: |
| 508 { | 508 { |
| 509 HANDLE_INHERIT_AND_INITIAL(glyphOrientationHorizontal, GlyphOrientat
ionHorizontal) | 509 HANDLE_INHERIT_AND_INITIAL(glyphOrientationHorizontal, GlyphOrientat
ionHorizontal) |
| 510 if (!primitiveValue) | 510 if (!primitiveValue) |
| 511 return; | 511 return; |
| 512 | 512 |
| 513 if (primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_DEG) { | 513 if (primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_DEG) { |
| 514 int orientation = angleToGlyphOrientation(primitiveValue->getFlo
atValue()); | 514 int orientation = angleToGlyphOrientation(primitiveValue->getFlo
atValue()); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 578 // If you crash here, it's because you added a css property and are
not handling it | 578 // If you crash here, it's because you added a css property and are
not handling it |
| 579 // in either this switch statement or the one in CSSStyleSelector::a
pplyProperty | 579 // in either this switch statement or the one in CSSStyleSelector::a
pplyProperty |
| 580 ASSERT_WITH_MESSAGE(0, "unimplemented propertyID: %d", id); | 580 ASSERT_WITH_MESSAGE(0, "unimplemented propertyID: %d", id); |
| 581 return; | 581 return; |
| 582 } | 582 } |
| 583 } | 583 } |
| 584 | 584 |
| 585 } | 585 } |
| 586 | 586 |
| 587 #endif | 587 #endif |
| OLD | NEW |