Exemplo n.º 1
0
        public TimingCharacterDrawer(int lineIndex, TimingMap tm)
        {
            _lineIndex = lineIndex;
            _timingMap = tm;

            // todo: check if current line is marker line
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
            }
        }