internal static Surface BuildPackedSurface(Size size, SurfacePacker.RectPacker <Surface> packedRects) { Surface retval = impl.BuildPackedSurface(size, packedRects); retval.ShouldBePacked = false; return(retval); }
private void btnLotsSorted_Click(object sender, EventArgs e) { packer = new SurfacePacker.RectPacker <object>(Interop.Convert(pictureBox1.ClientSize)); Random rand = new Random(); btnOne.Enabled = true; for (int i = 0; i < 300; i++) { Size sz = new Size(rand.Next(minSize, maxSize), rand.Next(minSize, maxSize)); packer.QueueObject(sz, null); } packer.AddQueue(); Redraw(); }
private void btnMany_Click(object sender, EventArgs e) { packer = new SurfacePacker.RectPacker <object>(Interop.Convert(pictureBox1.ClientSize)); Random rand = new Random(); btnOne.Enabled = true; for (int i = 0; i < 300; i++) { Size sz = new Size(rand.Next(minSize, maxSize), rand.Next(minSize, maxSize)); Rectangle rect; if (packer.FindEmptySpace(sz, out rect)) { packer.AddRect(rect, null); } } Redraw(); }
private void btnOne_Click(object sender, EventArgs e) { if (packer == null) { packer = new SurfacePacker.RectPacker <object>(Interop.Convert(pictureBox1.ClientSize)); } Random rand = new Random(); Size sz = new Size(rand.Next(minSize, maxSize), rand.Next(minSize, maxSize)); Rectangle rect; if (packer.FindEmptySpace(sz, out rect)) { packer.AddRect(rect, null); statusBar1.Panels[1].Text = "Added rect: " + rect.ToString(); } else { statusBar1.Panels[1].Text = "Failed to add rect of size " + sz.ToString(); } Redraw(); }
/// <summary> /// Builds a surface of the specified size, using the information /// generated by the SurfacePacker. /// </summary> /// <param name="size"></param> /// <param name="packedRects"></param> /// <returns></returns> public virtual Surface BuildPackedSurface(Size size, SurfacePacker.RectPacker <Surface> packedRects) { PixelBuffer buffer = new PixelBuffer(Display.DefaultSurfaceFormat, size); foreach (SurfacePacker.RectHolder <Surface> rect in packedRects) { Surface surf = rect.Tag; Rectangle dest = rect.Rect; PixelBuffer pixels = surf.ReadPixels(); buffer.CopyFrom(pixels, new Rectangle(Point.Empty, surf.SurfaceSize), dest.Location, false); } Surface retval = new Surface(buffer); foreach (SurfacePacker.RectHolder <Surface> rect in packedRects) { rect.Tag.SetSourceSurface(retval, rect.Rect); } return(retval); }
private void btnClear_Click(object sender, EventArgs e) { packer = new SurfacePacker.RectPacker <object>(Interop.Convert(pictureBox1.ClientSize)); Redraw(); }
private void btnClear_Click(object sender, EventArgs e) { packer = new SurfacePacker.RectPacker <object>(pictureBox1.ClientSize.ToGeometry()); Redraw(); }