public static GloColor FromRGB(int r, int g, int b)
        {
            var col = new GloColor(r, g, b);

            col.Normalize();
            return(col);
        }
        public override bool Equals(object obj)
        {
            if (!(obj is GloColor))
            {
                return(false);
            }

            GloColor other = (GloColor)obj;

            return(r == other.r && g == other.g && b == other.b);
        }
        protected override void PopulateFromXML(XElement element)
        {
            base.PopulateFromXML(element);
            _overlayStartColor = GloColor.FromHexString((string)element.Element("overlay-start") ?? "ffffff");
            _overlayEndColor   = GloColor.FromHexString((string)element.Element("overlay-end") ?? "ffffff");
            foreach (XElement childElem in element.ElementOrEmpty("children").Elements("block"))
            {
                _children.Add(Block.FromXML(timeline, childElem));
            }


            CompatibilityHooks.GroupBlockFromXML(this);
        }
        public static GloColor Blend(GloColor c1, GloColor c2, double pct)
        {
            if (pct <= 0)
            {
                return(c1);
            }
            if (pct >= 1)
            {
                return(c2);
            }
            if (c1 == c2)
            {
                return(c1);
            }

            return((1 - pct) * c1 + pct * c2);
        }
 private GloColor TransformChildColor(float time, GloColor color)
 {
     // TODO FIXME how to handle loops here?
     // TODO implement the transformed properties for ramps
     return(GloColor.Blend(_overlayStartColor, _overlayEndColor, time / Duration) * color);
 }
Exemplo n.º 6
0
 protected override void PopulateFromXML(XElement element)
 {
     base.PopulateFromXML(element);
     _startColor = GloColor.FromHexString((string)element.Element("start-color"));
     _endColor   = GloColor.FromHexString((string)element.Element("end-color"));
 }
Exemplo n.º 7
0
 protected override GloColor GetColorAtLocalTimeCore(float localTime, Track track)
 {
     return(GloColor.Blend(_startColor, _endColor, localTime / Duration));
 }
Exemplo n.º 8
0
 protected override void PopulateFromXML(XElement element)
 {
     base.PopulateFromXML(element);
     _color = GloColor.FromHexString((string)element.Element("color"));
 }
Exemplo n.º 9
0
 public GloRampCommand(GloColor color, int durationTicks)
     : base("RAMP")
 {
     TargetColor   = color;
     DurationTicks = durationTicks;
 }
Exemplo n.º 10
0
 public GloColorCommand(GloColor color)
     : base("C")
 {
     Color = color;
 }
Exemplo n.º 11
0
        public void SetupTestData()
        {
            // test data
            MusicSegments.Add(new MusicSegment(this)
            {
                Label = "Mah segment #1", Bpm = 128, BeatsPerBar = 4, TimeOrigin = 0
            });
            MusicSegments.Add(new MusicSegment(this)
            {
                Label = "Slow segment", Bpm = 96, BeatsPerBar = 3, TimeOrigin = 10
            });
            MusicSegments.Add(new MusicSegment(this)
            {
                Label = "D&B example", Bpm = 180, BeatsPerBar = 4, TimeOrigin = 20
            });
            DefaultMusicSegment = MusicSegments[1];

            Tracks.Add(new Track(this, "Second track"));
            Tracks.Add(new Track(this, "Third track"));

            Blocks.Add(new ColorBlock(this, Tracks[0])
            {
                StartTime = 0f, Duration = 0.5f, Color = GloColor.FromRGB(255, 0, 0), SegmentContext = MusicSegments[0]
            });
            Blocks.Add(new ColorBlock(this, Tracks[0])
            {
                StartTime = 1f, Duration = 0.5f, Color = GloColor.FromRGB(255, 127, 0), SegmentContext = MusicSegments[0]
            });
            Blocks.Add(new RampBlock(this, Tracks[0])
            {
                StartTime = 2f, Duration = 2f, StartColor = GloColor.FromRGB(255, 127, 0), EndColor = GloColor.White, SegmentContext = MusicSegments[0]
            });
            Blocks.Add(new ColorBlock(this, Tracks[1], Tracks[2])
            {
                StartTime = 0.5f, Duration = 2.5f, Color = GloColor.White
            });
            Blocks.Add(new ColorBlock(this, Tracks[2])
            {
                StartTime = 4f, Duration = 1f, Color = GloColor.FromRGB(0, 255, 120)
            });

            Blocks.Add(new LoopBlock(this)
            {
                StartTime = 4.5f, Duration = 3f, SegmentContext = MusicSegments[0]
            }
                       .AddChild(new ColorBlock(this, Tracks[0])
            {
                StartTime = 0, Duration = 1.25f, Color = GloColor.FromRGB(0, 0, 255), SegmentContext = MusicSegments[0]
            }, false)
                       .AddChild(new ColorBlock(this, Tracks[0])
            {
                StartTime = 1.5f, Duration = 1.5f, Color = GloColor.FromRGB(0, 255, 255), SegmentContext = MusicSegments[0]
            }, false)
                       );

            Notes.Add(new Note {
                Label = "First marker", Time = 0.5f
            });
            Notes.Add(new Note {
                Label = "Second marker", Time = 1.446f
            });
            Notes.Add(new Note {
                Label = "Third marker", Time = 3.0f, Description = "This one is super fancy and has a description.\r\nThe possibilities are endless!"
            });
            Notes.Add(new Note {
                Time = 4f
            });
        }