Browse Source

Export to Pdf, handle Container recursive, draw background, set Font color

reports
Peter Forstmeier 12 years ago
parent
commit
a8d04a71a6
  1. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs
  2. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs
  3. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs
  4. 2
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs
  5. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs
  6. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportPage.cs
  7. 6
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfExtensions.cs
  8. 33
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfHelper.cs
  9. 26
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfVisitor.cs

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/DebugVisitor.cs

@ -34,6 +34,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors
Console.WriteLine(); Console.WriteLine();
Console.WriteLine("\t{0} - {1} Items {2}", Console.WriteLine("\t{0} - {1} Items {2}",
exportContainer.Name,exportContainer.Location,exportContainer.BackColor); exportContainer.Name,exportContainer.Location,exportContainer.BackColor);
Console.WriteLine("\thas Child {0}",exportContainer.ExportedItems.Count);
base.Visit(exportContainer); base.Visit(exportContainer);
} }

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/BaseSection.cs

@ -7,6 +7,7 @@
* To change this template use Tools | Options | Coding | Edit Standard Headers. * To change this template use Tools | Options | Coding | Edit Standard Headers.
*/ */
using System; using System;
using System.Drawing;
using ICSharpCode.Reporting.Interfaces; using ICSharpCode.Reporting.Interfaces;
namespace ICSharpCode.Reporting.Items namespace ICSharpCode.Reporting.Items

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Items/PrintableItem.cs

@ -15,6 +15,12 @@ namespace ICSharpCode.Reporting.Items
{ {
public class PrintableItem : IPrintableObject public class PrintableItem : IPrintableObject
{ {
public PrintableItem() {
ForeColor = Color.Black;
FrameColor = Color.Black;
BackColor = Color.White;
}
public string Name { get; set; } public string Name { get; set; }
public Point Location { get; set; } public Point Location { get; set; }

2
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/Converter/ContainerConverter.cs

@ -46,7 +46,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
var exportColumn = ExportColumnFactory.CreateItem(element); var exportColumn = ExportColumnFactory.CreateItem(element);
var ec = element as IReportContainer; var ec = element as IReportContainer;
if (ec != null) { if (ec != null) {
Console.WriteLine("yyyyyyyyyyy"); Console.WriteLine("Convert Recursive");
var l = CreateConvertedList(ec.Items); var l = CreateConvertedList(ec.Items);
((IExportContainer)exportColumn).ExportedItems.AddRange(l); ((IExportContainer)exportColumn).ExportedItems.AddRange(l);
} }

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportColumn.cs

@ -18,6 +18,12 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
/// </summary> /// </summary>
public class ExportColumn:IExportColumn public class ExportColumn:IExportColumn
{ {
public ExportColumn() {
ForeColor = Color.Black;
FrameColor = Color.Black;
BackColor = Color.White;
}
public string Name {get;set;} public string Name {get;set;}

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportPage.cs

@ -33,6 +33,7 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
exportedItems = new List<IExportColumn>(); exportedItems = new List<IExportColumn>();
} }
public bool IsFirstPage {get;set;} public bool IsFirstPage {get;set;}

6
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfExtensions.cs

@ -22,6 +22,12 @@ namespace ICSharpCode.Reporting.Pdf
return p; return p;
} }
public static XRect ToXRect( this Rectangle rectangle) {
return new XRect(rectangle.Location.ToXPoints(),rectangle.Size.ToXSize());
}
public static float ToPoint (this int integer) { public static float ToPoint (this int integer) {
return Convert(integer); return Convert(integer);
} }

33
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfHelper.cs

@ -18,8 +18,11 @@ namespace ICSharpCode.Reporting.Pdf
public static void WriteText(XTextFormatter textFormatter,Point columnLocation, ExportText exportColumn) public static void WriteText(XTextFormatter textFormatter,Point columnLocation, ExportText exportColumn)
{ {
XFont font = PdfHelper.CreatePdfFont(exportColumn); XFont font = PdfHelper.CreatePdfFont(exportColumn);
var rect = PdfHelper.CreateDisplayRectangle(columnLocation, exportColumn.DesiredSize); var rect = new Rectangle(columnLocation,exportColumn.DesiredSize).ToXRect();
textFormatter.DrawString(exportColumn.Text, font, XBrushes.Black, rect, XStringFormats.TopLeft); textFormatter.DrawString(exportColumn.Text,
font,
new XSolidBrush(ToXColor(exportColumn.ForeColor)),
rect, XStringFormats.TopLeft);
} }
@ -30,32 +33,30 @@ namespace ICSharpCode.Reporting.Pdf
} }
public static XRect CreateDisplayRectangle(IExportColumn column) { static XColor ToXColor (Color color){
return new XRect(column.DisplayRectangle.Location.ToXPoints(), return XColor.FromArgb(color.R,color.G,color.B);
column.DisplayRectangle.Size.ToXSize());
} }
public static XRect CreateDisplayRectangle(Point location,Size size) { public static XRect CreateDisplayRectangle(IExportColumn column) {
return new XRect(location.ToXPoints(),size.ToXSize()); return column.DisplayRectangle.ToXRect();
} }
public static void DrawRectangle (IExportColumn column, XGraphics graphics) { public static void DrawRectangle (IExportColumn column, XGraphics graphics) {
var c = XColor.FromArgb(column.FrameColor.R,column.FrameColor.G,column.FrameColor.B); FillRectangle(column.DisplayRectangle,column.FrameColor,graphics);
var pen = new XPen(c, 1);
var r = CreateDisplayRectangle(column);
graphics.DrawRectangle(pen,r);
} }
public static void FillRectangle(Rectangle rect,Color color,XGraphics graphics) {
var r = rect.ToXRect();
graphics.DrawRectangle(new XSolidBrush(ToXColor(color)),r);
}
public static void DrawRectangle(Rectangle rect,Color color,XGraphics graphics) { public static Point LocationRelToParent (ExportColumn column) {
var c = XColor.FromArgb(color.R,color.G,color.B); return new Point(column.Parent.Location.X + column.Location.X,
var pen = new XPen(c, 1); column.Parent.Location.Y + column.Location.Y);
var r = CreateDisplayRectangle(rect.Location,rect.Size);
graphics.DrawRectangle(pen,r);
} }
} }
} }

26
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Pdf/PdfVisitor.cs

@ -2,12 +2,11 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System; using System;
using System.Drawing; using System.Drawing;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using PdfSharp.Drawing; using PdfSharp.Drawing;
using PdfSharp.Drawing.Layout; using PdfSharp.Drawing.Layout;
using PdfSharp.Pdf; using PdfSharp.Pdf;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Pdf namespace ICSharpCode.Reporting.Pdf
{ {
@ -35,11 +34,18 @@ namespace ICSharpCode.Reporting.Pdf
base.Visit(page); base.Visit(page);
} }
public override void Visit(ExportContainer exportContainer) public override void Visit(ExportContainer exportContainer)
{ {
containerLocation = exportContainer.Location;
PdfHelper.DrawRectangle(exportContainer,gfx);
foreach (var element in exportContainer.ExportedItems) { foreach (var element in exportContainer.ExportedItems) {
var con = element as ExportContainer;
if (con != null) {
containerLocation = PdfHelper.LocationRelToParent(con);
var r = new Rectangle(containerLocation,con.DisplayRectangle.Size);
PdfHelper.FillRectangle(r,con.BackColor,gfx);
Visit(con);
}
containerLocation = PdfHelper.LocationRelToParent(exportContainer);
var ac = element as IAcceptor; var ac = element as IAcceptor;
ac.Accept(this); ac.Accept(this);
} }
@ -50,12 +56,16 @@ namespace ICSharpCode.Reporting.Pdf
{ {
var columnLocation = containerLocation; var columnLocation = containerLocation;
columnLocation.Offset(exportColumn.Location); columnLocation.Offset(exportColumn.Location);
PdfHelper.WriteText(textFormatter,columnLocation, exportColumn);
if (exportColumn.DrawBorder) { if (exportColumn.BackColor != Color.White) {
PdfHelper.DrawRectangle(new Rectangle(columnLocation,exportColumn.DesiredSize),exportColumn.FrameColor,gfx); var r = new Rectangle(columnLocation,exportColumn.DisplayRectangle.Size);
PdfHelper.FillRectangle(r,exportColumn.BackColor,gfx);
} }
PdfHelper.WriteText(textFormatter,columnLocation, exportColumn);
} }
public PdfPage PdfPage {get; private set;} public PdfPage PdfPage {get; private set;}
} }
} }

Loading…
Cancel
Save