예제 #1
0
        protected RectangleFill AddRectangleFill(string name, Point posn, Size size, Color color, Double initialValue,
                                                 string interfaceDeviceName, string interfaceElementName, bool fromCenter)
        {
            if (fromCenter)
            {
                posn = FromCenter(posn, size);
            }
            string        componentName = GetComponentName(name);
            RectangleFill rectangleFill = new RectangleFill();

            rectangleFill.Name       = componentName;
            rectangleFill.Left       = posn.X;
            rectangleFill.Top        = posn.Y;
            rectangleFill.Height     = size.Height;
            rectangleFill.Width      = size.Width;
            rectangleFill.FillColor  = color;
            rectangleFill.FillHeight = initialValue;

            Children.Add(rectangleFill);
            foreach (IBindingTrigger trigger in rectangleFill.Triggers)
            {
                AddTrigger(trigger, componentName);
            }
            AddAction(rectangleFill.Actions["set.Height"], componentName);

            AddDefaultInputBinding(
                childName: componentName,
                interfaceTriggerName: interfaceDeviceName + "." + interfaceElementName + ".changed",
                deviceActionName: "set.Height");

            return(rectangleFill);
        }
예제 #2
0
    public void RectangleFill_9x9_5Rectangles()
    {
        var rectangles = new[]
        {
            new RectangleFill.Rectangle(4, 4),
            new RectangleFill.Rectangle(6, 1),
            new RectangleFill.Rectangle(3, 3),
            new RectangleFill.Rectangle(2, 2),
            new RectangleFill.Rectangle(2, 5),
        };
        var filler = new RectangleFill(9, 9);

        var solution = filler.CoverWithRectangles(rectangles);

        solution.Should().NotBeNullOrEmpty();
        //still have some overlap!
        _output.WriteLine(filler.ToString());
    }