Commit d5c84b66 authored by Axyonych's avatar Axyonych
Browse files

-Fixed SvgRectangle default fill color.

parent ab3a7c58
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Xml;
using System.ComponentModel;
namespace Svg
{
[Serializable()]
[Serializable]
public class SvgRectangle : SvgGraphicsElement
{
private SvgUnit _width;
private SvgUnit _height;
private SvgUnit _x;
private SvgUnit _y;
private SvgUnit _cornerRadiusX;
private SvgUnit _cornerRadiusY;
private SvgUnit _height;
private GraphicsPath _path;
private SvgUnit _width;
private SvgUnit _x;
private SvgUnit _y;
public SvgRectangle()
{
_width = new SvgUnit(0.0f);
_height = new SvgUnit(0.0f);
}
public SvgPoint Location
{
get { return new SvgPoint(this.X, this.Y); }
get { return new SvgPoint(X, Y); }
}
public override SvgPaintServer Fill
{
get { return (this.Attributes["Fill"] == null) ? new SvgColourServer(Color.Black) : (SvgPaintServer)this.Attributes["Fill"]; }
set { this.Attributes["Fill"] = value; }
}
[SvgAttribute("x")]
public SvgUnit X
{
get { return this._x; }
set { this._x = value; this.IsPathDirty = true; }
get { return _x; }
set
{
_x = value;
IsPathDirty = true;
}
}
[SvgAttribute("y")]
public SvgUnit Y
{
get { return this._y; }
set { this._y = value; this.IsPathDirty = true; }
get { return _y; }
set
{
_y = value;
IsPathDirty = true;
}
}
[SvgAttribute("width")]
public SvgUnit Width
{
get { return this._width; }
set { this._width = value; this.IsPathDirty = true; }
get { return _width; }
set
{
_width = value;
IsPathDirty = true;
}
}
[SvgAttribute("height")]
public SvgUnit Height
{
get { return this._height; }
set { this._height = value; this.IsPathDirty = true; }
get { return _height; }
set
{
_height = value;
IsPathDirty = true;
}
}
[SvgAttribute("rx")]
......@@ -58,12 +82,16 @@ namespace Svg
get
{
// If ry has been set and rx hasn't, use it's value
if (this._cornerRadiusX.Value == 0.0f && this._cornerRadiusY.Value > 0.0f)
return this._cornerRadiusY;
if (_cornerRadiusX.Value == 0.0f && _cornerRadiusY.Value > 0.0f)
return _cornerRadiusY;
return this._cornerRadiusX;
return _cornerRadiusX;
}
set
{
_cornerRadiusX = value;
IsPathDirty = true;
}
set { this._cornerRadiusX = value; this.IsPathDirty = true; }
}
[SvgAttribute("ry")]
......@@ -72,38 +100,39 @@ namespace Svg
get
{
// If rx has been set and ry hasn't, use it's value
if (this._cornerRadiusY.Value == 0.0f && this._cornerRadiusX.Value > 0.0f)
return this._cornerRadiusX;
if (_cornerRadiusY.Value == 0.0f && _cornerRadiusX.Value > 0.0f)
return _cornerRadiusX;
return this._cornerRadiusY;
return _cornerRadiusY;
}
set
{
this._cornerRadiusY = value;
this.IsPathDirty = true;
_cornerRadiusY = value;
IsPathDirty = true;
}
}
protected override bool RequiresSmoothRendering
{
get { return (this.CornerRadiusX.Value > 0 || this.CornerRadiusY.Value > 0); }
get { return (CornerRadiusX.Value > 0 || CornerRadiusY.Value > 0); }
}
public override RectangleF Bounds
{
get { return this.Path.GetBounds(); }
get { return Path.GetBounds(); }
}
public override GraphicsPath Path
{
get
{
if (this._path == null || this.IsPathDirty)
if (_path == null || IsPathDirty)
{
// If the corners aren't to be rounded just create a rectangle
if (this.CornerRadiusX.Value == 0.0f && this.CornerRadiusY.Value == 0.0f)
if (CornerRadiusX.Value == 0.0f && CornerRadiusY.Value == 0.0f)
{
RectangleF rectangle = new RectangleF(this.Location.ToDeviceValue(), new SizeF(this.Width.ToDeviceValue(), this.Height.ToDeviceValue()));
var rectangle = new RectangleF(Location.ToDeviceValue(),
new SizeF(Width.ToDeviceValue(), Height.ToDeviceValue()));
_path = new GraphicsPath();
_path.StartFigure();
......@@ -113,14 +142,14 @@ namespace Svg
else
{
_path = new GraphicsPath();
RectangleF arcBounds = new RectangleF();
PointF lineStart = new PointF();
PointF lineEnd = new PointF();
float width = this.Width.ToDeviceValue();
float height = this.Height.ToDeviceValue();
float rx = this.CornerRadiusX.ToDeviceValue();
float ry = this.CornerRadiusY.ToDeviceValue();
PointF location = this.Location.ToDeviceValue();
var arcBounds = new RectangleF();
var lineStart = new PointF();
var lineEnd = new PointF();
var width = Width.ToDeviceValue();
var height = Height.ToDeviceValue();
var rx = CornerRadiusX.ToDeviceValue();
var ry = CornerRadiusY.ToDeviceValue();
var location = Location.ToDeviceValue();
// Start
_path.StartFigure();
......@@ -132,7 +161,7 @@ namespace Svg
_path.AddArc(arcBounds, 180, 90);
// Add first line
lineStart.X = location.X+rx;
lineStart.X = location.X + rx;
lineStart.Y = location.Y;
lineEnd.X = location.X + width - rx;
lineEnd.Y = lineStart.Y;
......@@ -174,7 +203,7 @@ namespace Svg
// Close
_path.CloseFigure();
}
this.IsPathDirty = false;
IsPathDirty = false;
}
return _path;
}
......@@ -182,14 +211,8 @@ namespace Svg
protected override void Render(Graphics graphics)
{
if (this.Width.Value > 0.0f && this.Height.Value > 0.0f)
if (Width.Value > 0.0f && Height.Value > 0.0f)
base.Render(graphics);
}
public SvgRectangle()
{
this._width = new SvgUnit(0.0f);
this._height = new SvgUnit(0.0f);
}
}
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment