using System.Drawing;
using System.Globalization;
namespace grapher
{
public static class Constants
{
#region Constants
/// DPI by which charts are scaled if none is set by user.
public const int DefaultDPI = 1200;
/// Poll rate by which charts are scaled if none is set by user.
public const int DefaultPollRate = 1000;
/// Resolution of chart calulation.
public const int Resolution = 500;
/// Multiplied by DPI over poll rate to find rough max expected velocity.
public const double MaxMultiplier = .05;
/// Separation between X and Y active value labels, in pixels.
public const int ActiveLabelXYSeparation = 2;
/// Vertical separation between charts, in pixels.
public const int ChartSeparationVertical = 10;
/// Needed to show full contents in form. Unsure why.
public const int FormHeightPadding = 35;
/// Horizontal separation between charts, in pixels.
public const int ChartSeparationHorizontal = 10;
/// Default horizontal separation between x and y fields, in pixels.
public const int DefaultFieldSeparation = 4;
/// Default horizontal separation between an option's label and box, in pixels.
public const int OptionLabelBoxSeperation = 10;
/// Default horizontal separation between an option's label and box, in pixels.
public const int OptionVerticalSeperation = 4;
/// Horizontal separation between left side of single dropdown and left side of labels beneath dropdown
public const int DropDownLeftSeparation = 10;
/// Height of sensitivity chart when displayed alone.
public const int SensitivityChartAloneHeight = 510;
/// Height of sensitivity chart when displayed alongside Velocity and Gain charts.
public const int SensitivityChartTogetherHeight = 328;
/// Width of charts when widened
public const int WideChartWidth = 723;
/// Left placement of charts when widened
public const int WideChartLeft = 333;
/// Width of charts when narrowed
public const int NarrowChartWidth = 698;
/// Left placement of charts when narrowed
public const int NarrowChartLeft = 482;
/// Vertical placement of write button above bottom of sensitivity graph
public const int ButtonVerticalOffset = 60;
/// Vertical placement of directionality panel below top of containing form
public const int DirectionalityVerticalOffset = 315;
/// Padding between directionality title and containing panel
public const int DirectionalityTitlePad = 8;
public const float SmallButtonSizeFactor = 0.666f;
/// Number of divisions between 0 and 90 degrees for directional lookup. For 19: 0, 5, 10... 85, 90.
public const int AngleDivisions = 19;
/// Format string for shortened x and y textboxes.
public const string ShortenedFormatString = "0.###";
/// Format string for default active value labels.
public const string DefaultActiveValueFormatString = "0.######";
/// Format string for default textboxes.
public const string DefaultFieldFormatString = "0.#########";
/// Format string for shortened x and y fields.
public const string ShortenedFieldFormatString = "0.###";
/// Format string for gain cap active value label.
public const string GainCapFormatString = "0.##";
/// Format string for shortened x and y dropdowns.
public const string AccelDropDownDefaultFullText = "Acceleration Type";
/// Format string for default dropdowns.
public const string AccelDropDownDefaultShortText = "Accel Type";
/// Default text to be displayed on write button.
public const string WriteButtonDefaultText = "Apply";
/// Default text to be displayed on toggle button.
public const string ToggleButtonDefaultText = "Toggle";
/// Default text to be displayed on button delay.
public const string ButtonDelayText = "Delay";
/// Default text to be displayed on button delay.
public const string ResetButtonText = "Reset";
/// Title of sensitivity chart.
public const string SensitivityChartTitle = "Sensitivity";
/// Title of velocity chart.
public const string VelocityChartTitle = "Velocity";
/// Title of gain chart.
public const string GainChartTitle = "Gain";
/// Text for x component.
public const string XComponent = "X";
/// Text for y component.
public const string YComponent = "Y";
/// Default name of settings file.
public const string DefaultSettingsFileName = @"settings.json";
public const string GuiConfigFileName = ".config";
/// Text to directionality panel title when panel is closed.
public const string DirectionalityTitleClosed = "Anisotropy \u25BC";
/// Text to directionality panel title when panel is open.
public const string DirectionalityTitleOpen = "Anisotropy \u25B2";
/// Style used by System.Double.Parse
public const NumberStyles FloatStyle = NumberStyles.Float | NumberStyles.AllowThousands;
/// Font Size for Chart Titles
public const float ChartTitleFontSize = 15;
/// Font Size for Chart Axis Titles
public const float ChartAxisFontSize = 12;
/// Line Width For Series data on chart
public const int ChartSeriesLineWidth = 3;
#endregion Constants
#region ReadOnly
/// Default last mouse move label text format.
public static readonly string MouseMoveDefaultFormat = "Last (x, y): ({0}, {1})";
/// Last mouse move label text format when last input was from a dpi normalized device.
public static readonly string MouseMoveNormalizedFormat = $"{MouseMoveDefaultFormat} (n)";
/// Marker size for last-mouse-move chart series.
public const int DotMarkerSize = 7;
/// Foreground Color When Streamer Mode Active
public static readonly System.Drawing.Color fgStreamer = System.Drawing.Color.White;
/// Background Color When Streamer Mode Active
public static readonly System.Drawing.Color bgStreamer = System.Drawing.Color.Green;
/// Foreground Color When Streamer Mode Inactive
public static readonly System.Drawing.Color fgNoStreamer = System.Drawing.Color.Black;
/// Background Color When Streamer Mode Inactive
public static readonly System.Drawing.Color bgNoStreamer = System.Drawing.Color.White;
/// Color of font in active value labels.
public static readonly Color ActiveValueFontColor = Color.FromArgb(255, 65, 65, 65);
public static readonly Point Origin = new Point(0);
public static readonly Size MaxSize = new Size(9999, 9999);
#endregion ReadOnly
}
}