- 24 Sep, 2014 1 commit
-
-
Dan Backes authored
- Because querying the Bounds property of an ISvgBoundable or SvgVisualElement is expensive, we introduced an ImmutableBoundable that is used by the SvgRenderer. This class stores the bounds of the supplied ISvgBoundable so that multiple queries for the bounds do not hamper performance when rendering. - Converted the Bounds property on ISvgBoundable and SvgVisualElement to a CalculateBounds method to indicate that it is an expensive operation that returns a new value each time it is called. - Removed redundant ISvgBoundable Location and Size properties. - Fixed a bug in SvgFragment.Path property by converting it to a method that indicates it returns a new GraphicsPath instance when called and by disposing of that instance in CalculateBounds. There are many more instances of GraphicsPath not being disposed in the code base but we did not address that here.
-
- 24 Jul, 2014 1 commit
-
-
James Welle authored
- Added support for the "gradientTransform" attribute on both linear and radial gradients. The matrix in this attribute needs to be applied to attributes with coordinate values on the gradient element in order to transform them into the correct coordinate space. - Added support for a value of "pad" for the "spreadMode" attribute on both linear and radial gradients. This is the default value but was not implemented correctly. In order to implement, we examine the properties of the gradient along with the element to which the gradient is being applied to determine if we need to expand the bounds of the gradient to fill the element. If so, we do so and adjust the color stops and positions so they are correct for the new gradient bounds. - Divided ISvgStylable into ISvgBoundable and ISvgStylable. The SvgUnit.ToDeviceValue method just needs bounds so it can take ISvgBoundable. Moved SvgDocument.GetDimensions() to SvgFragment and made SvgFragment ISvgBoundable. - Fixed a bug in SvgFragment.PushTransforms where it was calling the SvgUnit.ToDeviceValue overload that takes no parameters. This overload doesn't work if the value being converted is a percentage. (The overload should probably be removed entirely, but we didn't take that on in this commit.) - Fixed an issue in SvgGroup.Bounds where a child with empty bounds would cause the group's bounds to be reported as empty. - Fixed broken build by adding missing SvgMarker.MarkerUnits property. - Converted files that we touched with mixed tabs and spaces to spaces. Also removed unused usings from files we touched. - Converted SvgLinearGradientServer to use properties without backing fields for X1, Y1, etc. in order to match SvgRadialGradientServer. - Moved default value assignments into constructors for consistency.
-
- 14 Jul, 2014 1 commit
-
-
James Welle authored
- Added support for the "gradientTransform" attribute on both linear and radial gradients. The matrix in this attribute needs to be applied to attributes with coordinate values on the gradient element in order to transform them into the correct coordinate space. - Added support for a value of "pad" for the "spreadMode" attribute on both linear and radial gradients. This is the default value but was not implemented correctly. In order to implement, we examine the properties of the gradient along with the element to which the gradient is being applied to determine if we need to expand the bounds of the gradient to fill the element. If so, we do so and adjust the color stops and positions so they are correct for the new gradient bounds. - Divided ISvgStylable into ISvgBoundable and ISvgStylable. The SvgUnit.ToDeviceValue method just needs bounds so it can take ISvgBoundable. Moved SvgDocument.GetDimensions() to SvgFragment and made SvgFragment ISvgBoundable. - Fixed a bug in SvgFragment.PushTransforms where it was calling the SvgUnit.ToDeviceValue overload that takes no parameters. This overload doesn't work if the value being converted is a percentage. (The overload should probably be removed entirely, but we didn't take that on in this commit.) - Fixed an issue in SvgGroup.Bounds where a child with empty bounds would cause the group's bounds to be reported as empty. - Fixed broken build by adding missing SvgMarker.MarkerUnits property. - Converted files that we touched with mixed tabs and spaces to spaces. Also removed unused usings from files we touched. - Converted SvgLinearGradientServer to use properties without backing fields for X1, Y1, etc. in order to match SvgRadialGradientServer. - Moved default value assignments into constructors for consistency.
-