Browse Source

Circle as Container

pull/478/head
Peter Forstmeier 11 years ago
parent
commit
deae522a23
  1. 3
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/ICSharpCode.Reporting.Addin.csproj
  2. 48
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseCircleItem.cs
  3. 19
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseRectangleItem.cs
  4. 35
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Toolbox/ToolboxProvider.cs
  5. 64
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/TypeProvider/CircleItemTypeProvider.cs
  6. 1
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj
  7. 7
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportCircle.cs
  8. 4
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportRectangle.cs
  9. 21
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/GraphicsContainer.cs
  10. 66
      src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs

3
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/ICSharpCode.Reporting.Addin.csproj

@ -76,7 +76,6 @@ @@ -76,7 +76,6 @@
<ItemGroup>
<Folder Include="Configuration" />
<Folder Include="src" />
<Folder Include="src\DesignableItems\GraphicItems" />
<Folder Include="src\DesignerBinding" />
<Folder Include="src\Commands" />
<Folder Include="src\Designer" />
@ -96,6 +95,7 @@ @@ -96,6 +95,7 @@
<Compile Include="src\Commands\ViewCommands.cs" />
<Compile Include="src\DesignableItems\AbstractGraphicItem.cs" />
<Compile Include="src\DesignableItems\AbstractItem.cs" />
<Compile Include="src\DesignableItems\BaseCircleItem.cs" />
<Compile Include="src\DesignableItems\BaseLineItem.cs" />
<Compile Include="src\DesignableItems\BaseRectangleItem.cs" />
<Compile Include="src\DesignableItems\BaseSection.cs" />
@ -135,6 +135,7 @@ @@ -135,6 +135,7 @@
<Compile Include="src\Toolbox\SideTabItemDesigner.cs" />
<Compile Include="src\Toolbox\ToolboxProvider.cs" />
<Compile Include="src\TypeProvider\AbstractItemTypeProvider.cs" />
<Compile Include="src\TypeProvider\CircleItemTypeProvider.cs" />
<Compile Include="src\TypeProvider\DataItemTypeProvider.cs" />
<Compile Include="src\TypeProvider\LineItemTypeProvider.cs" />
<Compile Include="src\TypeProvider\RectangleItemTypeProvider.cs" />

48
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseCircleItem.cs

@ -0,0 +1,48 @@ @@ -0,0 +1,48 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 17.04.2014
* Time: 19:53
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.ComponentModel;
using System.Drawing;
using ICSharpCode.Reporting.Addin.Designer;
using ICSharpCode.Reporting.Addin.TypeProvider;
namespace ICSharpCode.Reporting.Addin.DesignableItems
{
/// <summary>
/// Description of BaseCircleItem.
/// </summary>
///
[Designer(typeof(ContainerDesigner))]
class BaseCircleItem:AbstractGraphicItem
{
public BaseCircleItem()
{
TypeDescriptor.AddProvider(new CircleItemTypeProvider(), typeof(BaseCircleItem));
}
public override void Draw(Graphics graphics)
{
if (graphics == null) {
throw new ArgumentNullException("graphics");
}
var rect = new Rectangle(ClientRectangle.Left,
ClientRectangle.Top,
ClientRectangle.Right -1,
ClientRectangle.Bottom -1);
using (var pen = new Pen(ForeColor,Thickness)) {
graphics.DrawEllipse(pen,rect);
}
}
}
}

19
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/DesignableItems/BaseRectangleItem.cs

@ -42,25 +42,6 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems @@ -42,25 +42,6 @@ namespace ICSharpCode.Reporting.Addin.DesignableItems
graphics.DrawRectangle(pen,rect);
}
// 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);
// 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);
}
}
}

35
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/Toolbox/ToolboxProvider.cs

@ -71,13 +71,11 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -71,13 +71,11 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
sideTab.Items.Add(new SideTabItemDesigner(toolboxItem));
//Grahics
// Line
toolboxItem = new ToolboxItem(typeof(BaseLineItem)) {
DisplayName = ResourceService.GetString("SharpReport.Toolbar.Line"),
Bitmap = IconService.GetBitmap("Icons.16.16.SharpReport.Line")
};
sideTab.Items.Add(new SideTabItemDesigner(toolboxItem));
@ -87,6 +85,14 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -87,6 +85,14 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
Bitmap = RectangleBitmap()
};
sideTab.Items.Add(new SideTabItemDesigner(toolboxItem));
//Circle
toolboxItem = new ToolboxItem(typeof(BaseCircleItem)) {
DisplayName = ResourceService.GetString("SharpReport.Toolbar.Circle"),
Bitmap = CircleBitmap()
};
sideTab.Items.Add(new SideTabItemDesigner(toolboxItem));
/*
//GroupHeader
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.GroupHeader));
@ -117,13 +123,6 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -117,13 +123,6 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
//Grahics
// Circle
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseCircleItem));
tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.Circle");
tb.Bitmap = GlobalValues.CircleBitmap();
sideTab.Items.Add(new SideTabItemDesigner(tb));
// Image
tb = new ToolboxItem(typeof(ICSharpCode.Reports.Addin.BaseImageItem));
tb.DisplayName = ResourceService.GetString("SharpReport.Toolbar.Image");
@ -142,6 +141,24 @@ namespace ICSharpCode.Reporting.Addin.Toolbox @@ -142,6 +141,24 @@ namespace ICSharpCode.Reporting.Addin.Toolbox
}
return b;
}
/// <summary>
/// ToolboxIcon for ReportCircle
/// </summary>
/// <returns>Bitmap</returns>
static Bitmap CircleBitmap()
{
Bitmap b = new Bitmap (19,19);
using (Graphics g = Graphics.FromImage (b)){
g.DrawEllipse (new Pen(Color.Black, 1),
1,1,
17,17);
}
return b;
}
static SideTabItem CreateToolboxPointer(SideTab sideTab)
{
var pointer = new SharpDevelopSideTabItem("Pointer") {

64
src/AddIns/Misc/Reporting/ICSharpCode.Reporting.Addin/src/TypeProvider/CircleItemTypeProvider.cs

@ -0,0 +1,64 @@ @@ -0,0 +1,64 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 17.04.2014
* Time: 19:57
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
using System.Collections.Generic;
using System.ComponentModel;
using ICSharpCode.Reporting.Addin.DesignableItems;
namespace ICSharpCode.Reporting.Addin.TypeProvider
{
/// <summary>
/// Description of CircleItemTypeProvider.
/// </summary>
class CircleItemTypeProvider: TypeDescriptionProvider
{
public CircleItemTypeProvider(): base(TypeDescriptor.GetProvider(typeof(AbstractItem)))
{
}
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
{
ICustomTypeDescriptor td = base.GetTypeDescriptor(objectType,instance);
return new CircleItemTypeDescriptor(td, instance);
}
}
class CircleItemTypeDescriptor : CustomTypeDescriptor
{
public CircleItemTypeDescriptor(ICustomTypeDescriptor parent, object instance): base(parent)
{
}
public override PropertyDescriptorCollection GetProperties()
{
return GetProperties(null);
}
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
{
PropertyDescriptorCollection props = base.GetProperties(attributes);
List<PropertyDescriptor> allProperties = new List<PropertyDescriptor>();
TypeProviderHelper.AddDefaultProperties(allProperties,props);
TypeProviderHelper.AddGraphicProperties(allProperties,props);
PropertyDescriptor prop = null;
prop = props.Find("Controls",true);
allProperties.Add(prop);
return new PropertyDescriptorCollection(allProperties.ToArray());
}
}
}

1
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/ICSharpCode.Reporting.csproj

@ -168,6 +168,7 @@ @@ -168,6 +168,7 @@
<Compile Include="Src\PageBuilder\ExportColumns\ExportRectangle.cs" />
<Compile Include="Src\PageBuilder\ExportColumns\ExportText.cs" />
<Compile Include="Src\PageBuilder\ExportColumns\ExportPage.cs" />
<Compile Include="Src\PageBuilder\ExportColumns\GraphicsContainer.cs" />
<Compile Include="Src\PageBuilder\FormPageBuilder.cs" />
<Compile Include="Src\Pdf\PdfExporter.cs" />
<Compile Include="Src\Pdf\PdfExtensions.cs" />

7
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportCircle.cs

@ -25,11 +25,8 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns @@ -25,11 +25,8 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
/// <summary>
/// Description of ExportCircle.
/// </summary>
public class ExportCircle:ExportColumn,IExportGraphics,IAcceptor
public class ExportCircle:GraphicsContainer,IExportGraphics,IAcceptor
{
public ExportCircle()
{
}
public void Accept(IVisitor visitor)
@ -43,7 +40,7 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns @@ -43,7 +40,7 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
throw new NotImplementedException();
}
public int Thickness {get;set;}
// public int Thickness {get;set;}
public DashStyle DashStyle {get;set;}

4
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/ExportRectangle.cs

@ -24,11 +24,9 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns @@ -24,11 +24,9 @@ namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
/// <summary>
/// Description of ExportRectangle.
/// </summary>
public class ExportRectangle:ExportContainer,IExportGraphics
public class ExportRectangle:GraphicsContainer,IExportGraphics
{
public int Thickness {get;set;}
public DashStyle DashStyle {get;set;}
public LineCap StartLineCap {get;set;}

21
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/ExportColumns/GraphicsContainer.cs

@ -0,0 +1,21 @@ @@ -0,0 +1,21 @@
/*
* Created by SharpDevelop.
* User: Peter Forstmeier
* Date: 16.04.2014
* Time: 19:53
*
* To change this template use Tools | Options | Coding | Edit Standard Headers.
*/
using System;
namespace ICSharpCode.Reporting.PageBuilder.ExportColumns
{
/// <summary>
/// Description of GraphicsContainer.
/// </summary>
public class GraphicsContainer:ExportContainer
{
public int Thickness {get;set;}
}
}

66
src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs

@ -63,8 +63,8 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -63,8 +63,8 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
var canvas = FixedDocumentCreator.CreateContainer(container);
foreach (var element in container.ExportedItems) {
if (IsContainer(element)) {
if (element is ExportRectangle) {
var graphContainer = RenderGraphicsContainer((IExportContainer)element);
if (IsGraphicsContainer(element)) {
var graphContainer = RenderGraphicsContainer(element);
canvas.Children.Add(graphContainer);
}
} else {
@ -78,20 +78,24 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -78,20 +78,24 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
}
bool IsContainer (IExportColumn column) {
return (column is ExportContainer)|| (column is ExportRectangle);
}
Canvas RenderGraphicsContainer(IExportContainer container)
Canvas RenderGraphicsContainer(IExportColumn column)
{
var rect = container as ExportRectangle;
var graphCanvas = FixedDocumentCreator.CreateContainer(rect);
CanvasHelper.SetPosition(graphCanvas, container.Location.ToWpf());
graphCanvas.Background = FixedDocumentCreator.ConvertBrush(container.BackColor);
var graphicsContainer = column as GraphicsContainer;
var graphCanvas = FixedDocumentCreator.CreateContainer(graphicsContainer);
CanvasHelper.SetPosition(graphCanvas, column.Location.ToWpf());
graphCanvas.Background = FixedDocumentCreator.ConvertBrush(column.BackColor);
if (graphicsContainer != null) {
var rect = column as ExportRectangle;
if (rect != null) {
Visit(rect);
}
var circle = column as ExportCircle;
if (circle != null) {
Visit(circle);
}
graphCanvas.Children.Add(UIElement);
}
return graphCanvas;
@ -133,12 +137,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -133,12 +137,7 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
public override void Visit(ExportRectangle exportRectangle)
{
var border = new Border();
border.BorderThickness = new Thickness(exportRectangle.Thickness);
border.BorderBrush = FixedDocumentCreator.ConvertBrush(exportRectangle.ForeColor);
border.Background = FixedDocumentCreator.ConvertBrush(exportRectangle.BackColor);
border.Width = exportRectangle.Size.Width;
border.Height = exportRectangle.Size.Height;
var border = CreateBorder(exportRectangle);
CanvasHelper.SetPosition(border, new Point(0,0));
var sp = new StackPanel();
sp.Orientation = Orientation.Horizontal;
@ -173,10 +172,41 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor @@ -173,10 +172,41 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor
UIElement = dragingElement;
}
bool IsGraphicsContainer (IExportColumn column) {
return column is GraphicsContainer;
}
bool IsContainer (IExportColumn column) {
return (column is ExportContainer)|| (column is GraphicsContainer);
}
Border CreateBorder(IExportColumn exportColumn)
{
double bT;
var gc = IsGraphicsContainer(exportColumn);
if (!IsGraphicsContainer(exportColumn)) {
bT = 1;
} else {
bT = Convert.ToDouble(((GraphicsContainer)exportColumn).Thickness);
}
var border = new Border();
border.BorderThickness = new Thickness(bT);
border.BorderBrush = FixedDocumentCreator.ConvertBrush(exportColumn.ForeColor);
border.Background = FixedDocumentCreator.ConvertBrush(exportColumn.BackColor);
border.Width = exportColumn.Size.Width;
border.Height = exportColumn.Size.Height;
return border;
}
static Point CalcRad(System.Drawing.Size size) {
return new Point(size.Width /2,size.Height /2);
}
protected UIElement UIElement {get;private set;}

Loading…
Cancel
Save