2025-04-15 12:10:19 +02:00

166 lines
5.2 KiB
C#

using ceTe.DynamicPDF;
using PDFGenerator.Entity;
using PDFGenerator.Presentation.Section.Tables;
namespace PDFGenerator.Entity
{
/// <summary>
/// Rappresenta un rettangolo.
/// Utilizza la classe primitiva ceTe.DynamicPDF.PageElements.Rectangle.
/// </summary>
public class RectanglePDF : ObjectPDF
{
#region Fields
private ColorPDF _color = new ColorPDF(232, 236, 237);
private LineStylePDF _borderStyle = LineStylePDF.Solid;
/// <summary>
/// Imposta o ottiene l'elemento base (PageElement)
/// </summary>
public ceTe.DynamicPDF.PageElements.Rectangle BaseElement { get; set; }
/// <summary>
/// Imposta o recupera la X del documento su cui disegnare il rettangolo.
/// </summary>
public float X { get; set; }
/// <summary>
/// Imposta o recupera la Y del documento su cui disegnare il rettangolo.
/// </summary>
public float Y { get; set; }
/// <summary>
/// Imposta o recupera la larghezza del rettangolo.
/// </summary>
public float Width { get; set; }
/// <summary>
/// Imposta o recupera l'altezza del rettangolo.
/// </summary>
public float Height { get; set; }
/// <summary>
/// Imposta o recupera un valore che indica l'incremento algebrico dell'incremento standard di Y.
/// Utilizzare questa proprietà se si vuole incrementare o decrementare la Y assegnata automaticamente dal motore di renderizzazione.
/// Di default=0;
/// </summary>
public float DeltaY { get; set; }
public float DeltaX { get; set; }
/// <summary>
/// Imposta o recupera il colore del rettangolo.
/// Di default = ColorPDF(232, 236, 237).
/// </summary>
public ColorPDF Color
{
get { return _color; }
set { _color = value; }
}
/// <summary>
/// Ottiene o imposta un valore che rappresenta il grado di arrotondamento degli angoli.
/// Di default=0.
/// </summary>
public float CornerRadius { get; set; }
/// <summary>
/// Imposta o recupera l'angolazione.
/// Di default= 0.
/// </summary>
public float Angle { get; set; }
#endregion
#region Bordo
public ColorPDF BorderColor { get; set; }
public LineStylePDF BorderStyle
{
get { return _borderStyle; }
set { _borderStyle = value; }
}
public float BorderWidth { get; set; }
#endregion
#region Costruttori
/// <summary>
/// Costruisce un nuovo oggetto rettangolo.
/// </summary>
public RectanglePDF()
{
CornerRadius = 0;
DeltaY = 0;
ObjectType = ObjectTypePdf.RECTANGLE;
}
/// <summary>
/// Costruisce un nuovo oggetto rettangolo.
/// </summary>
/// <param name="x">Valore della X in cui disegnare il rettangolo</param>
/// <param name="height">Altezza del rettangolo</param>
/// <param name="width">Larghezza del rettangolo</param>
/// <param name="color">Colore del rettangolo</param>
public RectanglePDF(float x, float height, float width, ColorPDF color)
: this(height, width, color)
{
ObjectType = ObjectTypePdf.RECTANGLE;
X = x;
Height = height;
Width = width;
_color = color;
}
/// <summary>
/// Costruisce un nuovo oggetto rettangolo.
/// </summary>
/// <param name="x">Valore della X in cui disegnare il rettangolo</param>
/// <param name="y">Valore della Y in cui disegnare il rettangolo</param>
/// <param name="height">Altezza del rettangolo</param>
/// <param name="width">Larghezza del rettangolo</param>
/// <param name="color">Colore del rettangolo</param>
public RectanglePDF(float x, float y, float height, float width, ColorPDF color)
: this(x, height, width, color)
{
Y = y;
}
/// <summary>
/// Costruisce un nuovo oggetto rettangolo.
/// Utilizzare questo costruttore senza X ed Y solo per aggiungere un oggetto RectanglePDF come ValueObject di una TablePDF in una colonna di tipo TipoColonna.OBJECTPDF
/// </summary>
/// <param name="height">Altezza del rettangolo</param>
/// <param name="width">Larghezza del rettangolo</param>
/// <param name="color">Colore del rettangolo</param>
public RectanglePDF(float height, float width, ColorPDF color)
: this()
{
Height = height;
Width = width;
_color = color;
}
#endregion
#region Metodi
/// <summary>
/// Ritorna l'oggetto che sarà stampato sulla pagina del documento.
/// </summary>
/// <returns></returns>
public override PageElement ToElement()
{
return BaseElement;
}
#endregion
}
public class LineStylePDF
{
public static LineStylePDF Solid { get; set; }
}
}