コード例 #1
0
 public static GuitarTextEvent CreateTextEvent(GuitarMessageList owner, int absoluteTicks, string text)
 {
     var ret = new GuitarTextEvent(owner, absoluteTicks, text);
     ret.IsNew = true;
     ret.CreateEvents();
     return ret;
 }
コード例 #2
0
        public static GuitarTextEvent CreateTextEvent(GuitarMessageList owner, int absoluteTicks, string text)
        {
            var ret = new GuitarTextEvent(owner, absoluteTicks, text);

            ret.IsNew = true;
            ret.CreateEvents();
            return(ret);
        }
 public void Add(GuitarTextEvent ev, RectangleF rect)
 {
     Events.Add(new VisibleTextEvent()
     {
         DrawRect = rect, Event = ev
     });
     Events.Sort();
 }
コード例 #4
0
 public void SetNorm(GuitarTextEvent ev)
 {
     Norm = ev;
     if (ev == null)
     {
         Loopable = false;
     }
     else
     {
         Loopable = true;
     }
 }
コード例 #5
0
        public GuitarTrainer(GuitarMessageList owner, TickPair ticks, GuitarTrainerType type, GuitarTextEvent start, GuitarTextEvent end, GuitarTextEvent norm)
            : base(owner, ticks, GuitarMessageType.GuitarTrainer)
        {
            this.TrainerType = type;

            Start = start;
            End = end;
            Norm = norm;

            this.TrainerIndex = ParseTrainerIndex();

            this.Loopable = norm != null;

            SetTicks(ticks);
        }
コード例 #6
0
        public GuitarTrainer(GuitarMessageList owner, TickPair ticks, GuitarTrainerType type, GuitarTextEvent start, GuitarTextEvent end, GuitarTextEvent norm)
            : base(owner, ticks, GuitarMessageType.GuitarTrainer)
        {
            this.TrainerType = type;

            Start = start;
            End   = end;
            Norm  = norm;

            this.TrainerIndex = ParseTrainerIndex();

            this.Loopable = norm != null;

            SetTicks(ticks);
        }
コード例 #7
0
        public GuitarTrainer(GuitarMessageList owner, TickPair ticks, GuitarTrainerType type, bool loopable, int index = Int32.MinValue)
            : base(owner, ticks, GuitarMessageType.GuitarTrainer)
        {
            this.TrainerType = type;
            this.TrainerIndex = index.IsNull() ? (owner.Trainers.Where(x => x.TrainerType == type).Count() + 1) : index;
            this.Loopable = loopable;

            Start = new GuitarTextEvent(owner, ticks.Down, GetStartText(TrainerType, TrainerIndex));
            End = new GuitarTextEvent(owner, ticks.Up, GetEndText(TrainerType, TrainerIndex));

            if (Loopable)
            {
                Norm = new GuitarTextEvent(owner, GetNormTick(ticks), GetNormText(TrainerType, TrainerIndex, Loopable));
            }

            SetTicks(ticks);
        }
コード例 #8
0
        public GuitarTrainer(GuitarMessageList owner, TickPair ticks, GuitarTrainerType type, bool loopable, int index = Int32.MinValue)
            : base(owner, ticks, GuitarMessageType.GuitarTrainer)
        {
            this.TrainerType  = type;
            this.TrainerIndex = index.IsNull() ? (owner.Trainers.Where(x => x.TrainerType == type).Count() + 1) : index;
            this.Loopable     = loopable;

            Start = new GuitarTextEvent(owner, ticks.Down, GetStartText(TrainerType, TrainerIndex));
            End   = new GuitarTextEvent(owner, ticks.Up, GetEndText(TrainerType, TrainerIndex));

            if (Loopable)
            {
                Norm = new GuitarTextEvent(owner, GetNormTick(ticks), GetNormText(TrainerType, TrainerIndex, Loopable));
            }

            SetTicks(ticks);
        }
コード例 #9
0
        private void DrawTextEvent(Graphics g, bool tabActive, bool drawSelected, GuitarTextEvent tr, SolidBrush tb)
        {
            var st = GetClientPointFromTick(tr.AbsoluteTicks);
            var et = st + 1;
            if (et > 0 &&
                st < Width &&
                st < et)
            {
                if (st < 0)
                    st = 0;
                if (et > Width)
                    et = Width;

                g.FillRectangle(tb,
                    st,
                    0, et - st,
                    InnerHeight - 1);

                using (var p = new Pen(tb))
                {
                    g.DrawRectangle(p, st, 0, et - st, InnerHeight - 1);
                }

                var size = g.MeasureString(tr.Text, Utility.fretFont);
                if (size.Width > 4 || size.Height > 4)
                {

                    bool found = false;

                    var textRect = new RectangleF((float)st, (size.Height * (0)) + (0 * size.Height * 0.1f),
                            size.Width, size.Height);
                    for (int idx = 0; idx < 8; idx++)
                    {
                        var ntr = new RectangleF((float)st, (size.Height * (idx)) + (idx * size.Height * 0.1f),
                            size.Width, size.Height);

                        if (VisibleTextEvents.CountOverlapping(ntr) == 0)
                        {
                            VisibleTextEvents.Add(tr, ntr);
                            textRect = ntr;
                            found = true;
                            break;
                        }
                    }

                    if (!found)
                    {
                        VisibleTextEvents.Add(tr, textRect);
                    }

                    using (var tbg = new SolidBrush(Color.FromArgb(tabActive ? (drawSelected ? 255 : 180) : 80, Utility.BackgroundBrush.Color)))
                    {
                        g.FillRectangle(tbg,
                            textRect.X, textRect.Y, textRect.Width, textRect.Height + 1);
                    }
                    using (var tbg = new Pen(Color.FromArgb(180, Utility.noteBoundPen.Color)))
                    {
                        g.DrawRectangle(tbg,
                            textRect.X, textRect.Y, textRect.Width, textRect.Height + 1);
                    }
                    using (var fb = new SolidBrush(Color.FromArgb(180, Utility.fretBrush.Color)))
                    {
                        var tl = textRect.Location;
                        tl.X -= 1;

                        textRect.Location = tl;
                        textRect.Width += 3;

                        g.DrawString(tr.Text, Utility.fretFont, fb, textRect, StringFormat.GenericDefault);
                    }
                }
            }
        }
コード例 #10
0
 public void SetStart(GuitarTextEvent ev)
 {
     Start = ev;
 }
コード例 #11
0
 public void SetNorm(GuitarTextEvent ev)
 {
     Norm = ev;
     if (ev == null)
     {
         Loopable = false;
     }
     else
     {
         Loopable = true;
     }
 }
コード例 #12
0
 public void SetEnd(GuitarTextEvent ev)
 {
     End = ev;
 }
コード例 #13
0
 public void Add(GuitarTextEvent ev, RectangleF rect)
 {
     Events.Add(new VisibleTextEvent() { DrawRect = rect, Event = ev });
     Events.Sort();
 }
コード例 #14
0
 public void SetEnd(GuitarTextEvent ev)
 {
     End = ev;
 }
コード例 #15
0
 public void SetStart(GuitarTextEvent ev)
 {
     Start = ev;
 }