aboutsummaryrefslogtreecommitdiffstatsci
path: root/src/GraphicObjects/Border.cs
diff options
context:
space:
mode:
authorjpbruyere <jp.bruyere@hotmail.com>2014-12-22 08:08:36 +0100
committerjpbruyere <jp.bruyere@hotmail.com>2014-12-22 08:08:36 +0100
commite8b13fbea6cab4f01af769a1246c49c588fa2f3e (patch)
tree649f51c9c995c5f0c106ce3c60bc99fd364b1368 /src/GraphicObjects/Border.cs
parent1753010a7b08f29f425356171f78817dc8c6e7f4 (diff)
CompilerServices for EventHandler statements in XML attributes
Improve code formatting debug
Diffstat (limited to 'src/GraphicObjects/Border.cs')
-rw-r--r--src/GraphicObjects/Border.cs81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/GraphicObjects/Border.cs b/src/GraphicObjects/Border.cs
new file mode 100644
index 00000000..281db215
--- /dev/null
+++ b/src/GraphicObjects/Border.cs
@@ -0,0 +1,81 @@
+using System;
+using System.Xml.Serialization;
+using System.ComponentModel;
+
+namespace go
+{
+ public class Border : Container
+ {
+ #region CTOR
+ public Border () : base(){}
+ #endregion
+
+ #region private fields
+ Color _borderColor;
+ int _borderWidth;
+ #endregion
+
+ #region public properties
+ [XmlAttributeAttribute()][DefaultValue(2)]
+ public virtual int BorderWidth {
+ get { return _borderWidth; }
+ set {
+ _borderWidth = value;
+ registerForGraphicUpdate ();
+ }
+ }
+ [XmlAttributeAttribute()][DefaultValue("White")]
+ public virtual Color BorderColor {
+ get { return _borderColor; }
+ set {
+ _borderColor = value;
+ registerForGraphicUpdate ();
+ }
+ }
+ #endregion
+
+ #region GraphicObject override
+ [XmlIgnore]public override Rectangle ClientRectangle {
+ get {
+ Rectangle cb = base.ClientRectangle;
+ cb.Inflate (- BorderWidth);
+ return cb;
+ }
+ }
+
+ protected override Size measureRawSize ()
+ {
+ Size raw = Bounds.Size;
+
+ if (child != null) {
+ if (Bounds.Width < 0 && child.WIsValid)
+ raw.Width = child.Slot.Width + 2 * (Margin+BorderWidth);
+ if (Bounds.Height < 0 && child.HIsValid)
+ raw.Height = child.Slot.Height + 2 * (Margin+BorderWidth);
+ }
+
+ return raw;
+ }
+ protected override void onDraw (Cairo.Context gr)
+ {
+ Rectangle rBack = new Rectangle (Slot.Size);
+
+ if (BorderWidth > 0)
+ rBack.Inflate (-BorderWidth / 2);
+
+ gr.Color = Background;
+ CairoHelpers.CairoRectangle(gr,rBack,CornerRadius);
+ gr.Fill ();
+
+ if (BorderWidth > 0) {
+
+ gr.LineWidth = BorderWidth;
+ gr.Color = BorderColor;
+ CairoHelpers.CairoRectangle(gr,rBack,CornerRadius);
+ gr.Stroke ();
+ }
+ }
+ #endregion
+ }
+}
+