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

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

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

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

@ -15,6 +15,12 @@ namespace ICSharpCode.Reporting.Items @@ -15,6 +15,12 @@ namespace ICSharpCode.Reporting.Items
{
public class PrintableItem : IPrintableObject
{
public PrintableItem() {
ForeColor = Color.Black;
FrameColor = Color.Black;
BackColor = Color.White;
}
public string Name { 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 @@ -46,7 +46,7 @@ namespace ICSharpCode.Reporting.PageBuilder.Converter
var exportColumn = ExportColumnFactory.CreateItem(element);
var ec = element as IReportContainer;
if (ec != null) {
Console.WriteLine("yyyyyyyyyyy");
Console.WriteLine("Convert Recursive");
var l = CreateConvertedList(ec.Items);
((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 @@ -18,6 +18,12 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
/// </summary>
public class ExportColumn:IExportColumn
{
public ExportColumn() {
ForeColor = Color.Black;
FrameColor = Color.Black;
BackColor = Color.White;
}
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 @@ -33,6 +33,7 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
exportedItems = new List<IExportColumn>();
}
public bool IsFirstPage {get;set;}

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

@ -22,6 +22,12 @@ namespace ICSharpCode.Reporting.Pdf @@ -22,6 +22,12 @@ namespace ICSharpCode.Reporting.Pdf
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) {
return Convert(integer);
}

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

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

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

@ -2,12 +2,11 @@ @@ -2,12 +2,11 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Drawing;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
using PdfSharp.Drawing;
using PdfSharp.Drawing.Layout;
using PdfSharp.Pdf;
using ICSharpCode.Reporting.Exporter.Visitors;
using ICSharpCode.Reporting.Interfaces.Export;
using ICSharpCode.Reporting.PageBuilder.ExportColumns;
namespace ICSharpCode.Reporting.Pdf
{
@ -35,11 +34,18 @@ namespace ICSharpCode.Reporting.Pdf @@ -35,11 +34,18 @@ namespace ICSharpCode.Reporting.Pdf
base.Visit(page);
}
public override void Visit(ExportContainer exportContainer)
{
containerLocation = exportContainer.Location;
PdfHelper.DrawRectangle(exportContainer,gfx);
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;
ac.Accept(this);
}
@ -50,12 +56,16 @@ namespace ICSharpCode.Reporting.Pdf @@ -50,12 +56,16 @@ namespace ICSharpCode.Reporting.Pdf
{
var columnLocation = containerLocation;
columnLocation.Offset(exportColumn.Location);
PdfHelper.WriteText(textFormatter,columnLocation, exportColumn);
if (exportColumn.DrawBorder) {
PdfHelper.DrawRectangle(new Rectangle(columnLocation,exportColumn.DesiredSize),exportColumn.FrameColor,gfx);
if (exportColumn.BackColor != Color.White) {
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;}
}
}

Loading…
Cancel
Save