diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseCircleItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseCircleItem.cs
index bd242a9d12..f19e8fc168 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseCircleItem.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseCircleItem.cs
@@ -62,15 +62,6 @@ namespace ICSharpCode.Reports.Addin
}
- private BaseLine Baseline()
- {
- if (this.BackColor == GlobalValues.DefaultBackColor) {
- return new BaseLine (this.ForeColor,this.DashStyle,this.Thickness);
- } else {
- return new BaseLine (this.BackColor,this.DashStyle,this.Thickness);
- }
- }
-
[Browsable(true),
Category("Appearance"),
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseRectangleItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseRectangleItem.cs
index 972030fd7f..facc77614f 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseRectangleItem.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseRectangleItem.cs
@@ -22,13 +22,14 @@ namespace ICSharpCode.Reports.Addin
private DashStyle dashStyle;
private float thickness;
-
+ private int cornerRadius;
public BaseRectangleItem()
{
this.thickness = 1;
this.dashStyle = DashStyle.Solid;
this.Size = new Size(GlobalValues.PreferedSize.Width,2* GlobalValues.PreferedSize.Height);
+ cornerRadius = 1;
TypeDescriptor.AddProvider(new RectangleItemTypeProvider(), typeof(BaseRectangleItem));
}
@@ -49,54 +50,62 @@ namespace ICSharpCode.Reports.Addin
}
Rectangle rect = new Rectangle(this.ClientRectangle.Left,this.ClientRectangle.Top,
- this.ClientRectangle.Right -1,
- this.ClientRectangle.Bottom -1);
- backgroundShape.FillShape(graphics,
- new SolidFillPattern(this.BackColor),
- rect);
+ this.ClientRectangle.Right -1,
+ this.ClientRectangle.Bottom -1);
+// backgroundShape.FillShape(graphics,
+// new SolidFillPattern(this.BackColor),
+// rect);
+
Border b = new Border(new BaseLine (this.ForeColor,System.Drawing.Drawing2D.DashStyle.Solid,1));
- DrawFrame(graphics,b);
+// DrawFrame(graphics,b);
+ BaseLine line = new BaseLine(base.ForeColor,DashStyle,Thickness,LineCap.Round,LineCap.Round,DashCap.Round);
+ using (Pen pen = line.CreatePen(line.Thickness)){
+ shape.CornerRadius = this.CornerRadius;
+ GraphicsPath path1 = shape.CreatePath(rect);
+ graphics.DrawPath(pen, path1);
+
+ }
- shape.DrawShape (graphics,
- this.Baseline(),
- rect);
+// shape.DrawShape (graphics,
+// this.Baseline(),
+// rect);
}
- protected void DrawFrame (Graphics graphics,Border border) {
- if (this.DrawBorder == true) {
- border.DrawBorder(graphics,this.ClientRectangle);
- }
- }
-
- private BaseLine Baseline()
- {
- if (this.BackColor == GlobalValues.DefaultBackColor) {
- return new BaseLine (this.ForeColor,this.DashStyle,this.Thickness);
- } else {
- return new BaseLine (this.BackColor,this.DashStyle,this.Thickness);
- }
- }
[Browsable(true),
Category("Appearance"),
Description("Linestyle")]
public DashStyle DashStyle {
get { return dashStyle; }
- set { dashStyle = value; }
+ set { dashStyle = value;
+ this.Invalidate();
+ }
}
[Browsable(true),
Category("Appearance"),
Description("Thickness of Line")]
-
public float Thickness {
get { return thickness; }
- set { thickness = value; }
+ set { thickness = value;
+ this.Invalidate();
+ }
}
+ [Browsable(true),
+ Category("Appearance"),
+ Description("Radius of Corners")]
+ public int CornerRadius
+ {
+ get{return this.cornerRadius;}
+ set{this.cornerRadius = value;
+ this.Invalidate();
+ }
+
+ }
+
}
-
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/RectangleItemTypeProvider.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/RectangleItemTypeProvider.cs
index b1344f2e14..dddf2b7584 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/RectangleItemTypeProvider.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/RectangleItemTypeProvider.cs
@@ -57,15 +57,17 @@ namespace ICSharpCode.Reports.Addin
prop = props.Find("ForeColor",true);
allProperties.Add(prop);
- prop = props.Find("DrawBorder",true);
- allProperties.Add(prop);
-
+// prop = props.Find("DrawBorder",true);
+// allProperties.Add(prop);
+//
prop = props.Find("DashStyle",true);
allProperties.Add(prop);
prop = props.Find("Thickness",true);
allProperties.Add(prop);
+ prop = props.Find("CornerRadius",true);
+ allProperties.Add(prop);
return new PropertyDescriptorCollection(allProperties.ToArray());
}
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
index 264bb5786e..b249b309e5 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/ICSharpCode.Reports.Core.csproj
@@ -137,6 +137,7 @@
+
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGraphicItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGraphicItem.cs
index a1ccf21924..957db260ec 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGraphicItem.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/BaseGraphicItem.cs
@@ -19,12 +19,13 @@ namespace ICSharpCode.Reports.Core {
///
public class BaseGraphicItem : BaseReportItem {
- private int thickness = 1;
- private DashStyle dashStyle = DashStyle.Solid;
-
- public BaseGraphicItem():base() {
+ public BaseGraphicItem():base()
+ {
+ this.Thickness = 1;
+ DashStyle = DashStyle.Solid;
}
+
protected IGraphicStyleDecorator CreateItemStyle (BaseShape shape) {
GraphicStyleDecorator style = new GraphicStyleDecorator(shape);
@@ -34,8 +35,8 @@ namespace ICSharpCode.Reports.Core {
style.ForeColor = this.ForeColor;
style.FrameColor = this.FrameColor;
- style.Thickness = this.thickness;
- style.DashStyle = this.dashStyle;
+ style.Thickness = this.Thickness;
+ style.DashStyle = this.DashStyle;
return style;
}
@@ -54,7 +55,8 @@ namespace ICSharpCode.Reports.Core {
return new BaseLine (this.BackColor,this.DashStyle,this.Thickness);
}
}
-
+
+
#region Overrides
public override string ToString()
@@ -70,41 +72,9 @@ namespace ICSharpCode.Reports.Core {
/// Line Thickness of graphical Element
///
- public virtual int Thickness {
- get {
- return thickness;
- }
- set {
- thickness = value;
- }
- }
-
-
- public virtual DashStyle DashStyle {
- get {
- return dashStyle;
- }
- set {
- dashStyle = value;
- }
- }
-
-
- [XmlIgnoreAttribute]
- [Browsable(false)]
- public override bool DrawBorder {
- get { return base.DrawBorder; }
- set { base.DrawBorder = value; }
- }
-
-
- [XmlIgnoreAttribute]
- [Browsable(false)]
- public override Font Font {
- get { return base.Font; }
- set { base.Font = value; }
- }
+ public virtual int Thickness {get;set;}
+ public virtual DashStyle DashStyle {get;set;}
#endregion
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/Graphics/BaseLineItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/Graphics/BaseLineItem.cs
index 58cbd56fe0..9d6836667f 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/Graphics/BaseLineItem.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/Graphics/BaseLineItem.cs
@@ -46,17 +46,17 @@ namespace ICSharpCode.Reports.Core {
private LineDecorator CreateLineShape ()
{
- LineDecorator ld = new LineDecorator(this.shape);
- ld.Size = this.Size;
- ld.Location = this.Location;
- ld.BackColor = this.BackColor;
- ld.ForeColor = this.ForeColor;
+ LineDecorator decorator = new LineDecorator(this.shape);
+ decorator.Size = this.Size;
+ decorator.Location = this.Location;
+ decorator.BackColor = this.BackColor;
+ decorator.ForeColor = this.ForeColor;
- ld.Thickness = base.Thickness;
- ld.DashStyle = base.DashStyle;
- ld.From = this.fromPoint;
- ld.To = this.toPoint;
- return ld;
+ decorator.Thickness = base.Thickness;
+ decorator.DashStyle = base.DashStyle;
+ decorator.From = this.fromPoint;
+ decorator.To = this.toPoint;
+ return decorator;
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/Graphics/BaseRectangleItem.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/Graphics/BaseRectangleItem.cs
index 5758d84892..da6f6c8b74 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/Graphics/BaseRectangleItem.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/BaseItems/Graphics/BaseRectangleItem.cs
@@ -3,9 +3,12 @@
using System;
using System.Drawing;
+using System.Drawing.Drawing2D;
+
using ICSharpCode.Reports.Core.BaseClasses.Printing;
using ICSharpCode.Reports.Core.Exporter;
+
///
/// This class draws a Rectangle
///
@@ -14,7 +17,9 @@ using ICSharpCode.Reports.Core.Exporter;
/// created on - 29.09.2005 11:57:30
///
namespace ICSharpCode.Reports.Core {
- public class BaseRectangleItem : BaseGraphicItem,IExportColumnBuilder {
+
+ public class BaseRectangleItem : BaseGraphicItem,IExportColumnBuilder
+ {
RectangleShape shape = new RectangleShape();
@@ -29,11 +34,13 @@ namespace ICSharpCode.Reports.Core {
#region IExportColumnBuilder
public BaseExportColumn CreateExportColumn(){
+ shape.CornerRadius = CornerRadius;
IGraphicStyleDecorator style = base.CreateItemStyle(this.shape);
ExportGraphic item = new ExportGraphic(style,false);
return item as ExportGraphic;
}
+
#endregion
public override void Render(ReportPageEventArgs rpea) {
@@ -42,14 +49,23 @@ namespace ICSharpCode.Reports.Core {
}
base.Render(rpea);
Rectangle rect = base.DisplayRectangle;
-
StandardPrinter.FillBackground(rpea.PrintPageEventArgs.Graphics,this.BaseStyleDecorator);
- shape.DrawShape (rpea.PrintPageEventArgs.Graphics,
- base.Baseline(),
- rect);
+ BaseLine line = new BaseLine(base.ForeColor,base.DashStyle,base.Thickness,LineCap.Round,LineCap.Round,DashCap.Round);
+
+ using (Pen pen = line.CreatePen(line.Thickness)){
+ if (pen != null)
+ {
+ shape.CornerRadius = this.CornerRadius;
+ GraphicsPath path1 = shape.CreatePath(rect);
+ rpea.PrintPageEventArgs.Graphics.DrawPath(pen, path1);
+ }
+ }
}
+ public int CornerRadius {get;set;}
+
+
public override string ToString() {
return "BaseRectangleItem";
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/RectangleDecorator.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/RectangleDecorator.cs
new file mode 100644
index 0000000000..d6a7077b82
--- /dev/null
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/Decorators/RectangleDecorator.cs
@@ -0,0 +1,35 @@
+/*
+ * Created by SharpDevelop.
+ * User: Peter Forstmeier
+ * Date: 30.12.2010
+ * Time: 19:41
+ *
+ * To change this template use Tools | Options | Coding | Edit Standard Headers.
+ */
+using System;
+using ICSharpCode.Reports.Core.Exporter;
+
+namespace ICSharpCode.Reports.Core.Exporter
+{
+ ///
+ /// Description of RectangleDecorator.
+ ///
+ public class aaRectangleDecorator: GraphicStyleDecorator
+ {
+ public aaRectangleDecorator(BaseShape shape):base(shape)
+ {
+ }
+
+ private int corner;
+
+ public int CornerRadius {
+ get {
+
+ return corner;
+ }
+ set { corner = value; }
+ }
+
+
+ }
+}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/BaseExportColumn.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/BaseExportColumn.cs
index 966ee5ee23..86aaffdf66 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/BaseExportColumn.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/BaseExportColumn.cs
@@ -123,6 +123,7 @@ namespace ICSharpCode.Reports.Core.Exporter
iTextSharp.text.Rectangle r = (iTextSharp.text.Rectangle)rectangleConverter.ConvertTo(null,System.Globalization.CultureInfo.InvariantCulture,
this.styleDecorator.DisplayRectangle,
typeof(iTextSharp.text.Rectangle));
+
iTextSharp.text.Rectangle rr = new iTextSharp.text.Rectangle(r.Left,r.Bottom -2,
r.Left + r.Width,r.Bottom + r.Height);
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportGraphic.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportGraphic.cs
index 3839f6b52b..1964f4e75d 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportGraphic.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportGraphic.cs
@@ -105,14 +105,14 @@ namespace ICSharpCode.Reports.Core.Exporter
if (lineDecorator != null) {
PdfLineDrawer ();
}
- else {
+ else
+ {
+// http://www.mikesdotnetting.com/Article/88/iTextSharp-Drawing-shapes-and-Graphics
IGraphicStyleDecorator style = base.StyleDecorator as GraphicStyleDecorator;
- if (style != null) {
- style.Shape.DrawShape(base.PdfWriter.DirectContent,
- new BaseLine (style.ForeColor,style.DashStyle,style.Thickness),
- style,
- base.ConvertToPdfRectangle());
- }
+ style.Shape.DrawShape(base.PdfWriter.DirectContent,
+ new BaseLine (style.ForeColor,style.DashStyle,style.Thickness),
+ style,
+ base.ConvertToPdfRectangle());
}
}
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/BaseLine.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/BaseLine.cs
index ebf7d9569b..0a5020a0b4 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/BaseLine.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/BaseLine.cs
@@ -33,6 +33,7 @@ namespace ICSharpCode.Reports.Core
{
}
+
public BaseLine(Color color, DashStyle dashStyle,float thickness, LineCap startLineCap, LineCap endLineCap, DashCap dashLineCap)
{
if (color == Color.White) {
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/BaseShape.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/BaseShape.cs
index c1ea5cbb43..4ba1931c58 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/BaseShape.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/BaseShape.cs
@@ -86,7 +86,7 @@ namespace ICSharpCode.Reports.Core {
}
- public void DrawShape(Graphics graphics, BaseLine line, Rectangle rectangle)
+ public virtual void DrawShape(Graphics graphics, BaseLine line, Rectangle rectangle)
{
if (graphics == null) {
throw new ArgumentNullException("graphics");
@@ -114,6 +114,7 @@ namespace ICSharpCode.Reports.Core {
cb.SetColorFill(style.PdfBackColor);
}
+
protected static void FillBackGround (iTextSharp.text.pdf.PdfContentByte contentByte,
IBaseStyleDecorator style,
iTextSharp.text.Rectangle rectangle)
diff --git a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/RectangleShape.cs b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/RectangleShape.cs
index 4418e16f62..55aaea95cc 100644
--- a/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/RectangleShape.cs
+++ b/src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Printing/Graphics/RectangleShape.cs
@@ -15,9 +15,11 @@ using ICSharpCode.Reports.Core.Exporter;
/// created on - 09.10.2005 18:20:51
///
namespace ICSharpCode.Reports.Core {
+
public class RectangleShape : BaseShape {
- public RectangleShape() {
+ public RectangleShape()
+ {
}
@@ -27,22 +29,46 @@ namespace ICSharpCode.Reports.Core {
}
- public override GraphicsPath CreatePath(Rectangle rectangle){
- GraphicsPath path1 = new GraphicsPath();
- path1.AddRectangle(rectangle);
- return path1;
+ public override GraphicsPath CreatePath(Rectangle rectangle )
+ {
+ //http://stackoverflow.com/questions/628261/how-to-draw-rounded-rectangle-with-variable-width-border-inside-of-specific-bound
+ //http://www.switchonthecode.com/tutorials/csharp-creating-rounded-rectangles-using-a-graphics-path
+ //http://www.codeproject.com/KB/GDI-plus/ExtendedGraphics.aspx
+
+ GraphicsPath gfxPath = new GraphicsPath();
+ if (CornerRadius == 0)
+ {
+ gfxPath.AddRectangle(rectangle);
+ }
+ else
+ {
+
+ gfxPath.AddArc(rectangle.X, rectangle.Y,CornerRadius , CornerRadius, 180, 90);
+ gfxPath.AddArc(rectangle.X + rectangle.Width - CornerRadius, rectangle.Y, CornerRadius, CornerRadius, 270, 90);
+ gfxPath.AddArc(rectangle.X + rectangle.Width - CornerRadius, rectangle.Y + rectangle.Height - CornerRadius, CornerRadius, CornerRadius, 0, 90);
+ gfxPath.AddArc(rectangle.X, rectangle.Y + rectangle.Height - CornerRadius, CornerRadius, CornerRadius, 90, 90);
+
+ }
+ gfxPath.CloseAllFigures();
+ return gfxPath;
+ }
+
+
+ public override void DrawShape(Graphics graphics, BaseLine line, Rectangle rectangle)
+ {
+ base.DrawShape(graphics, line, rectangle);
}
public override void CreatePath(iTextSharp.text.pdf.PdfContentByte contentByte,
BaseLine line,
- IBaseStyleDecorator style,
-
+ IBaseStyleDecorator style,
Point from,Point to)
{
throw new NotImplementedException();
}
+ // http://www.mikesdotnetting.com/Article/88/iTextSharp-Drawing-shapes-and-Graphics
public override void CreatePath(iTextSharp.text.pdf.PdfContentByte contentByte,
BaseLine line,
@@ -52,6 +78,9 @@ namespace ICSharpCode.Reports.Core {
if (contentByte == null) {
throw new ArgumentNullException("contentByte");
}
+ if (line == null) {
+ throw new ArgumentNullException("line");
+ }
if (style == null) {
throw new ArgumentNullException("style");
}
@@ -59,21 +88,13 @@ namespace ICSharpCode.Reports.Core {
throw new ArgumentNullException("rectangle");
}
- if ((line == null)||(line.Thickness < 1)) {
- BaseShape.FillBackGround(contentByte,style,rectangle);
- }
- else if ((style.BackColor == GlobalValues.DefaultBackColor)) {
- BaseShape.SetupShape(contentByte,style);
- contentByte.SetLineWidth(UnitConverter.FromPixel(line.Thickness).Point);
- contentByte.MoveTo(rectangle.Left ,rectangle.Top );
- contentByte.LineTo(rectangle.Left, rectangle.Top - rectangle.Height);
- contentByte.LineTo(rectangle.Left + rectangle.Width, rectangle.Top - rectangle.Height);
- contentByte.LineTo(rectangle.Left + rectangle.Width, rectangle.Top);
- contentByte.LineTo(rectangle.Left, rectangle.Top);
- BaseShape.FinishShape(contentByte);
- } else {
- BaseShape.FillBackGround(contentByte,style,rectangle);
- }
+ BaseShape.SetupShape(contentByte,style);
+ contentByte.SetLineWidth(UnitConverter.FromPixel(line.Thickness).Point);
+ contentByte.RoundRectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height, CornerRadius);
+ BaseShape.FinishShape(contentByte);
}
+
+
+ public int CornerRadius {get;set;}
}
}