Esempio n. 1
0
 internal virtual void ResetNodes()
 {
     Nodes = new NutcrackerNodes[Rows, Cols];
     for (var row = 0; row < Rows; row++) {
         for (var col = 0; col < Cols; col++) {
             Nodes[row, col] = new NutcrackerNodes();
         }
     }
 }
Esempio n. 2
0
        public override void InitializePreview(Rectangle rect)
        {
            var top = (int)nudTopCount.Value;
            var sides = (int)nudSideCount.Value;
            var bottom = (int)nudBottomCount.Value;

            Cols = Math.Max(Math.Max(top, bottom),sides);
            Rows = 4;
            Nodes = new NutcrackerNodes[Rows, Cols];
            for (var row = 0; row < Rows; row++) {
                for (var col = 0; col < Cols; col++) {
                    Nodes[row, col] = new NutcrackerNodes {Model = new Point(-1,-1)};
                }
            }

            var spacing = Math.Min(rect.Width, rect.Height);
            var maxWidth = Math.Max(top, bottom);

            var xSpacing = spacing / (maxWidth + 2);
            var ySpacing = spacing / (sides + 2);

            var xOffset = (rect.Width - (xSpacing * (maxWidth + 3))) / 2;
            var yOffset = (rect.Height - (ySpacing * (sides + 3))) / 2;
            int x, y;

            // x = left to right
            // y = top to bottom

            // Starts at bottom left with the left side - should be the left most/bottom most pixel.
            for (y = sides - 1; y >= 0; y--) {
                Nodes[0, y].Model = new Point(xSpacing + xOffset, (y + 2) * ySpacing + yOffset);
            }

            // Now top from left to right
            for (x = 0; x < top; x++) {
                Nodes[1, x].Model = new Point((x + 1) * xSpacing + xOffset, ySpacing + yOffset);
            }

            // Now top right to bottom right
            x = (maxWidth + 1) * xSpacing + xOffset;
            for (y = 0; y < sides; y++) {
                Nodes[2, y].Model = new Point(x, (y + 1) * ySpacing + yOffset);
            }

            // Finally, finish along bottom
            y = (sides + 1) * ySpacing + yOffset;
            var margin = top <= bottom ? 0 : top - bottom;
            for (x = bottom - 1; x >= 0; x--) {
                Nodes[3, x].Model = new Point((x + 2 + margin) * xSpacing + xOffset, y);

            }
        }