Browse Source

GraphicsContainer can be used with printer and pdf

pull/15/head^2
peterforstmeier 15 years ago
parent
commit
06a04c13ae
  1. 1
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseTextItem.cs
  2. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/BaseExportColumn.cs
  3. 10
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportContainer.cs
  4. 22
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportGraphicContainer.cs
  5. 48
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs
  6. 12
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/BaseExportRenderer.cs
  7. 23
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PdfRenderer.cs
  8. 3
      src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Globals/PdfHelper.cs

1
src/AddIns/Misc/Reports/ICSharpCode.Reports.Addin/Project/ReportItems/BaseTextItem.cs

@ -34,7 +34,6 @@ namespace ICSharpCode.Reports.Addin
base.BackColor = Color.White; base.BackColor = Color.White;
this.contentAlignment = ContentAlignment.TopLeft; this.contentAlignment = ContentAlignment.TopLeft;
TypeDescriptor.AddProvider(new TextItemTypeProvider(), typeof(BaseTextItem)); TypeDescriptor.AddProvider(new TextItemTypeProvider(), typeof(BaseTextItem));
System.Console.WriteLine (this.Font.ToString());
} }

10
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/BaseExportColumn.cs

@ -15,11 +15,6 @@ namespace ICSharpCode.Reports.Core.Exporter
public class BaseExportColumn public class BaseExportColumn
{ {
// private IBaseStyleDecorator styleDecorator;
// private bool isContainer;
// private ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter converter;
// private PdfWriter pdfWriter;
#region Constructors #region Constructors
public BaseExportColumn() public BaseExportColumn()
@ -37,7 +32,6 @@ namespace ICSharpCode.Reports.Core.Exporter
#endregion #endregion
#region draw item #region draw item
public virtual void DrawItem (Graphics graphics) public virtual void DrawItem (Graphics graphics)
@ -163,9 +157,9 @@ namespace ICSharpCode.Reports.Core.Exporter
public bool IsContainer {get; protected set;} public bool IsContainer {get; protected set;}
public ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter PdfUnitConverter {get;private set;} public ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter PdfUnitConverter {get;protected set;}
public PdfWriter PdfWriter {get;private set;} public PdfWriter PdfWriter {get;protected set;}
} }
} }

10
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportContainer.cs

@ -37,12 +37,22 @@ namespace ICSharpCode.Reports.Core.Exporter
} }
base.DrawItem(graphics); base.DrawItem(graphics);
base.Decorate(graphics); base.Decorate(graphics);
foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in items)
{
baseExportColumn.DrawItem(graphics);
}
} }
public override void DrawItem(PdfWriter pdfWriter, ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter converter) public override void DrawItem(PdfWriter pdfWriter, ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter converter)
{ {
base.DrawItem(pdfWriter, converter); base.DrawItem(pdfWriter, converter);
base.Decorate(); base.Decorate();
foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in this.Items)
{
baseExportColumn.DrawItem(pdfWriter,converter);
}
} }
#endregion #endregion

22
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportGraphicContainer.cs

@ -15,7 +15,6 @@ namespace ICSharpCode.Reports.Core.Exporter
{ {
public class ExportGraphicContainer :ExportContainer public class ExportGraphicContainer :ExportContainer
{ {
//ExporterCollection items;
public ExportGraphicContainer (IBaseStyleDecorator itemStyle,bool isContainer):base(itemStyle as BaseStyleDecorator) public ExportGraphicContainer (IBaseStyleDecorator itemStyle,bool isContainer):base(itemStyle as BaseStyleDecorator)
{ {
@ -29,7 +28,8 @@ namespace ICSharpCode.Reports.Core.Exporter
if (lineDecorator != null) { if (lineDecorator != null) {
GraphicsLineDrawer (graphics); GraphicsLineDrawer (graphics);
} }
else { else
{
IGraphicStyleDecorator style = base.StyleDecorator as GraphicStyleDecorator; IGraphicStyleDecorator style = base.StyleDecorator as GraphicStyleDecorator;
if (style != null) { if (style != null) {
base.FillShape(graphics,style.Shape); base.FillShape(graphics,style.Shape);
@ -47,6 +47,24 @@ namespace ICSharpCode.Reports.Core.Exporter
} }
public override void DrawItem(PdfWriter pdfWriter, ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter converter)
{
base.PdfWriter = pdfWriter;
base.PdfUnitConverter = converter;
IGraphicStyleDecorator style = base.StyleDecorator as GraphicStyleDecorator;
style.Shape.DrawShape(pdfWriter.DirectContent,
new BaseLine (style.ForeColor,style.DashStyle,style.Thickness),
style,
ConvertToPdfRectangle());
foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in this.Items)
{
baseExportColumn.DrawItem(pdfWriter,converter);
}
}
private void GraphicsLineDrawer (Graphics graphics) private void GraphicsLineDrawer (Graphics graphics)
{ {
LineDecorator lineStyle = base.StyleDecorator as LineDecorator; LineDecorator lineStyle = base.StyleDecorator as LineDecorator;

48
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportColumns/ExportText.cs

@ -39,30 +39,12 @@ namespace ICSharpCode.Reports.Core.Exporter {
throw new ArgumentNullException("converter"); throw new ArgumentNullException("converter");
} }
base.DrawItem(pdfWriter,converter); base.DrawItem(pdfWriter,converter);
iTextSharp.text.Font font = null;
if (this.StyleDecorator.Font.Unit == GraphicsUnit.Point) {
font = FontFactory.GetFont(this.StyleDecorator.Font.FontFamily.Name,
BaseFont.IDENTITY_H,
this.StyleDecorator.Font.Size,
(int)this.StyleDecorator.Font.Style,
this.StyleDecorator.PdfForeColor);
} else {
font = FontFactory.GetFont(this.StyleDecorator.Font.FontFamily.Name,
BaseFont.IDENTITY_H,
UnitConverter.FromPixel(this.StyleDecorator.Font.Size).Point,
(int)this.StyleDecorator.Font.Style,
this.StyleDecorator.PdfForeColor);
}
base.Decorate(); base.Decorate();
PdfContentByte contentByte = base.PdfWriter.DirectContent; PdfContentByte contentByte = base.PdfWriter.DirectContent;
iTextSharp.text.Font font = CreateFontFromFactory(this.StyleDecorator);
CalculatePdfFormat pdfFormat = new CalculatePdfFormat(this.StyleDecorator,font); CalculatePdfFormat pdfFormat = new CalculatePdfFormat(this.StyleDecorator,font);
ColumnText columnText = new ColumnText(contentByte); ColumnText columnText = new ColumnText(contentByte);
@ -83,6 +65,30 @@ namespace ICSharpCode.Reports.Core.Exporter {
columnText.Go(); columnText.Go();
} }
private static iTextSharp.text.Font CreateFontFromFactory(TextStyleDecorator styleDecorator)
{
iTextSharp.text.Font font = null;
if (styleDecorator.Font.Unit == GraphicsUnit.Point) {
font = FontFactory.GetFont(styleDecorator.Font.FontFamily.Name,
BaseFont.IDENTITY_H,
styleDecorator.Font.Size,
(int)styleDecorator.Font.Style,
styleDecorator.PdfForeColor);
} else {
font = FontFactory.GetFont(styleDecorator.Font.FontFamily.Name,
BaseFont.IDENTITY_H,
UnitConverter.FromPixel(styleDecorator.Font.Size).Point,
(int)styleDecorator.Font.Style,
styleDecorator.PdfForeColor);
}
return font;
}
public override void DrawItem(Graphics graphics) public override void DrawItem(Graphics graphics)
{ {

12
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/BaseExportRenderer.cs

@ -27,18 +27,8 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer{
protected static void DrawItems (Graphics graphics,ExporterCollection items) protected static void DrawItems (Graphics graphics,ExporterCollection items)
{ {
foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in items) { foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in items) {
baseExportColumn.DrawItem(graphics);
if (baseExportColumn != null) {
ExportContainer container = baseExportColumn as ExportContainer;
if (container == null) {
baseExportColumn.DrawItem(graphics);
} else {
container.DrawItem(graphics);
DrawItems(graphics,container.Items);
}
}
} }
} }

23
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Exporter/ExportRenderer/PdfRenderer.cs

@ -101,17 +101,15 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer
private void DrawPage (ExporterCollection items) private void DrawPage (ExporterCollection items)
{ {
foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in items) { foreach (ICSharpCode.Reports.Core.Exporter.BaseExportColumn baseExportColumn in items)
if (baseExportColumn != null) { {
baseExportColumn.DrawItem(this.pdfWriter,this.pdfUnitConverter);
IExportContainer container = baseExportColumn as ExportContainer; // IExportContainer container = baseExportColumn as ExportContainer;
if (container == null) { // if (container == null) {
baseExportColumn.DrawItem(this.pdfWriter,this.pdfUnitConverter); // baseExportColumn.DrawItem(this.pdfWriter,this.pdfUnitConverter);
} else { // } else {
container.DrawItem(this.pdfWriter,this.pdfUnitConverter); // container.DrawItem(this.pdfWriter,this.pdfUnitConverter);
this.DrawPage(container.Items); // }
}
}
} }
} }
@ -157,7 +155,8 @@ namespace ICSharpCode.Reports.Core.Exporter.ExportRenderer
} }
public class PdfUnitConverter { public class PdfUnitConverter
{
Rectangle pageSize; Rectangle pageSize;
float lowerLeftX; float lowerLeftX;
float lowerleftY; float lowerleftY;

3
src/AddIns/Misc/Reports/ICSharpCode.Reports.Core/Project/Globals/PdfHelper.cs

@ -2,7 +2,6 @@
// 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 iTextSharp.text;
namespace ICSharpCode.Reports.Core.Globals namespace ICSharpCode.Reports.Core.Globals
{ {
@ -14,6 +13,7 @@ namespace ICSharpCode.Reports.Core.Globals
{ {
ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter converter; ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter converter;
public ScreenRectToPdfRectConverter(ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter converter) public ScreenRectToPdfRectConverter(ICSharpCode.Reports.Core.Exporter.ExportRenderer.PdfUnitConverter converter)
{ {
if (converter == null) { if (converter == null) {
@ -57,5 +57,6 @@ namespace ICSharpCode.Reports.Core.Globals
float ry = (float)ly + UnitConverter.FromPixel(r.Height).Point; float ry = (float)ly + UnitConverter.FromPixel(r.Height).Point;
return new iTextSharp.text.Rectangle(lx,ly,rx,ry); return new iTextSharp.text.Rectangle(lx,ly,rx,ry);
} }
} }
} }

Loading…
Cancel
Save