using System;
using System.ComponentModel;
using System.Drawing;
using System.Drawing.Design;
using System.Xml.Serialization;
using GeoSigma;
using GeoSigma.SigmaDrawerElement;
using GeoSigma.SigmaDrawerStyle;
using GeoSigma.SigmaDrawerStyle.Converter;
using SigmaDrawerStyle;
using System.Collections.Generic;
//using PropertyEditorColor = GeoSigma.SigmaDrawerStyle.PropertyEditorColor;
namespace SigmaDrawerElement
{
#pragma warning disable SA1402 // File may only contain a single type
#pragma warning disable SA1600 // Elements should be documented
#pragma warning disable SA1649 // File name should match first type name
///
/// 文本道
///
[XmlRoot("Pcg")]
[TypeConverter(typeof(PropertySorter))]
public class WellSandstoneTrack
{
private const string WellTrackCategory = "\t\t砂岩道";
private const string TrackObjectSettingsCategory = "\t道内对象设置";
[XmlIgnore]
[Category(WellTrackCategory)]
[DisplayName("标题")]
[PropertyOrder(0)]
public string Title
{
get => WellTrack.Title.Font.Text;
set => WellTrack.Title.Font.Text = value;
}
[XmlIgnore]
[Category(WellTrackCategory)]
[DisplayName("宽度")]
[PropertyOrder(1)]
public double Width
{
get => WellTrack.Width;
set => WellTrack.Width = value;
}
[XmlIgnore]
[Category(WellTrackCategory)]
[DisplayName("填充")]
[PropertyOrder(2)]
[TypeConverter(typeof(YesNoConverter))]
public bool IsFilled
{
get => WellTrack.BackFill != 0;
set => WellTrack.BackFill = value ? 1 : 0;
}
[XmlIgnore]
[Category(WellTrackCategory)]
[DisplayName("背景颜色")]
[Editor(typeof(PropertyEditorWellFontEx), typeof(UITypeEditor))]
[PropertyOrder(3)]
[Editor(typeof(PropertyEditorColor), typeof(UITypeEditor))]
public Color BackgroundColor
{
get => ColorTranslator2.FromHtml(WellTrack.BackColor);
set => WellTrack.BackColor = ColorTranslator2.ToHtml(value);
}
[XmlIgnore]
[Category(WellTrackCategory)]
[DisplayName("道头字体")]
[PropertyOrder(4)]
[Editor(typeof(PropertyEditorWellFontEx), typeof(UITypeEditor))]
public WellFontEx HeaderFont
{
get => WellTrack.Title.Font;
set => WellTrack.Title.Font = value;
}
// 通内对象设置
[XmlIgnore]
[Category(TrackObjectSettingsCategory)]
[DisplayName("字体")]
[PropertyOrder(7)]
[Editor(typeof(PropertyEditorWellFontEx), typeof(UITypeEditor))]
public WellFontEx ObjectFont
{
get => LayerStyleHelper.GetFontEx(WellTrack.LayerStyle);
set => LayerStyleHelper.SetFontEx(WellTrack.LayerStyle, value);
}
[XmlIgnore]
[Category("数据")]
[DisplayName("数据类型"), PropertyOrder(7)]
[TypeConverter(typeof(SandStoneHeightConverter))]
public string stratification
{
get => WellTrack.Data.RefColId;
set
{
WellTrack.Data.RefColId = value;
WellTrack.Data.RefTableId = WellObjectBaseInfo.ReservesLayerTableID;
WellTrack.bRefreshWorkAreaData = true;
}
}
[XmlAttribute("Version")]
[Browsable(false)]
public string Version { get; set; }
[XmlElement("WellTrack")]
[Browsable(false)]
public WellTrackWellTrack WellTrack { get; set; }
}
public class SandStoneHeightConverter : GenericStringMapConverter
{
protected override Dictionary ValueMap => new Dictionary(StringComparer.OrdinalIgnoreCase)
{
["PureEffectiveThicknessEstimate"] = "有效厚度",
["ThicknessFirstSandstone"] = "一类砂岩",
["ThicknessSecondSandstone"] = "二类砂岩",
["ViewEffectiveThickness"] = "视有效厚度",
};
protected override string[] GetOptions(WellSandstoneTrack settings)
{
return new[] { "有效厚度", "一类砂岩", "二类砂岩", "视有效厚度" };
}
}
#pragma warning restore SA1649 // File name should match first type name
#pragma warning restore SA1600 // Elements should be documented
#pragma warning restore SA1402 // File may only contain a single type
}