Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: third_party/WebKit/Source/core/css/ComputedStyleCSSValueMapping.cpp

Issue 2753013004: Apply SVG styles paint-order, stroke-linejoin, and stroke-linecap on DOM text
Patch Set: Apply SVG styles paint-order, stroke-linejoin, and stroke-linecap on DOM text Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> 2 * Copyright (C) 2004 Zack Rusin <zack@kde.org>
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
4 * All rights reserved. 4 * All rights reserved.
5 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 5 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
6 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> 6 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com>
7 * Copyright (C) 2011 Sencha, Inc. All rights reserved. 7 * Copyright (C) 2011 Sencha, Inc. All rights reserved.
8 * Copyright (C) 2015 Google Inc. All rights reserved. 8 * Copyright (C) 2015 Google Inc. All rights reserved.
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 return zoomAdjustedPixelValue(length.value(), style); 91 return zoomAdjustedPixelValue(length.value(), style);
92 } 92 }
93 93
94 static CSSValue* zoomAdjustedPixelValueForLength(const Length& length, 94 static CSSValue* zoomAdjustedPixelValueForLength(const Length& length,
95 const ComputedStyle& style) { 95 const ComputedStyle& style) {
96 if (length.isFixed()) 96 if (length.isFixed())
97 return zoomAdjustedPixelValue(length.value(), style); 97 return zoomAdjustedPixelValue(length.value(), style);
98 return CSSValue::create(length, style.effectiveZoom()); 98 return CSSValue::create(length, style.effectiveZoom());
99 } 99 }
100 100
101 static CSSValue* pixelValueForUnzoomedLength( 101 static CSSValue* pixelValueForUnzoomedLength(const ComputedStyle& style) {
102 const UnzoomedLength& unzoomedLength, 102 const UnzoomedLength unzoomedLength = style.strokeWidth();
103 const ComputedStyle& style) {
104 const Length& length = unzoomedLength.length(); 103 const Length& length = unzoomedLength.length();
105 if (length.isFixed()) 104 if (length.isFixed())
106 return CSSPrimitiveValue::create(length.value(), 105 return CSSPrimitiveValue::create(length.value(),
107 CSSPrimitiveValue::UnitType::Pixels); 106 CSSPrimitiveValue::UnitType::Pixels);
108 return CSSValue::create(length, style.effectiveZoom()); 107 return CSSValue::create(length, style.effectiveZoom());
109 } 108 }
110 109
111 static CSSValueList* createPositionListForLayer(CSSPropertyID propertyID, 110 static CSSValueList* createPositionListForLayer(CSSPropertyID propertyID,
112 const FillLayer& layer, 111 const FillLayer& layer,
113 const ComputedStyle& style) { 112 const ComputedStyle& style) {
(...skipping 1544 matching lines...) Expand 10 before | Expand all | Expand 10 after
1658 if (dashes.isEmpty()) 1657 if (dashes.isEmpty())
1659 return CSSIdentifierValue::create(CSSValueNone); 1658 return CSSIdentifierValue::create(CSSValueNone);
1660 1659
1661 CSSValueList* list = CSSValueList::createCommaSeparated(); 1660 CSSValueList* list = CSSValueList::createCommaSeparated();
1662 for (const Length& dashLength : dashes.vector()) 1661 for (const Length& dashLength : dashes.vector())
1663 list->append(*zoomAdjustedPixelValueForLength(dashLength, style)); 1662 list->append(*zoomAdjustedPixelValueForLength(dashLength, style));
1664 1663
1665 return list; 1664 return list;
1666 } 1665 }
1667 1666
1668 static CSSValue* paintOrderToCSSValueList(const SVGComputedStyle& svgStyle) { 1667 static CSSValue* paintOrderToCSSValueList(const ComputedStyle& style) {
1669 CSSValueList* list = CSSValueList::createSpaceSeparated(); 1668 CSSValueList* list = CSSValueList::createSpaceSeparated();
1670 for (int i = 0; i < 3; i++) { 1669 for (int i = 0; i < 3; i++) {
1671 EPaintOrderType paintOrderType = svgStyle.paintOrderType(i); 1670 EPaintOrderType paintOrderType = style.paintOrderType(i);
1672 switch (paintOrderType) { 1671 switch (paintOrderType) {
1673 case PT_FILL: 1672 case PT_FILL:
1674 case PT_STROKE: 1673 case PT_STROKE:
1675 case PT_MARKERS: 1674 case PT_MARKERS:
1676 list->append(*CSSIdentifierValue::create(paintOrderType)); 1675 list->append(*CSSIdentifierValue::create(paintOrderType));
1677 break; 1676 break;
1678 case PT_NONE: 1677 case PT_NONE:
1679 default: 1678 default:
1680 ASSERT_NOT_REACHED(); 1679 ASSERT_NOT_REACHED();
1681 break; 1680 break;
(...skipping 1675 matching lines...) Expand 10 before | Expand all | Expand 10 after
3357 case CSSPropertyOffsetRotate: 3356 case CSSPropertyOffsetRotate:
3358 case CSSPropertyOffsetRotation: { 3357 case CSSPropertyOffsetRotation: {
3359 CSSValueList* list = CSSValueList::createSpaceSeparated(); 3358 CSSValueList* list = CSSValueList::createSpaceSeparated();
3360 if (style.offsetRotation().type == OffsetRotationAuto) 3359 if (style.offsetRotation().type == OffsetRotationAuto)
3361 list->append(*CSSIdentifierValue::create(CSSValueAuto)); 3360 list->append(*CSSIdentifierValue::create(CSSValueAuto));
3362 list->append(*CSSPrimitiveValue::create( 3361 list->append(*CSSPrimitiveValue::create(
3363 style.offsetRotation().angle, CSSPrimitiveValue::UnitType::Degrees)); 3362 style.offsetRotation().angle, CSSPrimitiveValue::UnitType::Degrees));
3364 return list; 3363 return list;
3365 } 3364 }
3366 3365
3366 case CSSPropertyStrokeLinecap:
3367 return CSSIdentifierValue::create(style.capStyle());
3368 case CSSPropertyStrokeLinejoin:
3369 return CSSIdentifierValue::create(style.joinStyle());
3370 case CSSPropertyPaintOrder:
3371 return paintOrderToCSSValueList(style);
3372 case CSSPropertyStrokeWidth:
3373 return pixelValueForUnzoomedLength(style);
3374
3367 // Unimplemented CSS 3 properties (including CSS3 shorthand properties). 3375 // Unimplemented CSS 3 properties (including CSS3 shorthand properties).
3368 case CSSPropertyWebkitTextEmphasis: 3376 case CSSPropertyWebkitTextEmphasis:
3369 return nullptr; 3377 return nullptr;
3370 3378
3371 // Directional properties are resolved by resolveDirectionAwareProperty() 3379 // Directional properties are resolved by resolveDirectionAwareProperty()
3372 // before the switch. 3380 // before the switch.
3373 case CSSPropertyBlockSize: 3381 case CSSPropertyBlockSize:
3374 case CSSPropertyInlineSize: 3382 case CSSPropertyInlineSize:
3375 case CSSPropertyMaxBlockSize: 3383 case CSSPropertyMaxBlockSize:
3376 case CSSPropertyMaxInlineSize: 3384 case CSSPropertyMaxInlineSize:
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
3454 return CSSIdentifierValue::create(svgStyle.colorInterpolationFilters()); 3462 return CSSIdentifierValue::create(svgStyle.colorInterpolationFilters());
3455 case CSSPropertyFillOpacity: 3463 case CSSPropertyFillOpacity:
3456 return CSSPrimitiveValue::create(svgStyle.fillOpacity(), 3464 return CSSPrimitiveValue::create(svgStyle.fillOpacity(),
3457 CSSPrimitiveValue::UnitType::Number); 3465 CSSPrimitiveValue::UnitType::Number);
3458 case CSSPropertyFillRule: 3466 case CSSPropertyFillRule:
3459 return CSSIdentifierValue::create(svgStyle.fillRule()); 3467 return CSSIdentifierValue::create(svgStyle.fillRule());
3460 case CSSPropertyColorRendering: 3468 case CSSPropertyColorRendering:
3461 return CSSIdentifierValue::create(svgStyle.colorRendering()); 3469 return CSSIdentifierValue::create(svgStyle.colorRendering());
3462 case CSSPropertyShapeRendering: 3470 case CSSPropertyShapeRendering:
3463 return CSSIdentifierValue::create(svgStyle.shapeRendering()); 3471 return CSSIdentifierValue::create(svgStyle.shapeRendering());
3464 case CSSPropertyStrokeLinecap:
3465 return CSSIdentifierValue::create(svgStyle.capStyle());
3466 case CSSPropertyStrokeLinejoin:
3467 return CSSIdentifierValue::create(svgStyle.joinStyle());
3468 case CSSPropertyStrokeMiterlimit: 3472 case CSSPropertyStrokeMiterlimit:
3469 return CSSPrimitiveValue::create(svgStyle.strokeMiterLimit(), 3473 return CSSPrimitiveValue::create(svgStyle.strokeMiterLimit(),
3470 CSSPrimitiveValue::UnitType::Number); 3474 CSSPrimitiveValue::UnitType::Number);
3471 case CSSPropertyStrokeOpacity: 3475 case CSSPropertyStrokeOpacity:
3472 return CSSPrimitiveValue::create(svgStyle.strokeOpacity(), 3476 return CSSPrimitiveValue::create(svgStyle.strokeOpacity(),
3473 CSSPrimitiveValue::UnitType::Number); 3477 CSSPrimitiveValue::UnitType::Number);
3474 case CSSPropertyAlignmentBaseline: 3478 case CSSPropertyAlignmentBaseline:
3475 return CSSIdentifierValue::create(svgStyle.alignmentBaseline()); 3479 return CSSIdentifierValue::create(svgStyle.alignmentBaseline());
3476 case CSSPropertyDominantBaseline: 3480 case CSSPropertyDominantBaseline:
3477 return CSSIdentifierValue::create(svgStyle.dominantBaseline()); 3481 return CSSIdentifierValue::create(svgStyle.dominantBaseline());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
3509 return CSSIdentifierValue::create(CSSValueNone); 3513 return CSSIdentifierValue::create(CSSValueNone);
3510 case CSSPropertyStroke: 3514 case CSSPropertyStroke:
3511 return adjustSVGPaintForCurrentColor( 3515 return adjustSVGPaintForCurrentColor(
3512 svgStyle.strokePaintType(), svgStyle.strokePaintUri(), 3516 svgStyle.strokePaintType(), svgStyle.strokePaintUri(),
3513 svgStyle.strokePaintColor(), style.color()); 3517 svgStyle.strokePaintColor(), style.color());
3514 case CSSPropertyStrokeDasharray: 3518 case CSSPropertyStrokeDasharray:
3515 return strokeDashArrayToCSSValueList(*svgStyle.strokeDashArray(), style); 3519 return strokeDashArrayToCSSValueList(*svgStyle.strokeDashArray(), style);
3516 case CSSPropertyStrokeDashoffset: 3520 case CSSPropertyStrokeDashoffset:
3517 return zoomAdjustedPixelValueForLength(svgStyle.strokeDashOffset(), 3521 return zoomAdjustedPixelValueForLength(svgStyle.strokeDashOffset(),
3518 style); 3522 style);
3519 case CSSPropertyStrokeWidth:
3520 return pixelValueForUnzoomedLength(svgStyle.strokeWidth(), style);
3521 case CSSPropertyBaselineShift: { 3523 case CSSPropertyBaselineShift: {
3522 switch (svgStyle.baselineShift()) { 3524 switch (svgStyle.baselineShift()) {
3523 case BS_SUPER: 3525 case BS_SUPER:
3524 return CSSIdentifierValue::create(CSSValueSuper); 3526 return CSSIdentifierValue::create(CSSValueSuper);
3525 case BS_SUB: 3527 case BS_SUB:
3526 return CSSIdentifierValue::create(CSSValueSub); 3528 return CSSIdentifierValue::create(CSSValueSub);
3527 case BS_LENGTH: 3529 case BS_LENGTH:
3528 return zoomAdjustedPixelValueForLength(svgStyle.baselineShiftValue(), 3530 return zoomAdjustedPixelValueForLength(svgStyle.baselineShiftValue(),
3529 style); 3531 style);
3530 } 3532 }
3531 ASSERT_NOT_REACHED(); 3533 ASSERT_NOT_REACHED();
3532 return nullptr; 3534 return nullptr;
3533 } 3535 }
3534 case CSSPropertyBufferedRendering: 3536 case CSSPropertyBufferedRendering:
3535 return CSSIdentifierValue::create(svgStyle.bufferedRendering()); 3537 return CSSIdentifierValue::create(svgStyle.bufferedRendering());
3536 case CSSPropertyPaintOrder:
3537 return paintOrderToCSSValueList(svgStyle);
3538 case CSSPropertyVectorEffect: 3538 case CSSPropertyVectorEffect:
3539 return CSSIdentifierValue::create(svgStyle.vectorEffect()); 3539 return CSSIdentifierValue::create(svgStyle.vectorEffect());
3540 case CSSPropertyMaskType: 3540 case CSSPropertyMaskType:
3541 return CSSIdentifierValue::create(svgStyle.maskType()); 3541 return CSSIdentifierValue::create(svgStyle.maskType());
3542 case CSSPropertyMarker: 3542 case CSSPropertyMarker:
3543 // the above properties are not yet implemented in the engine 3543 // the above properties are not yet implemented in the engine
3544 return nullptr; 3544 return nullptr;
3545 case CSSPropertyD: 3545 case CSSPropertyD:
3546 if (const StylePath* stylePath = svgStyle.d()) 3546 if (const StylePath* stylePath = svgStyle.d())
3547 return stylePath->computedCSSValue(); 3547 return stylePath->computedCSSValue();
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
3663 case CSSPropertyAll: 3663 case CSSPropertyAll:
3664 return nullptr; 3664 return nullptr;
3665 default: 3665 default:
3666 break; 3666 break;
3667 } 3667 }
3668 ASSERT_NOT_REACHED(); 3668 ASSERT_NOT_REACHED();
3669 return nullptr; 3669 return nullptr;
3670 } 3670 }
3671 3671
3672 } // namespace blink 3672 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSProperties.json5 ('k') | third_party/WebKit/Source/core/css/resolver/StyleResolver.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698