public TimingCharacterDrawer(int lineIndex, TimingMap tm) { _lineIndex = lineIndex; _timingMap = tm; // todo: check if current line is marker line }
public static TimingMap Union(TimingMap t1, TimingMap t2) { var map = new TimingMap(); for (int i = 0; i < 7; ++i) { map.Record[i] = t1.Record[i] | t2.Record[i]; } return(map); }
public static bool Clash(TimingMap t1, TimingMap t2) { for (int i = 0; i < 7; ++i) { if ((t1.Record[i] & t2.Record[i]) != 0) { return(true); } } return(false); }
static void Main(string[] args) { Console.WriteLine("Hello World!"); var tsvMapper = new TimingMap(); var tsvParser = new CsvParser <TimingInfo>(tsvParserOpt, tsvMapper); var result = tsvParser .ReadFromFile(@"test.clr", Encoding.ASCII).ToList(); foreach (var item in result) { Console.WriteLine(item.Result.info); } }
public SKBitmap Draw(ObservableCollection <TimingMap> data) { InitDrawParam(); _timingDatas = (data); _canvas.DrawColor(SKColors.White); var paint = new SKPaint { TextSize = 28.0f, IsAntialias = true, Color = (SKColor)0xFF4281A4, TextEncoding = SKTextEncoding.Utf8 }; // calc the width of symbol var max = 0.0; foreach (var timingData in _timingDatas) { var x = paint.MeasureText(timingData.Symbol); if (max < x) { max = x; } } DrawParam.StartX = (int)max + 30; // determine the width of entire diagram max = 0; foreach (var timingData in _timingDatas) { if (max < (int)timingData.Timing.Length) { max = (int)timingData.Timing.Length; } } var lineIndex = 0; // draw content foreach (var timingMap in _timingDatas) { _timingMap = timingMap; if (IsMarker()) { lineIndex++; continue; } DrawTimingCharacter(); lineIndex++; DrawParam.StartY += DrawParam.VerticalSpace; } DrawMarker(lineIndex); return(_bitmap); }
public void DrawMarker(int max) { var style = new SKPaint() { TextSize = 28.0f, IsAntialias = true, Style = SKPaintStyle.Stroke, Color = (SKColor)0xFF4281A4, StrokeWidth = 2 }; _canvas.DrawLine( DrawParam.StartX, 5, DrawParam.StartX + (5 * DrawParam.UnitX), 5, style); for (int i = 0; i <= max; i++) { int x = i * DrawParam.UnitX + DrawParam.StartX; _canvas.DrawLine( x, 5, x, DrawParam.MarkHeight, style); } _timingMap = _timingDatas[0]; var labelIndex = new List <int>(); for (var index = 0; index < _timingMap.Timing.Length; index++) { if (_timingMap.Timing[index] == '|') { labelIndex.Add(index); } } var pathStyle = new SKPaint() { TextSize = 24.0f, Style = SKPaintStyle.Stroke, Color = SKColors.GreenYellow, StrokeWidth = 4, StrokeCap = SKStrokeCap.Square, PathEffect = SKPathEffect.CreateDash(new float[] { 1, 1 }, 2), }; var path = new SKPath(); foreach (var i in labelIndex) { Debug.WriteLine("marker position : " + i); path.MoveTo( 5 + DrawParam.StartX + i * DrawParam.UnitX, 8); path.LineTo( 5 + DrawParam.StartX + i * DrawParam.UnitX, 8 + (max / 2 * (DrawParam.UnitY + DrawParam.VerticalSpace)) ); _canvas.DrawPath(path, pathStyle); } }