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); }
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")); }
protected override GloColor GetColorAtLocalTimeCore(float localTime, Track track) { return(GloColor.Blend(_startColor, _endColor, localTime / Duration)); }
protected override void PopulateFromXML(XElement element) { base.PopulateFromXML(element); _color = GloColor.FromHexString((string)element.Element("color")); }
public GloRampCommand(GloColor color, int durationTicks) : base("RAMP") { TargetColor = color; DurationTicks = durationTicks; }
public GloColorCommand(GloColor color) : base("C") { Color = color; }
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 }); }