Example #1
0
        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;
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
 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;
     }
 }
Example #4
0
 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()));
Example #5
0
 public bool Equals(SRGBColour other)
 {
     return(HasSingleColour && TopLeft.Equals(other));
 }
Example #6
0
 /// <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;
 }
Example #7
0
 public bool Equals(SRGBColour other) => HasSingleColour && TopLeft.Equals(other);