FastReport
113 строк · 3.6 Кб
1using System.Drawing;
2using System.ComponentModel;
3using FastReport.Utils;
4using System.Drawing.Design;
5
6namespace FastReport
7{
8/// <summary>
9/// Represents a single highlight condition used by the <see cref="TextObject.Highlight"/> property
10/// of the <see cref="TextObject"/>.
11/// </summary>
12public class HighlightCondition : StyleBase
13{
14#region Fields
15private string expression;
16private bool visible;
17#endregion
18
19#region Properties
20/// <summary>
21/// Gets or sets a highlight expression.
22/// </summary>
23/// <remarks>
24/// This property can contain any valid boolean expression. If value of this expression is <b>true</b>,
25/// the fill and font settings will be applied to the <b>TextObject</b>.
26/// </remarks>
27[Editor("FastReport.TypeEditors.ExpressionEditor, FastReport", typeof(UITypeEditor))]
28public string Expression
29{
30get { return expression; }
31set { expression = value; }
32}
33
34/// <summary>
35/// Gets or sets the visibility flag.
36/// </summary>
37/// <remarks>
38/// If this property is set to <b>false</b>, the Text object will be hidden if the
39/// condition is met.
40/// </remarks>
41public bool Visible
42{
43get { return visible; }
44set { visible = value; }
45}
46#endregion
47
48#region Public Methods
49/// <inheritdoc/>
50public override void Serialize(FRWriter writer)
51{
52HighlightCondition c = writer.DiffObject as HighlightCondition;
53writer.ItemName = "Condition";
54
55if (Expression != c.Expression)
56writer.WriteStr("Expression", Expression);
57if (Visible != c.Visible)
58writer.WriteBool("Visible", Visible);
59
60base.Serialize(writer);
61}
62
63/// <inheritdoc/>
64public override void Assign(StyleBase source)
65{
66base.Assign(source);
67Expression = (source as HighlightCondition).Expression;
68Visible = (source as HighlightCondition).Visible;
69}
70
71/// <summary>
72/// Creates exact copy of this condition.
73/// </summary>
74/// <returns>A copy of this condition.</returns>
75public HighlightCondition Clone()
76{
77HighlightCondition result = new HighlightCondition();
78result.Assign(this);
79return result;
80}
81
82/// <inheritdoc/>
83public override bool Equals(object obj)
84{
85HighlightCondition c = obj as HighlightCondition;
86return c != null && Expression == c.Expression && Border.Equals(c.Border) && Fill.Equals(c.Fill) &&
87TextFill.Equals(c.TextFill) && Font.Equals(c.Font) && Visible == c.Visible &&
88ApplyBorder == c.ApplyBorder && ApplyFill == c.ApplyFill && ApplyTextFill == c.ApplyTextFill &&
89ApplyFont == c.ApplyFont;
90}
91
92/// <inheritdoc/>
93public override int GetHashCode()
94{
95return base.GetHashCode();
96}
97#endregion
98
99/// <summary>
100/// Initializes a new instance of the <see cref="HighlightCondition"/> class with default settings.
101/// </summary>
102public HighlightCondition()
103{
104Expression = "";
105TextFill = new SolidFill(Color.Red);
106Visible = true;
107ApplyBorder = false;
108ApplyFill = false;
109ApplyTextFill = true;
110ApplyFont = false;
111}
112}
113}
114