public void ApplyChild(ColourInfo childColour) { Debug.Assert(HasSingleColour); if (childColour.HasSingleColour) { Colour *= childColour.Colour; } else { HasSingleColour = false; BottomLeft = childColour.BottomLeft * TopLeft; TopRight = childColour.TopRight * TopLeft; BottomRight = childColour.BottomRight * TopLeft; // Need to assign TopLeft last to keep correctness. TopLeft = childColour.TopLeft * TopLeft; } }
public void ApplyChild(ColourInfo childColour) { if (!HasSingleColour) { ApplyChild(childColour, new Quad(0, 0, 1, 1)); return; } if (childColour.HasSingleColour) { singleColour *= childColour.singleColour; } else { HasSingleColour = false; BottomLeft = childColour.BottomLeft * TopLeft; TopRight = childColour.TopRight * TopLeft; BottomRight = childColour.BottomRight * TopLeft; // Need to assign TopLeft last to keep correctness. TopLeft = childColour.TopLeft * TopLeft; } }
public ColourInfo(ref DrawInfo parent, ColourInfo colour) { if (colour.HasSingleColour && parent.Colour.HasSingleColour) { HasSingleColour = true; TopLeft = BottomLeft = TopRight = BottomRight = colour.TopLeft * parent.Colour.TopLeft; } else if (!colour.HasSingleColour && parent.Colour.HasSingleColour) { HasSingleColour = false; TopLeft = colour.TopLeft * parent.Colour.TopLeft; BottomLeft = colour.BottomLeft * parent.Colour.TopLeft; TopRight = colour.TopRight * parent.Colour.TopLeft; BottomRight = colour.BottomRight * parent.Colour.TopLeft; } else { HasSingleColour = false; TopLeft = colour.TopLeft * parent.Colour.TopLeft; BottomLeft = colour.BottomLeft * parent.Colour.BottomLeft; TopRight = colour.TopRight * parent.Colour.TopRight; BottomRight = colour.BottomRight * parent.Colour.BottomRight; } }
public SRGBColour Interpolate(Vector2 interp) => SRGBColour.FromVector( (1 - interp.Y) * ((1 - interp.X) * TopLeft.ToVector() + interp.X * TopRight.ToVector()) + interp.Y * ((1 - interp.X) * BottomLeft.ToVector() + interp.X * BottomRight.ToVector()));
public bool Equals(SRGBColour other) { return(HasSingleColour && TopLeft.Equals(other)); }
/// <summary> /// Creates a ColourInfo with a single linear colour assigned to all vertices. /// </summary> /// <param name="colour">The single linear colour to be assigned to all vertices.</param> public ColourInfo(SRGBColour colour) { TopLeft = BottomLeft = TopRight = BottomRight = colour; HasSingleColour = true; }
public bool Equals(SRGBColour other) => HasSingleColour && TopLeft.Equals(other);